# Set up account and security
Source: https://www.stedi.com/docs/healthcare/account-settings


Learn how to manage Stedi accounts, members, and security settings.

## Accounts [#accounts]

A Stedi account is a container for all of your Stedi activity and resources. Every account has a name, which you can find in the [Account profile](https://portal.stedi.com/app/settings/account-details). Your account also has an ID, which appears in dashboard URLs in the `account` URL parameter.

Accounts can have unlimited members, and members can be assigned different roles with different permissions.

It's possible to have multiple accounts, though using one account is recommended for most customers. If you need additional accounts, [contact us](https://www.stedi.com/contact).

### Create an account [#create-an-account]

To create a Stedi account, go to the [signup page](https://portal.stedi.com/auth/sign-up). The signup process includes:

1. Filling out the signup form
2. Confirming your email address
3. Providing your company name

New accounts start as free sandbox accounts, which are limited to test mode. You can upgrade to production at any time to process real transactions with payers. When you upgrade to a paid plan, you'll set up Multi-Factor Authentication (MFA) and agree to a Business Associate Agreement (BAA).

### Join an existing account [#join-an-existing-account]

During [sign up](https://portal.stedi.com/auth/sign-up), Stedi checks whether your email domain is associated with an existing Stedi account. If it is, you can request to join that account instead of creating a new one.

For example, if you sign up with `john.doe@example.com` and your company already has a Stedi account for `example.com`, you'll see the option to request to join it. This helps prevent duplicate accounts for the same organization.

You'll receive an email when the account admin invites you to join the account and log in.

### Upgrade to production [#upgrade-to-production]

Every Stedi account is either a sandbox account or a production account.

* Sandbox accounts are free and limited to test mode.
* Production accounts can process unlimited real transactions with payers.

To upgrade from a sandbox account to production, click **Upgrade account** in the side navigation. Then, follow the upgrade flow.

### Change account theme [#change-account-theme]

To change your account theme:

1. Click your account name in the side navigation.
2. Next to **Theme** you can choose between light, dark, or system (which matches your device settings).

### Set default landing page [#set-default-landing-page]

You can customize which page opens when you log in to the Stedi portal.

1. Go to the [General page](https://portal.stedi.com/app/settings/account-details) in your account settings.
2. Choose a **Default landing page** option:
   * **Dynamic (default):** Stedi opens the claims view if you've processed at least one claim. Otherwise, Stedi opens the eligibility searches page.
   * **Claims:** Stedi opens the claims view.
   * **Eligibility:** Stedi opens the eligibility searches page.

### Change your password [#change-your-password]

To change or reset your password:

1. Go to the [Authentication page](https://portal.stedi.com/app/settings/user-authentication) in your account settings.
2. Click **Change password** in the **Password** section.
3. Enter your current password, then enter and confirm your new password.
4. Click **Done**.

You'll need to use the new password the next time you log in to Stedi.

### Delete an account [#delete-an-account]

[Contact support](https://www.stedi.com/contact). You can't delete your account through the Stedi portal or API.

## Members [#members]

Your account can have many members - a member represents an individual email address used to log into the account. You may want to add additional members so that other individuals in your organization can help manage transactions and troubleshoot issues.

### Invite members [#invite-members]

To add members to your account:

1. Go to the [Members page](https://portal.stedi.com/app/settings/members) in your account settings.
2. Click **Invite member**.
3. Enter the email address of the member you want to add.
4. Select the member's role from the dropdown.
5. Click **Send invitation**.

The invited member will receive an email with instructions about how to accept the invitation and log into the account. Invitations do not expire, but can be revoked by any account admin at any time before acceptance.

<Note>
  Stedi apps may automatically add one or more support users with a Developer role to your account during installation. These support users allow your vendor to help you troubleshoot issues directly within your account and assist with implementation.
</Note>

### Assign member roles [#assign-member-roles]

Admins can use role-based access control (RBAC) to ensure only authorized users can access and modify resources in a Stedi account. An Admin has the highest permissions, and they can access and update all resources in your account, including members and billing details. We recommend assigning most members to the Operator role. This role allows members to manage transactions (like claims and eligibility checks) and submit transaction enrollments requests, but not change account settings or billing information.

Admins can assign Stedi account members to one of four roles:

* **Admin:** These users can access and modify all resources within a Stedi account. This includes adding and removing members, assigning member roles, adding billing information, configuring settings, running eligibility checks, submitting claims, managing API keys, and configuring resources.
* **Developer:** These users can access and configure all resources, including managing API keys. However, they can't manage members or billing information.
* **Operator:** These users can run eligibility checks, run insurance discovery checks, submit claims, submit transaction enrollments, and review transaction data. They can also manage guides and trading partners (EDI platform). Finally, they can interact with developer resources, but can't modify them. For example, they can call our APIs, but they can't create or delete API keys.
  <Tip>
    Operator is the minimum required role for a user to interact with our
    clearinghouse and review transactions (such as completed eligibility checks)
    in Stedi.
  </Tip>
* **Read-only:** These users can view some account resources, but cannot modify them. For example, they can review processed transactions in Stedi but can't call APIs.

To change a member's role:

1. Go to [Members page](https://portal.stedi.com/app/settings/members) in your account settings.
2. Click the pencil icon for a member, choose the appropriate **Role** from the list, and click **Update role**.

### Remove members [#remove-members]

An account admin can remove other members from an account. Removed users will still retain their Stedi user credentials and access to other accounts of which they're a member.

To remove a member from your account:

1. Go to [Members page](https://portal.stedi.com/app/settings/members) in your account settings.
2. Click the &#x2A;*...** (ellipses) to the right of the member you want to remove and select **Remove from account**.
3. Click &#x2A;*Are you sure?** to confirm.

The removed member will no longer have access to your Stedi account.

## Multi-Factor Authentication (MFA) [#multi-factor-authentication-mfa]

You can enable Multi-Factor Authentication (MFA) for your user account. To enable MFA, go to the [Account security page](https://portal.stedi.com/app/settings/account-security) in your account settings and click **Enable MFA**.

### Enforce MFA for all members [#enforce-mfa-for-all-members]

You can require **all** users to enable MFA before accessing a Stedi account. To enforce MFA for all users:

1. Go to the [Account security page](https://portal.stedi.com/app/settings/account-security) in your account settings.
2. Click the button to **Enforce multi-factor authentication**.

The next time a user logs into the Stedi account, Stedi prompts them to set up their MFA token: [https://portal.stedi.com/auth/setup-mfa](https://portal.stedi.com/auth/setup-mfa)

<Warning>
  Once you enable MFA for a Stedi account, it cannot be disabled.
</Warning>

### Reset a member's MFA [#reset-a-members-mfa]

If a member loses access to their authenticator app, an account admin can reset their MFA token.

To reset a member's MFA token:

1. Go to [Members page](https://portal.stedi.com/app/settings/members) in your account settings.
2. Click the &#x2A;*...** to the right of the member you want to reset.
3. Select **Reset member MFA**.

The member will be prompted to set up a new MFA token the next time they log in. If they're currently logged in, they may not be logged out immediately - the reset process can take up to an hour.

### Update your MFA [#update-your-mfa]

To update your MFA token:

1. Go to the [Account security page](https://portal.stedi.com/app/settings/user-authentication) in your account settings.
2. Click **Update** in the **Multi-factor authentication** section.
3. Follow the prompts to set up your new MFA token.
4. Click **Save**.

## Single Sign-On (SSO) and SCIM [#single-sign-on-sso-and-scim]

Admins can configure Single Sign-On (SSO) and directory sync (SCIM) through Stedi's WorkOS integration.

* SSO allows account members to sign in to Stedi through your chosen identity provider, such as Okta or OneLogin.
* Directory sync (SCIM) automatically creates and removes Stedi accounts through your chosen identity provider.

### Request access [#request-access]

To request SSO and/or directory sync for your account:

1. Go to the [Account security page](https://portal.stedi.com/app/settings/account-security) in your account settings.
2. Click **Contact us** to go to Stedi's contact form and request SSO for your account.

Stedi support will review the request and enable access.

### Configure SSO [#configure-sso]

Once Stedi support enables SSO access, you can configure it for your account:

1. Go to the [Account security page](https://portal.stedi.com/app/settings/account-security) in your account settings.
2. Click **Set up Single sign-on**. Stedi redirects you to the WorkOS portal for setup.
3. Follow the steps in the WorkOS portal to configure SSO for your identity provider. WorkOS provides detailed instructions for connecting each identity provider as part of the setup flow. You can also visit the WorkOS [Single Sign-On documentation](https://workos.com/docs/sso) for more details.

Once configured, you can manage the account's SSO settings from the [Account security page](https://portal.stedi.com/app/settings/account-security). This includes:

* **Require SSO for all members:** Toggling this to **ON** disables the standard email and password login process - account members will only be able to access Stedi through SSO.
* **Default role for new members:** Choose which member role is automatically assigned to users when they join the account.

### Configure directory sync (SCIM) [#configure-directory-sync-scim]

Once SSO is configured, you can optionally also set up directory sync (SCIM) through WorkOS. If you don't see directory sync in your account, contact Stedi support to request access.

To configure directory sync:

1. Go to the [Account security page](https://portal.stedi.com/app/settings/account-security) in your account settings.
2. In the &#x2A;*Single sign-on (SSO)** section, click **Set up directory sync**. Stedi redirects you to the WorkOS portal for setup.
3. Follow the steps in the WorkOS portal to configure directory sync for your identity provider. WorkOS provides detailed instructions for connecting each identity provider as part of the setup flow. You can also visit the WorkOS [directory sync documentation](https://workos.com/docs/directory-sync) for more details.

Once configured, you can review automatically created user accounts from the [Members page](https://portal.stedi.com/app/settings/members) in your account settings.

You can manage the account's directory sync settings from the [Account security page](https://portal.stedi.com/app/settings/account-security).

## Reauthentication [#reauthentication]

Stedi requires all users to sign in every 12 hours. This aligns our maximum session duration with National Institute of Standards and Technology (NIST) best practices, and it isn't configurable.

### Enable inactivity sign-out [#enable-inactivity-sign-out]

Admins can opt in to have account members automatically sign out after 30 minutes of inactivity. This reduces the risk of unattended workstations being used to access patient data.

To enable inactivity sign-out for your account:

1. Go to the [Account security page](https://portal.stedi.com/app/settings/account-security) in your account settings.
2. Click **Enable inactivity sign-out** under **Inactivity sign-out**.

Once enabled, members will be automatically signed out of the Stedi portal after 30 minutes of inactivity. Activity includes mouse movements, keyboard input, and touch events.

## Developer settings [#developer-settings]

You can create API keys and SFTP credentials from your account settings.

### SFTP setup [#sftp-setup]

On the [SFTP setup page](https://portal.stedi.com/app/settings/developer/sftp), you can:

* Create both test and production SFTP credentials to upload claims and retrieve claim responses through Stedi's fully-managed SFTP server.
* Control whether you'll receive 999s for fully accepted functional groups or only when there are rejected transactions.
* Configure file naming conventions for files you receive through Stedi clearinghouse. Choose between **Semantic** filenames (which include a timestamp, UUID, and semantic identifier for the transaction type) or **UUID only** filenames.

Visit [Submit claims through SFTP](/healthcare/submit-claims-sftp-setup#create-sftp-users) for more details.

### API keys [#api-keys]

On the [API keys page](https://portal.stedi.com/app/settings/developer/api-keys), you can create both test and production API keys.

* Test API keys allow you to send mock eligibility checks to Stedi's Real-Time Eligibility Check API. Visit [Eligibility mock requests](/healthcare/api-reference/mock-requests-eligibility-checks) for more details.
* Production API keys allow you to authenticate with all Stedi APIs.

## Notification preferences [#notification-preferences]

You can manage your notification preferences from the [Notifications page](https://portal.stedi.com/app/settings/notifications) in your account settings. Stedi sends notifications through two channels: in-app (the bell icon in the side navigation) and email.

### Notification categories [#notification-categories]

Notifications are grouped into the following categories:

* **Enrollments:** Stedi sends notifications when a transaction enrollment request changes status to `PROVISIONING`, `PROVIDER_ACTION_REQUIRED`, `LIVE`, or `REJECTED`. The [email set as the **Stedi contact person**](/healthcare/create-manage-transaction-enrollments#stedi-contact-email) receives in-app notifications for status changes as well as a batched email once per hour with all updates.
* **Event destinations:** When event deliveries to an event destination repeatedly fail, Stedi sends in-app notifications and emails to every member of the Stedi account at [set intervals](/healthcare/event-destinations-message-handling#notifications).
* **Exports:** Stedi sends in-app notifications to the user who requested an export when their claims list or Electronic Remittance Advice (ERA) list export is ready to download. Export files are available for 30 days.
* **Billing & payments:** For pay-as-you-go accounts, Stedi sends notifications to the billing email address and account admins when automatic recharge payments fail, when account access is suspended due to insufficient funds, and when access is restored. Visit [Billing](/healthcare/billing#failed-payments) for more details.
* **Account & access:** Stedi sends you notifications when you're invited to new Stedi accounts and when Stedi has approved an account upgrade. Account admins receive notifications when another user is requesting to join their Stedi account.

### Manage preferences [#manage-preferences]

On the [Notifications page](https://portal.stedi.com/app/settings/notifications), you can set your preferences for both in-app and email notifications. Check or uncheck the boxes to opt in or opt out for each type.

* **Default is opt-in:** All notifications are enabled by default.
* **Preferences are per user:** Your notification preferences apply across all Stedi accounts you can access. They're tied to your signed-in user, not to a specific account.
* **Independent channels:** Turning off email delivery for a notification type doesn't affect in-app delivery, and vice versa.

# Batch eligibility checks
Source: https://www.stedi.com/docs/healthcare/batch-refresh-eligibility-checks


Batch eligibility checks are a great option as your volume grows. Stedi handles complexity like queuing and retries according to established best practices, so you don't have to build this logic yourself. We recommend using batch checks for bulk workflows that aren't time sensitive, including:

* Monthly or weekly coverage refreshes
* Upcoming appointments
* Sets of thousands or millions of checks that can run in the background

However, batch checks have a longer feedback cycle than real-time checks because you don't receive the payer's response immediately. That's why we strongly recommend starting with [real-time checks](/healthcare/api-reference/post-healthcare-eligibility) when integrating with a new payer or working with eligibility checks for the first time. This approach allows you to ensure that your pipeline is working smoothly before you begin staging batch checks.

You can submit batch checks manually by uploading CSV files to the Stedi portal or programmatically through the API.

## Transaction enrollment [#transaction-enrollment]

<Tip>
  If the provider is already enrolled for real-time eligibility checks through Stedi, you don't need to enroll again for batch eligibility checks.
</Tip>

[Transaction enrollment](/healthcare/transaction-enrollment) is the process of registering a provider to exchange specific healthcare transactions with a payer.

Most payers don't require transaction enrollment for eligibility checks. Those that do, such as the Centers for Medicare & Medicaid Services (CMS), typically allow multiple enrollments with different clearinghouses. That means enrolling through Stedi shouldn't cancel or interfere with any existing enrollments you have through other clearinghouses.

Enrolling through Stedi for eligibility checks also doesn't affect your existing enrollments for other transaction types. For example, enrolling with Stedi won't unenroll the provider from receiving transactions like Electronic Remittance Advices (ERAs) through other clearinghouses.

You can check whether a specific payer requires enrollment for eligibility checks in the [Payer Network](https://www.stedi.com/healthcare/network) or through the [Payers API](/healthcare/api-reference/get-payer).

If enrollment is required, complete the following steps:

1. Create a provider record with the information required for enrollment. If you already have a record for the provider, you can skip this step. [Stedi portal](https://portal.stedi.com/app/healthcare/providers) | [API endpoint](/healthcare/api-reference/post-enrollment-create-provider)
2. Submit an enrollment request for real-time eligibility checks - batch eligibility checks use the same enrollment process as real-time eligibility checks. [Stedi portal](https://portal.stedi.com/app/healthcare/enrollments) | [API endpoint](/healthcare/api-reference/post-enrollment-create-enrollment)

## Manual submission [#manual-submission]

You can submit batch eligibility checks through bulk CSV upload.

### Create new CSV batch [#create-new-csv-batch]

To create a new CSV batch:

1. Go to the [Batch eligibility checks page](https://portal.stedi.com/app/healthcare/checks/batch).
2. Click **+ New batch from CSV**.
3. Enter a unique name for the batch. Stedi displays this name in the list of batch uploads. This name is for your reference only - we don't send it to payers.
4. (Optional) Click **Advanced options** to configure a custom **Retry duration** between 8 and 24 hours. This is the maximum number of hours that Stedi will retry checks in the batch that fail due to payer connectivity issues. The default is 8 hours.
5. Click **Create** to go to the CSV upload page for your new batch.

### Upload CSV file [#upload-csv-file]

On the CSV upload page for your batch:

1. Click **Download a template** to download the CSV template with the supported fields. You can also download it from this link: [template CSV file](/files/batch-eligibility-template.csv).

2. Populate the template with eligibility checks. Each row in the template represents one eligibility check. You can submit up to 10,000 checks per CSV file. The upload page contains detailed documentation for each possible field and recommendations for which fields to include for the best chance of success.

   <Note>
     You can also submit [MBI lookups](/healthcare/mbi-lookup) through CSV upload. Set the `tradingPartnerServiceId` for each check to either **MBILU** (for MBI lookups with SSN) or **MBILUNOSSN** (for MBI lookups without SSN). Then, include the required patient demographic information for each lookup.
   </Note>

3. Click **+ Upload file** to upload your complete CSV file.

4. Click **Verify file** so Stedi can validate the data in each eligibility check. You can fix any errors and re-upload the CSV file as many times as needed. When the file is error-free, you'll be able to execute the batch.

5. Click **Execute batch** to send the eligibility checks to Stedi for processing.

Stedi processes the checks asynchronously, implementing best practices to avoid payer throttling. Each eligibility check in the batch is stored in its own eligibility search. You can review the details of each check from the [Eligibility searches page](https://portal.stedi.com/app/healthcare/eligibility).

### Batch status [#batch-status]

The batch status changes to **In progress** while Stedi is processing the batch. The status changes to **Completed** when Stedi has sent all checks in the batch to payers and received responses. A completed batch may contain both successful and failed eligibility checks.

You can [retrieve the results](#retrieve-batch-results) of each check in the batch through the Stedi portal or API.

## API submission [#api-submission]

You can use Stedi's [Batch Eligibility Check](/healthcare/api-reference/post-healthcare-batch-eligibility) API to submit up to 10,000 eligibility checks in a single request. Stedi processes these eligibility checks asynchronously, implementing best practices to avoid payer throttling.

### Headers - required [#headers---required]

You must include the following headers in your API request:

* **`Authorization`:** [Generate an API key](/healthcare/api-reference#authentication) to use for authentication.
* **`Content-Type`:** Set to `application/json`.

```bash
curl --request POST \
  --url https://manager.us.stedi.com/2024-04-01/eligibility-manager/batch-eligibility \
  --header 'Authorization: <api-key>' \
  --header 'Content-Type: application/json' \
```

### Headers - situational [#headers---situational]

When sending eligibility checks to the Centers for Medicare & Medicaid Services (CMS), you may need to include the `X-Forwarded-For` header set to a comma-separated list of any upstream IP addresses. Visit [CMS traceability requirements](#cms-traceability-requirements) for details and examples.

### Request data [#request-data]

The information you provide to the payer in an eligibility check can vary, depending on the circumstances. However, each batch eligibility check must include at least the following information:

| Information                                    | Description                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  |
| ---------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `tradingPartnerServiceId`                      | <ul><li>This is the payer ID. Visit the [Payer Network](https://www.stedi.com/healthcare/network) for a complete list. You can send requests using the primary payer ID, the Stedi payer ID, or any alias listed in the payer record.</li><li>You must include leading `0` characters in payer IDs. For example, use `00540` for SISCO, not `540`.</li><li> If you don't know the payer, try submitting an [insurance discovery check](/healthcare/insurance-discovery) instead.</li></ul>                                                                                                                                                                                                                                                                                                                                                                                                                                   |
| `submitterTransactionIdentifier`               | <ul><li>A unique identifier for the eligibility check within the batch.</li><li>Stedi returns this identifier in the response for the [Retrieve Batch Check Statuses](/healthcare/api-reference/get-healthcare-batch-eligibility-check-statuses) and [Poll Batch Eligibility Checks](/healthcare/api-reference/get-healthcare-polling-eligibility) endpoints so you can correlate the original eligibility request with its processing status and the payer's response.</li></ul>                                                                                                                                                                                                                                                                                                                                                                                                                                            |
| `provider` object, name and identifier         | <ul><li>You must include the provider's name - either the `firstName` and `lastName` of a specific provider within a practice or the `organizationName`.</li><li>You must include an identifier - this is typically the provider's [National Provider Identifier](https://www.stedi.com/docs/healthcare/national-provider-identifier) (`npi`). If the provider doesn't have an NPI, you can supply an alternative, such as their `taxId` or `ssn`.</li></ul>                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |
| `subscriber` and/or `dependents` objects       | <ul><li>The `dependents` object is optional - refer to the scenarios when the [patient qualifies as a dependent](/healthcare/send-eligibility-checks#dependents).</li><li>At a minimum, our API requires that you supply at least one of these fields in the request: `memberId`, `dateOfBirth`, or `lastName`. However, each payer has different requirements, so you should supply the fields necessary for each payer to identify the subscriber in their system.</li><li> When all four of `memberId`, `dateOfBirth`, `firstName`, and `lastName` are provided, payers are required to return a response if the member is in their database. Some payers may be able to search with less information, but this varies by payer.</li><li> We recommend always including the patient's member ID when possible. Learn more about [patient information](/healthcare/send-eligibility-checks#patient-information).</li></ul> |
| `encounter` object, service dates              | <ul><li>You can specify either a single `dateOfService` or a `beginningDateOfService` and `endDateOfService`. The payer defaults to using the current date in their timezone if you don't include one.</li><li>When checking eligibility for today, omit the `dateOfService` property to ensure consistent behavior across payers.</li><li> We recommend submitting dates up to 12 months in the past or up to the end of the current month. Payers aren't required to support dates outside these ranges. However, some payers such as the Centers for Medicare and Medicaid Services (CMS) do support requests for dates further in the future - especially the next calendar month. Check the payer's documentation to determine their specific behavior.</li></ul>                                                                                                                                                       |
| `encounter` object, service or procedure codes | <ul><li>Specify `serviceTypeCodes` and/or a `procedureCode` and `productOrServiceIDQualifier` to request specific types of benefits information.</li><li>We recommend including no more than one service type code in each request.</li><li> If you don't include any service type code or procedure code information, Stedi defaults to using `30` (Plan coverage and general benefits) as the only `serviceTypeCodes` value.</li><li> Learn more about [STCs and procedure codes](/healthcare/eligibility-stc-procedure-codes).</li></ul>                                                                                                                                                                                                                                                                                                                                                                                  |

#### Patient information [#patient-information]

Batch checks should follow the same best practices as real-time eligibility checks when entering patient information. Visit [Real-time eligibility checks](/healthcare/send-eligibility-checks#patient-information) for guidance on:

* Which patient identifiers to use for best results
* How to know if a patient qualifies as a dependent
* How to enter patient names for best results

#### MBI for CMS checks [#mbi-for-cms-checks]

A Medicare Beneficiary Identifier (MBI) is a unique, randomly-generated identifier assigned to individuals enrolled in Medicare. You must include the patient's MBI in every eligibility check to the Centers for Medicare and Medicaid Services (payer ID: CMS).

Some payers return the patient's MBI in one of the following properties of the standard eligibility response:

* [`benefitsInformation[].benefitsAdditionalInformation.hicNumber`](/healthcare/api-reference/post-healthcare-eligibility#response.benefitsInformation.benefitsAdditionalInformation.hicNumber)
* [`planInformation.hicNumber`](/healthcare/api-reference/post-healthcare-eligibility#response.planInformation.hicNumber)

If the value in either of these properties matches the format specified in the [Medicare Beneficiary Identifier documentation](https://www.cms.gov/training-education/partner-outreach-resources/new-medicare-card/medical-beneficiary-identifiers-mbis), the number is likely an MBI, and we recommend sending a follow-up eligibility check to CMS for additional benefits data. You're most likely to receive an MBI in eligibility check responses from commercial Medicare Advantage plans, but they can also be present in responses from Medicaid plans for dual-eligible patients.

When you don't know a patient's MBI, you can use Stedi's eligibility check APIs to perform an MBI lookup instead of a standard eligibility check. Stedi returns a complete benefits response from CMS with the patient's MBI in the `subscriber` object for future reference. Visit [Medicare Beneficiary Identifier (MBI) lookup](/healthcare/mbi-lookup) for complete details.

<Tip>
  **Don't** submit eligibility checks for Medicare Advantage plans to CMS (HETS)
  – you should submit them to the actual Medicare Advantage plan payer
  instead.
</Tip>

#### Conditional requirements [#conditional-requirements]

Note that objects marked as **required** are required for all requests, while others are conditionally required depending on the circumstances. When you include a conditionally required object, you must include all of its required properties.

For example, you must always include the `provider` object in your request, but you only need to include the `dependents` object when you need to request benefits information for a dependent on the subscriber's insurance plan.

#### Character restrictions [#character-restrictions]

Only use the X12 Basic and Extended character sets in request data. Using characters outside these sets may cause errors.

<Accordion title="Basic character set" id="basic-character-set">
  The X12 Basic character set includes uppercase letters, digits, space, and some special characters. Lowercase letters and special language characters like `ñ` are not included.

  The following special characters are included:

    <img alt="Basic special characters" src="__img0" />
</Accordion>

<Accordion title="Extended character set" id="extended-character-set">
  The Extended character set includes the characters listed in Basic, plus lowercase letters and additional special characters, such as `@`.

  The following additional special characters are included:
    <img alt="Extended special characters" src="__img1" />
</Accordion>

In addition, the following characters are reserved for delimiters in the final X12 EDI transaction to the payer: `~`, `*`, `:`, `^`, and `>`. X12 doesn't support using escape sequences to represent delimiters or special characters. Stedi returns a `400` error if you use these restricted characters improperly.

Don't include delimiter characters anywhere in your request data.

**Autocorrection for backticks**

Stedi automatically replaces backticks (`` ` ``), also known as backquotes or grave accents, with an apostrophe (`'`) in `subscriber` and `dependents` first and last names. These corrections prevent errors when submitting your request. Stedi returns a message in the response's `warnings` array when it makes this replacement.

### Sample request and response [#sample-request-and-response]

The following example demonstrates how to submit a batch of eligibility checks in the `items` array, where each item represents an individual eligibility check. Stedi returns a `batchId` that you can use to retrieve the results of these checks later.

Visit [Determine patient benefits](/healthcare/eligibility-active-coverage-benefits) for detailed explanations of how to determine the patient's active coverage, financial responsibility, whether referrals and authorizations are required, and more.

<Tabs items="[&#x22;Request&#x22;, &#x22;Response&#x22;]">
  <Tab value="Request">
    {/* schema:BatchEligibilityChecksRequestContent */}

    ```bash
    curl --request POST \
      --url https://manager.us.stedi.com/2024-04-01/eligibility-manager/batch-eligibility \
      --header 'Authorization: <api-key>' \
      --header 'Content-Type: application/json' \
      --data '{
      "items": [
        {
          "submitterTransactionIdentifier": "ABC123456789",
          "tradingPartnerServiceId": "AHS",
          "encounter": {
            "serviceTypeCodes": [
              "MH"
            ]
          },
          "provider": {
            "organizationName": "ACME Health Services",
            "npi": "1999999984"
          },
          "subscriber": {
            "dateOfBirth": "19000101",
            "firstName": "Jane",
            "lastName": "Doe",
            "memberId": "1234567890"
          }
        },
        {
          "submitterTransactionIdentifier": "DEF123456799",
          "tradingPartnerServiceId": "AHS",
          "encounter": {
            "serviceTypeCodes": [
              "78"
            ]
          },
          "provider": {
            "organizationName": "ACME Health Services",
            "npi": "1999999984"
          },
          "subscriber": {
            "dateOfBirth": "19001021",
            "firstName": "John",
            "lastName": "Doe",
            "memberId": "1234567892"
          }
        }
      ]
    }'
    ```
  </Tab>

  <Tab value="Response">
    {/* schema:BatchEligibilityChecksResponseContent */}

    ```json
    {
      "batchId": "01928d19-df25-76c0-8d51-f5351260fa05",
      "submittedAt": "2023-11-07T05:31:56Z"
    }
    ```
  </Tab>
</Tabs>

### Delimiter normalization [#delimiter-normalization]

Stedi reserves certain characters for delimiters in X12 EDI transactions. When these delimiter characters appear within data values - meaning they're used as content and not as actual delimiters, such as within a subscriber's name - Stedi replaces them to prevent parsing issues. Stedi normalizes delimiters within transaction data as follows:

| Character found in data | Replacement | Stedi's reserved delimiter type it conflicts with |
| ----------------------- | ----------- | ------------------------------------------------- |
| `*`                     | `\|`        | Element separator                                 |
| `^`                     | `\|`        | Repetition separator                              |
| `` ` ``                 | `'`         | Component element separator                       |
| `~`                     | `\|`        | Segment terminator                                |

**Examples:**

* `O*CONNOR` becomes `O|CONNOR`
* `CODE^01` becomes `CODE|01`
* ``O`CONNOR`` becomes `O'CONNOR`
* `MSG~HELLO` becomes `MSG|HELLO`

If you parse raw X12 EDI responses, ensure your parser reads delimiters from the `ISA` segment instead of assuming fixed delimiters.

### Concurrency limit [#concurrency-limit]

Asynchronous batch checks don't count toward your Stedi account [concurrency limit for real-time checks](/healthcare/api-reference#concurrency-limits).

There are no limits on the number of batches you can run in parallel.

## Configure automatic retries [#configure-automatic-retries]

Stedi retries checks that fail due to [payer connectivity issues](/healthcare/eligibility-troubleshooting#payer-connectivity-issues) for 8 - 24 hours, depending on the specified retry period. It can take up to the configured retry period for all checks in a batch to return results.

You can configure the retry period for a batch by:

* **API:** Include the optional `maxRetryHours` property in the request.
* **CSV upload:** Open **Advanced options** during creation and select a **Retry duration** from the dropdown.

For both submission methods, you can choose a value between 8 and 24 hours. If not set, the default is 8 hours.

## Track batch status [#track-batch-status]

After you've submitted a batch of eligibility checks, you can track the processing status through the Stedi portal or API.

### Processing status vs. eligibility check result [#processing-status-vs-eligibility-check-result]

You can track the overall batch processing status, the processing status of each eligibility check, and each eligibility check's result.

| Status                              | Description                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |
| ----------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Batch                               | <ul><li>The processing status of an eligibility check batch within Stedi.</li><li>In the API, this is the Batch Status response [`status` property](/healthcare/api-reference/get-healthcare-batch-eligibility-status#response.status).</li><li>In the Stedi portal, this is the batch **Status**.</li></ul>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              |
| Eligibility check processing status | <ul><li>The processing status of an individual eligibility check (batch item). It doesn't indicate whether the payer returned benefits information.</li><li>In the API, this is the Retrieve Batch Check Statuses response [`items[].state` property](/healthcare/api-reference/get-healthcare-batch-eligibility-check-statuses#response.items.state).</li><li>In the Stedi portal, this is the **Processing status** of each eligibility check within a batch.</li></ul>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |
| Eligibility check result            | <ul><li>The outcome of an eligibility check based on the payer's response. Use it to determine whether a completed eligibility check returned active coverage types. Only completed checks will have a result. Can be:<ul><li>`ACTIVE`: The payer's response contains an active eligibility and benefit type. This means that the patient has active coverage for at least some services.</li><li>`INACTIVE`: The payer's response doesn't contain an active eligibility and benefit type. This means that the patient doesn't have active coverage for the requested services.</li><li>`INVESTIGATE`: The payer returned an unexpected eligibility or benefit type code. Review the response and contact the payer if you have questions.</li><li>`FAILED`: The payer returned an error code in the response. Review the error code and retry the eligibility check.</li></ul></li><li>In the API, this is the Retrieve Batch Check Statuses response [`items[].additionalInfo.eligibility.eligibilityCheckResult` property](/healthcare/api-reference/get-healthcare-batch-eligibility-check-statuses#response.items.additionalInfo.eligibility.eligibilityCheckResult).</li><li>In the Stedi portal, this is the **Result**.</li></ul> |

### Stedi portal [#stedi-portal]

You can review the progress of batch eligibility checks submitted through API or CSV upload on the [Eligibility check batches page](https://portal.stedi.com/app/healthcare/checks/batch).

Click the batch name to view its details, including the **Processing status** and **Search outcome** of each check. You can also download the original CSV input, if the batch was submitted as a CSV file.

<img alt="Batch checks UI statuses" src="__img2" />

### Status endpoints [#status-endpoints]

You can use the following endpoints to programmatically check the status of batch eligibility checks submitted through the API or CSV upload. These endpoints help you determine when to start polling for results.

#### Retrieve Batch Status [#retrieve-batch-status]

The [Retrieve Batch Status](/healthcare/api-reference/get-healthcare-batch-eligibility-status) endpoint returns a summary of the batch's processing status, including the number of completed checks, the error count, and the overall batch status. You can use it to determine when to start polling for the results of the eligibility checks within the batch. For example:

* Don't start polling until either the `successCount` or the `errorCount` are greater than zero because these properties indicate checks that Stedi has finished processing. Or, you may want to poll once when the batch `status` is `COMPLETED` or `COMPLETED_WITH_ERRORS`, meaning all checks have been processed.
* You can stop polling when the `inProgressCount` reaches zero or when the batch `status` is `COMPLETED` or `COMPLETED_WITH_ERRORS`.

The following is an example response for a batch submitted through the API. The `successCount` matches the `totalCount`, indicating that all checks in the batch have been successfully processed and that the payer returned a response.

Note that successful processing doesn't necessarily mean that the patient has active coverage. It simply means that the payer returned a response for the check. You'll need to review the individual check results to determine the patient's coverage status.

```json
{
  "batchType": "ELIGIBILITY",
  "createdAt": "2025-06-13T17:14:20.02Z",
  "errorCount": 0,
  "id": "01976a49-05f4-7421-bc33-aed86f1fccc6",
  "inProgressCount": 0,
  "name": "01976a49-05f4-7421-bc33-aed86f1fccc6",
  "source": "API",
  "status": "COMPLETED",
  "successCount": 9000,
  "totalCount": 9000,
  "updatedAt": "2025-06-13T17:14:24.872Z",
  "validatedCount": 0,
  "validationFailedCount": 0
}
```

#### Retrieve Batch Check Statuses [#retrieve-batch-check-statuses]

The [Retrieve Batch Check Statuses](/healthcare/api-reference/get-healthcare-batch-eligibility-check-statuses) endpoint retrieves the processing status of the eligibility checks in the specified batch. You can use it to determine whether specific eligibility checks within a batch have completed. You can also use the response to determine whether patients have active or inactive coverage without having to poll.

The following is an example response for two checks in a batch submitted through a CSV upload. You can tell because the results include the `rowNumber`, which indicates the row number for that eligibility check in the CSV file.

* The first check has an `eligibilityCheckResult` of `ACTIVE`, indicating that the payer returned at least one active eligibility and benefit type. This means that the patient has active coverage for at least some services. Its `state` is `COMPLETED`, indicating that the check was successfully processed and that the payer returned a response.
* The second check has an `eligibilityCheckResult` of `FAILED`, indicating that Stedi didn't receive benefits information from the payer. Its `state` is `COMPLETED_WITH_ERRORS`, which typically indicates that Stedi couldn't get a response from the payer after retrying. Failures like this are often due to payer connectivity issues.

Each check's `additionalInfo.eligibility` object includes the following [eligibility check identifiers](#eligibility-check-identifiers):

* `submitterTransactionIdentifier`: The identifier you assigned to the check when submitting the batch.
* `id`: The globally unique, Stedi-assigned eligibility check ID.

```json
{
  "items": [
    {
      "additionalInfo": {
        "eligibility": {
          "eligibilitySearchId": "01932c61-2d4f-7d22-85fa-c7db2e13e771",
          "id": "ec_01932c61-2d4f-7d22-85fa-c7db2e13e770",
          "submitterTransactionIdentifier": "ABC123456789",
          "eligibilityCheckResult": "ACTIVE",
          "payerId": "BCBS",
          "subscriberFirstName": "John",
          "subscriberLastName": "Doe",
          "subscriberMemberId": "123456789"
        }
      },
      "batchId": "01932c61-2d4f-7d22-85fa-c7db2e13e771",
      "createdAt": "2025-03-31T14:25:30Z",
      "requestId": "req-01a2b3c4-d5e6-7f89-0123-456789abcdef",
      "rowNumber": 3,
      "state": "COMPLETED",
      "updatedAt": "2025-03-31T14:26:45Z"
    },
    {
      "additionalInfo": {
        "eligibility": {
          "eligibilitySearchId": "01932c61-2d4f-7d22-85fa-c7db2e13e772",
          "submitterTransactionIdentifier": "GHJ987654321",
          "eligibilityCheckResult": "FAILED",
          "payerId": "AETNA",
          "subscriberFirstName": "Jane",
          "subscriberLastName": "Smith",
          "subscriberMemberId": "987654321"
        }
      },
      "batchId": "01932c61-2d4f-7d22-85fa-c7db2e13e771",
      "createdAt": "2025-03-31T14:25:30Z",
      "requestId": "req-02a2b3c4-d5e6-7f89-0123-456789abcdef",
      "rowNumber": 2,
      "state": "COMPLETED_WITH_ERRORS",
      "updatedAt": "2025-03-31T14:27:15Z"
    }
  ],
  "nextPageToken": "945ff6de213d3ef481d028065d4c12fb996a166a3a90ef98564318decfae50ce4b36d74b7e9d9bafa6e1d169"
}
```

## Retrieve batch results [#retrieve-batch-results]

You can retrieve batch check results through the Stedi portal or API.

### Stedi portal [#stedi-portal-1]

To review batch results:

1. Go to the [Batch eligibility checks](https://portal.stedi.com/app/healthcare/checks/batch) page.
2. Click the batch name to view its details, including the status of each check in the batch.
3. Click any eligibility check to go to its details. You'll be able to review the full request and response payload as well as any error messages (if present). You'll also be able to edit the request details for failed eligibility checks and resubmit them to the payer.

### Polling endpoint [#polling-endpoint]

You can use the [Poll Batch Eligibility Checks](/healthcare/api-reference/get-healthcare-polling-eligibility) endpoint to retrieve the results from batch checks submitted through both the API and CSV upload.

You should [track completed checks](#track-completed-checks) to determine when to stop polling.

#### Polling strategy [#polling-strategy]

We recommend using the [Retrieve Batch Status](/healthcare/api-reference/get-healthcare-batch-eligibility-status) endpoint to monitor the progress of large batches and determine when to start polling for results.

* Don't start polling until either the `successCount` or the `errorCount` are greater than zero because these properties indicate checks that Stedi has finished processing. Or, you may want to poll once when the batch `status` is `COMPLETED` or `COMPLETED_WITH_ERRORS`, meaning all checks have been processed.
* You can stop polling when the `inProgressCount` reaches zero or when the batch `status` is `COMPLETED` or `COMPLETED_WITH_ERRORS`.

While batches are in progress, a single polling attempt may not retrieve responses for all checks within the batch. Most batches complete in 15 to 30 minutes. However, Stedi retries checks that fail due to [payer connectivity issues](/healthcare/eligibility-troubleshooting#payer-connectivity-issues) for 8 - 24 hours, depending on the configured retry period. It can take up to the configured retry period for all checks in a batch to return results.

After your initial poll, use exponential backoff with jitter. Start at 2 minutes and approximately double the wait between polls, up to the end of the configured retry period. For example, you might use something similar to the following formula (all values in seconds) for the 8-hour default retry period:

```
wait_time = (0 if attempt == 0 else min(120 * 2**(attempt - 1), 8*60*60)) + random(0, 30)
```

In this formula:

* **Immediate first poll:** if `attempt == 0` then wait time is `0`.
* **Start at 2 minutes:** On attempt == `1`, base wait is 120 seconds (2 minutes).
* **Exponential backoff:** Doubles each time: 2, 4, 8, 16, ... minutes.
* **Cap at 8 hours:** min(..., 8*60*60) ensures it never exceeds 480 minutes.
* **Jitter:** Adds a random delay between 0 and 30 seconds.

#### Filter polling results [#filter-polling-results]

You can filter the polling results using the following query parameters:

* `batchId`: Retrieve results for a specific batch of eligibility checks. You can find this value in the synchronous response from the [Batch Eligibility Check](/healthcare/api-reference/post-healthcare-batch-eligibility) endpoint.
* `startDateTime`: Retrieve results for checks submitted after a specific date and time (in ISO 8601 format).

The following example example retrieves the results for batch checks submitted after `2025-12-31T00:00:00Z`:

```bash
curl --request GET \
  --url https://manager.us.stedi.com/2024-04-01/eligibility-manager/polling/batch-eligibility?startDateTime=2025-12-31T00:00:00Z \
  --header 'Authorization: <api-key>'
```

#### Track completed checks [#track-completed-checks]

The polling endpoint only returns checks that have been fully processed. These are checks that:

* Returned benefits information indicating either active or inactive coverage. These checks have a final `state` of `COMPLETED` and an `eligibilityCheckResult` of `ACTIVE` or `INACTIVE`.
* Returned an error response from the payer that doesn't indicate payer connectivity issues. For example, if the payer returns an error indicating that the member ID is invalid, Stedi considers this a completed check and returns it in the batch results with the associated [`AAA` error](/healthcare/eligibility-troubleshooting#payer-aaa-errors) of `72` (Invalid/Missing Subscriber/Insured ID). These checks have a final `state` of `COMPLETED` and an `eligibilityCheckResult` of `FAILED`.
* Returned `AAA` errors `42` or `80` for the entire retry period. These `AAA` errors indicate payer connectivity issues, and Stedi retries checks that fail due to payer connectivity issues for 8 - 24 hours. After the configured retry period, Stedi returns it in the batch results with the associated `AAA` error. These checks have a final `state` of `COMPLETED_WITH_ERRORS` and an `eligibilityCheckResult` of `FAILED`.
* Stedi couldn't process due to validation errors in the request data. These checks have a final `state` of `VALIDATION_FAILED` and an `eligibilityCheckResult` of `FAILED`.

Checks that Stedi hasn't yet finished processing aren't included in the polling results. For example, the polling endpoint won't return results for checks that are eligible for automatic retries.

You'll need to track the status of pending checks to determine when to stop polling. You can do this with either of the status endpoints:

* [Retrieve Batch Status](/healthcare/api-reference/get-healthcare-batch-eligibility-status): Returns summary information about the batch, including the `inProgressCount`, which indicates how many checks are still pending. You can stop polling when this count reaches zero or when the batch `status` is `COMPLETED` or `COMPLETED_WITH_ERRORS`.
* [Retrieve Batch Check Statuses](/healthcare/api-reference/get-healthcare-batch-eligibility-check-statuses): Returns status information for all checks in the batch, including those that are still pending. The information for each check includes the `submitterTransactionIdentifier` you assigned when you submitted the batch. This identifier is also present in the polling results, allowing you to correlate the original eligibility request with its processing status and the payer's response.

## Eligibility check identifiers [#eligibility-check-identifiers]

There are two identifiers you can use to reference individual eligibility checks within a batch. They're returned in both the Retrieve Batch Check Statuses and the Poll Batch Checks endpoint responses.

### Submitter transaction identifier [#submitter-transaction-identifier]

The submitter transaction identifier is an ID that you assign to each eligibility check you submit in a batch. It must be unique within the batch.

* **Batch Check Statuses:** [`items[].additionalInfo.eligibility.submitterTransactionIdentifier`](/healthcare/api-reference/get-healthcare-batch-eligibility-check-statuses#response.items.additionalInfo.eligibility.submitterTransactionIdentifier)
* **Poll Batch Checks:** [`items[].submitterTransactionIdentifier`](/healthcare/api-reference/get-healthcare-polling-eligibility#response.items.submitterTransactionIdentifier)

You can use the submitter transaction identifier to correlate the original eligibility request with both its processing status and the payer's benefit response.

### Eligibility check ID [#eligibility-check-id]

The eligibility check ID is a globally unique identifier that Stedi automatically assigns to each eligibility check. It's formatted as `ec_<UUID>`.

* **Batch Check Statuses:** [`items[].additionalInfo.eligibility.id`](/healthcare/api-reference/get-healthcare-batch-eligibility-check-statuses#response.items.additionalInfo.eligibility.id)
* **Poll Batch Checks:** [`items[].id`](/healthcare/api-reference/get-healthcare-polling-eligibility#response.items.id)

You can use the eligibility check ID to link directly to an eligibility check's results in the Stedi portal. The format for direct portal links is: `https://portal.stedi.com/app/healthcare/eligibility/{search-id}/inspect/{check-id}`, where `{search-id}` is the [eligibility search ID](/healthcare/api-reference/get-healthcare-polling-eligibility#response.items.eligibilitySearchId) and `{check-id}` is the unique, Stedi-assigned eligibility check ID. You can find the eligibility search ID at the top of an eligibility search's details page in the [Stedi portal](https://portal.stedi.com/app/healthcare/eligibility).

## Minimize waste [#minimize-waste]

We recommend the following to optimize batch eligibility checks:

* Periodically purge or archive records for inactive patients. It's a waste to perform eligibility checks on patients who have died or who haven't scheduled an encounter for several years.
* Remove or deactivate patients that are no longer eligible. The payer indicates ineligibility by setting `benefitsInformation.code = "6"` (Inactive) in the response.

## Monitor for potential coverage loss [#monitor-for-potential-coverage-loss]

When you receive the results of your batch eligibility checks, look for patients who have coverage that may be at risk.

Check for `benefitsInformation[].code` = `5`, which stands for Active - Pending investigation, or a response containing a `benefitsInformation[].benefitsDateInformation.premiumPaidToDateEnd` before the current date. Some payers may still show active coverage while the subscriber is behind on premium payments.

You may want to conduct additional checks on these patients because they have an elevated risk of losing coverage soon.

## Costs [#costs]

The costs for running a batch eligibility check – manually or using the API – are the same as running the equivalent number of real-time eligibility checks.

For example, if you run a batch with 500 checks, it will cost the same as running 500 real-time eligibility checks.

## CMS traceability requirements [#cms-traceability-requirements]

<Note>
  All parties involved in HETS eligibility transactions must comply with the [HETS Rules of Behavior](https://www.cms.gov/research-statistics-data-and-systems/cms-information-technology/hetshelp/downloads/eligibilitytransactionsysteminquiriesrulesofbehavior.pdf). Compliance is also required under our terms. Review the Rules of Behavior before sending eligibility checks to CMS.
</Note>

Starting November 8, 2025, the Centers for Medicare & Medicaid Services (CMS) requires submitters to include the entire chain of network hops for every eligibility request sent to CMS's eligibility system, HETS.

Specifically, requests must include an `X-Forwarded-For` HTTP header containing the network IP addresses from the point of origin through receipt by the HETS system. CMS expects `X-Forwarded-For` to list each IP, comma-separated, starting with the originating system and continuing through every intermediary.

To comply with this requirement:

* You must collect all IP addresses for upstream requests and pass them in the standard `X-Forwarded-For` header when calling Stedi's API. If you are yourself an intermediary – for example, an RCM, EHR, or PMS system – you'll need to coordinate with your providers and any third-party organizations to ensure they include the Network IP details as part of the `X-Forwarded-For` header. This enables CMS to receive a complete list of all IPs, including the original initiator of the request (typically, the provider).
* Stedi records the IP address you use when you call our API, as well as all the IP addresses listed in the `X-Forwarded-For` header. We include these IP addresses in the list submitted to CMS.

You only need to include the `X-Forwarded-For` header in eligibility requests when there are upstream IP addresses.

The following examples illustrate when and how to include the header:

| Scenario                                                                                                                                                                   | `X-Forwarded-For` required?                                                                                                                      | Result                                                                |
| -------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------ | --------------------------------------------------------------------- |
| A provider (IP `2.2.2.2`) connects directly to Stedi without intermediaries.                                                                                               | No.                                                                                                                                              | CMS ultimately receives `X-Forwarded-For: 2.2.2.2`                    |
| A provider (IP `2.2.2.2`) routes through an RCM platform's transactional system (IP `3.3.3.3`) that calls Stedi's API using a separate integration backend (IP `4.4.4.4`). | Yes. The RCM platform sets `X-Forwarded-For: 2.2.2.2, 3.3.3.3`. Stedi records the IP address of the API caller (`4.4.4.4` ) and sends it to CMS. | CMS ultimately receives `X-Forwarded-For: 2.2.2.2, 3.3.3.3, 4.4.4.4`. |
| A provider network (IP `2.2.2.2`) passes through an office firewall (IP `4.4.4.4`) and then an RCM platform (IP `3.3.3.3`), which calls Stedi's API.                       | Yes. The RCM platform sets `X-Forwarded-For: 2.2.2.2, 4.4.4.4`. Stedi records the IP address of the API caller (`3.3.3.3`) and sends it to CMS.  | CMS ultimately receives `X-Forwarded-For: 2.2.2.2, 4.4.4.4, 3.3.3.3`. |

### U.S. IP address requirement [#us-ip-address-requirement]

Stedi blocks eligibility requests to CMS when any IP address in the chain – the originating IP address or any in the X-Forwarded-For header – is located outside the United States.

# Billing and pricing
Source: https://www.stedi.com/docs/healthcare/billing


Learn about Stedi account types, pricing plans, and billing.

## Account types [#account-types]

Every Stedi account is either a sandbox account or a production account.

### Sandbox accounts [#sandbox-accounts]

Sandbox accounts are free and limited to test mode. You can use sandbox accounts to:

* Run mock eligibility checks.
* Explore the Stedi portal.
* Build and test your eligibility integration using test API keys. Developers and coding agents can run eligibility checks in a free sandbox account using test API keys. When they're ready to move to production, they can upgrade in account settings and swap in a production API key.

<Note>
  Sandbox accounts don't support submitting test claims through the API or SFTP. You need a production account to access these features.
</Note>

### Production accounts [#production-accounts]

Production accounts can process unlimited real transactions with payers. Stedi offers production accounts on two pricing plans: pay-as-you-go for per-transaction billing with volume discounts, or custom plans for high-volume customers requiring enterprise features.

All production accounts include:

* Unlimited user seats and providers
* Transaction enrollment, including the Transaction Enrollment API
* A searchable, programmatic payer list
* All transactions and APIs available on our [pricing page](https://www.stedi.com/pricing)
* The Stedi MCP server for AI agents
* Stedi Agent, an in-app AI assistant
* Real-time support over Slack, Microsoft Teams, and email

### Upgrade to production [#upgrade-to-production]

To upgrade from a sandbox account to production, click **Upgrade account** in the side navigation. Then, follow the upgrade flow.

## Pricing plans [#pricing-plans]

Production accounts are available on one of two pricing plans:

### Pay as you go [#pay-as-you-go]

The pay-as-you-go plan uses prepaid credits with usage-based pricing and automatic volume-based discounts. The plan uses tiered pricing – for most transactions, the per-transaction rate drops as your monthly volume grows.

When you [sign up](https://portal.stedi.com/auth/sign-up?redirect_uri=https%3A%2F%2Fportal.stedi.com%2Fapp%2Fcreate-account) for the pay-as-you-go plan, you add a credit card and fund an initial Stedi account balance, starting at $25.

Each transaction draws down the balance at the rate for its pricing tier. Visit our [pricing page](https://www.stedi.com/pricing) for an estimator and full breakdown of each tier.

Stedi automatically adds to your balance when it drops below a trigger you set. For example, you can add $100 to your balance whenever it falls below $10, the minimum trigger.

Your balance rolls forward month to month. At the end of each month, Stedi sends an invoice that covers your monthly usage. If you send zero transactions in a month, you pay nothing.

### Custom [#custom]

The custom plan offers discounted usage rates for customers with high transaction volume. Custom plans also include enterprise features like SSO, SCIM, and consolidated billing for integrated accounts.

To request a custom plan, [contact us](https://www.stedi.com/contact).

## Billing [#billing]

Manage your payment methods and understand how Stedi billing works.

### Add or update payment method [#add-or-update-payment-method]

This section applies to pay-as-you-go accounts.

To add or update your payment method:

1. Go to your [Account settings](https://portal.stedi.com/app/settings/account-details).
2. Click **Billing**.
3. In the **Payment method** section, click **Edit**.

Stedi bills any charges to the payment method on file.

### Download W9 form [#download-w9-form]

To download Stedi's W9 tax form:

1. Go to your [Account settings](https://portal.stedi.com/app/settings/account-details).
2. Click **Billing**.
3. In the **Tax information** section, click **Download**.

### Pay-as-you-go billing [#pay-as-you-go-billing]

Manage your pay-as-you-go billing, including viewing your balance, downloading receipts, manually adding funds, and configuring auto-recharge settings.

#### View your current balance [#view-your-current-balance]

To view your current account balance:

1. Go to your [Account settings](https://portal.stedi.com/app/settings/account-details).
2. Click **Billing**.

The billing page displays your current balance as well as your pricing plan at the top of the page.

#### Review payment history [#review-payment-history]

To view your payment history and download receipts:

1. Go to your [Account settings](https://portal.stedi.com/app/settings/account-details).
2. Click **Billing**.
3. View your payment history in the **Payments** section and download receipts for individual payments.

#### Manual top-up [#manual-top-up]

You can manually add funds to your balance at any time. Charges and the updated balance are reflected immediately.

To manually add to your balance:

1. Go to your [Account settings](https://portal.stedi.com/app/settings/account-details).
2. Click **Billing**.
3. In the **Manual top-up** section, enter the amount you want to add (minimum $25).
4. Click **Top-up**.

#### Configure auto-recharge settings [#configure-auto-recharge-settings]

You can configure when Stedi automatically adds to your balance and how much to add each time.

To configure your auto recharge settings:

1. Go to your [Account settings](https://portal.stedi.com/app/settings/account-details).
2. Click **Billing**.
3. In the **Auto recharge** section, click **Edit** and set your preferred values:
   * **When balance is below**: The minimum balance that triggers an automatic recharge (minimum $10).
   * **Add this amount**: The amount to add when your balance falls below the trigger (minimum $25).

Stedi automatically charges your payment method on file when your balance drops below the reload trigger.

<Warning>
  When your account balance reaches $0, access is suspended immediately. You'll be unable to process new transactions. To avoid this, set your recharge amount and threshold based on your usage, and leave a generous buffer.
</Warning>

### Failed payments [#failed-payments]

This section applies to pay-as-you-go accounts. When an automatic recharge payment fails, you'll receive email and in-app notifications. You must take action to resolve the issue. You retain full access to your account until your balance reaches $0.

#### Resolve failed payments [#resolve-failed-payments]

If auto-recharge fails, you must resolve the issue to avoid service interruption. The fastest way to restore a positive balance in your account is to retry the failed payment:

1. Go to your [Account settings](https://portal.stedi.com/app/settings/account-details).
2. Click **Billing**.
3. Check that your payment method is valid and has sufficient funds. For example, ensure your credit card hasn't expired and has enough available credit.
4. Update your payment method if needed.
5. Retry the failed payment.

#### Failed payment notifications [#failed-payment-notifications]

You'll receive email and in-app notifications at key points in the failed payment process:

* **Payment failure**: When an auto-recharge payment fails.
* **Access suspended**: When your balance reaches $0 and account access is suspended.
* **16-day reminder**: When your account has been suspended for 16 days, reminding you that your account will be closed after 30 days of suspension.
* **25-day reminder**: When your account has been suspended for 25 days, reminding you that your account will be closed after 30 days of suspension.
* **Access restored**: When your balance returns to positive and access is restored.

Stedi sends all email notifications to your admin account email and billing email addresses.

#### Account suspension and closure [#account-suspension-and-closure]

When your balance reaches $0 or goes negative, Stedi immediately suspends your account:

* **API access is suspended**: You cannot process new transactions.
* **Portal access is limited**: You can only access billing and payment settings to resolve the issue.

As soon as your balance returns to positive (through a successful retry payment or an auto recharge), Stedi restores full access.

<Warning>
  If your account remains suspended for 30 consecutive days, it becomes eligible for closure. You'll receive reminder emails at 14 days and 5 days before closure.
</Warning>

### Custom billing [#custom-billing]

Manage your custom plan billing, including downloading invoices.

#### Download invoices [#download-invoices]

To download invoices:

1. Go to your [Account settings](https://portal.stedi.com/app/settings/account-details).
2. Click **Billing**.
3. Download your latest invoice from the top of the page, or download past invoices from the **Invoices** section.

# Build with AI
Source: https://www.stedi.com/docs/healthcare/build-with-ai


Stedi provides AI-powered tools and resources to help you build eligibility and claims processing workflows faster.

* **Build agents that work with eligibility data:** Install the [Model Context Protocol (MCP) server](#model-context-protocol-server)
* **Code with AI assistants:** Give them [AI-friendly versions](#ai-friendly-documentation) of our developer guides and API specifications, and use [test workflows](#test-workflows) to develop without real patient data

## Get started [#get-started]

Try building with Stedi's AI-friendly resources by following our step-by-step tutorial. You'll build a functional insurance verification app in under 30 minutes using Stedi's JSON Eligibility API and a coding agent like Claude Code or Cursor.

The tutorial walks through the complete process: setting up your Stedi account, generating test API keys, building a Next.js backend with AI assistance, and creating a web UI. You'll use the same AI-friendly documentation and test workflows described on this page.

[Build an insurance verification app with a coding agent](https://www.stedi.com/blog/build-an-insurance-verification-app-with-a-coding-agent)

## Test workflows [#test-workflows]

Stedi provides test workflows that AI coding agents can use to build and test integrations without using real patient data or contacting actual payers.

### Get a test API key [#get-a-test-api-key]

Test API keys allow you to send mock requests and receive realistic responses without transmitting PHI or PII.

To create a test API key:

1. Log into your [Stedi account](https://portal.stedi.com/app).
2. Click your account name in the side navigation.
3. Select **API Keys**.
4. Click **Generate new API Key**.
5. Enter a name with a `test` prefix and choose **Test** as the key type.
6. Click **Generate** and copy your key.

Learn more about [API authentication](/healthcare/api-reference#authentication).

### Test eligibility checks [#test-eligibility-checks]

Use your test API key to send [mock eligibility requests](/healthcare/api-reference/mock-requests-eligibility-checks) that return realistic responses including coverage indicators, copays, and deductibles. Mock requests work with Stedi's JSON, Raw X12, and SOAP endpoints. Mock requests are free and don't incur charges.

Here's an example test request your AI assistant can use:

```bash
curl --request POST \
  --url 'https://healthcare.us.stedi.com/2024-04-01/change/medicalnetwork/eligibility/v3' \
  --header 'Authorization: Key {test_api_key}' \
  --header 'Content-Type: application/json' \
  --data '{
    "tradingPartnerServiceId": "60054",
    "provider": {
        "organizationName": "Provider Name",
        "npi": "1999999984"
    },
    "subscriber": {
        "firstName": "John",
        "lastName": "Doe",
        "memberId": "AETNA9wcSu"
    },
    "dependents": [
        {
            "firstName": "Jordan",
            "lastName": "Doe",
            "dateOfBirth": "20010714"
        }
    ],
    "encounter": {
        "serviceTypeCodes": ["30"]
    }
}'
```

### Test claims [#test-claims]

Use production API keys with the test usage indicator (`"usageIndicator": "T"`) to submit test claims. Claims aren't forwarded to payers, and you receive test 277CA acknowledgments. Submit to the Stedi Test Payer (ID: `STEDI`) to generate test ERAs within minutes.

Visit [Test claims workflow](/healthcare/test-claims-workflow) for complete instructions.

## Data security and compliance [#data-security-and-compliance]

When using AI tools with healthcare data, follow your organization's data handling policies to ensure HIPAA compliance. Most organizations require a Business Associate Agreement (BAA) with third-party AI tools before using them with production healthcare data.

Stedi's [test workflows](#test-workflows) let you develop and test integrations without transmitting PHI or PII.

## Model Context Protocol server [#model-context-protocol-server]

The [Model Context Protocol (MCP) server](/healthcare/mcp-server) provides tools that AI agents can use to perform and troubleshoot eligibility checks through Stedi's APIs. It includes built-in logic for finding the correct payer, handling errors, and implementing retry strategies, so you can focus on building your agent's core functionality.

The MCP server is ideal for:

* Voice agents that need to verify benefits in real time
* Revenue Cycle Management (RCM) workflow agents that validate coverage before scheduling appointments
* Development teams using MCP clients to test integrations and troubleshoot issues

The MCP server supports both API key and OAuth 2.x authentication, and works with popular AI platforms like Claude Code.

<Tip>
  For production accounts, the MCP server works with [test mode](/healthcare/test-mode). In test mode, you can use test API keys to develop and test your AI agents without transmitting PHI or PII.
</Tip>

## AI-friendly documentation [#ai-friendly-documentation]

Stedi offers documentation in AI-friendly formats that you can provide to tools like ChatGPT, Claude, Cursor, and other AI assistants.

For best results, provide both [OpenAPI specifications](#openapi-specifications) and [`llms-full.txt`](#llms-full-txt) for comprehensive developer guides.

### OpenAPI specifications [#openapi-specifications]

[github.com/Stedi/openApi](https://github.com/Stedi/openApi)

OpenAPI specifications provide machine-readable API definitions including endpoints, parameters, request/response schemas, and real-world examples.

**When to use:** Provide these to your AI assistant when you need it to help you generate API calls, understand API structure, or validate request and response formats.

### llms.txt [#llmstxt]

[/llms.txt](https://www.stedi.com/docs/llms.txt)

A simple list of available documentation pages with titles and descriptions.

**When to use:** Use this to give your AI assistant a quick overview of available pages. Many AI assistants check for this file automatically.

### llms-full.txt [#llms-fulltxt]

[/llms-full.txt](https://www.stedi.com/docs/llms-full.txt)

The complete markdown content of all documentation pages in a single file. This includes guides, how-tos, troubleshooting, and conceptual explanations.

**When to use:** Provide this to your AI assistant when you need comprehensive context about how to build eligibility and claims processing workflows with Stedi.

### Individual markdown pages [#individual-markdown-pages]

You can access individual documentation pages in markdown format at `/llms.mdx/[page-url]`. For example, `/llms.mdx/healthcare/send-eligibility-checks`. You can also copy them from the UI by clicking the **Copy for LLM** menu at the top of each documentation page.

**When to use:** Use individual pages when you have token limits that prevent loading `llms-full.txt`, or when you only need context about specific features.

### How to use these resources [#how-to-use-these-resources]

The specific method depends on which AI tool you're using.

You may want to add references to your agent's configuration - for example, a [Cursor rule](https://cursor.com/docs/rules#rule-file-structure) or [Claude skill](https://code.claude.com/docs/en/skills) file. This ensures the context is applied automatically across sessions.

```
You have access to Stedi's healthcare API documentation and specifications:
- Full documentation: https://www.stedi.com/docs/llms-full.txt
- OpenAPI specs: https://github.com/Stedi/openApi

When helping with Stedi integrations, consult these resources first.
```

You can also provide these resources as context when starting a conversation with tools like ChatGPT, Claude, or Google Gemini.

```
I'm working with Stedi's healthcare APIs. Please reference:
- Full documentation: https://www.stedi.com/docs/llms-full.txt
- OpenAPI specs: https://github.com/Stedi/openApi

Help me [describe your task].
```

**Example prompts**

Once your AI assistant has access to the documentation, you can ask it to help with tasks like:

* "Help me implement eligibility checks for a new RCM system. Show me how to construct the JSON request and handle the response."
* "Generate TypeScript code to submit professional claims using Stedi's API, including error handling and retry logic."
* "What's the correct Claim Frequency Code for resubmitting an institutional claim that was already adjudicated?"

<Tip>
  Always review and test AI-generated code before using it in production. While AI assistants can help you build integrations faster, you should verify that the generated code meets your specific requirements and follows your organization's standards.
</Tip>

# Check claim status
Source: https://www.stedi.com/docs/healthcare/check-claim-status


You may need to check the status of a claim when you don't receive a 277CA or 835 ERA response from the payer within your expected timeframe. You may also want to check the status of a claim submitted by another entity. For example, a billing agency may want to check the status of a claim submitted by their customer, who is a provider.

## Testing [#testing]

You can only run real-time claim status checks for production claims that have entered the payer's processing system.

Requests for test claims or claims the payer hasn't yet accepted for processing won't return results. That's why our [claim status best practices](#best-practices) recommend waiting at least a week after submission before attempting to check a claim's status. You also won't be able to check the status if Stedi or the payer rejected a claim with a [277CA claim acknowledgment](/healthcare/receive-claim-responses).

You can find examples of claim status requests and responses in the [sample requests and responses](#sample-requests-and-responses) section on this page.

## Transaction enrollment [#transaction-enrollment]

[Transaction enrollment](/healthcare/transaction-enrollment) is the process of registering a provider to exchange specific healthcare transactions with a payer. Some payers require enrollment before allowing providers to submit real-time claim status checks through a new clearinghouse. This enrollment process is separate from the transaction enrollment process for 837 claims.

You can check whether a specific payer requires transaction enrollment for real-time claim status checks in the [Payer Network](https://www.stedi.com/healthcare/network) or through the [Payers API](/healthcare/api-reference/get-payer).

To enroll, complete the following steps:

1. Create a provider record with the information required for enrollment. If you already have a record for the provider, you can skip this step. [Stedi portal](https://portal.stedi.com/app/healthcare/providers) | [API endpoint](/healthcare/api-reference/post-enrollment-create-provider)
2. Submit an enrollment request for real-time claim status. [Stedi portal](https://portal.stedi.com/app/healthcare/enrollments) | [API endpoint](/healthcare/api-reference/post-enrollment-create-enrollment)

<Note>
  For most payers that require enrollment for claim status checks, enrolling through Stedi won't impact your ability to send transactions to your original clearinghouse. For any questions on payer nuances, contact Stedi's support team.
</Note>

## Best practices [#best-practices]

We recommend following these best practices when checking claim status.

* **Wait for the payer to receive the claim.** You can check a claim's status once the payer has received and accepted it into their processing system - you don't need to wait until the claim is fully adjudicated. We recommend waiting at least 2-3 days after submitting the claim or until you receive a 277CA claim acknowledgment from the payer indicating they have received the claim.

* **Check periodically.** If you haven't received an 835 ERA, we recommend checking the claim's status at 21 days after submission and then again at 1 month.

* **Supply a date of service range.** We recommend the following when providing dates of service:
  * The date range should be at least plus or minus 7 days from the date of the services listed in the claim. The payer may have stored a different date for the encounter than the one in your records, so providing a date range increases the likelihood that the payer will find a match.
  * Keep the date range to 30 days or less. Some payers may reject requests with a date range that is too wide.
  * Don't submit future dates - only submit date ranges up to and including today's date. Some payers reject requests containing future service dates.

* **Start with the recommended base request.** Providing too much information in a claim status request can negatively affect the results. We recommend starting with only the minimum required information.

## Manual submission [#manual-submission]

You can submit a claim status request manually through the [Create claim status check](https://portal.stedi.com/app/healthcare/claims/status/create) form in Stedi.

The response view shows both claim-level and service-level details. If the claim status request returns information for multiple claims, you can use the dropdown to navigate between them.

## API submission [#api-submission]

Call one of the following endpoints to send a 276/277 real-time claim status:

* [Claim Status](/healthcare/api-reference/post-healthcare-claim-status) to send requests in JSON
* [Claim Status Raw X12](/healthcare/api-reference/post-healthcare-claim-status-raw-x12) to send requests in X12 EDI

Both endpoints return a synchronous claim status response from the payer in JSON format. The response may contain information about more than one claim, if the payer has multiple claims on file that match the information you provided.

### Headers [#headers]

When constructing the request, you must include the following information in HTTP headers:

* **`Authorization`:** [Generate an API key](https://portal.stedi.com/app/settings/developer/api-keys) to use for authentication.
* **`Content-Type`:** Set to `application/json`.

### Body - JSON [#body---json]

For best results, you should start with our [recommended base request](/healthcare/check-claim-status#json-base-request) and add more information only as needed.

Note that objects marked as **required** are required for all requests, while others are conditionally required depending on the circumstances. When you include a conditionally required object, you must include all of its required properties.

For example, you must always include the `subscriber` object in requests, but you only need to include the `serviceLinesInformation` object when you want to request the status for a specific service line.

#### JSON base request [#json-base-request]

We recommend starting with the following properties in a request to the [Real-Time Claim Status JSON](/healthcare/api-reference/post-healthcare-claim-status) endpoint:

| Information               | Description                                                                                                                                                                                                                                                                                                                                                                                                       |
| ------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `tradingPartnerServiceId` | This is the payer ID. Visit the [Payer Network](https://www.stedi.com/healthcare/network) for a complete list. You can send requests using the primary payer ID, the Stedi payer ID, or any payer ID alias listed in the payer record.                                                                                                                                                                            |
| `providers`               | The billing provider information from the original claim. To start, provide only the `npi`, `organizationName`, and `providerType` properties.                                                                                                                                                                                                                                                                    |
| `subscriber`              | The subscriber information from the original claim. To start, provide only the `firstName`, `lastName`, `dateOfBirth`, `gender`, and `memberId` properties.                                                                                                                                                                                                                                                       |
| `dependent`               | The dependent information from the original claim. To start, provide only the `firstName`, `lastName`, `dateOfBirth`, and `gender` properties. If the patient is the subscriber, you can omit this object.                                                                                                                                                                                                        |
| `encounter`               | The encounter information from the original claim. To start, provide only the `beginningDateOfService` and `endDateOfService` properties. Remember that you should provide a date range that is plus or minus 7 days from the date of service listed in the claim for best results. Only use date ranges that are up to and including today's date - some payers reject requests containing future service dates. |

The following examples show two base request payloads: one where the patient is the subscriber and one where the patient is the dependent. They include only the minimum recommended information:

<Tabs items="[&#x22;Subscriber&#x22;, &#x22;Dependent&#x22;]">
  <Tab value="Subscriber">
    {/* schema:ClaimStatusRequestContent */}

    ```json
    {
      "encounter": {
        "beginningDateOfService": "20240318",
        "endDateOfService": "20240402"
      },
      "providers": [
        {
          "npi": "1999999984",
          "organizationName": "Behavioral Services P.C.",
          "providerType": "BillingProvider"
        }
      ],
      "subscriber": {
        "firstName": "Jane",
        "lastName": "Doe",
        "dateOfBirth": "19000806",
        "gender": "F",
        "memberId": "111222333"
      },
      "tradingPartnerServiceId": "3429"
    }
    ```
  </Tab>

  <Tab value="Dependent">
    {/* schema:ClaimStatusRequestContent */}

    ```json
    {
      "encounter": {
        "beginningDateOfService": "20240318",
        "endDateOfService": "20240402"
      },
      "providers": [
        {
          "npi": "1999999984",
          "organizationName": "Behavioral Services P.C.",
          "providerType": "BillingProvider"
        }
      ],
      "subscriber": {
        "firstName": "Jane",
        "lastName": "Doe",
        "dateOfBirth": "19000806",
        "gender": "F",
        "memberId": "111222333"
      },
      "dependent": {
        "firstName": "John",
        "lastName": "Doe",
        "dateOfBirth": "19100323",
        "gender": "M"
      },
      "tradingPartnerServiceId": "3429"
    }
    ```
  </Tab>
</Tabs>

### Body - X12 EDI [#body---x12-edi]

Your payload must conform to [276 X12 EDI format](https://portal.stedi.com/app/guides/view/hipaa/claim-status-request-x212/01GRYB6A4XEJQ61Y2K2KT606E5).
For best results, you should start with our [recommended base request](/healthcare/check-claim-status#x12-base-request) and add more information only as needed.

#### Envelope and header [#envelope-and-header]

Stedi generates its own `ISA` and `GS` headers and `IEA` and `GE` trailers before sending your claim status request to the payer. You can submit your request to Stedi with any values in these segments, as long as they conform to the X12 EDI specification.

However, you must set `ST03` (Version, Release, or Industry Identifier) to `005010X212`.

#### X12 base request [#x12-base-request]

We recommend starting with the following properties in a request to the [Real-Time Claim Status Raw X12](/healthcare/api-reference/post-healthcare-claim-status-raw-x12) endpoint:

| Loop                                        | Fields and Description                                                                                                                                                                                                                                                                                                                                                                                                                    |
| ------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `Loop 2100A` (Payer Name)                   | You'll need to provide `NM1` (Payer Name). Specifically, `NM109` (Payer Identifier) must be a payer ID or payer ID alias listed in the [Payer Network](https://www.stedi.com/healthcare/network). For example, you could use `60054`, `HPQRS`, `AETNA`, or any other listed payer ID alias for Aetna.                                                                                                                                     |
| `Loop 2100B` (Information Receiver Name)    | The information for the entity making the request. To start, provide only the following:<ul><li>**`NM103`** (Information Receiver Last or Organization Name)</li><li>**`NM108`** (Identification Code Qualifier)</li><li>**`NM109`** (Information Receiver Identification Number) - this is the Electronic Transmitter Identification Number (ETIN)</li></ul>                                                                             |
| `Loop 2100C` (Provider Name)                | The billing provider's information from the original claim. To start, provide only the following:<ul><li>**`NM101`** (Entity Identifier Code)</li><li>**`NM102`** (Entity Type Qualifier)</li><li>**`NM103`** (Provider Last Name or Organization Name)</li><li>**`NM108`** (Identification Code Qualifier) set to `XX` for the NPI</li><li>**`NM109`** (Provider Identifier) - the provider's NPI</li></ul>                              |
| `Loop 2000D` (Subscriber)                   | The subscriber information from the original claim. To start, provide the following:<ul><li>**`HL`** (Hierarchical Level)</li><li>**`DMG01`** (Date Time Period Format Qualifier)</li><li>**`DMG02`** (Subscriber Birth Date)</li><li>**`DMG03`** (Subscriber Gender Code)</li></ul>                                                                                                                                                      |
| `Loop 2100D` (Subscriber Name)              | The subscriber information from the original claim. To start, provide the following:<ul><li>**`NM101`** (Entity Identifier Code)</li><li>**`NM102`** (Entity Type Qualifier)</li><li>**`NM103`** (Subscriber Last Name)</li><li>**`NM104`** (Subscriber First Name)</li><li>**`NM109`** (Member Identification Number)</li></ul>                                                                                                          |
| `Loop 2000E` (Dependent)                    | The dependent information from the original claim. If the patient is the subscriber, you can omit this loop. To start, provide only the following:<ul><li>**`DMG02`** (Dependent Birth Date)</li><li>**`DMG03`** (Dependent Gender Code)</li></ul>                                                                                                                                                                                        |
| `Loop 2100E` (Dependent Name)               | The dependent information from the original claim. If the patient is the subscriber, you can omit this loop. To start, provide only the following:<ul><li>**`NM103`** (Patient Last Name)</li><li>**`NM104`** (Patient First Name)</li></ul>                                                                                                                                                                                              |
| `Loop 2200D` (Claim Status Tracking Number) | The encounter information from the original claim. To start, only provide the following:<ul><li>**`TRN`** (Claim Status Tracking Number)</li><li>**`DTP`** (Claim Service Date): Provide a date range that is plus or minus 7 days from the date of service listed in the claim for best results. Only use date ranges that are up to and including today's date - some payers reject requests containing future service dates.</li></ul> |

The following examples show two base request payloads: one where the patient is the subscriber and one where the patient is the dependent. They include only the minimum recommended information:

<Tabs items="[&#x22;Subscriber&#x22;, &#x22;Dependent&#x22;]">
  <Tab value="Subscriber">
    ```
    ISA*00*          *00*          *ZZ*SENDER         *ZZ*RECEIVER       *250916*2048*^*00501*000000001*0*T*>~
    GS*HR*SENDERGS*RECEIVERGS*20260916*204811*1*X*005010X212~
    ST*276*0001*005010X212~
    BHT*0010*13*ABC45678*20260915*1425~
    HL*1**20*1~
    NM1*PR*2*PAYER NAME*****PI*87726~
    HL*2*1*21*1~
    NM1*41*2*REQUESTING PROVIDER NAME*****46*123456789~
    HL*3*2*19*1~
    NM1*1P*2*SERVICE PROVIDER NAME*****XX*1999999984~
    HL*4*3*22*0~
    DMG*D8*19000101*F~
    NM1*IL*1*DOE*JANE****MI*MEMBERID123456~
    TRN*1*123456789~
    DTP*472*RD8*20260601-20260614~
    SE*14*0001~
    GE*1*1~
    IEA*1*000000001~
    ```
  </Tab>

  <Tab value="Dependent">
    ```
    ISA*00*          *00*          *ZZ*SENDER         *ZZ*RECEIVER       *250916*2048*^*00501*000000001*0*T*>~
    GS*HR*SENDERGS*RECEIVERGS*20260916*204811*1*X*005010X212~
    ST*276*0001*005010X212~
    BHT*0010*13*ABC12345*20260915*1425~
    HL*1**20*1~
    NM1*PR*2*PAYER NAME*****PI*87726~
    HL*2*1*21*1~
    NM1*41*2*REQUESTING PROVIDER NAME*****46*123456789~
    HL*3*2*19*1~
    NM1*1P*2*SERVICE PROVIDER NAME*****XX*1999999984~
    HL*4*3*22*0~
    DMG*D8*19000101*F~
    NM1*IL*1*DOE*JANE****MI*MEMBERID123456~
    HL*5*4*23*0~
    DMG*D8*20010104*M~
    NM1*QC*1*DOE*JOHN~
    TRN*1*123456789~
    DTP*472*RD8*20260601-20260614~
    SE*17*0001~
    GE*1*1~
    IEA*1*000000001~
    ```
  </Tab>
</Tabs>

### Character restrictions [#character-restrictions]

Only use the X12 Basic and Extended character sets in request data. Using characters outside these sets may cause errors.

<Accordion title="Basic character set" id="basic-character-set">
  The X12 Basic character set includes uppercase letters, digits, space, and some special characters. Lowercase letters and special language characters like `ñ` are not included.

  The following special characters are included:

    <img alt="Basic special characters" src="__img0" />
</Accordion>

<Accordion title="Extended character set" id="extended-character-set">
  The Extended character set includes the characters listed in Basic, plus lowercase letters and additional special characters, such as `@`.

  The following additional special characters are included:
    <img alt="Extended special characters" src="__img1" />
</Accordion>

In addition, the following characters are reserved for delimiters in the final X12 EDI transaction to the payer: `~`, `*`, `:`, and `^`. X12 doesn't support using escape sequences to represent delimiters or special characters. Stedi returns a `400` error if you use these restricted characters improperly.

* **JSON endpoint:** Don't include delimiter characters anywhere in your request data.
* **Raw X12 endpoint:** You can use these characters as delimiters, but not in the body of the request data.

### Delimiter normalization [#delimiter-normalization]

Stedi reserves certain characters for delimiters in X12 EDI transactions. When these delimiter characters appear within data values - meaning they're used as content and not as actual delimiters, such as within a subscriber's name - Stedi replaces them to prevent parsing issues. Stedi normalizes delimiters within transaction data as follows:

| Character found in data | Replacement | Stedi's reserved delimiter type it conflicts with |
| ----------------------- | ----------- | ------------------------------------------------- |
| `*`                     | `\|`        | Element separator                                 |
| `^`                     | `\|`        | Repetition separator                              |
| `` ` ``                 | `'`         | Component element separator                       |
| `~`                     | `\|`        | Segment terminator                                |

**Examples:**

* `O*CONNOR` becomes `O|CONNOR`
* `CODE^01` becomes `CODE|01`
* ``O`CONNOR`` becomes `O'CONNOR`
* `MSG~HELLO` becomes `MSG|HELLO`

If you parse raw X12 EDI responses, ensure your parser reads delimiters from the `ISA` segment instead of assuming fixed delimiters.

### Timeout [#timeout]

Requests to payers typically time out at 1 minute, though Stedi can keep connections open longer than that if needed.

### Concurrency limit [#concurrency-limit]

Our real-time claim status endpoints share a concurrency pool with other real-time healthcare APIs. For more information, visit [Concurrency Limits](/healthcare/api-reference#concurrency-limits).

### Recommended API clients [#recommended-api-clients]

You may want to use an API client to make testing and debugging easier.

We **don't recommend** using Postman for requests containing Protected Health Information (PHI) because Postman defaults to storing request history - including full request payloads - on its cloud servers. You can't turn this feature off without impractical workarounds.

Visit [API clients](/healthcare/api-reference#api-clients) for a list of recommended clients you can use instead.

## Sample requests and responses [#sample-requests-and-responses]

The following examples show a 276 claim status request and 277 claim status response for Stedi's JSON endpoint.

### Accepted claims [#accepted-claims]

The following example shows a claim status request and response for a claim that has been accepted by the payer and is awaiting payment. The payer is UnitedHealthcare, and the request uses the payer ID alias `3429`.

<Accordion title="Accepted, waiting for payment - Subscriber -  UnitedHealthcare" id="accepted-waiting-for-payment---subscriber----unitedhealthcare">
  <Tabs items="[&#x22;Request&#x22;, &#x22;Response&#x22;]">
    <Tab value="Request">
      ```bash
      curl --request POST \
        --url https://healthcare.us.stedi.com/2024-04-01/change/medicalnetwork/claimstatus/v2 \
        --header 'Authorization: <api-key>' \
        --header 'Content-Type: application/json' \
        --data '{
        "encounter": {
          "beginningDateOfService": "20240318",
          "endDateOfService": "20240402"
        },
        "providers": [
          {
            "npi": "1999999984",
            "organizationName": "Behavioral Services P.C.",
            "providerType": "BillingProvider"
          }
        ],
        "subscriber": {
          "dateOfBirth": "19000806",
          "firstName": "Jane",
          "lastName": "Doe",
          "gender": "F",
          "memberId": "111222333"
        },
        "tradingPartnerServiceId": "3429"
      }'
      ```
    </Tab>

    <Tab value="Response">
      {/* schema:ClaimStatusResponseContent */}

      ```json
      {
        "claims": [
          {
            "claimStatus": {
              "amountPaid": "95.55",
              "claimServiceDate": "20240325",
              "effectiveDate": "2024-03-29",
              "paidDate": "2024-03-29",
              "patientAccountNumber": "3333333",
              "statusCategoryCode": "P5",
              "statusCategoryCodeValue": "Pending/Payer Administrative/System hold",
              "statusCode": "3",
              "statusCodeValue": "Claim has been adjudicated and is awaiting payment cycle.",
              "submittedAmount": "238.44",
              "trackingNumber": "222222222",
              "tradingPartnerClaimNumber": "5332034153-KK"
            },
            "serviceDetails": [
              {
                "service": {
                  "amountPaid": "95.55",
                  "procedureId": "90837",
                  "serviceIdQualifier": "Health Care Financing Administration Common Procedural Coding System (HCPCS) Codes",
                  "serviceIdQualifierCode": "HC",
                  "submittedAmount": "238.44",
                  "submittedUnits": "1"
                },
                "status": [
                  {
                    "effectiveDate": "2024-03-29",
                    "statusCategoryCode": "P5",
                    "statusCategoryCodeValue": "Pending/Payer Administrative/System hold",
                    "statusCode": "3",
                    "statusCodeValue": "Claim has been adjudicated and is awaiting payment cycle."
                  }
                ]
              }
            ]
          }
        ],
        "controlNumber": "222222222",
        "meta": {
          "applicationMode": "production",
          "traceId": "bf27223e-46c3-451e-b2b4-46f3f0b6fe3b"
        },
        "payer": {
          "organizationName": "UNITEDHEALTHCARE",
          "payerIdentification": "3429"
        },
        "providers": [
          {
            "organizationName": "Behavioral Services P.C.",
            "providerType": "BillingProvider",
            "taxId": "123456789"
          },
          {
            "npi": "1999999984",
            "organizationName": "Behavioral Services P.C.",
            "providerType": "ServiceProvider"
          }
        ],
        "reassociationKey": "000000001",
        "status": "success",
        "subscriber": {
          "firstName": "JANE",
          "lastName": "DOE",
          "memberId": "111222333"
        },
        "tradingPartnerServiceId": "3429",
        "x12": "..."
      }
      ```
    </Tab>
  </Tabs>
</Accordion>

The following example shows a claim status request and response for a claim that has been processed and paid. The payer is UnitedHealthcare, and the request uses the primary payer ID `87726`.

Note that this example response includes the payment amount and the service line item details. Some payers return this information in claim status responses, but most don't. You should typically plan to get these details from the 835 Electronic Remittance Advice (ERA) instead.

<Accordion title="Accepted, paid - Subscriber - UnitedHealthcare" id="accepted-paid---subscriber---unitedhealthcare">
  <Tabs items="[&#x22;Request&#x22;, &#x22;Response&#x22;]">
    <Tab value="Request">
      ```bash
      curl --request POST \
        --url https://healthcare.us.stedi.com/2024-04-01/change/medicalnetwork/claimstatus/v2 \
        --header 'Authorization: <api-key>' \
        --header 'Content-Type: application/json' \
        --data '{
        "tradingPartnerServiceId": "87726",
        "providers": [
          {
            "organizationName": "Provider Name",
            "npi": "1999999984",
            "providerType": "BillingProvider"
          }
        ],
        "subscriber": {
          "memberId": "UHC123456",
          "firstName": "Jane",
          "lastName": "Doe",
          "dateOfBirth": "19710101"
        },
        "encounter": {
          "beginningDateOfService": "20250630",
          "endDateOfService": "20250702"
        }
      }'
      ```
    </Tab>

    <Tab value="Response">
      {/* schema:ClaimStatusResponseContent */}

      ```json
      {
        "claims": [
          {
            "claimStatus": {
              "amountPaid": "108.77",
              "checkIssueDate": "2025-07-17",
              "checkNumber": "A123456789",
              "claimServiceDate": "20250701",
              "effectiveDate": "2025-07-17",
              "paidDate": "2025-07-15",
              "patientAccountNumber": "12345678",
              "statusCategoryCode": "F1",
              "statusCategoryCodeValue": "Finalized/Payment - The claim/line has been paid.",
              "statusCode": "65",
              "statusCodeValue": "Claim/line has been paid.",
              "submittedAmount": "267.54",
              "trackingNumber": "0123456789",
              "tradingPartnerClaimNumber": "0123456789"
            },
            "serviceDetails": [
              {
                "service": {
                  "amountPaid": "108.77",
                  "procedureId": "90837",
                  "serviceIdQualifier": "Health Care Financing Administration Common Procedural Coding System (HCPCS) Codes",
                  "serviceIdQualifierCode": "HC",
                  "submittedAmount": "267.54",
                  "submittedUnits": "1"
                },
                "status": [
                  {
                    "effectiveDate": "2025-07-17",
                    "statusCategoryCode": "F1",
                    "statusCategoryCodeValue": "Finalized/Payment - The claim/line has been paid.",
                    "statusCode": "107",
                    "statusCodeValue": "Processed according to contract provisions (Contract refers to provisions that exist between the Health Plan and a Provider of Health Care Services)."
                  }
                ]
              }
            ]
          }
        ],
        "controlNumber": "123456789",
        "payer": {
          "organizationName": "UNITEDHEALTHCARE",
          "payerIdentification": "87726"
        },
        "providers": [
          {
            "npi": "1999999984",
            "organizationName": "Provider Name",
            "providerType": "BillingProvider"
          }
        ],
        "subscriber": {
          "firstName": "Jane",
          "lastName": "Doe",
          "memberId": "UHC123456"
        },
        "tradingPartnerServiceId": "87726",
        "x12": "ISA*00*          *00*          *ZZ*STEDI          *01*117151744      *250912*1718*^*00501*123456789*0*P*:~GS*HN*STEDI*117151744*20250912*171842*1*X*005010X212~ST*277*1001*005010X212~BHT*0010*08*0123456789*20250912*171841*DG~HL*1**20*1~NM1*PR*2*UNITEDHEALTHCARE*****PI*87726~HL*2*1*21*1~NM1*41*2*PROVIDER NAME*****46*1234567890~HL*3*2*19*1~NM1*1P*2*PROVIDER NAME*****XX*1999999984~HL*4*3*22*0~NM1*IL*1*DOE*JANE****MI*UHC123456~TRN*2*0123456789~STC*F1:65*20250717**267.54*108.77*20250715**20250717*123456789~REF*1K*0123456789~REF*EJ*12345678~DTP*472*D8*20250701~SVC*HC:90837:GT*267.54*108.77****1~STC*F1:107*20250717~DTP*472*D8*20250701~SE*19*1001~GE*1*1~IEA*1*123456789~"
      }
      ```
    </Tab>
  </Tabs>
</Accordion>

### Denied claims [#denied-claims]

The following example shows a claim status request and response for a denied claim. The payer is Anthem Blue Cross Blue Shield of Virginia, and the request uses the primary payer ID `423`.

In this example, the `subscriber` in the request is actually a dependent using the subscriber's member ID.

<Accordion title="Denied - Dependent - Anthem BCBS Virginia" id="denied---dependent---anthem-bcbs-virginia">
  <Tabs items="[&#x22;Request&#x22;, &#x22;Response&#x22;]">
    <Tab value="Request">
      ```bash
      curl --request POST \
        --url "https://healthcare.us.stedi.com/2024-04-01/change/medicalnetwork/claimstatus/v2" \
        --header "Authorization: <api_key>" \
        --header "Content-Type: application/json" \
        --data '{
          "encounter": {
            "beginningDateOfService": "20241101",
            "endDateOfService": "20241112"
          },
          "providers": [
            {
              "npi": "1999999984",
              "organizationName": "PROVIDER NAME",
              "providerType": "BillingProvider"
            }
          ],
          "subscriber": {
            "dateOfBirth": "19800101",
            "firstName": "JANE",
            "lastName": "DOE",
            "memberId": "XYZO9NUSPD6R"
          },
          "tradingPartnerServiceId": "423"
        }'
      ```
    </Tab>

    <Tab value="Response">
      {/* schema:ClaimStatusResponseContent */}

      ```json
      {
        "claims": [
          {
            "claimStatus": {
              "amountPaid": "0",
              "claimServiceDate": "20241107-20241107",
              "effectiveDate": "2024-11-10",
              "paidDate": "2024-11-10",
              "patientAccountNumber": "12345678",
              "statusCategoryCode": "F0",
              "statusCategoryCodeValue": "Finalized - The claim/encounter has completed the adjudication cycle and no more action will be taken.",
              "statusCode": "1",
              "statusCodeValue": "For more detailed information,see remittance advice.",
              "submittedAmount": "200.02",
              "trackingNumber": "VZYTLPWDTPMIG66PX0GRNPFGR8",
              "tradingPartnerClaimNumber": "XP5BPO2GRUVIR"
            },
            "serviceDetails": [
              {
                "service": {
                  "amountPaid": "0",
                  "procedureId": "90800",
                  "serviceIdQualifier": "Health Care Financing Administration Common Procedural Coding System (HCPCS) Codes",
                  "serviceIdQualifierCode": "HC",
                  "submittedAmount": "200.02",
                  "submittedUnits": "1"
                },
                "status": [
                  {
                    "effectiveDate": "2024-11-10",
                    "statusCategoryCode": "F2",
                    "statusCategoryCodeValue": "Finalized/Denial - The claim/line has been denied.",
                    "statusCode": "585",
                    "statusCodeValue": "Denied Charge or Non-covered Charge."
                  }
                ]
              }
            ]
          }
        ],
        "controlNumber": "987654321",
        "dependent": {
          "firstName": "JANE",
          "lastName": "DOE"
        },
        "payer": {
          "organizationName": "ANTHEM BLUE CROSS BLUE SHIELD",
          "payerIdentification": "423"
        },
        "providers": [
          {
            "npi": "1999999984",
            "organizationName": "PROVIDER NAME",
            "providerType": "BillingProvider"
          }
        ],
        "subscriber": {
          "firstName": "JOHN",
          "lastName": "DOE",
          "memberId": "XYZO9NUSPD6R"
        },
        "tradingPartnerServiceId": "423",
        "x12": "..."
      }
      ```
    </Tab>
  </Tabs>
</Accordion>

The following examples show a request and response for a denied claim. The payer is Aetna, and the request uses the primary payer ID `60054`.

In this example, the claim is for a dependent.

<Accordion title="Denied - Dependent - Aetna" id="denied---dependent---aetna">
  <Tabs items="[&#x22;Request&#x22;, &#x22;Response&#x22;]">
    <Tab value="Request">
      ```bash
      curl --request POST \
        --url "https://healthcare.us.stedi.com/2024-04-01/change/medicalnetwork/claimstatus/v2" \
        --header "Authorization: <api_key>" \
        --header "Content-Type: application/json" \
        --data '{
        "dependent": {
          "dateOfBirth": "20010714",
          "firstName": "JORDAN",
          "lastName": "DOE"
        },
        "encounter": {
          "beginningDateOfService": "20250804",
          "endDateOfService": "20250806"
        },
        "providers": [
          {
            "npi": "1999999984",
            "organizationName": "Provider Name",
            "providerType": "BillingProvider"
          }
        ],
        "subscriber": {
          "dateOfBirth": "19710101",
          "firstName": "JANE ",
          "lastName": "DOE",
          "memberId": "AETNA12345"
        },
        "tradingPartnerName": "Aetna",
        "tradingPartnerServiceId": "60054"
      }'
      ```
    </Tab>

    <Tab value="Response">
      {/* schema:ClaimStatusResponseContent */}

      ```json
      {
        "claims": [
          {
            "claimStatus": {
              "amountPaid": "0",
              "checkIssueDate": "2025-08-14",
              "checkNumber": "123456789",
              "claimServiceDate": "20250805",
              "effectiveDate": "2025-09-12",
              "paidDate": "2025-08-09",
              "patientAccountNumber": "123456789",
              "statusCategoryCode": "F2",
              "statusCategoryCodeValue": "Finalized/Denial - The claim/line has been denied.",
              "statusCode": "585",
              "statusCodeValue": "Denied Charge or Non-covered Charge.",
              "submittedAmount": "1101",
              "trackingNumber": "123456789",
              "tradingPartnerClaimNumber": "123456789"
            },
            "serviceDetails": [
              {
                "service": {
                  "amountPaid": "0",
                  "procedureId": "D1120",
                  "serviceIdQualifier": "American Dental Association Codes",
                  "serviceIdQualifierCode": "AD",
                  "submittedAmount": "141",
                  "submittedUnits": "1"
                },
                "status": [
                  {
                    "effectiveDate": "2025-09-12",
                    "statusCategoryCode": "F2",
                    "statusCategoryCodeValue": "Finalized/Denial - The claim/line has been denied.",
                    "statusCode": "585",
                    "statusCodeValue": "Denied Charge or Non-covered Charge."
                  }
                ]
              },
              {
                "service": {
                  "amountPaid": "0",
                  "procedureId": "D0801",
                  "serviceIdQualifier": "American Dental Association Codes",
                  "serviceIdQualifierCode": "AD",
                  "submittedAmount": "274",
                  "submittedUnits": "1"
                },
                "status": [
                  {
                    "effectiveDate": "2025-09-12",
                    "statusCategoryCode": "F2",
                    "statusCategoryCodeValue": "Finalized/Denial - The claim/line has been denied.",
                    "statusCode": "585",
                    "statusCodeValue": "Denied Charge or Non-covered Charge."
                  }
                ]
              },
              {
                "service": {
                  "amountPaid": "0",
                  "procedureId": "D0603",
                  "serviceIdQualifier": "American Dental Association Codes",
                  "serviceIdQualifierCode": "AD",
                  "submittedAmount": "161",
                  "submittedUnits": "1"
                },
                "status": [
                  {
                    "effectiveDate": "2025-09-12",
                    "statusCategoryCode": "F2",
                    "statusCategoryCodeValue": "Finalized/Denial - The claim/line has been denied.",
                    "statusCode": "107",
                    "statusCodeValue": "Processed according to contract provisions (Contract refers to provisions that exist between the Health Plan and a Provider of Health Care Services)."
                  }
                ]
              },
              {
                "service": {
                  "amountPaid": "0",
                  "procedureId": "D0350",
                  "serviceIdQualifier": "American Dental Association Codes",
                  "serviceIdQualifierCode": "AD",
                  "submittedAmount": "145",
                  "submittedUnits": "1"
                },
                "status": [
                  {
                    "effectiveDate": "2025-09-12",
                    "statusCategoryCode": "F2",
                    "statusCategoryCodeValue": "Finalized/Denial - The claim/line has been denied.",
                    "statusCode": "585",
                    "statusCodeValue": "Denied Charge or Non-covered Charge."
                  }
                ]
              },
              {
                "service": {
                  "amountPaid": "0",
                  "procedureId": "D0350",
                  "serviceIdQualifier": "American Dental Association Codes",
                  "serviceIdQualifierCode": "AD",
                  "submittedAmount": "145",
                  "submittedUnits": "1"
                },
                "status": [
                  {
                    "effectiveDate": "2025-09-12",
                    "statusCategoryCode": "F2",
                    "statusCategoryCodeValue": "Finalized/Denial - The claim/line has been denied.",
                    "statusCode": "585",
                    "statusCodeValue": "Denied Charge or Non-covered Charge."
                  }
                ]
              },
              {
                "service": {
                  "amountPaid": "0",
                  "procedureId": "D0330",
                  "serviceIdQualifier": "American Dental Association Codes",
                  "serviceIdQualifierCode": "AD",
                  "submittedAmount": "235",
                  "submittedUnits": "1"
                },
                "status": [
                  {
                    "effectiveDate": "2025-09-12",
                    "statusCategoryCode": "F2",
                    "statusCategoryCodeValue": "Finalized/Denial - The claim/line has been denied.",
                    "statusCode": "585",
                    "statusCodeValue": "Denied Charge or Non-covered Charge."
                  }
                ]
              }
            ]
          }],
        "controlNumber": "123456789",
        "dependent": {
          "firstName": "JORDAN",
          "lastName": "DOE"
        },
        "payer": {
          "organizationName": "AETNA",
          "payerIdentification": "60054"
        },
        "providers": [
          {
            "npi": "1999999984",
            "organizationName": "Provider Name",
            "providerType": "BillingProvider"
          }
        ],
        "subscriber": {
          "firstName": "JANE",
          "lastName": "DOE",
          "memberId": "AETNA12345"
        },
        "tradingPartnerServiceId": "60054",
        "x12": "ISA*00*          *00*          *ZZ*STEDI          *01*117151744      *250911*1726*^*00501*123456789*0*P*:~GS*HN*STEDI*117151744*20250911*1226*123456789*X*005010X212~ST*277*123456789*005010X212~BHT*0010*08*1234567890*20250911*13263006*DG~HL*1**20*1~NM1*PR*2*AETNA*****PI*60054~PER*IC*Aetna*TE*1234567890~HL*2*1*21*1~NM1*41*2*PROVIDER NAME*****46*1234567890~HL*3*2*19*1~NM1*1P*2*PROVIDER NAME*****XX*1999999984~HL*4*3*22*1~NM1*IL*1*DOE*JANE****MI*AETNA12345~HL*5*4*23~NM1*QC*1*DOE*JORDAN~TRN*2*123456789~STC*F2:585*20250911**1101*0*20250809**20250814*123456789*F2:107~REF*1K*123456789~REF*EJ*123456789~DTP*472*D8*20250805~SVC*AD:D1120*141*0****1~STC*F2:585*20250911~DTP*472*D8*20250805~SVC*AD:D0801*274*0****1~STC*F2:585*20250911~DTP*472*D8*20250805~SVC*AD:D0603*161*0****1~STC*F2:107*20250911********F2:735~DTP*472*D8*20250805~SVC*AD:D0350*145*0****1~STC*F2:585*20250911~DTP*472*D8*20250805~SVC*AD:D0350*145*0****1~STC*F2:585*20250911~DTP*472*D8*20250805~SE*34*123456789~GE*1*123456789~IEA*1*123456789~"
      }
      ```
    </Tab>
  </Tabs>
</Accordion>

### No matches found [#no-matches-found]

The following example shows a request and response for a claim status check that failed because the payer couldn't find a matching claim. The payer is Cigna, and the request uses the payer ID alias `CIGNA`.

<Accordion title="No matches found - Subscriber - Cigna" id="no-matches-found---subscriber---cigna">
  <Tabs items="[&#x22;Request&#x22;, &#x22;Response&#x22;]">
    <Tab value="Request">
      ```bash
      curl --request POST \
        --url "https://healthcare.us.stedi.com/2024-04-01/change/medicalnetwork/claimstatus/v2" \
        --header "Authorization: <api_key>" \
        --header "Content-Type: application/json" \
        --data '{
        "encounter": {
          "beginningDateOfService": "20250526",
          "endDateOfService": "20250601"
        },
        "providers": [
          {
            "organizationName": "Provider Name",
            "providerType": "BillingProvider",
            "npi": "1999999984"
          }
        ],
        "subscriber": {
          "dateOfBirth": "19910202",
          "firstName": "James",
          "lastName": "Jones",
          "memberId": "CIGNA12345"
        },
        "tradingPartnerServiceId": "CIGNA"
      }'
      ```
    </Tab>

    <Tab value="Response">
      {/* schema:ClaimStatusResponseContent */}

      ```json
      {
        "claims": [
          {
            "claimStatus": {
              "amountPaid": "0",
              "claimServiceDate": "20250526-20250601",
              "effectiveDate": "2025-09-12",
              "entity": "Insurer",
              "entityCode": "IN",
              "statusCategoryCode": "D0",
              "statusCategoryCodeValue": "Data Search Unsuccessful - The payer is unable to return status on the requested claim(s) based on the submitted search criteria.",
              "statusCode": "97",
              "statusCodeValue": "Patient eligibility not found with entity.",
              "submittedAmount": "0",
              "trackingNumber": "123456789"
            }
          }
        ],
        "controlNumber": "123456789",
        "payer": {
          "organizationName": "CHLIC",
          "payerIdentification": "CIGNA"
        },
        "providers": [
          {
            "npi": "1999999984",
            "organizationName": "Provider Name",
            "providerType": "BillingProvider"
          }
        ],
        "subscriber": {
          "firstName": "JAMES",
          "lastName": "JONES",
          "memberId": "CIGNA12345"
        },
        "tradingPartnerServiceId": "CIGNA",
        "x12": "ISA*00*          *00*          *ZZ*STEDI          *01*117151744      *250825*2004*^*00501*123456789*0*P*:~GS*HN*STEDI*117151744*20250825*1504*123456789*X*005010X212~ST*277*123456789*005010X212~BHT*0010*08*123456789*20250825*160450*DG~HL*1**20*1~NM1*PR*2*CHLIC*****PI*CIGNA~PER*IC*CHC Medical*TE*8002725713~HL*2*1*21*1~NM1*41*2*PROVIDER NAME*****46*123456789~HL*3*2*19*1~NM1*1P*2*PROVIDER NAME*****XX*1999999984~HL*4*3*22*0~NM1*IL*1*JONES*JAMES****MI*CIGNA12345~TRN*2*123456789~STC*D0:97:IN*20250825**0*0~DTP*472*RD8*20250526-20250601~SE*15*123456789~GE*1*123456789~IEA*1*123456789~"
      }
      ```
    </Tab>
  </Tabs>
</Accordion>

### Validation error (999) [#validation-error-999]

The [Real-Time Claim Status Raw X12](/healthcare/api-reference/post-healthcare-claim-status-raw-x12) endpoint returns a 999 Implementation Acknowledgment when the request data fails validation. Common failure reasons are missing required segments and invalid values.

The following example request is missing required `HL` loops.

<Accordion title="Validation error (999)" id="validation-error-999">
  <Tabs items="[&#x22;Request&#x22;, &#x22;Response&#x22;]">
    <Tab value="Request">
      ```bash
      curl --request POST \
        --url https://healthcare.us.stedi.com/2024-04-01/change/medicalnetwork/claimstatus/raw-x12 \
        --header 'Authorization: <api-key>' \
        --header 'Content-Type: application/json' \
        --data '{
        "x12": "ISA*00*          *00*          *ZZ*SENDER         *ZZ*STEDI          *210101*1200*^*00501*000000001*0*P*>~GS*HR*SENDER*STEDI*20210101*120000*1*X*005010X212~ST*276*0001*005010X212~SE*1*0001~GE*1*1~IEA*1*000000001~"
      }'
      ```
    </Tab>

    <Tab value="Response">
      ```json
      {
        "controlNumber": "736013965",
        "implementationTransactionSetSyntaxError": "5",
        "status": "ERROR",
        "transactionSetAcknowledgement": "R",
        "x12": "ISA*00*          *00*          *ZZ*STEDI          *ZZ*SENDER         *260403*0930*^*00501*736013965*0*P*`~GS*FA*STEDI*117151744*20260403*093042*736013965*X*005010X231A1~ST*999*0001*005010X231A1~AK1*HR*1*005010X212~AK2*276*0001*005010X212~IK3*SE*2**2~IK3*SE*2**3~IK5*R*5~AK9*R*1*1*0~SE*8*0001~GE*1*736013965~IEA*1*736013965~"
      }
      ```
    </Tab>
  </Tabs>
</Accordion>

## Limitations [#limitations]

Claim status requests are likely to fail in the following scenarios:

### Claims submitted by other providers [#claims-submitted-by-other-providers]

You likely won't be able to check the status of a claim submitted by a different provider organization or by the patient themselves, even if you have all of the details about the claim.

Payers generally only allow a provider organization to check the status of the claims they submitted. They impose these access controls to protect plan member privacy and confidential commercial data.

### Claims older than 18 months [#claims-older-than-18-months]

Payers often archive claims older than 18 months, but this varies by payer. If you try to check the status of a claim from several years ago, the payer may return an error even if the information you submit matches a real historical claim.

### Claims outside the payer's system [#claims-outside-the-payers-system]

You can only check the status of claims the payer has received and accepted into their processing system. Claims that haven't entered the payer's system won't return results, even if you have all the correct information. This is why we recommend waiting at least a week after submission before running a claim status check.

You'll know the claim is in the payer's system when you receive a [277CA claim acknowledgment](/healthcare/receive-claim-responses#interpret-277ca-claim-status) from the payer with acceptance codes. Some payers will never send a 277CA.

## Troubleshooting [#troubleshooting]

If you're not getting results from your claim status checks, visit [Troubleshoot claim status checks](/healthcare/claim-status-troubleshooting) for detailed troubleshooting steps.

## Billing [#billing]

Transactions are billable at the usage rates specified in your contract unless they fall into the following non-billable categories:

* API calls that return 4xx or 5xx errors. For example, you won't be charged when a request fails because the payer isn't supported - in this case, Stedi returns a `400` HTTP status code.
* Claim status responses that exclusively contain one or more of these non-billable [Claim Status Codes](https://x12.org/codes/claim-status-codes) in `STC01-02` (Status Code): `484`, `494`, `667`, or `689`.

  These codes appear in the [`claims[].claimStatus.statusCode`](/healthcare/api-reference/post-healthcare-claim-status#response.claims.claimStatus.statusCode) and [`claims[].serviceDetails[].status[].statusCode`](/healthcare/api-reference/post-healthcare-claim-status#response.claims.serviceDetails.status.statusCode) properties of the JSON response.

# Claim edits and repairs
Source: https://www.stedi.com/docs/healthcare/claim-edits-and-repairs


Stedi checks each claim you submit for errors that could lead to rejections or denials.

Depending on the type of error, Stedi will either fix the issue automatically (repair) or reject the claim (edit rejection) with instructions explaining what to change before resubmitting. This process helps ensure claims are complete, accurate, HIPAA-compliant, and aligned with payer-specific rules *before* they reach the payer.

Catching and resolving issues early through claim edits and repairs streamlines claims processing so providers can get paid faster.

## Repairs [#repairs]

Repairs are fixes that Stedi applies to claims before checking them against our library of [claim edits](#edits). They fix problems with a known, deterministic solution, such as formatting issues. For example, if a phone number contains dashes or spaces, a repair might remove them so the claim passes validation.

We don't use repairs to change substantive or clinical content. For example, a repair won't change a CPT code in a claim to reflect a different procedure. That's a substantive change that requires resubmission.

Claim repairs don't require any action from you - they happen automatically, so you don't need to make changes or resubmit.

## Edits [#edits]

Claim edits are validation rules that check a specific requirement. For example, an edit might check that each phone number in the claim contains exactly 10 digits. Many of our [repairs](#repairs) fix issues that would cause claims to fail one or more edits. For example, a repair may remove dashes in a phone number so it's in the right format for the edit validation. If the phone number still doesn't have 10 digits, the claim fails the edit.

Stedi runs our entire library of edits on each claim you submit. This applies to both new claims and existing claims you're resubmitting through Stedi.

When a claim fails one or more edits, Stedi rejects the claim and doesn't send it to the payer. You'll receive detailed error messages for all of the edits the claim failed along with instructions for what to change before resubmission.

* **API:** Stedi returns an HTTP `400` status and includes the edit rejections in the `errors` array.
* **Stedi portal:** Stedi indicates edit rejections immediately in the portal form.
* **SFTP:** Stedi rejects the claim with a [277CA claim acknowledgment](/healthcare/submit-claims-sftp-retrieve-responses#277ca-claim-acknowledgment) containing the edit rejection details. You'll receive the 277CA rejection within minutes after claim submission in your `from-stedi` directory.

You'll need to fix the issues causing the edit failures and resubmit the claim with the same Claim Frequency Code. For example, if you initially submitted the claim to Stedi with code `1`, you should resubmit it to Stedi with code `1`.

### Example edit rejections [#example-edit-rejections]

The following example shows edit rejections returned in an API response. The `errors` array contains all the edits that the claim failed, along with detailed descriptions and follow-up actions:

```json
{
  "status": "ERROR",
  "controlNumber": "1",
  "tradingPartnerServiceId": "6400",
  "claimReference": {
    "correlationId": "01AAAC3A5BB1CCCC3DDD5JJJJ3",
    "patientControlNumber": "12345678",
    "timeOfResponse": "2026-01-06T19:21:18.287Z",
    "payerId": "6400",
    "formatVersion": "5010",
    "rhclaimNumber": "01AAAC3A5BB1CCCC3DDD5JJJJ3",
    "serviceLines": [
      {
        "lineItemControlNumber": "111222333"
      }
    ]
  },
  "errors": [
    {
      "code": "33",
      "description": "The subscriber date of birth, 20260201, is invalid. The date of birth cannot be later than the transaction date and must reflect a reasonable subscriber age. Correct and resubmit.",
      "followupAction": "Please Correct and Resubmit"
    },
    {
      "code": "33",
      "description": "Diagnosis Code FZ9888 does not exist in ICD-10. Please review and resubmit.",
      "followupAction": "Please Correct and Resubmit"
    },
    {
      "code": "33",
      "description": "Total claim charge amount ($130.00) does not equal the sum of all service line charge amounts ($109.20) for this claim. Correct and resubmit.",
      "followupAction": "Please Correct and Resubmit"
    }
  ],
  "meta": {
    "traceId": "bd67003d-ce55-4b94-a89d-66e11110d0c"
  },
  "payer": {
    "payerName": "Cigna",
    "payerId": "6400"
  },
  "httpStatusCode": "400 BAD_REQUEST"
}
```

### Stedi's edit database [#stedis-edit-database]

Stedi has a growing library of claim edits, including edits for specific payers. You can review a filterable, up-to-date list of all our claim edits in our [Edits database](https://edits.stedi.com/).

There's no standardized universal library of claim edits. However, a large number of industry-standard edits originate from HIPAA rules (such as using ICD-10 as the standard coding system) and from Centers for Medicare & Medicaid Services (CMS) rules, such as the National Correct Coding Initiative (NCCI). NCCI edits were originally developed by CMS for Medicare, but many non-Medicare payers have adopted them or use them as a baseline.

Our goal is to eventually cover all non-provider-specific edits that can be deterministically applied to claims. You can submit requests for new edits or updates to existing ones through our [Request a claim edit](https://www.stedi.com/request-claim-edit) form.

### SNIP framework [#snip-framework]

Edits are often categorized using the Strategic National Implementation Process (SNIP) framework. The framework was created by the Workgroup for Electronic Data Interchange (WEDI), which sets guidelines (but not standards) for how EDI should be implemented in healthcare.

Each SNIP type, or level, checks a different aspect of a claim's correctness. You can find the SNIP level of all of our edits in the [Edits database](https://edits.stedi.com/).

**SNIP Type 1: EDI Standard Integrity Testing**

Edits that check whether the claim uses valid EDI syntax. Examples:

* Are the EDI segments in the right order?
* Do fields meant for numbers contain numbers?

**SNIP Type 2: HIPAA Implementation Guide Requirement Testing**

Edits that check whether the claim uses HIPAA-compliant X12 syntax. Examples:

* Invalid phone numbers
* Invalid date of birth
* Invalid billing provider address
* Missing primary payer

**SNIP Type 3: HIPAA Balance Testing**

Edits that check whether the billing amounts in the claim add up correctly. Examples:

* Non-zero adjustment amounts
* COB claims must be balanced
* Total claim charges must equal line-level charges

**SNIP Type 4: HIPAA Inter-Segment Situation Testing**

Edits that check whether fields are present or missing based on the presence of other fields. Examples:

* Missing accident date
* Missing admission source code

**SNIP Type 5: HIPAA External Code Set Testing**

Checks that fields that use official HIPAA-adopted code sets only contain valid values. For example, an edit could check for invalid ICD-10-CM diagnosis codes.

**SNIP Type 6: Product Type/Type of Service Testing**

Edits that check whether the claim is valid and in the right format for the type of healthcare service listed. These edits catch mismatches between the procedure code being billed and the type of claim or service category. Examples:

* Using a CDT dental code in an 837P professional claim.
* Billing a surgery CPT code under a diagnostic service type.
* Including a revenue code, which is only for 837I institutional claims, in an 837P professional claim.

**SNIP Type 7: Trading Partner-Specific Testing**

Edits that check whether the claim complies with rules specific to an individual trading partner or payer. These rules vary by payer and go beyond standard HIPAA requirements. While government payers like Medicare and Medicaid are common sources of payer-specific rules, SNIP Type 7 applies to any payer with unique requirements. Examples:

* Invalid primary diagnosis on Medicare chiropractic claims
* Missing initial treatment date for Medicare chiropractic claims
* Missing referral number when the payer requires one

# Acknowledgments and ERAs overview
Source: https://www.stedi.com/docs/healthcare/claim-responses-overview


You can receive two types of transactions after you submit a professional, institutional, or dental claim through Stedi's APIs, an SFTP connection, or the Stedi portal:

* 277CA claim acknowledgments
* 835 Electronic Remittance Advice (ERA)

If you're submitting claims through SFTP, you'll also receive 999 Implementation Acknowledgments. Visit [SFTP submission](/healthcare/submit-claims-sftp-connection#monitor-for-999-rejections-strongly-recommended) for details.

## Claim response overview [#claim-response-overview]

Claim responses provide information about the status of a submitted claim as it moves through various stages of processing, validation, and adjudication. The following diagram illustrates the types of claim responses you may receive at each stage:

<img alt="Claim response lifecycle" src="__img0" />

<Steps>
  <Step title="A provider submits a claim to Stedi (clearinghouse).">
    Stedi validates the claim according to industry standards and payer-specific rules (edits).

    * If the claim fails validation, Stedi rejects it and doesn't send the claim to the payer. You'll need to correct the errors and resubmit.
    * If the claim passes validation, Stedi accepts it and routes it to the payer. This doesn't indicate that the claim has been approved, only that the claim has passed Stedi's validation.

    During this process, you may receive one or more 277CA claim acknowledgments from Stedi indicating the claim's acceptance or rejection status.
  </Step>

  <Step title="The payer receives the claim.">
    You may receive additional 277CA claim acknowledgments from the payer letting you know that the claim has been received and whether it's been accepted or rejected for adjudication.

    * If the payer rejects the claim, you'll need to correct the errors and resubmit. The payer can reject a claim before or after it enters their processing system.
    * If the payer accepts the claim, they'll begin adjudication. This doesn't mean that the claim has been approved.

    Once a claim has entered the payer's processing system, the 277CA usually contains the Payer Claim Control Number (PCCN) assigned to the claim in:

    * [`transactions[].payers[].claimStatusTransactions[].claimStatusDetails[].patientClaimStatusDetails[].claims[].claimStatus.tradingPartnerClaimNumber`](https://www.stedi.com/docs/healthcare/api-reference/get-healthcare-reports-277#response.transactions.payers\[].claimStatusTransactions\[].claimStatusDetails\[].patientClaimStatusDetails\[].claims\[].claimStatus.tradingPartnerClaimNumber)
    * `Loop 2200D REF02`, where `REF01` = `1K` (Payor's Claim Number)
  </Step>

  <Step title="The payer adjudicates the claim.">
    The payer may briefly pend the claim for additional review before making a final decision. This is common for high-dollar or complex claims which require manual review or supporting documentation (attachments).

    Once the claim has been adjudicated, you'll receive an 835 Electronic Remittance Advice (ERA) from the payer with the adjudication details for each line item.
  </Step>
</Steps>

## 277CA claim acknowledgment [#277ca-claim-acknowledgment]

The 277CA indicates whether a claim was accepted for processing or rejected due to correctable errors, such as invalid data, missing information, or failure to comply with payer-specific rules.

A rejection is different from a denial. Claims are denied during adjudication, so you'll only see denial statuses in the 835 Electronic Remittance Advice (ERA). A 277CA rejection indicates that the claim never made it to the adjudication step. In these cases, the 277CA will include error codes and descriptions to help you correct the issues before resubmitting the claim.

You may receive multiple 277CAs for each claim you submit. You should monitor these 277CAs to track the claim's status as it moves through Stedi and the payer's systems:

* **Clearinghouse:** You'll receive the first 277CA from Stedi within about 30 minutes of submitting the claim to indicate whether we have accepted or rejected it. You may receive additional 277CAs as we route the claim to the payer.
* **Payer:** You may receive one or more 277CAs from the payer. Typically, there is one 277CA that indicates receipt of the claim and a second 277CA that contains summary counts of transactions received, information about accepted transactions, and details for rejected transactions.

Each 277CA typically correlates to one 837 claim. However:

* Some payers may send a single 277CA that [references multiple claims](/healthcare/receive-claim-responses#correlate-277ca).
* Payers sometimes split a single claim into multiple claims during processing. In these cases, you may receive multiple 277CAs from the payer for the original claim you submitted.
* Payers may send another 277CA when they forward a claim to a secondary payer in a coordination of benefits scenario.
* (SFTP only) When you submit a [bulk claim](/healthcare/submit-claims-sftp-connection#bulk-claims), you'll typically receive one 277CA per claim. For example, if you submit a bulk transaction containing information for 10 claims, you'll typically receive 10 separate 277CAs.

### API responses [#api-responses]

Our claim submission APIs return an initial 277CA in the `x12` property of the response body that indicates whether the claim has passed Stedi's claim edits. This 277CA is in X12 EDI format.

When the claim fails one or more edits, the 277CA contains information about each error. These are the same error codes that appear in the `errors` array.

Note that this initial 277CA only indicates whether Stedi has accepted or rejected the claim submission. You may receive additional 277CA acceptances or rejections as the claim is routed to the payer. You'll need to monitor for and retrieve those additional 277CAs through webhooks or polling.

<Accordion title="Example response with 277CA acceptance" id="example-response-with-277ca-acceptance">
  ```json
  {
    "status": "SUCCESS",
    "controlNumber": "1",
    "tradingPartnerServiceId": "6400",
    "claimReference": {
      "correlationId": "01KHC8Y4HNP0GVQ5NSVTPZBC0F",
      "patientControlNumber": "111222333",
      "timeOfResponse": "2026-02-13T19:51:51.496Z",
      "payerId": "6400",
      "formatVersion": "5010",
      "rhclaimNumber": "01KHC8Y4HNP0GVQ5NSVTPZBC0F",
      "serviceLines": [
        {
          "lineItemControlNumber": "111222333"
        }
      ]
    },
    "meta": {
      "traceId": "d61ca4bc-e9e7-4d0f-93d0-6f7ff810b0e6"
    },
    "payer": {
      "payerName": "Cigna",
      "payerId": "6400"
    },
    "x12": "ISA*00*          *00*          *ZZ*STEDITEST      *ZZ*574183004559   *260213*1951*^*00501*980180479*0*T*`~GS*HN*STEDITEST*574183004559*20260213*195151*1*X*005010X214~ST*277*0001*005010X214~BHT*0085*08*01KHC8YJE8EY6A5HFR00Z5H305*20260213*195151*TH~HL*1**20*1~NM1*AY*2*STEDI INC*****46*117151744~TRN*1*01KHC8YJE8EY6A5HFR00Z5H305~DTP*050*D8*20260213~DTP*009*D8*20260213~HL*2*1*21*1~NM1*41*2*Test Data Health Services, Inc.*****46*123456~TRN*2*01KHC8Y4HNP0GVQ5NSVTPZBC0F~STC*A0`17`AY*20260213*WQ*109.2~QTY*90*1~AMT*YU*109.2~HL*3*2*19*1~NM1*85*2*Therapy Associates*****XX*1234567890~TRN*1*0~REF*TJ*123456789~QTY*QA*1~AMT*YU*109.2~HL*4*3*PT*0~NM1*QC*1*Anon*John****MI*U7777788888~TRN*2*111222333~STC*A1`20*20260213*WQ*109.2~DTP*472*RD8*20240101-20240101~SE*25*0001~GE*1*1~IEA*1*980180479~",
    "httpStatusCode": "200 OK"
  }
  ```
</Accordion>

### 277CA vs. claim status check [#277ca-vs-claim-status-check]

The 277CA contains different information than a real-time claim status check. Specifically:

* **277CAs**: Tell you whether the payer has received a claim and accepted it for processing. If the claim was rejected, 277CAs tell you why so you can resubmit. They don't indicate whether the claim has been adjudicated or paid.
* **Real-time claim status checks**: Tell you the status of a claim that's already been accepted into the payer's system. They provide information about whether the claim has been adjudicated, paid, denied, or is pending further review.

  That's why claim status checks can return more [Claim Status Category Codes](https://x12.org/codes/claim-status-category-codes) than a 277CA. Specifically, they can return codes in the `P` range for pending claims and codes in the `F` range for final claim statuses.

If you're waiting for an ERA, you should first check the related 277CA to confirm that the claim was accepted for processing. If the claim was rejected, you won't receive an ERA because the payer didn't adjudicate the claim.

Then, you can run a real-time claim status check to get updates about the claim's adjudication and payment status.

### Transaction enrollment [#transaction-enrollment]

[Transaction enrollment](/healthcare/transaction-enrollment) isn't required to receive 277CA claim acknowledgments through Stedi. Stedi automatically processes 277CAs for all claims submitted through Stedi, regardless of the submission method (API, SFTP, or portal).

## 835 Electronic Remittance Advice (ERA) [#835-electronic-remittance-advice-era]

<Tip>
  Processing ERAs always requires [transaction
  enrollment](/healthcare/transaction-enrollment) with the payer.
</Tip>

The ERA contains details about payments for specific services and explanations for any adjustments or denials. The payer only sends ERAs for claims they have accepted for adjudication. If a claim is rejected in a 277CA, there's no adjudication or payment information to report.

You'll typically only receive one 835 ERA per claim. However, payers may occasionally retransmit another identical [duplicate ERA](/healthcare/receive-claim-responses#duplicate-eras).

### Transaction enrollment [#transaction-enrollment-1]

[Transaction enrollment](/healthcare/transaction-enrollment) is the process of registering a provider to exchange specific healthcare transactions with a payer. Transaction enrollment is **always** required before a provider can receive 835 ERAs through Stedi.

ERAs can only be sent to a single clearinghouse, so enrolling with Stedi cancels existing ERA enrollments you have through other clearinghouses. Once enrolled with Stedi, the provider will no longer receive ERAs from that payer through the previous clearinghouse.

However, enrolling through Stedi for 835 ERAs doesn't affect your existing enrollments for other transaction types. For example, enrolling with Stedi won't automatically unenroll the provider from transactions, such as 837 claims, that they're processing through other clearinghouses.

To enroll for ERAs through Stedi, complete the following steps:

1. Create a provider record with the information required for enrollment. If you already have a record for the provider, you can skip this step. [Stedi portal](https://portal.stedi.com/app/healthcare/providers) | [API endpoint](/healthcare/api-reference/post-enrollment-create-provider)
2. Submit an enrollment request for claim payment (835 ERA). [Stedi portal](https://portal.stedi.com/app/healthcare/enrollments) | [API endpoint](/healthcare/api-reference/post-enrollment-create-enrollment)

# Troubleshoot claim status checks
Source: https://www.stedi.com/docs/healthcare/claim-status-troubleshooting


This page explains how to troubleshoot [claim status checks](/healthcare/check-claim-status) that don't return matching claim information.

## Interpret status codes [#interpret-status-codes]

When the payer can't find matching claims, they return codes that can help you diagnose the problem.

### Claim Status Category Code [#claim-status-category-code]

These codes qualify the type of Claim Status Code included in the response and can provide additional information about why the payer couldn't find a match. Visit the X12 documentation for a complete list: [Claim Status Category Codes](https://x12.org/codes/claim-status-category-codes)

Often, this will be a generic `D0` (Data Search Unsuccessful) to indicate that the payer couldn't find any matching claims.

* **JSON:** [`claims[].claimStatus.statusCategoryCode`](/healthcare/api-reference/post-healthcare-claim-status#response.claims.claimStatus.statusCategoryCode)
* **X12 EDI:** `Loop 2200D STC01-01` (Health Care Claim Status Category Code)

### Claim Status Code [#claim-status-code]

These codes identify the status of an entire claim or service line. It can be either a [Health Care Claim Status Code](https://x12.org/codes/claim-status-codes) or a National Council for Prescription Drug Programs (NCPDP) Reject/Payment Code, when the status is related to pharmacy claims.

When the payer can't find matching claims, this code is often just a generic `35` (Claim/Encounter Not Found). However, sometimes these codes can help explain why there are no matches. For example, `97` (Patient eligibility not found with entity) indicates that the payer couldn't find the patient in their system.

* **JSON** [`claims[].claimStatus.statusCode`](/healthcare/api-reference/post-healthcare-claim-status#response.claims.claimStatus.statusCode)
* **X12 EDI:** `Loop 2200D STC01-02` (Status Code)

### Example [#example]

The following combination of codes suggests that the payer couldn't find insurance coverage information for the patient details you entered. This can happen when the patient's demographic details are incorrect - for example, if their name is misspelled - or when the final claim was submitted to a different payer than the one the patient identified when receiving services.

```json
{
  "claimStatus": {
    "statusCategoryCode": "D0",
    "statusCategoryCodeValue": "Data Search Unsuccessful - The payer is unable to return status on the requested claim(s) based on the submitted search criteria.",
    "statusCode": "97",
    "statusCodeValue": "Patient eligibility not found with entity."
  }
}
```

## Troubleshooting steps [#troubleshooting-steps]

We recommend trying the following troubleshooting steps in order, regardless of the error codes you receive.

Payers often send non-specific or even misleading error codes in claim status responses. While error codes sometimes provide insight into the issue, we recommend trying all of these common troubleshooting steps if you're not getting successful results. For example, [Claim Status Category Codes](#claim-status-category-code) like `E1` (Response not possible - System Status) can indicate that the payer's systems are temporarily down, but some payers also send these codes when your request information was incorrect.

### Step 1: Add additional properties [#step-1-add-additional-properties]

Regardless of the status codes in the 277 response, we recommend immediately retrying with these properties added to the request one by one, in the following order. Through experience, we've found including this information reliably improves hit rates for a large number of payers:

1. **Submitted amount**: The total charge amount for the entire claim - the sum of all service lines. You can add the submitted amount in:
   * **JSON:** [`encounter.submittedAmount`](/healthcare/api-reference/post-healthcare-claim-status#body.encounter.submittedAmount)
   * **X12:** `Loop 2200D AMT02` (Total Claim Charge Amount)

2. **Payer Claim Control Number (PCCN)**: The unique identifier the payer assigns to claims in their adjudication system. You can find the PCCN in 277CA claim acknowledgments from the payer once the claim has entered their adjudication system:

   * **JSON:** [`transactions[].payers[].claimStatusTransactions[].claimStatusDetails[].patientClaimStatusDetails[].claims[].claimStatus.tradingPartnerClaimNumber`](/healthcare/api-reference/get-healthcare-reports-277#response.transactions.payers.claimStatusTransactions.claimStatusDetails.patientClaimStatusDetails.claims.claimStatus.tradingPartnerClaimNumber)
   * **X12 EDI:** `Loop 2200D REF02`, where `REF01` = `1K` (Payor's Claim Number)
   * **Stedi portal:** Go to the [claims view](https://portal.stedi.com/app/healthcare/claims), click the claim to open its timeline, and click **See more detail** on the 277CA. The PCCN is listed under **Payer claim control number** if available.

   You can add the PCCN to your claim status request in:

   * **JSON:** [`encounter.tradingPartnerClaimNumber`](/healthcare/api-reference/post-healthcare-claim-status#body.encounter.tradingPartnerClaimNumber)
   * **X12:** `Loop 2200D REF02` (Payer Claim Control Number) when `REF01` = `1K` (Payor's Claim Number)

3. **Tax ID**: The billing provider's Tax Identification Number (TIN). Some payers need this identifier instead of the NPI to find the right claim. You can add the tax ID in:
   * **JSON:** [`providers.taxId`](/healthcare/api-reference/post-healthcare-claim-status#body.providers.taxId)
   * **X12:** `Loop 2100C NM109` (Provider Identifier) when `NM108` is set to `FI` (Federal Taxpayer's Identification Number)

### Step 2: Check for common errors [#step-2-check-for-common-errors]

Many failed claim status requests are due to the following errors. Sometimes, the [status codes](#interpret-status-codes) can indicate the cause and help you focus your troubleshooting efforts. If not, we recommend checking all of the following:

#### Payer-specific requirements [#payer-specific-requirements]

Many payers document additional requirements beyond the X12 HIPAA specification. Check the payer's 276/277 companion guide, and look for information about:

1. **Provider type:** We recommend starting with only the billing provider's information in claim status checks. However, some payers may require information about the service provider(s) instead of or in addition to the billing provider. Check whether `Loop 2100C` (Provider Name) is listed as required, optional, or disallowed and whether there are specific requirements about the type of provider.

   You can adjust this information in:

   * **JSON:** [`providers` array](/healthcare/api-reference/post-healthcare-claim-status#body.providers)
   * **X12 EDI** `Loop 2100C` (Provider Name)

2. **Provider identifier:** Some payers may require a different identifier than the NPI, such as the provider's tax ID. Check whether the payer has specific notes about what to use for `Loop 2100C NM109` (Provider Identifier).

   You can adjust this information in:

   * **JSON:** [`providers` array](/healthcare/api-reference/post-healthcare-claim-status#body.providers)
   * **X12 EDI** `Loop 2100C NM109` (Provider Identifier)

3. **Member ID format:** Some payers may require that you enter the subscriber's member ID with a specific prefix or digit count. Check whether the payer has specific notes about `Loop 2100D NM109` (Subscriber Identifier).

   You can adjust this information in:

   * **JSON:** [`subscriber.memberId`](/healthcare/api-reference/post-healthcare-claim-status#body.subscriber.memberId)
   * **X12 EDI:** `Loop 2100D NM109` (Subscriber Identifier)

4. **Demographics** Some payers require additional demographic information about the subscriber or dependent. Check whether the payer has specific notes about `Loop 2000D` (Subscriber) or `Loop 2000E` (Dependent).

   You can adjust this information in:

   * **JSON**: [`subscriber`](/healthcare/api-reference/post-healthcare-claim-status#body.subscriber) or [`dependent`](/healthcare/api-reference/post-healthcare-claim-status#body.dependent) objects
   * **X12 EDI:** `Loop 2000D` (Subscriber) or `Loop 2000E` (Dependent)

If you need help finding a payer's companion guide, contact [Stedi support](https://www.stedi.com/contact).

#### Date of service range [#date-of-service-range]

Some payers store service dates differently than what you submitted. Try expanding your date of service range to plus or minus 14 days from the original claim's service date.

You can adjust the date range in:

* **JSON:** [`encounter.beginningDateOfService`](/healthcare/api-reference/post-healthcare-claim-status#body.encounter.beginningDateOfService) and [`encounter.endDateOfService`](/healthcare/api-reference/post-healthcare-claim-status#body.encounter.endDateOfService)
* **X12:** `Loop 2200D DTP` (Claim Service Date)

#### Billing provider NPI [#billing-provider-npi]

The billing provider NPI must match the one submitted in the claim. If your group or practice uses a group NPI for billing, try resubmitting with that organizational NPI instead.

If the billing provider NPI fails, try substituting the rendering provider's NPI as the billing NPI. Some payers index claims by the rendering provider rather than the billing organization.

You can adjust the NPI in:

* **JSON:** [`providers.npi`](/healthcare/api-reference/post-healthcare-claim-status#body.providers.npi)
* **X12:** `Loop 2100C NM109` (Provider Identifier)

Example showing how to set the rendering provider's NPI as the billing NPI:

```json
{
  "providers": [
    {
      "providerType": "BillingProvider",
      "npi": "1234567890",
      "organizationName": "Rendering Provider Name"
    }
  ]
}
```

#### Patient demographics [#patient-demographics]

Administrative entities that handle claim submission sometimes discover changes to the patient's insurance information after services were rendered. For example, they may:

* discover a coordination of benefits (COB) scenario. As a result, they may submit the final claim to a different payer than the one originally listed as the patient's insurance provider.
* update the patient's name, member ID, or other identifying information. As a result, you may be making claim status requests with incorrect patient data.

Try running a [real-time eligibility check](/healthcare/send-eligibility-checks) with the patient's information. If the check is successful, it confirms that your patient data is correct.

<Accordion title="Sample real-time eligibility check" id="sample-real-time-eligibility-check">
  ```bash
  curl --request POST \
    --url https://healthcare.us.stedi.com/2024-04-01/change/medicalnetwork/eligibility/v3 \
    --header 'Authorization: <api-key>' \
    --header 'Content-Type: application/json' \
    --data '{
        "tradingPartnerServiceId": "ABDCE",
        "encounter": {
          "serviceTypeCodes": ["MH"]
        },
        "provider": {
          "organizationName": "ACME Health Services",
          "npi": "1999999984"
        },
        "subscriber": {
          "dateOfBirth": "19000101",
          "firstName": "Jane",
          "lastName": "Doe",
          "memberId": "1234567890"
        }
     }'
  ```
</Accordion>

If the payer returns [`AAA` errors](/healthcare/eligibility-troubleshooting#payer-aaa-errors), you can often use them to identify issues with the patient's data. For example:

* An `AAA` error `71` (Patient Birth Date Does Not Match That for the Patient on the Database) indicates that the patient's birthdate may be the issue.
* An `AAA` error `73` (Invalid/Missing Subscriber/Insured Name) may indicate that the patient's first or last name are spelled incorrectly.
* An `AAA` error `75` (Subscriber/Insured Not Found) indicates that the payer couldn't find the patient in their system. This may indicate that the patient's name, member ID, or other demographics are incorrect or that they're insured with a different payer.

The following example shows an eligibility check response with an `AAA` error `75`, indicating the payer couldn't find the subscriber in their system. In this case, you'd want to check the patient's demographic details to ensure they're correct. You may also want to reach out to your billing department to confirm whether the final claim was submitted to a different payer.

```json
{
  "subscriber": {
    "memberId": "123456789",
    "firstName": "JANE",
    "lastName": "DOE",
    "entityIdentifier": "Insured or Subscriber",
    "entityType": "Person",
    "dateOfBirth": "19001103",
    "aaaErrors": [
      {
        "field": "AAA",
        "code": "75",
        "description": "Subscriber/Insured Not Found",
        "followupAction": "Please Correct and Resubmit",
        "location": "Loop 2100C",
        "possibleResolutions": "- Subscriber was not found."
      }
    ]
  }
}
```

#### BCBS / BlueCard routing [#bcbs--bluecard-routing]

For BCBS members, the claim may have been adjudicated by the member's **home plan** rather than the local plan where services were rendered. To identify the correct payer, run a [real-time eligibility check](/healthcare/send-eligibility-checks) with the patient's information.

<Accordion title="Sample real-time eligibility check" id="sample-real-time-eligibility-check-1">
  ```bash
  curl --request POST \
    --url https://healthcare.us.stedi.com/2024-04-01/change/medicalnetwork/eligibility/v3 \
    --header 'Authorization: <api-key>' \
    --header 'Content-Type: application/json' \
    --data '{
        "tradingPartnerServiceId": "ABDCE",
        "encounter": {
          "serviceTypeCodes": ["MH"]
        },
        "provider": {
          "organizationName": "ACME Health Services",
          "npi": "1999999984"
        },
        "subscriber": {
          "dateOfBirth": "19000101",
          "firstName": "Jane",
          "lastName": "Doe",
          "memberId": "1234567890"
        }
     }'
  ```
</Accordion>

Stedi enriches the eligibility response with information about the patient's home plan when the eligibility check includes the member's first name, last name, birthdate, and full member ID (including the 3-character BCBS alpha prefix). Visit [BCBS home plan](/healthcare/eligibility-active-coverage-benefits#bcbs-home-plan) in our eligibility documentation for details about how to retrieve this information from JSON and X12 EDI responses.

Once you've identified the correct home plan, resubmit the claim status check using that payer's ID instead.

#### Provider credentialing [#provider-credentialing]

Some payers require the provider NPI to be [credentialed](/healthcare/credentialing-and-enrollment#credentialing) or [enrolled](/healthcare/credentialing-and-enrollment#payer-enrollment) specifically for real-time claim status checks, separate from claim submission enrollment. If you receive codes indicating that the request was sent to the wrong payer but you're certain the payer ID you used is correct, the provider may not be credentialed properly with the payer.

For example, the following combination of codes may indicate a credentialing issue:

* [Claim Status Category Code](#claim-status-category-code) `E0` (Response not possible - error on submitted request data)
* [Claim Status Code](#claim-status-code) `116` (Claim submitted to incorrect payer.)

Try the same request with a different NPI that you know is properly credentialed with that payer. If you get a different response, such as category code `A4` with status code `35` (Claim/Encounter Not Found), the original NPI is likely the issue.

### Step 3: Retry for unavailable payers [#step-3-retry-for-unavailable-payers]

If the payer continues returning status codes indicating that they are unavailable, we recommend implementing the following automated retry strategy:

* Wait 1 minute to perform the first retry.
* Exponentially increase the wait time between subsequent retries to up to 30 minutes.
* Retry for at least 8 hours, though the retry window should be based on your business workflows.

### Step 4: Contact support [#step-4-contact-support]

If you've tried all these steps and still receive errors for claim status checks with information you know is correct, contact [Stedi support](https://www.stedi.com/contact). We can help figure out the next steps.

# Claims code lists
Source: https://www.stedi.com/docs/healthcare/claims-code-lists


This page contains code lists that are too long to represent clearly within the [API reference documentation](https://www.stedi.com/docs/healthcare/api-reference/post-healthcare-claims). You can find code lists for:

* [837 claims](#837-claim-code-lists) (professional, dental, and institutional)
* [277CA claim acknowledgments](#277ca-code-lists)
* [835 Electronic Remittance Advice (ERAs)](#era-code-lists)
* [276/277 claim status checks](#claim-status-code-lists)

## 837 claim code lists [#837-claim-code-lists]

You may need to reference the following code lists when submitting professional, dental, and institutional claims.

### Ambulance Certification Condition Codes [#ambulance-certification-condition-codes]

**Transaction type:** 837 claims

Used in the professional claims [`claimInformation.ambulanceCertification.conditionCodes`](/healthcare/api-reference/post-healthcare-claims#body.claimInformation.ambulanceCertification.conditionCodes) property.

<Accordion title="Ambulance Certification Condition Codes" id="ambulance-certification-condition-codes">
  * `01` - Patient was admitted to a hospital
  * `04` - Patient was moved by stretcher
  * `05` - Patient was unconscious or in shock
  * `06` - Patient was transported in an emergency situation
  * `07` - Patient had to be physically restrained
  * `08` - Patient had visible hemorrhaging
  * `09` - Ambulance service was medically necessary
  * `12` - Patient is confined to a bed or chair; use to indicate that the patient was bedridden during transport
</Accordion>

### Ambulance Transport Reason Codes [#ambulance-transport-reason-codes]

**Transaction type:** 837 claims

Used in the professional claims [`claimInformation.ambulanceTransportInformation.ambulanceTransportReasonCode`](/healthcare/api-reference/post-healthcare-claims#body.claimInformation.ambulanceTransportInformation.ambulanceTransportReasonCode) property.

<Accordion title="Ambulance Transport Reason Codes" id="ambulance-transport-reason-codes">
  * `A` - Patient was transported to nearest facility for care of symptoms, complaints, or both
  * `B` - Patient was transported for the benefit of a preferred physician
  * `C` - Patient was transported for the nearness of family members
  * `D` - Patient was transported for the care of a specialist or for availability of specialized equipment
  * `E` - Patient Transferred to Rehabilitation Facility
</Accordion>

### Attachment Report Type Codes [#attachment-report-type-codes]

**Transaction type:** 837 claims

Used in the following APIs and properties:

* Professional claims [`claimInformation.serviceLines[].serviceLineSupplementalInformation[].attachmentReportTypeCode`](/healthcare/api-reference/post-healthcare-claims#body.claimInformation.serviceLines.serviceLineSupplementalInformation.attachmentReportTypeCode) property
* Institutional claims [`claimInformation.claimSupplementalInformation.reportInformation.attachmentReportTypeCode`](/healthcare/api-reference/post-healthcare-institutional-claims#body.claimInformation.claimSupplementalInformation.reportInformation.attachmentReportTypeCode) property
* Dental claims [`claimInformation.claimSupplementalInformation.reportInformation.attachmentReportTypeCode`](/healthcare/api-reference/post-healthcare-dental-claims#body.claimInformation.claimSupplementalInformation.reportInformation.attachmentReportTypeCode) property. A subset of the codes are supported for [dental claims](#dental).

<Accordion title="Attachment Report Type Codes" id="attachment-report-type-codes">
  - `03` - Report Justifying Treatment Beyond Utilization Guidelines
  - `04` - Drugs Administered
  - `05` - Treatment Diagnosis
  - `06` - Initial Assessment
  - `07` - Functional Goals
  - `08` - Plan of Treatment
  - `09` - Progress Report
  - `10` - Continued Treatment
  - `11` - Chemical Analysis
  - `13` - Certified Test Report
  - `15` - Justification for Admission
  - `21` - Recovery Plan
  - `A3` - Allergies/Sensitivities Document
  - `A4` - Autopsy Report
  - `AM` - Ambulance Certification
  - `AS` - Admission Summary
  - `B2` - Prescription
  - `B3` - Physician Order
  - `B4` - Referral Form
  - `BR` - Benchmark Testing Results
  - `BS` - Baseline
  - `BT` - Blanket Test Results
  - `CB` - Chiropractic Justification
  - `CK` - Consent Form(s)
  - `CT` - Certification
  - `D2` - Drug Profile Document
  - `DA` - Dental Models
  - `DB` - Durable Medical Equipment Prescription
  - `DG` - Diagnostic Report
  - `DJ` - Discharge Monitoring Report
  - `DS` - Discharge Summary
  - `EB` - Explanation of Benefits (Coordination of Benefits or Medicare Secondary Payor)
  - `HC` - Health Certificate
  - `HR` - Health Clinic Records
  - `I5` - Immunization Record
  - `IR` - State School Immunization Records
  - `LA` - Laboratory Results
  - `M1` - Medical Record Attachment
  - `MT` - Models
  - `NN` - Nursing Notes
  - `OB` - Operative Note
  - `OC` - Oxygen Content Averaging Report
  - `OD` - Orders and Treatments Document
  - `OE` - Objective Physical Examination (including vital signs) Document
  - `OX` - Oxygen Therapy Certification
  - `OZ` - Support Data for Claim
  - `P4` - Pathology Report
  - `P5` - Patient Medical History Document
  - `PE` - Parenteral or Enteral Certification
  - `PN` - Physical Therapy Notes
  - `PO` - Prosthetics or Orthotic Certification
  - `PQ` - Paramedical Results
  - `PY` - Physician's Report
  - `PZ` - Physical Therapy Certification
  - `RB` - Radiology Films
  - `RR` - Radiology Reports
  - `RT` - Report of Tests and Analysis Report
  - `RX` - Renewable Oxygen Content Averaging Report
  - `SG` - Symptoms Document
  - `V5` - Death Notification
  - `XP` - Photographs
</Accordion>

#### Dental [#dental]

For dental claims, you can use only the following attachment report type codes:

<Accordion title="Dental Attachment Report Type Codes" id="dental-attachment-report-type-codes">
  * `B4` - Referral Form
  * `DA` - Dental Models
  * `DG` - Diagnostic Report
  * `EB` - Explanation of Benefits (Coordination of Benefits or Medicare Secondary Payor)
  * `OZ` - Support Data for Claim
  * `P6` - Periodontal Charts
  * `RB` - Radiology Films
  * `RR` - Radiology Reports
</Accordion>

### Attachment Transmission Codes [#attachment-transmission-codes]

**Transaction type:** 837 claims

Used in the professional claims [`claimInformation.serviceLines[].durableMedicalEquipmentCertificateOfMedicalNecessity.attachmentTransmissionCode`](/healthcare/api-reference/post-healthcare-claims#body.claimInformation.serviceLines.durableMedicalEquipmentCertificateOfMedicalNecessity.attachmentTransmissionCode) property.

<Accordion title="Attachment Transmission Codes" id="attachment-transmission-codes">
  * `AB` - Previously Submitted to Payer
  * `AD` - Certification Included in this Claim
  * `AF` - Narrative Segment Included in this Claim
  * `AG` - No Documentation is Required
  * `NS` - Not Specified; Paperwork is available on request at the provider's site. This means that the paperwork is not being sent with the claim at this time. Instead, it is available to the payer (or appropriate entity) at their request.
</Accordion>

### Claim Filing Indicator Codes [#claim-filing-indicator-codes]

**Transaction type:** 837 claims

Used in the following APIs and properties:

* Professional Claims [`claimInformation.claimFilingCode`](/healthcare/api-reference/post-healthcare-claims#body.claimInformation.claimFilingCode) and [`claimInformation.otherSubscriberInformation[].claimFilingIndicatorCode`](/healthcare/api-reference/post-healthcare-claims#body.claimInformation.otherSubscriberInformation.claimFilingIndicatorCode) properties.
* Dental Claims [`claimInformation.claimFilingCode`](/healthcare/api-reference/post-healthcare-dental-claims#body.claimInformation.claimFilingCode) and [`claimInformation.otherSubscriberInformation[].claimFilingIndicatorCode`](/healthcare/api-reference/post-healthcare-dental-claims#body.claimInformation.otherSubscriberInformation.claimFilingIndicatorCode) properties.
* Institutional Claims [`claimInformation.claimFilingCode`](/healthcare/api-reference/post-healthcare-institutional-claims#body.claimInformation.claimFilingCode) and [`claimInformation.otherSubscriberInformation.claimFilingIndicatorCode`](/healthcare/api-reference/post-healthcare-institutional-claims#body.claimInformation.otherSubscriberInformation.claimFilingIndicatorCode) properties.

<Accordion title="Claim Filing Indicator Codes" id="claim-filing-indicator-codes">
  - `11` - Other Non-Federal Programs
  - `12` - Preferred Provider Organization (PPO)
  - `13` - Point of Service (POS)
  - `14` - Exclusive Provider Organization (EPO)
  - `15` - Indemnity Insurance
  - `16` - Health Maintenance Organization (HMO) Medicare Risk
  - `17` - Dental Maintenance Organization
  - `AM` - Automobile Medical
  - `BL` - Blue Cross/Blue Shield
  - `CH` - Champus
  - `CI` - Commercial Insurance Co.
  - `DS` - Disability
  - `FI` - Federal Employees Program
  - `HM` - Health Maintenance Organization
  - `LM` - Liability Medical
  - `MA` - Medicare Part A
  - `MB` - Medicare Part B
  - `MC` - Medicaid
  - `OF` - Other Federal Program; Use when submitting Medicare Part D claims
  - `TV` - Title V
  - `VA` - Veterans Affairs Plan
  - `WC` - Workers' Compensation Health Claim
  - `ZZ` - Mutually Defined; Use when Type of Insurance is not known
</Accordion>

#### Choosing the right code [#choosing-the-right-code]

For some payers, the value for `claimInformation.claimFilingCode` is relatively obvious. For example, if you're submitting a claim to Medicaid California Medi-Cal, then it makes sense to default to populating `claimInformation.claimFilingCode` with `MC` (Medicaid).

For other payers, the correct code may be more difficult to determine. For example, if submitting a claim to the Centers for Medicare and Medicaid Services (CMS), you may need to submit `MA` (Medicare Part A) or `MB` (Medicare Part B).

In these cases, you can run a [real-time eligibility check](/healthcare/send-eligibility-checks) and evaluate whether the response contains any information that clearly suggests which claim filing code to use. For example, if the eligibility response contains `"benefitsInformation.insuranceType" : "Commercial"` then you should submit `"claimInformation.claimFilingCode": "CI"`.

One thing to note is that you may not always get back a `benefitsInformation.insuranceType` value in an eligibility response because payers are not required to send it. In these cases, you can just submit `ZZ` as the `claimFilingCode` because the vast majority of payers will accept that value.

Once you use this workflow to determine a best guess for the Claim Filing Indicator Code for each payer, you can try sending a claim.

* **Rejection:** The rejection message will clearly state that the claim filing indicator code was incorrect, and should state which one to send instead.
* **Acceptance:** The claim filing indicator code you submitted was correct.

### Claim Pricing (Institutional Claims) [#claim-pricing-institutional-claims]

For properties in the Institutional Claims `claimInformation.claimPricingInformation` object and the `claimInformation.serviceLines[].lineAdjudicationInformation` object.

#### Exception Codes [#exception-codes]

**Transaction type:** 837 claims

Used in the institutional claims [`claimInformation.claimPricingInformation.exceptionCode`](/healthcare/api-reference/post-healthcare-institutional-claims#body.claimInformation.claimPricingInformation.exceptionCode) property.

<Accordion title="Exception Codes" id="exception-codes">
  * `1` - Non-Network Professional Provider in Network Hospital
  * `2` - Emergency Care
  * `3` - Services or Specialist not in Network
  * `4` - Out-of-Service Area
  * `5` - State Mandates
  * `6` - Other
</Accordion>

#### Policy Compliance Codes [#policy-compliance-codes]

**Transaction type:** 837 claims

Used in the institutional claims [`claimInformation.claimPricingInformation.policyComplianceCode`](/healthcare/api-reference/post-healthcare-institutional-claims#body.claimInformation.claimPricingInformation.policyComplianceCode) and [`claimInformation.serviceLines[].linePricingInformation.policyComplianceCode`](/healthcare/api-reference/post-healthcare-institutional-claims#body.claimInformation.serviceLines.linePricingInformation.policyComplianceCode) properties.

<Accordion title="Policy Compliance Codes" id="policy-compliance-codes">
  * `1` - Procedure Followed (Compliance)
  * `2` - Not Followed - Call Not Made (Non-Compliance Call Not Made)
  * `3` - Not Medically Necessary (Non-Compliance Non-Medically Necessary)
  * `4` - Not Followed Other (Non-Compliance Other)
  * `5` - Emergency Admit to Non-Network Hospital
</Accordion>

#### Pricing Methodology Codes [#pricing-methodology-codes]

**Transaction type:** 837 claims

Used in the institutional claims [`claimInformation.claimPricingInformation.pricingMethodologyCode`](/healthcare/api-reference/post-healthcare-institutional-claims#body.claimInformation.claimPricingInformation.pricingMethodologyCode) and [`claimInformation.serviceLines[].lineRepricingInformation.pricingMethodologyCode`](/healthcare/api-reference/post-healthcare-institutional-claims#body.claimInformation.serviceLines.lineRepricingInformation.pricingMethodologyCode) properties.

<Accordion title="Pricing Methodology Codes" id="pricing-methodology-codes">
  * `00` - Zero Pricing (Not Covered Under Contract)
  * `01` - Priced as Billed at 100%
  * `02` - Priced at the Standard Fee Schedule
  * `03` - Priced at a Contractual Percentage
  * `04` - Bundled Pricing
  * `05` - Peer Review Pricing
  * `06` - Per Diem Pricing
  * `07` - Flat Rate Pricing
  * `08` - Combination Pricing
  * `09` - Maternity Pricing
  * `10` - Other Pricing
  * `11` - Lower of Cost
  * `12` - Ratio of Cost
  * `13` - Cost Reimbursed
  * `14` - Adjustment Pricing
</Accordion>

#### Product or Service ID Qualifier Codes [#product-or-service-id-qualifier-codes]

**Transaction type:** 837 claims

Used in the institutional claims properties:

* [`claimInformation.claimPricingInformation.productOrServiceIDQualifier`](/healthcare/api-reference/post-healthcare-institutional-claims#body.claimInformation.claimPricingInformation.productOrServiceIDQualifier)
* [`claimInformation.serviceLines[].lineAdjudicationInformation.productOrServiceIDQualifier`](/healthcare/api-reference/post-healthcare-institutional-claims#body.claimInformation.serviceLines.lineAdjudicationInformation.productOrServiceIDQualifier)
* [`claimInformation.serviceLines[].institutionalService.procedureIdentifier`](/healthcare/api-reference/post-healthcare-institutional-claims#body.claimInformation.serviceLines.institutionalService.procedureIdentifier)
* [`claimInformation.serviceLines[].lineRepricingInformation.productOrServiceIDQualifier`](/healthcare/api-reference/post-healthcare-institutional-claims#body.claimInformation.serviceLines.lineRepricingInformation.productOrServiceIDQualifier)

<Accordion title="Product or Service ID Qualifier Codes" id="product-or-service-id-qualifier-codes">
  - `ER` - Jurisdiction Specific Procedure and Supply Codes; Not allowed for use under HIPAA. You can only use this code if a new rule names the Jurisdiction Specific Procedure and Supply Codes as an allowable code set under HIPAA, OR the Secretary grants an exception to use the code set as a pilot project as allowed under the law, OR for claims not covered by HIPAA.
  - `HC` - Health Care Financing Administration Common Procedural Coding System (HCPCS) Codes; Because the AMA's CPT codes are also level 1 HCPCS codes, they are reported under HC.
  - `HP` - Health Insurance Prospective Payment System (HIPPS) Skilled Nursing Facility Rate Code
  - `IV` - Home Infusion EDI Coalition (HIEC) Product/Service Code; Not allowed for use under HIPAA. You can only use this qualifier if a new rule names the Home Infusion EDI Coalition (HIEC) Product/Service Codes as an allowable code set under HIPAA, OR the Secretary grants an exception to use the code set as a pilot project as allowed under the law, OR for claims not covered by HIPAA.
  - `WK` - Advanced Billing Concepts (ABC) Codes; Approved by the Secretary of HHS as a pilot project allowed under HIPAA law. Only parties registered in the pilot project and their trading partners can use this qualifier in transactions covered by HIPAA. Otherwise, you can only use this code if a new rule names the Complementary, Alternative, or Holistic Procedure Codes as an allowable code set under HIPAA OR for claims not covered by HIPAA.
</Accordion>

#### Reject Reason Codes [#reject-reason-codes]

**Transaction type:** 837 claims

Used in the institutional claims [`claimInformation.claimPricingInformation.rejectReasonCode`](/healthcare/api-reference/post-healthcare-institutional-claims#body.claimInformation.claimPricingInformation.rejectReasonCode) and [`claimInformation.serviceLines[].lineRepricingInformation.rejectReasonCode`](/healthcare/api-reference/post-healthcare-institutional-claims#body.claimInformation.serviceLines.lineRepricingInformation.rejectReasonCode) properties.

<Accordion title="Reject Reason Codes" id="reject-reason-codes">
  * `T1` - Cannot Identify Provider as TPO (Third Party Organization) Participant
  * `T2` - Cannot Identify Payer as TPO (Third Party Organization) Participant
  * `T3` - Cannot Identify Insured as TPO (Third Party Organization) Participant
  * `T4` - Payer Name or Identifier Missing
  * `T5` - Certification Information Missing
  * `T6` - Claim does not contain enough information for re-pricing
</Accordion>

### Composite Medical Procedure - Product or Service ID Qualifier Codes [#composite-medical-procedure---product-or-service-id-qualifier-codes]

**Transaction type:** 837 claims

Used in the professional claims [`claimInformation.serviceLines[].lineAdjudicationInformation.serviceIdQualifier`](/healthcare/api-reference/post-healthcare-claims#body.claimInformation.serviceLines.lineAdjudicationInformation.serviceIdQualifier) and [`claimInformation.serviceLines[].professionalService.procedureIdentifier`](/healthcare/api-reference/post-healthcare-claims#body.claimInformation.serviceLines.professionalService.procedureIdentifier) properties.

<Accordion title="Composite Medical Procedure - Product or Service ID Qualifier Codes" id="composite-medical-procedure---product-or-service-id-qualifier-codes">
  * `ER` - Jurisdiction Specific Procedure and Supply Codes; Not allowed for use under HIPAA. You can only use this code if a new rule names the Jurisdiction Specific Procedure and Supply Codes as an allowable code set under HIPAA, OR the Secretary grants an exception to use the code set as a pilot project as allowed under the law, OR for claims not covered by HIPAA.
  * `HC` - Health Care Financing Administration Common Procedural Coding System (HCPCS) Codes; Because the AMA's CPT codes are also level 1 HCPCS codes, they are reported under HC.
  * `IV` - Home Infusion EDI Coalition (HIEC) Product/Service Code; Not allowed for use under HIPAA. You can only use this qualifier if a new rule names the Home Infusion EDI Coalition (HIEC) Product/Service Codes as an allowable code set under HIPAA, OR the Secretary grants an exception to use the code set as a pilot project as allowed under the law, OR for claims not covered by HIPAA.
  * `WK` - Advanced Billing Concepts (ABC) Codes; Approved by the Secretary of HHS as a pilot project allowed under HIPAA law. Only parties registered in the pilot project and their trading partners can use this qualifier in transactions covered by HIPAA. Otherwise, you can only use this code if a new rule names the Complementary, Alternative, or Holistic Procedure Codes as an allowable code set under HIPAA OR for claims not covered by HIPAA.
</Accordion>

### Delay Reason Codes [#delay-reason-codes]

**Transaction type:** 837 claims

Used in the following APIs and properties:

* Professional claims [`claimInformation.delayReasonCode`](/healthcare/api-reference/post-healthcare-claims#body.claimInformation.delayReasonCode) property.
* Institutional claims [`claimInformation.delayReasonCode`](/healthcare/api-reference/post-healthcare-institutional-claims#body.claimInformation.delayReasonCode) property.
* Dental claims [`claimInformation.delayReasonCode`](/healthcare/api-reference/post-healthcare-dental-claims#body.claimInformation.delayReasonCode) property.

<Accordion title="Delay Reason Codes" id="delay-reason-codes">
  - `1` - Proof of Eligibility Unknown or Unavailable
  - `2` - Litigation
  - `3` - Authorization Delays
  - `4` - Delay in Certifying Provider
  - `5` - Delay in Supplying Billing Forms
  - `6` - Delay in Delivery of Custom-made Appliances
  - `7` - Third Party Processing Delay
  - `8` - Delay in Eligibility Determination
  - `9` - Original Claim Rejected or Denied Due to a Reason Unrelated to the Billing Limitation Rules
  - `10` - Administration Delay in the Prior Approval Process
  - `11` - Other
  - `15` - Natural Disaster
</Accordion>

### Drug Identification Product or Service ID Qualifier Codes [#drug-identification-product-or-service-id-qualifier-codes]

**Transaction type:** 837 claims

Used in the professional claims [`claimInformation.serviceLines[].drugIdentification.serviceIdQualifier`](/healthcare/api-reference/post-healthcare-claims#body.claimInformation.serviceLines.drugIdentification.serviceIdQualifier) property.

<Accordion title="Drug Identification Product or Service ID Qualifier Codes" id="drug-identification-product-or-service-id-qualifier-codes">
  * `EN` - EAN/UCC - 13
  * `EO` - EAN/UCC - 8
  * `HI` - HIBC (Health Care Industry Bar Code) Supplier Labeling Standard Primary Data Message
  * `N4` - National Drug Code in 5-4-2 Format
  * `ON` - Customer Order Number
  * `UK` - GTIN 14-digit Data Structure
  * `UP` - UCC - 12
</Accordion>

### Individual Relationship Codes [#individual-relationship-codes]

**Transaction type:** 837 claims

Used in the following APIs and properties:

* Professional claims [`claimInformation.otherSubscriberInformation[].individualRelationshipCode`](/healthcare/api-reference/post-healthcare-claims#body.claimInformation.otherSubscriberInformation.individualRelationshipCode) property.
* Dental claims [`claimInformation.otherSubscriberInformation[].individualRelationshipCode`](/healthcare/api-reference/post-healthcare-dental-claims#body.claimInformation.otherSubscriberInformation.individualRelationshipCode) property.
* Institutional claims [`claimInformation.otherSubscriberInformation.individualRelationshipCode`](/healthcare/api-reference/post-healthcare-institutional-claims#body.claimInformation.otherSubscriberInformation.individualRelationshipCode) property.

<Accordion title="Individual Relationship Codes" id="individual-relationship-codes">
  - `01` - Spouse
  - `18` - Self
  - `19` - Child
  - `20` - Employee
  - `21` - Unknown
  - `39` - Organ Donor
  - `40` - Cadaver Donor
  - `53` - Life Partner
  - `G8` - Other Relationship
</Accordion>

### Insurance Type Codes [#insurance-type-codes]

**Transaction type:** 837 claims

Used in the following APIs and properties:

* Professional claims [`subscriber.insuranceTypeCode`](/healthcare/api-reference/post-healthcare-claims#body.subscriber.insuranceTypeCode) and [`claimInformation.otherSubscriberInformation[].insuranceTypeCode`](/healthcare/api-reference/post-healthcare-claims#body.claimInformation.otherSubscriberInformation.insuranceTypeCode) properties.
* Dental claims [`subscriber.insuranceTypeCode`](/healthcare/api-reference/post-healthcare-dental-claims#body.subscriber.insuranceTypeCode) and [`claimInformation.otherSubscriberInformation[].insuranceTypeCode`](/healthcare/api-reference/post-healthcare-dental-claims#body.claimInformation.otherSubscriberInformation.insuranceTypeCode) properties.

<Accordion title="Insurance Type Codes" id="insurance-type-codes">
  - `12` - Medicare Secondary Working Aged Beneficiary or Spouse with Employer Group Health Plan
  - `13` - Medicare Secondary End-Stage Renal Disease Beneficiary in the Mandated Coordination Period with an Employer's Group Health Plan
  - `14` - Medicare Secondary, No-fault Insurance including Auto is Primary
  - `15` - Medicare Secondary Worker's Compensation
  - `16` - Medicare Secondary Public Health Service (PHS)or Other Federal Agency
  - `41` - Medicare Secondary Black Lung
  - `42` - Medicare Secondary Veteran's Administration
  - `43` - Medicare Secondary Disabled Beneficiary Under Age 65 with Large Group Health Plan (LGHP)
  - `47` - Medicare Secondary, Other Liability Insurance is Primary
</Accordion>

### Payment Responsibility Sequence Number Codes [#payment-responsibility-sequence-number-codes]

**Transaction type:** 837 claims

Used in the following APIs and properties:

* Professional claims [`subscriber.paymentResponsibilityLevelCode`](/healthcare/api-reference/post-healthcare-claims#body.subscriber.paymentResponsibilityLevelCode) and [`claimInformation.otherSubscriberInformation[].paymentResponsibilityLevelCode`](/healthcare/api-reference/post-healthcare-claims#body.claimInformation.otherSubscriberInformation.paymentResponsibilityLevelCode) properties.
* Dental claims [`subscriber.paymentResponsibilityLevelCode`](/healthcare/api-reference/post-healthcare-dental-claims#body.subscriber.paymentResponsibilityLevelCode) and [`claimInformation.otherSubscriberInformation[].paymentResponsibilityLevelCode`](/healthcare/api-reference/post-healthcare-dental-claims#body.claimInformation.otherSubscriberInformation.paymentResponsibilityLevelCode) properties.
* Institutional claims [`subscriber.paymentResponsibilityLevelCode`](/healthcare/api-reference/post-healthcare-institutional-claims#body.subscriber.paymentResponsibilityLevelCode) and [`claimInformation.otherSubscriberInformation.paymentResponsibilityLevelCode`](/healthcare/api-reference/post-healthcare-institutional-claims#body.claimInformation.otherSubscriberInformation.paymentResponsibilityLevelCode) properties.

<Accordion title="Payment Responsibility Sequence Number Codes" id="payment-responsibility-sequence-number-codes">
  - `A` - Payer Responsibility Four
  - `B` - Payer Responsibility Five
  - `C` - Payer Responsibility Six
  - `D` - Payer Responsibility Seven
  - `E` - Payer Responsibility Eight
  - `F` - Payer Responsibility Nine
  - `G` - Payer Responsibility Ten
  - `H` - Payer Responsibility Eleven
  - `P` - Primary
  - `S` - Secondary
  - `T` - Tertiary
  - `U` - Unknown; This code may only be used in payer to payer COB claims when the original payer determined the presence of this coverage from eligibility files received from this payer or when the original claim did not provide the responsibility sequence for this payer.
</Accordion>

### Pricing/Repricing (Professional and Dental Claims) [#pricingrepricing-professional-and-dental-claims]

Used in the professional claims and dental claims APIs.

#### Exception Codes [#exception-codes-1]

**Transaction type:** 837 claims

Used in the following APIs and properties:

* Professional claims [`claimInformation.claimPricingRepricingInformation.exceptionCode`](/healthcare/api-reference/post-healthcare-claims#body.claimInformation.claimPricingRepricingInformation.exceptionCode) and [`claimInformation.serviceLines[].linePricingRepricingInformation.exceptionCode`](/healthcare/api-reference/post-healthcare-claims#body.claimInformation.serviceLines.linePricingRepricingInformation.exceptionCode) properties.
* Dental claims [`claimInformation.claimPricingRepricingInformation.exceptionCode`](/healthcare/api-reference/post-healthcare-dental-claims#body.claimInformation.claimPricingRepricingInformation.exceptionCode) and [`claimInformation.serviceLines[].linePricingRepricingInformation.exceptionCode`](/healthcare/api-reference/post-healthcare-dental-claims#body.claimInformation.serviceLines.linePricingRepricingInformation.exceptionCode) properties.

<Accordion title="Exception Codes (Professional and Dental)" id="exception-codes-professional-and-dental">
  - `1` - Non-Network Professional Provider in Network Hospital
  - `2` - Emergency Care
  - `3` - Services or Specialist not in Network
  - `4` - Out-of-Service Area
  - `5` - State Mandates
  - `6` - Other
</Accordion>

#### Policy Compliance Codes [#policy-compliance-codes-1]

**Transaction type:** 837 claims

Used in the following APIs and properties:

* Professional claims [`claimInformation.claimPricingRepricingInformation.policyComplianceCode`](/healthcare/api-reference/post-healthcare-claims#body.claimInformation.claimPricingRepricingInformation.policyComplianceCode) and [`claimInformation.serviceLines[].linePricingRepricingInformation.policyComplianceCode`](/healthcare/api-reference/post-healthcare-claims#body.claimInformation.serviceLines.linePricingRepricingInformation.policyComplianceCode) properties.
* Dental claims [`claimInformation.claimPricingRepricingInformation.policyComplianceCode`](/healthcare/api-reference/post-healthcare-dental-claims#body.claimInformation.claimPricingRepricingInformation.policyComplianceCode) and [`claimInformation.serviceLines[].linePricingRepricingInformation.policyComplianceCode`](/healthcare/api-reference/post-healthcare-dental-claims#body.claimInformation.serviceLines.linePricingRepricingInformation.policyComplianceCode) properties.

<Accordion title="Policy Compliance Codes (Professional and Dental)" id="policy-compliance-codes-professional-and-dental">
  - `1` - Procedure Followed (Compliance)
  - `2` - Not Followed - Call Not Made (Non-Compliance Call Not Made)
  - `3` - Not Medically Necessary (Non-Compliance Non-Medically Necessary)
  - `4` - Not Followed Other (Non-Compliance Other)
  - `5` - Emergency Admit to Non-Network Hospital
</Accordion>

#### Pricing Methodology Codes [#pricing-methodology-codes-1]

**Transaction type:** 837 claims

Used in the following APIs and properties:

* Professional claims [`claimInformation.claimPricingRepricingInformation.pricingMethodologyCode`](/healthcare/api-reference/post-healthcare-claims#body.claimInformation.claimPricingRepricingInformation.pricingMethodologyCode) and [`claimInformation.serviceLines[].linePricingRepricingInformation.pricingMethodologyCode`](/healthcare/api-reference/post-healthcare-claims#body.claimInformation.serviceLines.linePricingRepricingInformation.pricingMethodologyCode) properties.
* Dental claims [`claimInformation.claimPricingRepricingInformation.pricingMethodologyCode`](/healthcare/api-reference/post-healthcare-dental-claims#body.claimInformation.claimPricingRepricingInformation.pricingMethodologyCode) and [`claimInformation.serviceLines[].linePricingRepricingInformation.pricingMethodologyCode`](/healthcare/api-reference/post-healthcare-dental-claims#body.claimInformation.serviceLines.linePricingRepricingInformation.pricingMethodologyCode) properties.

<Accordion title="Pricing Methodology Codes (Professional and Dental)" id="pricing-methodology-codes-professional-and-dental">
  - `00` - Zero Pricing (Not Covered Under Contract)
  - `01` - Priced as Billed at 100%
  - `02` - Priced at the Standard Fee Schedule
  - `03` - Priced at a Contractual Percentage
  - `04` - Bundled Pricing
  - `05` - Peer Review Pricing
  - `07` - Flat Rate Pricing
  - `08` - Combination Pricing
  - `09` - Maternity Pricing
  - `10` - Other Pricing
  - `11` - Lower of Cost
  - `12` - Ratio of Cost
  - `13` - Cost Reimbursed
  - `14` - Adjustment Pricing
</Accordion>

#### Reject Reason Codes [#reject-reason-codes-1]

**Transaction type:** 837 claims

Used in the following APIs and properties:

* Professional claims [`claimInformation.claimPricingRepricingInformation.rejectReasonCode`](/healthcare/api-reference/post-healthcare-claims#body.claimInformation.claimPricingRepricingInformation.rejectReasonCode) and [`claimInformation.serviceLines[].linePricingRepricingInformation.rejectReasonCode`](/healthcare/api-reference/post-healthcare-claims#body.claimInformation.serviceLines.linePricingRepricingInformation.rejectReasonCode) properties.
* Dental claims [`claimInformation.claimPricingRepricingInformation.rejectReasonCode`](/healthcare/api-reference/post-healthcare-dental-claims#body.claimInformation.claimPricingRepricingInformation.rejectReasonCode) and [`claimInformation.serviceLines[].linePricingRepricingInformation.rejectReasonCode`](/healthcare/api-reference/post-healthcare-dental-claims#body.claimInformation.serviceLines.linePricingRepricingInformation.rejectReasonCode) properties.

<Accordion title="Reject Reason Codes (Professional and Dental)" id="reject-reason-codes-professional-and-dental">
  - `T1` - Cannot Identify Provider as TPO (Third Party Organization) Participant
  - `T2` - Cannot Identify Payer as TPO (Third Party Organization) Participant
  - `T3` - Cannot Identify Insured as TPO (Third Party Organization) Participant
  - `T4` - Payer Name or Identifier Missing
  - `T5` - Certification Information Missing
  - `T6` - Claim does not contain enough information for re-pricing
</Accordion>

### Service Authorization Exception Codes [#service-authorization-exception-codes]

**Transaction type:** 837 claims

Used in the following APIs and properties:

* Professional claims [`claimInformation.claimSupplementalInformation.serviceAuthorizationExceptionCode`](/healthcare/api-reference/post-healthcare-claims#body.claimInformation.claimSupplementalInformation.serviceAuthorizationExceptionCode) property
* Dental claims [`claimInformation.claimSupplementalInformation.serviceAuthorizationExceptionCode`](/healthcare/api-reference/post-healthcare-dental-claims#body.claimInformation.claimSupplementalInformation.serviceAuthorizationExceptionCode) property
* Institutional claims [`claimInformation.claimSupplementalInformation.serviceAuthorizationExceptionCode`](/healthcare/api-reference/post-healthcare-institutional-claims#body.claimInformation.claimSupplementalInformation.serviceAuthorizationExceptionCode) property.

<Accordion title="Service Authorization Exception Codes" id="service-authorization-exception-codes">
  - `1` - Immediate/Urgent Care
  - `2` - Services Rendered in a Retroactive Period
  - `3` - Emergency Care
  - `4` - Client has Temporary Medicaid
  - `5` - Request from County for Second Opinion to Determine if Recipient Can Work
  - `6` - Request for Override Pending
  - `7` - Special Handling
</Accordion>

### Vision Condition Codes [#vision-condition-codes]

**Transaction type:** 837 claims

Used in the professional claims [`claimInformation.patientConditionInformationVision.conditionCodes`](/healthcare/api-reference/post-healthcare-claims#body.claimInformation.patientConditionInformationVision.conditionCodes) property.

<Accordion title="Vision Condition Codes" id="vision-condition-codes">
  * `L1` - General Standard of 20 Degree or .5 Diopter Sphere or Cylinder Change Met
  * `L2` - Replacement Due to Loss or Theft
  * `L3` - Replacement Due to Breakage or Damage
  * `L4` - Replacement Due to Patient Preference
  * `L5` - Replacement Due to Medical Reason
</Accordion>

## 277CA code lists [#277ca-code-lists]

You may need to refer to the following code lists while evaluating the 277CA claim acknowledgment.

### Claim Status Category Code [#claim-status-category-code]

**Transaction type:** 277CA claim acknowledgments

A claim's status is reported using a category code, which is returned in multiple locations within the 277CA. For each instance, Stedi returns two properties:

* `healthCareClaimStatusCategoryCode`: The code, such as `A1`, `A2`, or `A3`.
* `healthCareClaimStatusCategoryCodeValue`: The description associated with that code.

These values indicate the status of a claim or encounter.

<Note>
  Payers should only send the following codes, per the X12 HIPAA specification. However, some payers return non-compliant values, which Stedi passes through as is.
</Note>

<Accordion title="Claim Status Category Codes" id="claim-status-category-codes">
  * `A0` - Acknowledgement/Forwarded - The claim/encounter has been forwarded to another entity.
  * `A1` - Acknowledgement/Receipt - The claim/encounter has been received. This does not mean that the claim has been accepted for adjudication.
  * `A2` - Acknowledgement/Acceptance into adjudication system - The claim/encounter has been accepted into the adjudication system.
  * `A3` - Acknowledgement/Returned as unprocessable claim - The claim/encounter has been rejected and has not been entered into the adjudication system.
  * `A4` - Acknowledgement/Not Found - The claim/encounter can not be found in the adjudication system.
  * `A5` - Acknowledgement/Split Claim - The claim/encounter has been split upon acceptance into the adjudication system.
  * `A6` - Acknowledgement/Rejected for Missing Information - The claim/encounter is missing the information specified in the Status details and has been rejected.
  * `A7` - Acknowledgement/Rejected for Invalid Information - The claim/encounter has invalid information as specified in the Status details and has been rejected.
  * `A8` - Acknowledgement/Rejected for relational field in error.
</Accordion>

## ERA code lists [#era-code-lists]

You may need to refer to the following code lists while evaluating the 835 Electronic Remittance Advice (ERA).

### Claim Adjustment Group Code [#claim-adjustment-group-code]

**Transaction type:** 835 Electronic Remittance Advice

Stedi returns this code in the [`transactions[].detailInfo[].paymentInfo[].claimAdjustments[].claimAdjustmentGroupCode`](/healthcare/api-reference/get-healthcare-reports-835#response.transactions.detailInfo.paymentInfo.claimAdjustments.claimAdjustmentGroupCode) property. It categorizes the adjustment reason codes Stedi returns in `claimAdjustments` array items.

<Accordion title="Claim Adjustment Group Codes" id="claim-adjustment-group-codes">
  * `CO` - Contractual Obligations | The payer uses this code when a joint payer/payee contractual agreement or a regulatory requirement resulted in an adjustment. An example of a contractual obligation might be a Participating Provider Agreement.
  * `OA` - Other adjustments | The payer uses this code when the adjustment doesn't fall within the other categories.
  * `PI` - Payor Initiated Reductions | The payer uses this code when, in their opinion, the adjustment is not the responsibility of the patient, but there is no supporting contract between the provider and the payer (i.e., medical review or professional review organization adjustments).
  * `PR` - Patient Responsibility | The payer uses this code when the adjustment amount is the responsibility of the patient.
</Accordion>

### Claim Adjustment Reason Code (CARC) [#claim-adjustment-reason-code-carc]

**Transaction type:** 835 Electronic Remittance Advice

Stedi returns this code in the following properties:

* [`transactions[].detailInfo[].paymentInfo[].claimAdjustments[].adjustmentReasonCode`](/healthcare/api-reference/get-healthcare-reports-835#response.transactions.detailInfo.paymentInfo.claimAdjustments.adjustmentReasonCode1) (1-6)
* [`transactions[].detailInfo[].paymentInfo[].serviceLines[].serviceAdjustments[].adjustmentReasonCode`](/healthcare/api-reference/get-healthcare-reports-835#response.transactions.detailInfo.paymentInfo.serviceLines.serviceAdjustments.adjustmentReasonCode1) (1-6)

CARCs identify the reason for an adjustment. Visit [Claim Adjustment Reason Codes](https://x12.org/codes/claim-adjustment-reason-codes) in the X12 documentation for a complete list.

### Claim Filing Indicator Code [#claim-filing-indicator-code]

**Transaction type:** 835 Electronic Remittance Advice

Stedi returns this code in the [`transactions[].detailInfo[].paymentInfo[].claimPaymentInfo.claimFilingIndicatorCode`](/healthcare/api-reference/get-healthcare-reports-835#response.transactions.detailInfo.paymentInfo.claimPaymentInfo.claimFilingIndicatorCode) property. It identifies the type of claim submitted.

<Accordion title="Claim Filing Indicator Codes (ERA)" id="claim-filing-indicator-codes-era">
  * `12` - Preferred Provider Organization (PPO) | This code is also used for Blue Cross/Blue Shield participating provider arrangements.
  * `13` - Point of Service (POS)
  * `14` - Exclusive Provider Organization (EPO)
  * `15` - Indemnity Insurance | This code is also used for Blue Cross/Blue Shield non-participating provider arrangements.
  * `16` - Health Maintenance Organization (HMO) Medicare Risk
  * `17` - Dental Maintenance Organization
  * `AM` - Automobile Medical
  * `CH` - Champus
  * `DS` - Disability
  * `HM` - Health Maintenance Organization
  * `LM` - Liability Medical
  * `MA` - Medicare Part A
  * `MB` - Medicare Part B
  * `MC` - Medicaid
  * `OF` - Other Federal Program | This code is used for the Black Lung Program.
  * `TV` - Title V
  * `VA` - Veterans Affairs Plan
  * `WC` - Workers' Compensation Health Claim
  * `ZZ` - Mutually Defined
</Accordion>

### Claim Status Code [#claim-status-code]

**Transaction type:** 835 Electronic Remittance Advice

Stedi returns this code in the [`transactions[].detailInfo[].paymentInfo[].claimPaymentInfo.claimStatusCode`](/healthcare/api-reference/get-healthcare-reports-835#response.transactions.detailInfo.paymentInfo.claimPaymentInfo.claimStatusCode) property. It identifies the status of an entire claim as assigned by the payer, claim review organization, or repricing organization.

Codes `19`, `20`, and `21` indicate that the claim is a [crossover claim](/healthcare/receive-claim-responses#crossover-claims) that has been forwarded to an additional payer for processing. This practice is common in coordination of benefits (COB) scenarios. You may need to enroll the provider with the additional payer before they can process the claim.

<Accordion title="Claim Status Codes" id="claim-status-codes">
  * `1` - Processed as Primary | The payer uses this code when the claim was adjudicated by the current payer as primary regardless of whether any part of the claim was paid.
  * `2` - Processed as Secondary | The payer uses this code when the claim was adjudicated by the current payer as secondary regardless of whether any part of the claim was paid.
  * `3` - Processed as Tertiary | The payer uses this code when the claim was adjudicated by the current payer as tertiary (or subsequent) regardless of whether any part of the claim was paid.
  * `4` - Denied | The payer uses this code when the Patient/Subscriber is not recognized, and the claim was not forwarded to another payer.
  * `19` - Processed as Primary, Forwarded to Additional Payer(s)
  * `20` - Processed as Secondary, Forwarded to Additional Payer(s)
  * `21` - Processed as Tertiary, Forwarded to Additional Payer(s)
  * `22` - Reversal of Previous Payment
  * `23` - Not Our Claim, Forwarded to Additional Payer(s) | The payer sends this code when the patient/subscriber is not recognized or the claim was not adjudicated by the payer, but other payers are known and the claim has been forwarded to another payer.
  * `25` - Predetermination Pricing Only - No Payment
</Accordion>

### Credit or Debit Flag Code [#credit-or-debit-flag-code]

**Transaction type:** 835 Electronic Remittance Advice

Stedi returns this code in the [`transactions[].financialInformation.creditOrDebitFlagCode` property](/healthcare/api-reference/get-healthcare-reports-835#response.transactions.financialInformation.creditOrDebitFlagCode). It indicates whether the payment is a credit or a debit.

<Accordion title="Credit or Debit Flag Codes" id="credit-or-debit-flag-codes">
  * `C` - Credit | The payer uses this code to indicate a credit to the provider's account and a debit to the payer's account, initiated by the payer. In the case of an EFT, no additional action is required of the provider. The payer also uses this code when a check is issued for the payment.
  * `D` - Debit | The payer uses this code to indicate a debit to the payer's account and a credit to the provider's account, initiated by the provider at the instruction of the payer.
</Accordion>

### Payment Method Code [#payment-method-code]

**Transaction type:** 835 Electronic Remittance Advice

Stedi returns this code in the [`transactions[].financialInformation.paymentMethodCode` property](/healthcare/api-reference/get-healthcare-reports-835#response.transactions.financialInformation.paymentMethodCode). It identifies the payment format. Note that the remaining properties in the `financialInformation` object contain additional requirements and information about the payment.

<Accordion title="Payment Method Codes" id="payment-method-codes">
  * `ACH` - Automated Clearing House (ACH) | The payer uses this code to move money electronically through the ACH, or to notify the provider that an ACH transfer was requested.
  * `BOP` - Financial Institution Option | The payer uses this code to indicate that the third-party processor will choose the method of payment based upon endpoint requests or capabilities.
  * `CHK` - Check | The payer uses this code to indicate that a check has been issued for payment.
  * `FWT` - Federal Reserve Funds/Wire Transfer - Nonrepetitive | The payer uses this code to indicate that the funds were sent through the wire system.
  * `NON` - Non-Payment Data | The payer uses this code when the `transactions.financialInformation.transactionHandlingCode` is `H`, indicating that this is information only and no dollars are to be moved.
</Accordion>

### Provider Adjustment Reason Code [#provider-adjustment-reason-code]

**Transaction type:** 835 Electronic Remittance Advice

Stedi returns this code in the [`transactions[].providerAdjustments[].adjustments[].adjustmentReasonCode` property](/healthcare/api-reference/get-healthcare-reports-835#response.transactions.providerAdjustments.adjustments.adjustmentReasonCode). It identifies the reason for an adjustment made to the provider's account outside of the claim-level and service-line-level adjustments. The valid codes for X12 release 5010, which Stedi uses for ERAs, differ from the Provider Adjustment Reason Codes list on the X12 website. Use the following code list for ERAs you receive through Stedi.

<Accordion title="Provider Adjustment Reason Codes" id="provider-adjustment-reason-codes">
  * `50` - Late Charge | This is the Late Claim Filing Penalty or Medicare Late Cost Report Penalty
  * `51` - Interest Penalty Charge | This is the interest assessment for late filing.
  * `72` - Authorized Return | This is the provider refund adjustment. This adjustment acknowledges a refund received from a provider for previous overpayment. The payer should provide an identifying number in the `providerAdjustmentIdentifier` property. The adjustment amount is always a negative value.
  * `90` - Early Payment Allowance
  * `AH` - Origination Fee | This is the claim transmission fee. This is used for transmission fees that aren't specific to or dependent upon individual claims.
  * `AM` - Applied to Borrower's Account | This identifies a loan repayment amount. This is capitation specific.
  * `AP` - Acceleration of Benefits | This is the accelerated payment amount or withholding. A positive value for the adjustment represents a withholding. A negative value represents a payment.
  * `B2` - Rebate | The provider has remitted an overpayment to the health plan in excess of the amount requested. The excess amount is being returned to the provider. The amount accepted by the health plan is reported using code `72` (Authorized Return) and is offset by the amount with code `WO` (Overpayment Recovery). This code reports the excess amount (represented as a negative adjustment amount) returned to the provider.
  * `B3` - Recovery Allowance | This represents the check the payer received from the provider for overpayments from other payers. This is different from the provider refund adjustment represented by code `72` (Authorized Return). This adjustment should always be offset by another adjustment referring to the original refund request or reason.
  * `BD` - Bad Debt Adjustment | This is the bad debt passthrough.
  * `BN` - Bonus | This is capitation specific.
  * `C5` - Temporary Allowance | This is the tentative adjustment.
  * `CR` - Capitation Interest | This is capitation specific.
  * `CS` - Adjustment
  * `CT` - Capitation Payment | This is capitation specific.
  * `CV` - Capital Passthru
  * `CW` - Certified Registered Nurse Anesthetist Passthru
  * `DM` - Direct Medical Education Passthru
  * `E3` - Withholding
  * `FB` - Forwarding Balance | This is the balance forward. A negative adjustment value represents a balance moving forward to a future ERA. A positive value represents a balance being applied from a previous ERA. The payer should provide a reference number for tracking purposes in the `providerAdjustmentIdentifier` property.
  * `FC` - Fund Allocation | This is capitation specific.
  * `GO` - Graduate Medical Education Passthru
  * `HM` - Hemophilia Clotting Factor Supplement
  * `IP` - Inceptive Premium Payment | This is capitation specific.
  * `IR` - Internal Revenue Service Withholding
  * `IS` - Interim Settlement | This is the interim rate lump sum adjustment.
  * `J1` - Nonreimbursable | This offsets the claim or service level data that reflects what could be paid if not for demonstration program or other limitation that prevents issuance of payment.
  * `L3` - Penalty | This is the capitation-related penalty. Withholding or release is identified by the sign of the adjustment amount.
  * `L6` - Interest Owed | This is the interest paid on claims in this ERA.
  * `LE` - Levy | IRS levy.
  * `LS` - Lump Sum | This is the disproportionate share adjustment, indirect medical education passthrough, non-physician passthrough, passthrough lump sum adjustment, or other passthrough amount. The payer should identify the specific type of lump sum adjustment in the `providerAdjustmentIdentifier` property.
  * `OA` - Organ Acquisition Passthru
  * `OB` - Offset for Affiliated Providers | The payer should identify the affiliated providers in the `providerAdjustmentIdentifier` property.
  * `PI` - Periodic Interim Payment | This is the periodic interim lump sum payments and reductions (PIP). The payments are made to a provider at the beginning of some period in advance of claims. These payments are advances on the expected claims for the period. The reductions are the recovery of actual claims payments during the period. For example, when a provider has a PIP payment, claims within this ERA covered by that payment are offset using this code to remove the claim payment from the current check. The sign of the adjustment amount determines whether this is a payment (negative) or reduction (positive). This payment and recoupment is effectively a loan to the provider and loan repayment.
  * `PL` - Payment Final | This is the final settlement.
  * `RA` - Retro-activity Adjustment | This is capitation specific.
  * `RE` - Return on Equity
  * `SL` - Student Loan Repayment
  * `TL` - Third Party Liability | This is capitation specific.
  * `WO` - Overpayment Recovery | This is the recovery of previous overpayment. The payer should provide an identifying number in the `providerAdjustmentIdentifier` property.
  * `WU` - Unspecified Recovery | Medicare is currently using this code to represent penalty collections withheld for the IRS (an outside source).
</Accordion>

### Remittance Advice Remark Code (RARC) [#remittance-advice-remark-code-rarc]

**Transaction type:** 835 Electronic Remittance Advice

Stedi returns this code in the following properties:

* [`transactions[].detailInfo[].paymentInfo[].inpatientAdjudication.claimPaymentRemarkCode`](/healthcare/api-reference/get-healthcare-reports-835#response.transactions.detailInfo.paymentInfo.inpatientAdjudication.claimPaymentRemarkCode1) (1-6)
* [`transactions[].detailInfo[].paymentInfo[].outpatientAdjudication.claimPaymentRemarkCode`](/healthcare/api-reference/get-healthcare-reports-835#response.transactions.detailInfo.paymentInfo.outpatientAdjudication.claimPaymentRemarkCode1) (1-6)
* [`transactions[].detailInfo[].paymentInfo[].serviceLines[].healthCareCheckRemarkCodes[].remarkCode`](/healthcare/api-reference/get-healthcare-reports-835#response.transactions.detailInfo.paymentInfo.serviceLines.healthCareCheckRemarkCodes.remarkCode) - this property can either be a RARC or a National Council for Prescription Drug Programs Reject/Payment Code

RARCs provide additional explanation for an adjustment already described by a Claim Adjustment Reason Code (CARC) or convey information about remittance processing.

Visit [Remittance Advice Remark Codes](https://x12.org/codes/remittance-advice-remark-codes) in the X12 documentation for a complete list.

### Transaction Handling Code [#transaction-handling-code]

**Transaction type:** 835 Electronic Remittance Advice

Stedi returns this code in the [`transactions[].financialInformation.transactionHandlingCode`](/healthcare/api-reference/get-healthcare-reports-835#response.transactions.financialInformation.transactionHandlingCode) property. It indicates the actions taken by both the sender and the receiver.

<Accordion title="Transaction Handling Codes" id="transaction-handling-codes">
  * `C` - Payment Accompanies Remittance Advice | The payer uses this code to instruct the third-party processor to move funds and remittance details together through the banking system.
  * `D` - Make Payment Only | The payer uses this code to instruct the third-party processor to move only funds through the banking system and to ignore any remittance information.
  * `H` - Notification Only | The payer uses this code when the actual provider payment (listed in the `transactions.financialInformation.totalActualProviderPaymentAmount` property) is zero, and the transaction is not being used for Prenotification of Future Transfers. This indicates remittance information without any associated payment.
  * `I` - Remittance Information Only | The payer uses this code to indicate to the payee that the remittance detail is moving separately from the payment.
  * `P` - Prenotification of Future Transfers | This code is used only by the payer and the banking system to initially validate account numbers before beginning an EFT relationship.
  * `U` - Split Payment and Remittance | The payer uses this code to instruct the third-party processor to split the payment and remittance details and send each on a separate path.
  * `X` - Handling Party's Option to Split Payment and Remittance | The payer uses this code to instruct the third-party processor to move the payment and remittance detail, together or separately, based upon endpoint requests or capabilities.
</Accordion>

## Claim status code lists [#claim-status-code-lists]

You may need to reference the following code lists when working with the 276/277 claim status request or response.

### Claim status [#claim-status]

**Transaction type:** 276/277 real-time claim status

Used in the [`claims[].claimStatus.statusCode`](/healthcare/api-reference/post-healthcare-claim-status#response.claims.claimStatus.statusCode) property. This is the status code used to identify the status of an entire claim or a service line. For example, code `20` means `Accepted for Processing`.

This is either a Health Care Claim Status Code or a National Council for Prescription Drug Programs (NCPDP) Reject/Payment Code, when the status is related to pharmacy claims.

* Visit [Claim Status Codes](https://x12.org/codes/claim-status-codes) in the official X12 documentation for a complete list of Health Care Claim Status Codes.
* Visit the [National Council for Prescription Drug Programs website](https://www.ncpdp.org/) for access to the Reject/Payment Code list.

### Claim status category [#claim-status-category]

**Transaction type:** 276/277 real-time claim status

A code that provides more detail about the claim status. For example, code `F1` means `Finalized/Revised - Adjudication information has been changed`.

It's returned in the following properties:

* [`claims[].claimStatus.statusCategoryCode`](https://www.stedi.com/docs/healthcare/api-reference/post-healthcare-claim-status#response.claims.claimStatus.statusCategoryCode)
* [`claims[].serviceDetails[].status[].statusCategoryCode`](/healthcare/api-reference/post-healthcare-claim-status#response.claims.serviceDetails.status.statusCategoryCode)

Visit [Claim Status Category Codes](https://x12.org/codes/claim-status-category-codes) in the official X12 documentation for a complete list.

### Entity identifier [#entity-identifier]

**Transaction type:** 276/277 real-time claim status

A code identifying the organizational entity, physical location, property, or individual associated with the `claims.claimStatus.statusCode`. For example, code `1G` means `Oncology Center`.

It's returned in the following properties:

* [`claims[].claimStatus.entityCode`](/healthcare/api-reference/post-healthcare-claim-status#response.claims.claimStatus.entityCode)
* [`claims[].serviceDetails[].status[].entityCode`](/healthcare/api-reference/post-healthcare-claim-status#response.claims.serviceDetails.status.entityCode)

<Accordion title="Entity Identifier Codes" id="entity-identifier-codes">
  - `1E` - Health Maintenance Organization (HMO)
  - `1G` - Oncology Center
  - `1H` - Kidney Dialysis Unit
  - `1I` - Preferred Provider Organization (PPO)
  - `1O` - Acute Care Hospital
  - `1P` - Provider
  - `1Q` - Military Facility
  - `1R` - University, College or School
  - `1S` - Outpatient Surgicenter
  - `1T` - Physician, Clinic or Group Practice
  - `1U` - Long Term Care Facility
  - `1V` - Extended Care Facility
  - `1W` - Psychiatric Health Facility
  - `1X` - Laboratory
  - `1Y` - Retail Pharmacy
  - `1Z` - Home Health Care
  - `2A` - Federal, State, County or City Facility
  - `2B` - Third-Party Administrator
  - `2D` - Miscellaneous Health Care Facility
  - `2E` - Non-Health Care Miscellaneous Facility
  - `2I` - Church Operated Facility
  - `2K` - Partnership
  - `2P` - Public Health Service Facility
  - `2Q` - Veterans Administration Facility
  - `2S` - Public Health Service Indian Service Facility
  - `2Z` - Hospital Unit of an Institution (prison hospital, college infirmary, etc.)
  - `03` - Dependent
  - `3A` - Hospital Unit Within an Institution for the Mentally Retarded
  - `3C` - Tuberculosis and Other Respiratory Diseases Facility
  - `3D` - Obstetrics and Gynecology Facility
  - `3E` - Eye, Ear, Nose and Throat Facility
  - `3F` - Rehabilitation Facility
  - `3G` - Orthopedic Facility
  - `3H` - Chronic Disease Facility
  - `3I` - Other Specialty Facility
  - `3J` - Children's General Facility
  - `3K` - Children's Hospital Unit of an Institution
  - `3L` - Children's Psychiatric Facility
  - `3M` - Children's Tuberculosis and Other Respiratory Diseases Facility
  - `3N` - Children's Eye, Ear, Nose and Throat Facility
  - `3O` - Children's Rehabilitation Facility
  - `3P` - Children's Orthopedic Facility
  - `3Q` - Children's Chronic Disease Facility
  - `3R` - Children's Other Specialty Facility
  - `3S` - Institution for Mental Retardation
  - `3T` - Alcoholism and Other Chemical Dependency Facility
  - `3U` - General Inpatient Care for AIDS/ARC Facility
  - `3V` - AIDS/ARC Unit
  - `3W` - Specialized Outpatient Program for AIDS/ARC
  - `3X` - Alcohol/Drug Abuse or Dependency Inpatient Unit
  - `3Y` - Alcohol/Drug Abuse or Dependency Outpatient Services
  - `3Z` - Arthritis Treatment Center
  - `4A` - Birthing Room/LDRP Room
  - `4B` - Burn Care Unit
  - `4C` - Cardiac Catherization Laboratory
  - `4D` - Open-Heart Surgery Facility
  - `4E` - Cardiac Intensive Care Unit
  - `4F` - Angioplasty Facility
  - `4G` - Chronic Obstructive Pulmonary Disease Service Facility
  - `4H` - Emergency Department
  - `4I` - Trauma Center (Certified)
  - `4J` - Extracorporeal Shock-Wave Lithotripter (ESWL) Unit
  - `4L` - Genetic Counseling/Screening Services
  - `4M` - Adult Day Care Program Facility
  - `4N` - Alzheimer's Diagnostic/Assessment Services
  - `4O` - Comprehensive Geriatric Assessment Facility
  - `4P` - Emergency Response (Geriatric) Unit
  - `4Q` - Geriatric Acute Care Unit
  - `4R` - Geriatric Clinics
  - `4S` - Respite Care Facility
  - `4U` - Patient Education Unit
  - `4V` - Community Health Promotion Facility
  - `4W` - Worksite Health Promotion Facility
  - `4X` - Hemodialysis Facility
  - `4Y` - Home Health Services
  - `4Z` - Hospice
  - `5A` - Medical Surgical or Other Intensive Care Unit
  - `5B` - Histopathology Laboratory
  - `5C` - Blood Bank
  - `5D` - Neonatal Intensive Care Unit
  - `5E` - Obstetrics Unit
  - `5F` - Occupational Health Services
  - `5G` - Organized Outpatient Services
  - `5H` - Pediatric Acute Inpatient Unit
  - `5I` - Psychiatric Child/Adolescent Services
  - `5J` - Psychiatric Consultation-Liaison Services
  - `5K` - Psychiatric Education Services
  - `5L` - Psychiatric Emergency Services
  - `5M` - Psychiatric Geriatric Services
  - `5N` - Psychiatric Inpatient Unit
  - `5O` - Psychiatric Outpatient Services
  - `5P` - Psychiatric Partial Hospitalization Program
  - `5Q` - Megavoltage Radiation Therapy Unit
  - `5R` - Radioactive Implants Unit
  - `5S` - Therapeutic Radioisotope Facility
  - `5T` - X-Ray Radiation Therapy Unit
  - `5U` - CT Scanner Unit
  - `5V` - Diagnostic Radioisotope Facility
  - `5W` - Magnetic Resonance Imaging (MRI) Facility
  - `5X` - Ultrasound Unit
  - `5Y` - Rehabilitation Inpatient Unit
  - `5Z` - Rehabilitation Outpatient Services
  - `6A` - Reproductive Health Services
  - `6B` - Skilled Nursing or Other Long-Term Care Unit
  - `6C` - Single Photon Emission Computerized Tomography (SPECT) Unit
  - `6D` - Organized Social Work Service Facility
  - `6E` - Outpatient Social Work Services
  - `6F` - Emergency Department Social Work Services
  - `6G` - Sports Medicine Clinic/Services
  - `6H` - Hospital Auxiliary Unit
  - `6I` - Patient Representative Services
  - `6J` - Volunteer Services Department
  - `6K` - Outpatient Surgery Services
  - `6L` - Organ/Tissue Transplant Unit
  - `6M` - Orthopedic Surgery Facility
  - `6N` - Occupational Therapy Services
  - `6O` - Physical Therapy Services
  - `6P` - Recreational Therapy Services
  - `6Q` - Respiratory Therapy Services
  - `6R` - Speech Therapy Services
  - `6S` - Women's Health Center/Services
  - `6U` - Cardiac Rehabilitation Program Facility
  - `6V` - Non-Invasive Cardiac Assessment Services
  - `6W` - Emergency Medical Technician
  - `6X` - Disciplinary Contact
  - `6Y` - Case Manager
  - `7C` - Place of Occurrence
  - `13` - Contracted Service Provider
  - `17` - Consultant's Office
  - `28` - Subcontractor
  - `30` - Service Supplier
  - `36` - Employer
  - `40` - Receiver
  - `43` - Claimant Authorized Representative
  - `44` - Data Processing Service Bureau
  - `61` - Performed At
  - `71` - Attending Physician
  - `72` - Operating Physician
  - `73` - Other Physician
  - `74` - Corrected Insured
  - `77` - Service Location
  - `80` - Hospital
  - `82` - Rendering Provider
  - `84` - Subscriber's Employer
  - `85` - Billing Provider
  - `87` - Pay-to Provider
  - `95` - Research Institute
  - `CK` - Pharmacist
  - `CZ` - Admitting Surgeon
  - `D2` - Commercial Insurer
  - `DD` - Assistant Surgeon
  - `DJ` - Consulting Physician
  - `DK` - Ordering Physician
  - `DN` - Referring Provider
  - `DO` - Dependent Name
  - `DQ` - Supervising Physician
  - `E1` - Person or Other Entity Legally Responsible for a Child
  - `E2` - Person or Other Entity With Whom a Child Resides
  - `E7` - Previous Employer
  - `E9` - Participating Laboratory
  - `FA` - Facility
  - `FD` - Physical Address
  - `FE` - Mail Address
  - `G0` - Dependent Insured
  - `G3` - Clinic
  - `GB` - Other Insured
  - `GD` - Guardian
  - `GI` - Paramedic
  - `GJ` - Paramedical Company
  - `GK` - Previous Insured
  - `GM` - Spouse Insured
  - `GY` - Treatment Facility
  - `HF` - Healthcare Professional Shortage Area (HPSA) Facility
  - `HH` - Home Health Agency
  - `I3` - Independent Physicians Association (IPA)
  - `IJ` - Injection Point
  - `IL` - Insured or Subscriber
  - `IN` - Insurer
  - `LI` - Independent Lab
  - `LR` - Legal Representative
  - `MR` - Medical Insurance Carrier
  - `MSC` - Mammography Screening Center
  - `OB` - Ordered By
  - `OD` - Doctor of Optometry
  - `OX` - Oxygen Therapy Facility
  - `P0` - Patient Facility
  - `P2` - Primary Insured or Subscriber
  - `P3` - Primary Care Provider
  - `P4` - Prior Insurance Carrier
  - `P6` - Third Party Reviewing Preferred Provider Organization (PPO)
  - `P7` - Third Party Repricing Preferred Provider Organization (PPO)
  - `PRP` - Primary Payer
  - `PT` - Party to Receive Test Report
  - `PV` - Party performing certification
  - `PW` - Pickup Address
  - `QA` - Pharmacy
  - `QB` - Purchase Service Provider
  - `QC` - Patient
  - `QD` - Responsible Party
  - `QE` - Policyholder
  - `QH` - Physician
  - `QK` - Managed Care
  - `QL` - Chiropractor
  - `QN` - Dentist
  - `QO` - Doctor of Osteopathy
  - `QS` - Podiatrist
  - `QV` - Group Practice
  - `QY` - Medical Doctor
  - `RC` - Receiving Location
  - `RW` - Rural Health Clinic
  - `S4` - Skilled Nursing Facility
  - `SEP` - Secondary Payer
  - `SJ` - Service Provider
  - `SU` - Supplier/Manufacturer
  - `T4` - Transfer Point | Used to identify the geographic location where a patient is transferred or diverted.
  - `TL` - Testing Laboratory
  - `TQ` - Third Party Reviewing Organization (TPO)
  - `TT` - Transfer To
  - `TTP` - Tertiary Payer
  - `TU` - Third Party Repricing Organization (TPO)
  - `UH` - Nursing Home
  - `X3` - Utilization Management Organization
  - `X4` - Spouse
  - `X5` - Durable Medical Equipment Supplier
  - `ZZ` - Mutually Defined
</Accordion>

### Product or service ID qualifier [#product-or-service-id-qualifier]

**Transaction type:** 276/277 real-time claim status

Used in the [`serviceLineInformation.productOrServiceIDQualifier`](/healthcare/api-reference/post-healthcare-claim-status#body.serviceLineInformation.productOrServiceIDQualifier) request property and returned in the [`claims[].serviceDetails[].service.serviceIdQualifierCode`](/healthcare/api-reference/post-healthcare-claim-status#response.claims.serviceDetails.service.serviceIdQualifierCode) response property.

It identifies the source of the associated procedure code.

<Accordion title="Product or Service ID Qualifier" id="product-or-service-id-qualifier">
  | Code | Description                                                                            | Usage Notes                                                                                                                                                                                                                                                                                                                                                                                                              |
  | ---- | -------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
  | `AD` | American Dental Association Codes                                                      | -                                                                                                                                                                                                                                                                                                                                                                                                                        |
  | `ER` | Jurisdiction Specific Procedure and Supply Codes                                       | This code is not allowed for use under HIPAA. The qualifier can only be used when 1) If a new rule names the Jurisdiction Specific Procedure and Supply Codes as an allowable code set under HIPAA, OR 2) The Secretary grants an exception to use the code set as a pilot project as allowed under the law, OR 3) For claims that aren't covered under HIPAA.                                                           |
  | `HC` | Health Care Financing Administration Common Procedural Coding System (HCPCS) Codes     | Because the CPT codes of the American Medical Association are also level 1 HCPCS codes, the CPT codes are reported under the code HC.                                                                                                                                                                                                                                                                                    |
  | `HP` | Health Insurance Prospective Payment System (HIPPS) Skilled Nursing Facility Rate Code | -                                                                                                                                                                                                                                                                                                                                                                                                                        |
  | `IV` | Home Infusion EDI Coalition (HIEC) Product/Service Code                                | This code is not allowed for use under HIPAA. The qualifier can only be used when 1) If a new rule names the Home Infusion EDI Coalition Codes as an allowable code set under HIPAA, OR 2) The Secretary grants an exception to use the code set as a pilot project as allowed under the law, OR 3) For claims that aren't covered under HIPAA.                                                                          |
  | `N4` | National Drug Code in 5-4-2 Format                                                     | -                                                                                                                                                                                                                                                                                                                                                                                                                        |
  | `NU` | National Uniform Billing Committee (NUBC) UB92 Codes                                   | This code is the NUBC Revenue Code.                                                                                                                                                                                                                                                                                                                                                                                      |
  | `WK` | Advanced Billing Concepts (ABC) Codes                                                  | This code set has been approved by the Secretary of HHS as a pilot project allowed under HIPAA law. The qualifier may only be used in transactions covered under HIPAA; by parties registered in the pilot project and their trading partners, OR when a new rule names the Complementary, Alternative, or Holistic Procedure Codes as an allowable code set under HIPAA, OR for claims that aren't covered under HIPAA. |
</Accordion>

# Overview
Source: https://www.stedi.com/docs/healthcare/claims-processing-workflows-overview


You can use Stedi to automate your claims processing workflow from claim submission through payment. Once you integrate with Stedi, you can monitor claim submissions and responses in the Stedi portal.

## Claims processing workflow [#claims-processing-workflow]

Here's an overview of the claims processing steps you can automate with Stedi.

### Transaction enrollment [#transaction-enrollment]

[Transaction enrollment](/healthcare/transaction-enrollment) is the process of registering a provider to exchange specific healthcare transactions with a payer. It's **always** required for 835 Electronic Remittance Advice (ERAs) and sometimes required for other transaction types, depending on the payer.

You'll submit transaction enrollment requests through either the [Enrollments API](/healthcare/api-reference/post-enrollment-create-enrollment) or the Stedi portal. Once submitted, Stedi handles the entire process for you, including sending the required information to the payer and monitoring each enrollment's status.

### Submit claims and attachments [#submit-claims-and-attachments]

You can submit [837P professional](/healthcare/submit-professional-claims), [837D dental](/healthcare/submit-dental-claims), and [837I institutional](/healthcare/submit-institutional-claims) claims through the following methods:

* [Clearinghouse APIs](/healthcare/api-reference/post-healthcare-claims) in either JSON or X12 EDI format.
* [SFTP](/healthcare/submit-claims-sftp-connection) in X12 EDI format.
* [Stedi portal](https://portal.stedi.com/app/healthcare/transactions) in either X12 EDI format (all claim types) or through our CMS-1500 form (professional claims).

Before sending claims to the payer, Stedi checks them against our growing library of [claim edits](/healthcare/claim-edits-and-repairs) to identify errors that could lead to rejections or denials. Our APIs return edit rejections in real time, so you can fix and resubmit claims immediately.

You can also submit [unsolicited 275 claim attachments](/healthcare/submit-claim-attachments) as needed to support claims, such as medical records and treatment plans. You can submit attachments through Stedi APIs, SFTP, or the Stedi portal.

### Retrieve 277CA claim acknowledgments [#retrieve-277ca-claim-acknowledgments]

You'll likely receive multiple [277CA claim acknowledgments](/healthcare/claim-responses-overview#277ca-claim-acknowledgment) for each claim as it moves through Stedi and the payer's systems. A 277CA indicates whether a claim was accepted or rejected at a particular processing stage.

* **APIs:** You can [poll](/healthcare/receive-claim-responses#poll-for-transactions) or set up [webhooks](/healthcare/receive-claim-responses#listen-for-webhooks) to discover new 277CAs. Then, you can [retrieve 277CAs](/healthcare/receive-claim-responses#retrieve-responses-from-stedi) through Stedi APIs in either JSON or X12 EDI format.
* **SFTP:** You can [retrieve 277CA files](/healthcare/submit-claims-sftp-retrieve-responses#retrieve-claim-responses) from the `from-stedi` directory.
* **Stedi portal:** You can review the 277CAs for submitted claims from the [claims view](/healthcare/claims-view).

### Resubmit rejected claims [#resubmit-rejected-claims]

When you receive a 277CA indicating a claim was rejected, you'll need to review the rejection reason, fix the errors in the claim data, and [resubmit the claim](/healthcare/resubmit-cancel-claims). Common rejection reasons include invalid or missing data, incorrect patient or provider details, incorrect billing codes or modifiers, and missing attachments.

You can resubmit claims through Stedi APIs, SFTP, or the Stedi portal.

### Run real-time claim status checks [#run-real-time-claim-status-checks]

Once a claim has been accepted into the payer's adjudication system, you can run [real-time claim status checks](/healthcare/check-claim-status) to get the current status of the claim.

You can submit real-time claim status requests through Stedi APIs in either JSON or X12 EDI format. You can also submit them manually through the Stedi portal as needed.

### Retrieve 835 Electronic Remittance Advice (ERAs) [#retrieve-835-electronic-remittance-advice-eras]

When the payer has finished adjudicating a claim, they'll send back an [835 Electronic Remittance Advice (ERA)](/healthcare/claim-responses-overview#835-electronic-remittance-advice-era) with details about payments for specific services and explanations for any adjustments or denials.

* **APIs:** You can either [poll](/healthcare/receive-claim-responses#poll-for-transactions) or set up [webhooks](/healthcare/receive-claim-responses#listen-for-webhooks) to discover new 835 ERAs. Then, you can [retrieve 835 ERAs](/healthcare/receive-claim-responses#retrieve-responses-from-stedi) through Stedi APIs in either JSON or X12 EDI format.
* **SFTP:** You can [retrieve 835 ERA files](/healthcare/submit-claims-sftp-retrieve-responses#retrieve-claim-responses) from the `from-stedi` directory.

## Example API implementation [#example-api-implementation]

To build a professional claims workflow using Stedi JSON APIs, you would typically follow these steps:

1. Submit required transaction enrollment requests through the [Providers](/healthcare/api-reference/post-enrollment-create-provider) and [Enrollments](/healthcare/api-reference/post-enrollment-create-enrollment) APIs.
2. Configure [webhooks](/healthcare/configure-webhooks) to listen for events indicating Stedi has processed new 277CA claim acknowledgments and 835 Electronic Remittance Advice (ERAs).
3. Call the [Professional Claims JSON endpoint](/healthcare/api-reference/post-healthcare-claims) to submit claims in JSON format.
4. Call the [277CA Report endpoint](/healthcare/api-reference/get-healthcare-reports-277) to retrieve processed 277CAs from Stedi in JSON format.
5. Evaluate 277CAs. If the claim was rejected, fix the errors and resubmit through the [Professional Claims JSON endpoint](/healthcare/api-reference/post-healthcare-claims).
6. Call the [835 Report endpoint](/healthcare/api-reference/get-healthcare-reports-835) to retrieve 835 ERAs from Stedi in JSON format.

You may also call the [Real-Time Claim Status JSON endpoint](/healthcare/api-reference/post-healthcare-claim-status) as needed to check on claims that have entered the payer's adjudication system.

## Claims view [#claims-view]

The [claims view](/healthcare/claims-view) in the Stedi portal provides insight into your claims processing pipeline. In the claims view, you can:

* Review every claim you submit through Stedi and the details of related claim transactions, such as 277CA claim acknowledgments.
* Review a clear timeline of activity for each claim, including resubmissions and responses you receive from Stedi and the payer.
* Understand a claim's current status within the processing pipeline, such as whether the claim has been accepted or rejected.
* Filter submitted claims by key details, such as processed date, status, patient name, and service date(s).

# Claims view
Source: https://www.stedi.com/docs/healthcare/claims-view


The [claims view](https://portal.stedi.com/app/healthcare/claims) in the Stedi portal provides insight into your claims processing pipeline. In the claims view, you can:

* Submit claims through the interactive CMS-1500 form or by uploading raw X12 EDI files.
* Review every claim you submit through Stedi and the details of related claim transactions, such as 277CA claim acknowledgments.
* Review a clear timeline of activity for each claim, including resubmissions and responses you receive from Stedi and the payer.
* Understand a claim's current [status](#claim-processing-status) within the processing pipeline, such as whether the claim has been accepted or rejected.
* Filter submitted claims by key details, such as processed date, status, patient name, and service date(s).
* Review 835 Electronic Remittance Advice (ERAs) and download ERA PDFs.

## Submit claims [#submit-claims]

You can submit claims from the claims view through the interactive CMS-1500 form or by uploading raw X12 EDI files. Manual claim submission is useful for testing, QA, debugging your claims processing pipeline, and handling scenarios that fall outside your normal workflow.

To submit a claim, click **Submit claim** in the claims view and select one of the following options:

* **CMS-1500 form**: Submit professional claims through an interactive form. Visit [Submit professional claims](/healthcare/submit-professional-claims#ui-submission) for detailed instructions.
* **Upload raw X12 file**: Upload X12 EDI files for professional, institutional, or dental claims. You can submit multiple claims in a single file. Visit the claim submission pages for detailed instructions:
  * [Professional claims](/healthcare/submit-professional-claims#ui-submission)
  * [Institutional claims](/healthcare/submit-institutional-claims#ui-submission)
  * [Dental claims](/healthcare/submit-dental-claims#ui-submission)

## Review claims [#review-claims]

You can filter, export, and review detailed information about all claims you've submitted through Stedi in the [claims view](https://portal.stedi.com/app/healthcare/claims).

<Tip>
  Toggle **Test mode** to **ON** in the side navigation to review test claims you've submitted.
</Tip>

### Filter claims [#filter-claims]

Click **Claims** in the side navigation to view a list of the claims you've submitted through Stedi. Available filters include:

| Filter                     | Description                                                                                                                                                                                                                                                                                                                                |
| -------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| **Processed date**         | When Stedi received each claim.                                                                                                                                                                                                                                                                                                            |
| **Status**                 | Where a claim is in the processing pipeline. Refer to [claim processing status](#claim-processing-status) for details on how we determine a claim's status and how to know if action is required to move the claim forward.                                                                                                                |
| **Type**                   | Claim type - professional, dental, or institutional.                                                                                                                                                                                                                                                                                       |
| **Patient control number** | The patient control number for the claim, sometimes referred to as the claim ID. You submitted this value in:<ul><li>**CMS-1500 claim form:** **Box 26** (Patient's Account No.)</li><li>**JSON:** `claimInformation.patientControlNumber`</li><li>**X12 EDI:** `Loop 2300` (Claim Information) `CLM01` (Patient Control Number)</li></ul> |
| **Patient name**           | The patient's first or last name. Supports partial matching.                                                                                                                                                                                                                                                                               |
| **Member ID**              | The subscriber's member ID for their health plan.                                                                                                                                                                                                                                                                                          |
| **Payer**                  | Payer name, ID, or alias. Refer to the [Payer Network](https://www.stedi.com/healthcare/network) for a complete list for each payer.                                                                                                                                                                                                       |
| **Billing provider NPI**   | The billing provider's NPI.                                                                                                                                                                                                                                                                                                                |
| **Billing Provider TIN**   | The billing provider's TIN.                                                                                                                                                                                                                                                                                                                |
| **Total charges**          | Claims with a minimum or maximum charge amount.                                                                                                                                                                                                                                                                                            |
| **Service date**           | Claims with specific service dates.                                                                                                                                                                                                                                                                                                        |

When you apply one or more filters, Stedi displays the total number of claims that match your filter criteria. This count helps you quantify specific scenarios, such as the number of claims in a rejected status from the previous week or the number of claims submitted for a certain billing provider. If a claim is resubmitted and linked to the initial claim record, the original submission and any resubmissions are counted together as one claim.

### Export claims list [#export-claims-list]

You can export filtered claims lists to an Excel file (`.xlsx`) for further analysis or reporting. For example, you can export filtered lists that help you:

* Track claim status over specific time periods.
* Identify rejected claims by payer.
* Reconcile billing records with your practice management system.
* Generate custom reports for specific billing providers or date ranges.

To export a filtered claims list:

1. Apply [one or more filters](#filter-claims) to narrow down the claims you want to export. The export button appears once you apply at least one filter.
2. Click **Export**. Stedi disables the export button when the filtered list contains more than 250,000 records. In this case, add more filters to reduce the list size.
3. Stedi creates the report and sends you an in-app notification when it's ready.
4. The download happens automatically when the report is complete. You can also manually download the report at any time by clicking the bell icon in the side navigation, finding the **Download is ready** notification, and clicking **Download**.

Your export file includes the filtered claims list and a metadata tab that includes the export date, the filters you applied, and the number of records.

<Note>
  Export files are available for 30 days from the notification. After 30 days, the download link expires.
</Note>

### Claim timeline [#claim-timeline]

From the claims view, click any claim to review a timeline of its processing activity, including when the claim was submitted and when you received 277CA claim acknowledgments from Stedi and the payer.

The timeline view also includes resubmissions for the claim and any associated 277CAs resulting from those resubmissions.

<img alt="claims view timeline" src="__img0" />

<Note>
  835 ERAs and real-time claim status requests aren't currently included in the timeline. Click **Find matching ERAs** in the side panel under the **PCN** to view a pre-filtered list of all ERAs that match the claim's Patient Control Number (PCN).
</Note>

### Transaction details [#transaction-details]

From a claim's timeline view, hover over a transaction and click **See more detail** to review a user-friendly summary of key information, such as patient information, service dates, and service line details. You'll also be able to review the raw X12 EDI for the transaction.

### Download CMS-1500 claim PDF [#download-cms-1500-claim-pdf]

You can download a PDF version of professional claims in the CMS-1500 format from both the timeline view and the claim's detail page.

1. From the [claims view](https://portal.stedi.com/app/healthcare/claims), click a professional claim to open its timeline.

2. Do one of the following:
   * From the timeline view, hover over the claim and click **Download CMS-1500 claim PDF**.
   * Open the claim's detail page and click **Download CMS-1500 claim PDF**.

3. In the download menu, choose whether to **Include CMS-1500 form background**. This option is checked by default.

   The National Uniform Claim Committee (NUCC) and CMS provide exact specifications for blank CMS-1500 forms, including paper size and ink color. Many provider offices are accustomed to using these pre-printed forms, and their Practice Management System (PMS) applications are designed to print claim data onto them. Generating PDFs with no background allows you to print the claim data directly onto official pre-printed forms.

4. Click **Confirm download**. The PDF downloads to your computer.

## Review 835 ERAs [#review-835-eras]

You can review 835 ERAs by filtering the full list on the [835 ERAs view](https://portal.stedi.com/app/healthcare/claims/eras) or finding ERAs for a specific claim from its timeline.

<Tip>
  Toggle **Test mode** to **ON** in the side navigation to review test ERAs.
</Tip>

### Filter ERAs [#filter-eras]

Click **835 ERAs** in the side navigation to view a list of all 835 ERAs in your account. Available filters include:

| Filter                           | Description                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |
| -------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Processed date**               | When Stedi received the ERA.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         |
| **Trace number**                 | The unique identifier the payer assigns to the ERA transaction. You can use this value to link the ERA with the associated payment, if applicable. For example: When the payment is remitted by check, the trace number is the check number.<ul><li>**JSON:** [`transactions[].paymentAndRemitReassociationDetails.checkOrEFTTraceNumber`](/healthcare/api-reference/get-healthcare-reports-835#response.transactions.paymentAndRemitReassociationDetails.checkOrEFTTraceNumber)</li><li>**X12 EDI:** `TRN02` (Check or EFT Trace Number).</li></ul> |
| **Total paid**                   | The total amount paid across all claims included in the ERA.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         |
| **Payment date**                 | When the payer issued the payment.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   |
| **Payment method**               | The method used for payment (such as check or ACH).                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  |
| **Payer**                        | Payer name, ID, or alias. Refer to the [Payer Network](https://www.stedi.com/healthcare/network) for a complete list for each payer.                                                                                                                                                                                                                                                                                                                                                                                                                 |
| **Payee**                        | The payee's (billing provider's) name. Supports partial matching.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
| **Payee NPI**                    | The payee's (billing provider's) National Provider Identifier.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       |
| **Payee Tax ID**                 | The payee's (billing provider's) Tax Identification Number.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |
| **PCN (Patient Control Number)** | A claim's PCN, sometimes referred to as the claim ID. Since an ERA can contain multiple claims, this returns ERAs where any claim matches the specified PCN. This is the same value you submitted on the original claim in:<ul><li>**CMS-1500 claim form:** **Box 26** (Patient's Account No.)</li><li>**JSON:** `claimInformation.patientControlNumber`</li><li>**X12 EDI:** `Loop 2300` (Claim Information) `CLM01` (Patient Control Number)</li></ul>                                                                                             |

When you apply one or more filters, Stedi displays the total number of ERAs that match your filter criteria. This count helps you quantify specific scenarios, such as the number of ERAs received from a payer in a given month or the total number of ERAs for a specific billing provider.

### Export ERA list [#export-era-list]

You can export filtered ERA lists to an Excel file (`.xlsx`) for further analysis or reporting. For example, you can export filtered lists that help you:

* Generate monthly payment reports based on payment received date.
* Track reimbursements by payer or billing provider.
* Reconcile payments with your accounting system.
* Analyze payment trends and adjustment patterns across specific time periods.

To export a filtered ERA list:

1. Apply [one or more filters](#filter-eras) to narrow down the ERAs you want to export. The export button appears once you apply at least one filter.
2. Click **Export**. Stedi disables the export button when the filtered list contains more than 250,000 records. In this case, add more filters to reduce the list size.
3. Stedi creates the report and sends you an in-app notification when it's ready.
4. The download happens automatically when the report is complete. You can also manually download the report at any time by clicking the bell icon in the side navigation, finding the **Download is ready** notification, and clicking **Download**.

Your export file includes the filtered ERA list and a metadata tab that includes the export date, the filters you applied, and the number of records.

<Note>
  Export files are available for 30 days from the notification. After 30 days, the download link expires.
</Note>

### Find ERAs from a claim's timeline [#find-eras-from-a-claims-timeline]

You can also find ERAs for a specific claim from the claim's timeline:

1. Go to the [claims view](https://portal.stedi.com/app/healthcare/claims).
2. Click the associated claim to open its timeline.
3. Click **Find matching ERAs** in the side panel under the **PCN** to search for ERAs that match the claim's Patient Control Number (PCN). If no ERAs match, the ERA list will be empty.

### ERA details [#era-details]

Click any ERA in the list to review its details. The **Overview** page contains key information about the ERA, including:

* Payer and payee information
* Total amount paid
* Payment date and method
* Details for all claims included in the ERA
* Adjustments applied to each claim

You can also click **EDI** at the top of the ERA details page to review the raw X12 EDI for the transaction.

### Download ERA PDF [#download-era-pdf]

You can download a PDF version of the ERA from its details page.

1. Go to the [claims view](https://portal.stedi.com/app/healthcare/claims) and click **835 ERAs**.
2. Click the ERA to open its details page.
3. Click **Download PDF** at the top right.
4. In the download menu, select your preferences:
   * **Include Stedi logo in 835 ERA PDF**: Adds the Stedi logo to the PDF.
   * **Download each claim as a separate PDF**: Downloads one PDF for each claim included in the ERA. When the ERA contains multiple claims, the PDFs will be provided as a zip file. For example, if the ERA contains 5 claims, you'll download a zip file containing 5 separate PDFs.
5. Click **Confirm PDF download**.

You can also download a PDF for each claim individually. Click the three dots to the right of a claim in the **Claims** section and select **Download 835 ERA PDF for this claim**.

## Review your payers [#review-your-payers]

The [My Payers view](https://portal.stedi.com/app/healthcare/claims/my-payers) shows all payers with which you have exchanged 837 claims or 835 Electronic Remittance Advice (ERAs) through Stedi. You can use this view to:

* Review all the payers you've exchanged claim data with through Stedi.
* Identify payers that have issues with transaction enrollment. If you've sent claims to a payer and haven't received any ERAs within your expected timeframe, you may need to complete [transaction enrollment](/healthcare/transaction-enrollment), or there may be issues with an existing enrollment request.
* Verify that your claims processing cycle is working from end-to-end for all your payers.

<img alt="My Payers view" src="__img1" />

Hover over any payer row to access quick links:

* **View in network**: View the payer's details in the [Payer Network](https://www.stedi.com/healthcare/network).
* **Find claims**: View all claims submitted to this payer in the [claims view](https://portal.stedi.com/app/healthcare/claims).
* **Find 835 ERAs**: View all 835 ERAs you received from this payer through Stedi.
* **Find enrollments**: View all enrollments with this payer.

### Filter your payer list [#filter-your-payer-list]

Click the filter options at the top of the My Payers view to filter the list:

| Filter       | Description                                                                                                                                   |
| ------------ | --------------------------------------------------------------------------------------------------------------------------------------------- |
| **Payer**    | Filter by payer name, ID or alias. Refer to the [Payer Network](https://www.stedi.com/healthcare/network) for a complete list for each payer. |
| **837s**     | Filter by whether or not you've used Stedi to submit a professional, dental, or institutional claim.                                          |
| **835 ERAs** | Filter by whether or not you've received an 835 Electronic Remittance Advice (ERA) from the payer through Stedi.                              |

## Resubmit or cancel claims [#resubmit-or-cancel-claims]

You can resubmit or cancel claims from within the claims view.

To resubmit a claim:

1. Click the claim you want to resubmit to open its timeline.
2. Hover over the claim submission and do one of the following:
   * Click **Edit and resubmit**. This option appears when the last claim submission was rejected by either Stedi or the payer.
   * Click **See more detail** to review the claim's details page, then click **Edit and resubmit**.
3. Select one of the following options:
   * **CMS-1500 resubmission**: Resubmit professional claims through the interactive form. Visit [Resubmit or cancel claims](/healthcare/resubmit-cancel-claims#cms-1500-form-professional) for detailed instructions.
   * **X12 transaction resubmission**: Resubmit professional, institutional, or dental claims through the X12 EDI editor. Visit [Resubmit or cancel claims](/healthcare/resubmit-cancel-claims#x12-edi-editor) for detailed instructions.

## Claim processing status [#claim-processing-status]

The claims view displays each claim's current processing status. These statuses are designed to help you quickly understand whether action is required to move claims forward.

Stedi's claim processing statuses are different from the status codes you receive in 277CAs and in real-time claim status checks:

* **277CAs:** Each 277CA contains one or more status category codes that indicate receipt, acceptance or rejection at a *specific stage* of processing. Stedi evaluates all available 277CAs to determine the claim's current *overall* processing status.
* **Real-time claim status checks:** Claim status checks can only provide status information about claims that have been accepted into the payer's adjudication system. Stedi's statuses provide insight both before and after the claim reaches the payer.

<Warning>
  Stedi currently doesn't use information from real-time claim status checks or 835 ERAs to determine claim status. That means Stedi's statuses won't indicate when claims have been adjudicated or paid. You'll need to monitor for 835 ERAs independently.
</Warning>

### Stedi claim status codes [#stedi-claim-status-codes]

A claim in the Stedi portal can have one of the following processing statuses:

| status    | description                                                                                                                       | What to do                                                                                                                                                                 |
| --------- | --------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Submitted | You submitted the claim to Stedi but haven't yet received a 277CA response from Stedi or the payer.                               | No action needed. Monitor for the next 277CA claim acknowledgment with acceptance or rejection status.                                                                     |
| Received  | The clearinghouse or payer has acknowledged receipt of the claim. This doesn't mean the claim has been accepted for adjudication. | No action needed. Monitor for the next 277CA claim acknowledgment with acceptance or rejection status.                                                                     |
| Rejected  | Either Stedi or the payer rejected the claim. This can happen even when the payer has acknowledged receipt.                       | Review the 277CA claim acknowledgment for error details, correct the claim, and resubmit.                                                                                  |
| Accepted  | The payer has accepted the claim into their adjudication system and it's currently being processed or adjudicated.                | No action needed. Monitor for the next 277CA claim acknowledgment or the 835 ERA with adjudication details.                                                                |
| Invalid   | The 277CA contains unsupported or invalid status codes.                                                                           | Review the 277CA claim acknowledgment for details. If the 277CA is from Stedi, contact Stedi support. If the 277CA is from the payer, contact the payer for clarification. |

#### Received vs. Accepted [#received-vs-accepted]

Many payers send two 277CAs:

* An initial 277CA with `STC01-01` (Health Care Claim Status Category Code) set to `A1` (Acknowledgment/Receipt). Stedi sets the claim status to **Received**.
* A second 277CA with `STC01-01` set to an explicit Accepted or Rejected code. Stedi then updates the claim status to **Accepted** or **Rejected** accordingly.

However, some payers don't send 277CAs with explicit Accepted codes. In these cases, the claims view keeps the claim in **Received** status.

If a claim has been in **Received** status longer than expected, you can run a [claim status check](/healthcare/check-claim-status) to determine its processing status with the payer. You can also contact Stedi support with questions about behavior for particular payers.

### How we determine status [#how-we-determine-status]

Once you submit a claim, you'll receive several [277CA claim acknowledgments](/healthcare/claim-responses-overview#277ca-claim-acknowledgment) from the clearinghouse and the payer that indicate receipt, acceptance, or rejection at various stages of processing.

Stedi uses the information in the 277CAs to determine the current status of a claim.

#### Step 1: Classify each 277CA [#step-1-classify-each-277ca]

We assign each 277CA transaction a submission status based on the `STC01-1` (Health Care Claim Status Category Code) status category codes present in the transaction. [Full code list](https://x12.org/codes/claim-status-category-codes)

When there are multiple codes present within a 277CA, we evaluate codes in the following priority order:

1. Rejected
2. Accepted
3. Received
4. Invalid (unrecognized STC codes)

For example, if a 277CA contains both rejected and received status category codes, we classify the 277CA as rejected.

#### Step 2: Decide which 277CA reflects the claim's status [#step-2-decide-which-277ca-reflects-the-claims-status]

Each claim can receive multiple 277CAs from Stedi and the payer as it moves through the processing pipeline. Once we evaluate the status of all existing 277CAs for a claim, we apply the following rules to determine which 277CA reflects the claim's overall status:

1. **Current submission:** We focus on the 277CAs tied to the most-recent 837 submission. If there are no 277CAs for the most recent submission, the claim's status is set to **Submitted**.
2. **Terminal outcomes:** We prioritize by Rejected --> Accepted --> Received. For example, if any 277CA from Stedi or the payer has a rejected status, we use the 277CA rejection to set the claim status, even if there are other 277CAs with accepted codes. This helps ensure you don't miss required actions to correct and resubmit a rejected claim.
3. **Payer > Clearinghouse:** We prioritize 277CAs from the payer over 277CAs from Stedi or intermediaries. For example, if a claim has a Stedi 277CA with received status codes and a payer 277CA with received status codes, we use the payer's 277CA to set the overall claim status to **Received**.
4. **Recency:** We use recency as a final tiebreaker to ensure deterministic results. If a claim has multiple 277CAs from the same source with the same status category codes, we first check the effective date listed in the EDI transaction and use the most recent one. If those are the same, we'll use the 277CA that most recently entered Stedi's system.

Note that at this time, we **only** use 277CAs to determine claim status. We don't incorporate information from real-time claim status responses or 835 Electronic Remittance Advice (ERAs). For example, if a claim has been paid, that won't be reflected in Stedi's claim processing statuses - you'll need to monitor for the 835 ERA independently.

#### Examples [#examples]

The following scenarios illustrate how we use the above rules to determine a claim's status when there are multiple 277CAs.

**Scenario 1**

You submit a claim to Stedi and receive the following 277CAs:

| Source | Status classification | Effective date |
| ------ | --------------------- | -------------- |
| Stedi  | Received              | 2026-01-01     |
| Payer  | Accepted              | 2026-01-02     |

The claim's status would be set to **Accepted** based on the accepted status category codes in the payer's 277CA.

**Scenario 2**

You submit a claim to Stedi and receive the following 277CAs:

| Source | Status classification | Effective date |
| ------ | --------------------- | -------------- |
| Payer  | Rejected              | 2026-01-01     |
| Payer  | Received              | 2026-01-02     |

This scenario can happen when a payer sends responses out-of-order due to network delays, outage recovery, retries, or batch processes. In this case, the claim's status would be set to **Rejected** because we prioritize terminal statuses over the timing of the responses.

# CMS-1500 Claim Form PDF
Source: https://www.stedi.com/docs/healthcare/cms-1500-claim-form-pdf


Stedi automatically generates a [CMS-1500 Claim Form](https://www.nucc.org/index.php/1500-claim-form-mainmenu-35) PDF for each professional claim you submit.

We strongly recommend reviewing the following behavior and recommendations if you plan to send these PDFs to payers or retain them for your records.

## Retrieve PDFs [#retrieve-pdfs]

You can retrieve PDFs manually through claims view in the Stedi portal or programmatically through the API.

### Claims view [#claims-view]

You can download a PDF version of professional claims in the CMS-1500 format from both the timeline view and the claim's detail page.

1. From the [claims view](https://portal.stedi.com/app/healthcare/claims), click a professional claim to open its timeline.

2. Do one of the following:
   * From the timeline view, hover over the claim and click **Download CMS-1500 claim PDF**.
   * Open the claim's detail page and click **Download CMS-1500 claim PDF**.

3. In the download menu, choose whether to **Include CMS-1500 form background**. This option is checked by default.

   The National Uniform Claim Committee (NUCC) and CMS provide exact specifications for blank CMS-1500 forms, including paper size and ink color. Many provider offices are accustomed to using these pre-printed forms, and their Practice Management System (PMS) applications are designed to print claim data onto them. Generating PDFs with no background allows you to print the claim data directly onto official pre-printed forms.

4. Click **Confirm download**. The PDF downloads to your computer.

### API [#api]

You can retrieve PDFs programmatically through either of the following endpoints:

* [CMS-1500 PDF: Business Identifier](/healthcare/api-reference/get-pdf-1500-business-identifier): Retrieve PDFs through a claim's business identifier. You can find the business identifier value in the `claimReference.correlationId` property Stedi returns in the synchronous claim submission response.

* [CMS-1500 PDF: Transaction ID](/healthcare/api-reference/get-pdf-1500): Retrieve PDFs through the `transactionId` Stedi assigns to the processed claim. This ID is included in the transaction processed event for the claim, which you can receive automatically through [webhooks](/healthcare/configure-webhooks).

Both endpoints return a base64 encoded string of the PDF. To render the PDF, you must decode the base64 string and save it to a file with a `.pdf` extension.

## Generation notes [#generation-notes]

Note the following behavior and recommendations to generate optimal CMS-1500 PDFs.

### PDF background [#pdf-background]

You can generate CMS-1500 PDFs with a white background by adding the query parameter `?background=false` when calling the PDF generation endpoints.

The National Uniform Claim Committee (NUCC) and CMS provide exact specifications for blank CMS-1500 forms, including paper size and ink color. Many provider offices are accustomed to using these pre-printed forms, and their Practice Management System (PMS) applications are designed to print claim data onto them. Generating PDFs with a white background allows you to print the claim data directly onto official pre-printed forms.

### The PDF may truncate claim data. [#the-pdf-may-truncate-claim-data]

The maximum length for many fields in the CMS-1500 Claim Form is less than the maximum length for the corresponding properties in the claim request.

**Recommendation:** Ensure that your claim data is within the maximum length for claim form fields. We especially recommend using [USPS abbreviations](https://pe.usps.com/text/pub28/28apc_002.htm) to avoid truncated addresses in the generated PDF.

### The PDF may omit the second line of some addresses. [#the-pdf-may-omit-the-second-line-of-some-addresses]

Some CMS-1500 Claim Form items contain address fields that can only be mapped to a single address line. If you include the `address2` JSON property (X12 EDI `N302`) in your claim submission, that information may not appear in the PDF.

**Recommendation:** Put all street address line data into the `address1` JSON property (X12 EDI `N301`), ensuring that you adhere to the claim form length constraints.

### The PDF won't populate Item 7 when the patient is a dependent. [#the-pdf-wont-populate-item-7-when-the-patient-is-a-dependent]

Stedi validates the claim data you submit to the API and uses it to generate a compliant X12 EDI transaction to send to the payer. The PDF is generated from the final X12 EDI transaction.

The X12 EDI standard specifies that claims should only contain the insured's address when the patient is the subscriber. To maintain compliance, Stedi doesn't include the insured's address information in the generated X12 EDI transaction when the patient is a dependent, even if you provided the subscriber's address in the original API request. Since this address information isn't present in final X12 EDI claim, it's also not added to Item 7 (Insured's Address) in the generated PDF.

### Payer address (Carrier Block) [#payer-address-carrier-block]

You can populate the payer's address on the PDF by providing the `payerAddress` object in your claim submission API request. Include the payer's address details that you want to appear on the form.

### Standard form size [#standard-form-size]

The generated PDFs use the standard 8.5" x 11" format.

## Edit PDFs [#edit-pdfs]

Single-page PDFs are editable so you can make any necessary adjustments before printing and sending them to payers. You can use any PDF editor to make changes to the generated CMS-1500 PDF.

## Print PDFs [#print-pdfs]

Note the following behavior and recommendations when printing CMS-1500 PDFs.

* We recommend generating PDFs with a white background (no red form overlay) if you plan to print them on pre-printed claim forms.
* The form boxes and labels **must** be printed in red ink and the item values **must** be printed in black ink for the claim form to be read by a scanner. Your vendor may choose not to process claim forms that don't conform to these specifications.
* Set the **Page Size & Handling** option to **Actual size** or the equivalent in your PDF reader application. The **Fit** option may cause the contents to be scaled down to fit within the printable area, causing the form fields to be misaligned when printed.
* Don't print forms from the Apple Preview app built in to macOS. There appear to be problems with field alignment and fonts. Instead, we recommend using either Adobe Acrobat or Google Chrome.

### Printer models [#printer-models]

We generally recommend using business laser printers to print CMS-1500 PDFs. However, due to mechanical variations between printer models, we can't guarantee that the generated PDFs will align perfectly with pre-printed forms. You should always test the alignment with your printer before using the generated PDFs for official submissions.

You may not get acceptable results when using inkjet printer models because the file contents can extend beyond the normal printable area. If you do plan to use an inkjet printer, don't enable a **borderless** option because this may cause the printer (or printer driver) to slightly magnify the page image regardless of other print settings. This behavior can crop form edges and cause form fields to appear in the wrong positions. Some inkjet printers have a manual setting to change the extension amount, but this isn't always available and may not give consistent results.

# Interpret COB response
Source: https://www.stedi.com/docs/healthcare/cob-response


The coordination of benefits (COB) response includes information about the patient's active health plans, subscriber information, and coordination of benefits.

Unlike standard eligibility checks, the COB response shape is standardized across all supported payers. There are no payer-specific variations in what information is included or how the response is structured.

<Warning>
  COB check results may be partial or negative and may fail to include some or all of a patient's health plans. Results depend on whether the patient's payers contribute to the COB database.
</Warning>

## COB status [#cob-status]

The `coordinationOfBenefits` object contains status information about whether a COB instance exists and whether Stedi was able to determine the primary payer.

{/* schema:COB:unwrap */}

```json
"coordinationOfBenefits": {
    "classification": "CobInstanceExistsPrimacyDetermined",
    "instanceExists": true,
    "primacyDetermined": true,
    "coverageOverlap": true,
    "benefitOverlap": true
  }
```

A COB check response can have one of the following statuses, indicated by the `coordinationOfBenefits.classification` property.

{/* prettier-ignore-start */}

| status                                 | Description                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         |
| -------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `MemberFoundNoCob`                     | The patient has coverage with the payer you checked, but Stedi didn't find any other health plans with overlapping coverage. Note that Stedi can only report information for other COB-supported health plans from our payer list. For example, if the individual has coverage from Cigna and Medicare, a COB check to Cigna will state that no COB was detected, since Medicare is not a supported payer. You can find a complete list of supported payers for COB checks in the [Payer Network](https://www.stedi.com/healthcare/network?query=eyIyNzAiOnt9LCIyNzYiOnt9LCI4MzUiOnt9LCI4MzdQIjp7fSwiODM3SSI6e30sIjgzN0QiOnt9LCJDT0IiOnsiaXNTdXBwb3J0ZWQiOnRydWV9fQ%3D%3D\&page=0). |
| `CoverageOverlapNoBenefitOverlap`      | The patient has overlapping coverage with at least one other health plan, but there is no benefit overlap between the plans. Coordination of benefits is not required.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              |
| `CoverageOverlapExistsNotSubjectToCob` | The patient has overlapping coverage with at least one other health plan, but coordination of benefits is not required.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             |
| `CobInstanceExistsPrimacyUndetermined` | The patient has overlapping coverage with at least one other health plan and coordination of benefits is required. However, Stedi could not determine the primary payer. We recommend contacting the patient's health plans for further guidance.                                                                                                                                                                                                                                                                                                                                                                                                                                   |
| `CobInstanceExistsPrimacyDetermined`   | The patient has overlapping coverage with at least one other health plan, and Stedi was able to identify the primary payer.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         |

{/* prettier-ignore-end */}

## Payer primacy [#payer-primacy]

The response includes a `benefitsInformation` object with `code` = `R` when Stedi finds overlapping coverage with another health plan.

The `benefitsInformation[].benefitsRelatedEntities` array contains information about the other payer, and the `entityIdentifier` property indicates the payer's primacy for payment on claims when this information is available. It can be set to:

* `Payer`: Stedi didn't find a COB instance or could not determine primacy.
* `Primary Payer`: This payer is the primary payer for the service type.
* `Secondary Payer`: This payer is the secondary payer for the service type.
* `Tertiary Payer`: This payer is the tertiary payer for the service type.

In the following example, the patient has overlapping coverage for medical care services with Cigna, the primary payer for medical care services.

{/* schema:COBBenefitsInformation */}

```json
{
  "code": "R",
  "name": "Other or Additional Payor",
  "serviceTypeCodes": ["1"],
  "serviceTypes": ["Medical Care"],
  "benefitsDateInformation": {
    "coordinationOfBenefits": "2024-07-01"
  },
  "benefitsRelatedEntities": [
    {
      "entityIdentifier": "Primary Payer",
      "entityName": "CIGNA",
      "entityIdentification": "PI",
      "entityIdentificationValue": "1006"
    },
    {
      "entityIdentifier": "Insured or Subscriber",
      "entityFirstname": "JOHN",
      "entityMiddlename": "X",
      "entityIdentification": "MI",
      "entityIdentificationValue": "00000000000",
      "entityLastname": "DOE"
    }
  ],
  "subscriber": {
    "dateOfBirth": "2002-12-31"
  }
}
```

When Stedi can't reliably determine primacy, you should contact the patient's health plans directly for further guidance.

### Primacy rules [#primacy-rules]

<Warning>
  COB doesn't support Medicare plans, so they're not included in the primacy
  determination process. However, we support many Medicare Advantage plans,
  which will be included in primacy determination.
</Warning>

Our COB service follows the guidelines set by the [National Association of Insurance Commissioners (NAIC)](https://content.naic.org/) to determine payer primacy. You may also want to refer to these guidelines when submitting claims.

#### Plan responsibilities [#plan-responsibilities]

In almost all cases, the **primary** plan pays benefits first as if no other plan exists. The one exception to this policy is when the patient has both an HMO (closed network plan) and a PPO (open network plan). When the HMO is the primary plan and the PPO is secondary, the PPO will pay first when the patient uses out-of-network providers unless it's an emergency or an authorized referral covered by the HMO.

When multiple policies are treated as a single plan, the primacy determination applies to the entire plan. The plans must coordinate amongst themselves according to their contracts. If more than one insurance company provides benefits under the plan, the one designated as primary is responsible for complying with coordination of benefits rules.

#### Order of benefits rules [#order-of-benefits-rules]

After the primary plan pays, each subsequent plan pays remaining eligible costs. Each health plan determines their order of benefits using the first of the following rules that apply:

**1. Non-Dependent vs. Dependent vs. Medicare**

* A plan covering the patient as an employee, subscriber, or retiree is primary over a plan that covers them as a dependent.
* If the patient also has Medicare, special rules apply:
  * Medicare is secondary to a plan covering the person as a dependent.
  * Medicare is primary to a plan covering the person as an employee (from an employer with more than 20 employees), subscriber, or retiree.
  * If the patient has all three plan types, the order of primacy is: Medicare, then the plan covering the person as a dependent, and then any other plans.

**2. Dependent child with multiple plans**

Note that the following rules are the same regardless of whether the subscribers of the multiple plans are the child's parents or other significant individuals in their life (not their parents).

* If the two subscribers are married or living together: The subscriber with the birthday that occurs first in the calendar year has the primary plan. If both subscribers have the same birthday, the plan that has covered the child the longest is primary.
* If the dependent child's coverage under the spouse's plan began on the same date as their coverage under either or both parents' plans, the order of benefits will be determined using the birthday rule.
* If the two subscribers are divorced, separated, or not living together, a court order typically decides which plan is primary. Otherwise:
  * The plan of the custodial parent is primary.
  * The plan of the spouse of the custodial parent is secondary.
  * The plan of the non-custodial parent is tertiary.
  * The plan of the spouse of the non-custodial parent is last.
* If a dependent child has coverage under either or both parents' plans and is also covered as a dependent under a spouse's plan, apply rule 5 - Length of coverage.

**3. Active vs. retired employees**

Coverage from a current employer (active employee) is primary to retired or laid-off employee plans.

**4. COBRA vs. state continuation coverage**

Employer-based plans are primary to COBRA coverage.

**5. Length of coverage**

If other rules don't decide, the plan covering the person for the longest time is primary.

**6. Final rule (If no other rules apply)**

If no clear primary plan is determined, costs are split equally between the plans.

# Sample response interpretation [#sample-response-interpretation]

The following example COB response shows information for a dependent who is covered by multiple health plans through their parents' policies. The COB check was submitted to Aetna with a service type code of `30` and a date of service of `2024-11-27`.

The response indicates the following:

* **Active coverage:** The patient has active coverage with Aetna for medical care services, pharmacy services, and vision services. This is indicated by the three objects in the `benefitsInformation` array with the `code` set to `1`.
* **Coverage overlap:** The patient has overlapping coverage for medical care services between two health plans. This is indicated by the `benefitsInformation` object with the `code` set to `R`.
* **Primacy:** The other health plan is Cigna, listed in `benefitsInformation[].benefitsRelatedEntities`. Cigna is the primary payer for medical care services. Note that the ID returned in this property is proprietary to our COB check product, so you can't use it as the Payer ID for eligibility checks or other API requests to Stedi. It likely doesn't match the Payer IDs listed in the [Payer Network](https://www.stedi.com/healthcare/network).
* **COB instance:** There is a COB instance for medical care services on the date of service provided in the request. This is indicated in the `coordinationOfBenefits` object.

Based on this response, you must send claims first to Cigna as the primary payer for medical care services. Once Cigna adjudicates the claim, you can send another one, if necessary, to Aetna as the secondary payer (subject to specific payer claims processing rules).

Before sending claims we'd also recommend sending a separate eligibility check to Aetna to verify coverage status.

{/* schema:CoordinationOfBenefitsResponseContent */}

```json
{
  "benefitsInformation": [
    {
      "code": "1",
      "name": "Active Coverage",
      "serviceTypeCodes": ["1"],
      "serviceTypes": ["Medical Care"],
      "benefitsDateInformation": {
        "benefitBegin": "2023-03-01"
      },
      "subscriber": {
        "dateOfBirth": "2002-02-27"
      }
    },
    {
      "code": "1",
      "name": "Active Coverage",
      "serviceTypeCodes": ["88"],
      "serviceTypes": ["Pharmacy"],
      "benefitsDateInformation": {
        "benefitBegin": "2023-03-01"
      },
      "subscriber": {
        "dateOfBirth": "2002-02-27"
      }
    },
    {
      "code": "1",
      "name": "Active Coverage",
      "serviceTypeCodes": ["AL"],
      "serviceTypes": ["Vision (Optometry)"],
      "benefitsDateInformation": {
        "benefitBegin": "2023-03-01"
      },
      "subscriber": {
        "dateOfBirth": "2002-02-27"
      }
    },
    {
      "code": "R",
      "name": "Other or Additional Payor",
      "serviceTypeCodes": ["1"],
      "serviceTypes": ["Medical Care"],
      "benefitsDateInformation": {
        "coordinationOfBenefits": "2024-07-01"
      },
      "benefitsRelatedEntities": [
        {
          "entityIdentifier": "Primary Payer",
          "entityName": "CIGNA",
          "entityIdentification": "PI",
          "entityIdentificationValue": "1006"
        },
        {
          "entityIdentifier": "Insured or Subscriber",
          "entityFirstname": "JOHN",
          "entityMiddlename": "X",
          "entityIdentification": "MI",
          "entityIdentificationValue": "00000000000",
          "entityLastname": "DOE"
        }
      ],
      "subscriber": {
        "dateOfBirth": "2002-12-31"
      }
    }
  ],
  "coordinationOfBenefits": {
    "classification": "CobInstanceExistsPrimacyDetermined",
    "instanceExists": true,
    "primacyDetermined": true,
    "coverageOverlap": true,
    "benefitOverlap": true
  },
  "dependent": {
    "firstName": "JORDAN",
    "lastName": "DOE",
    "gender": "M",
    "dateOfBirth": "2002-12-31",
    "relationToSubscriber": "Child",
    "relationToSubscriberCode": "19",
    "address": {
      "address1": "1 MAIN ST.",
      "city": "NEW YORK",
      "state": "NY",
      "postalCode": "10000"
    }
  },
  "errors": [],
  "meta": {
    "applicationMode": "production",
    "traceId": "01JDQFT4W3KTWZNTADEZ55BFFX",
    "outboundTraceId": "01JDQFT4W3KTWZNTADEZ55BFFX"
  },
  "payer": {
    "name": "Aetna",
    "payerIdentification": "AETNA-USH"
  },
  "provider": {
    "providerOrgName": "AETNA-USH",
    "npi": "1999999984"
  },
  "subscriber": {
    "memberId": "W000000000",
    "firstName": "JOHN",
    "lastName": "DOE",
    "address": {
      "address1": "1 MAIN ST.",
      "city": "NEW YORK",
      "state": "NY",
      "postalCode": "10000"
    }
  }
}
```

## Request and response examples [#request-and-response-examples]

The following examples show request and response data for common COB scenarios.

### COB exists, primacy determined [#cob-exists-primacy-determined]

In the following example, the COB check was submitted to Cigna with a service type code of `30` and a date of service of `2024-12-19`.

The response indicates that the patient has active coverage with Cigna for medical care services, and that there is overlapping coverage with Kaiser Foundation Health Plan of Massachusetts. COB is required for medical care services, and Kaiser is the primary payer.

<Accordion title="Request COB exists, primacy determined" id="request-cob-exists-primacy-determined">
  {/* schema:CoordinationOfBenefitsRequestContent */}

  ```bash
  curl --request POST \
    --url https://healthcare.us.stedi.com/2024-04-01/coordination-of-benefits \
    --header 'Authorization: <api-key>' \
    --header 'Content-Type: application/json' \
    --data '{
    "test": false,
    "tradingPartnerServiceId": "62308",
    "provider": {
      "organizationName": "PPROVIDER",
      "npi": "1999999984"
    },
    "subscriber": {
      "memberId": "X999999999",
      "firstName": "Goofy",
      "lastName": "Goof",
      "dateOfBirth": "1948-11-01"
    },
    "encounter": {
      "dateOfService": "2024-12-19",
      "serviceTypeCode": "30"
    }
  }'
  ```
</Accordion>

<Accordion title="Response COB exists, primacy determined" id="response-cob-exists-primacy-determined">
  {/* schema:CoordinationOfBenefitsResponseContent */}

  ```json
  {
    "benefitsInformation": [
      {
        "code": "1",
        "name": "Active Coverage",
        "serviceTypeCodes": ["1"],
        "serviceTypes": ["Medical Care"],
        "benefitsDateInformation": {
          "benefitBegin": "2024-01-01"
        },
        "subscriber": {
          "dateOfBirth": "1948-11-01"
        }
      },
      {
        "code": "R",
        "name": "Other or Additional Payor",
        "serviceTypeCodes": ["1"],
        "serviceTypes": ["Medical Care"],
        "benefitsDateInformation": {
          "coordinationOfBenefits": "2024-01-01"
        },
        "benefitsRelatedEntities": [
          {
            "entityIdentifier": "Primary Payer",
            "entityName": "KAISER FOUNDATION HEALTH PLAN OF MAS",
            "entityIdentification": "PI",
            "entityIdentificationValue": "1009"
          },
          {
            "entityIdentifier": "Insured or Subscriber",
            "entityFirstname": "GOOFY",
            "entityMiddlename": "X",
            "entityIdentification": "MI",
            "entityIdentificationValue": "999999999",
            "entityLastname": "GOOF"
          }
        ],
        "subscriber": {
          "dateOfBirth": "1948-11-01"
        }
      }
    ],
    "coordinationOfBenefits": {
      "classification": "CobInstanceExistsPrimacyDetermined",
      "instanceExists": true,
      "primacyDetermined": true,
      "coverageOverlap": true,
      "benefitOverlap": true
    },
    "dependent": {
      "firstName": "GOOFY",
      "lastName": "GOOF",
      "gender": "M",
      "dateOfBirth": "1948-11-01",
      "relationToSubscriber": "Spouse",
      "relationToSubscriberCode": "01",
      "address": {
        "address1": "3 DISNEY RD",
        "city": "ORLANDO",
        "state": "FL",
        "postalCode": "32801"
      }
    },
    "errors": [],
    "meta": {
      "applicationMode": "production",
      "traceId": "01JJQRFYSXPKNYQ96EVM7XDXC4",
      "outboundTraceId": "01JJQRFYSXPKNYQ96EVM7XDXC4"
    },
    "payer": {
      "name": "CIGNA",
      "payerIdentification": "CIGNA-HCIN"
    },
    "provider": {
      "providerOrgName": "PROVIDER",
      "npi": "1999999984"
    },
    "subscriber": {
      "memberId": "X99999999",
      "firstName": "MRS",
      "lastName": "GOOF",
      "groupNumber": "12345678",
      "address": {
        "address1": "3 DISNEY RD",
        "city": "ORLANDO",
        "state": "FL",
        "postalCode": "32801"
      }
    }
  }
  ```
</Accordion>

### Coverage overlap, no benefit overlap [#coverage-overlap-no-benefit-overlap]

In the following example, the COB check was submitted to Cigna with a service type code of `30` and a date of service of `2025-01-01`.

The response indicates that the patient has active coverage with Cigna for medical care services, and that there is overlapping coverage with Aetna for dental care services. There is no benefit overlap between the two health plans because dental and medical benefits have two different service type codes. COB is not required.

<Accordion title="Request Coverage overlap, no benefit overlap" id="request-coverage-overlap-no-benefit-overlap">
  {/* schema:CoordinationOfBenefitsRequestContent */}

  ```bash
  curl --request POST \
    --url https://healthcare.us.stedi.com/2024-04-01/coordination-of-benefits \
    --header 'Authorization: <api-key>' \
    --header 'Content-Type: application/json' \
    --data '{
    "test": false,
    "tradingPartnerServiceId": "62308",
    "provider": {
      "organizationName": "PROVIDER",
      "npi": "1999999984"
    },
    "subscriber": {
      "memberId": "X999999999",
      "firstName": "MICKEY",
      "lastName": "MOUSE",
      "dateOfBirth": "1928-11-28"
    },
    "encounter": {
      "dateOfService": "2025-01-01",
      "serviceTypeCode": "30"
    }
  }'
  ```
</Accordion>

<Accordion title="Response Coverage overlap, no benefit overlap" id="response-coverage-overlap-no-benefit-overlap">
  ```json
  {
    "benefitsInformation": [
      {
        "code": "1",
        "name": "Active Coverage",
        "serviceTypeCodes": ["1"],
        "serviceTypes": ["Medical Care"],
        "benefitsDateInformation": {
          "benefitBegin": "2024-10-03"
        },
        "subscriber": {
          "dateOfBirth": "1925-11-28"
        },
        "dependent": {
          "firstName": "MICKEY",
          "lastName": "MOUSE",
          "memberId": "X999999999",
          "dateOfBirth": "1928-11-28",
          "familySeqNum": "0003",
          "relationToSubscriber": "Spouse",
          "relationToSubscriberCode": "01"
        }
      },
      {
        "code": "R",
        "name": "Other or Additional Payor",
        "serviceTypeCodes": ["35"],
        "serviceTypes": ["Dental Care"],
        "benefitsDateInformation": {
          "periodStart": "2024-10-03"
        },
        "benefitsRelatedEntities": [
          {
            "entityIdentifier": "Payer",
            "entityName": "AETNA",
            "entityIdentification": "PI",
            "entityIdentificationValue": "1000"
          },
          {
            "entityIdentifier": "Insured or Subscriber",
            "entityFirstname": "MINNIE",
            "entityMiddlename": "X",
            "entityIdentification": "MI",
            "entityIdentificationValue": "X999999999",
            "entityLastname": "MOUSE"
          }
        ],
        "subscriber": {
          "dateOfBirth": "1925-11-28"
        },
        "dependent": {
          "firstName": "MICKEY",
          "lastName": "MOUSE",
          "memberId": "X999999999",
          "dateOfBirth": "1928-11-28",
          "familySeqNum": "0003",
          "relationToSubscriber": "Spouse",
          "relationToSubscriberCode": "01"
        }
      }
    ],
    "coordinationOfBenefits": {
      "classification": "CoverageOverlapNoBenefitOverlap",
      "instanceExists": true,
      "coverageOverlap": true,
      "benefitOverlap": false,
      "primacyDetermined": false
    },
    "dependent": {
      "firstName": "MICKEY",
      "lastName": "MOUSE",
      "gender": "M",
      "dateOfBirth": "1928-11-28",
      "relationToSubscriber": "Spouse",
      "relationToSubscriberCode": "01",
      "address": {
        "address1": "3 DISNEY RD",
        "city": "ORLANDO",
        "state": "FL",
        "postalCode": "32801"
      }
    },
    "errors": [],
    "meta": {
      "applicationMode": "production",
      "traceId": "01JJVW6QJWXESXYAAAE4H996HR",
      "outboundTraceId": "01JJVW6QJWXESXYAAAE4H996HR"
    },
    "payer": {
      "name": "CIGNA",
      "payerIdentification": "CIGNA-HCIN"
    },
    "provider": {
      "providerOrgName": "PROVIDER",
      "npi": "1999999984"
    },
    "subscriber": {
      "memberId": "X99999999",
      "firstName": "MINNIE",
      "lastName": "MOUSE",
      "middleName": "X",
      "groupNumber": "3340181",
      "address": {
        "address1": "3 DISNEY RD",
        "city": "ORLANDO",
        "state": "FL",
        "postalCode": "32801"
      }
    }
  }
  ```
</Accordion>

### Member found, no COB [#member-found-no-cob]

In the following example, the COB check was submitted to UnitedHealthcare with a service type code of `30` and a date of service of `2023-01-10`.

The response indicates that the patient has active coverage with UnitedHealthcare for medical care services, but there is no overlapping coverage with any other health plan.

<Accordion title="Request Member found, no COB" id="request-member-found-no-cob">
  {/* schema:CoordinationOfBenefitsRequestContent */}

  ```bash
  curl --request POST \
    --url https://healthcare.us.stedi.com/2024-04-01/coordination-of-benefits \
    --header 'Authorization: <api-key>' \
    --header 'Content-Type: application/json' \
    --data '{
    "test": false,
    "tradingPartnerServiceId": "87726",
    "provider": {
      "organizationName": "PROVIDER",
      "npi": "1999999984"
    },
    "subscriber": {
      "memberId": "999999999",
      "firstName": "Donald",
      "lastName": "Duck",
      "dateOfBirth": "1960-01-01"
    },
    "dependent": {
      "firstName": "Huey",
      "lastName": "Duck",
      "dateOfBirth": "1990-01-01"
    },
    "encounter": {
      "dateOfService": "2023-01-10",
      "serviceTypeCode": "30"
    }
  }'
  ```
</Accordion>

<Accordion title="Response Member found, no COB" id="response-member-found-no-cob">
  {/* schema:CoordinationOfBenefitsResponseContent */}

  ```json
  {
    "benefitsInformation": [
      {
        "code": "1",
        "name": "Active Coverage",
        "serviceTypeCodes": ["1"],
        "serviceTypes": ["Medical Care"],
        "benefitsDateInformation": {
          "benefitBegin": "2024-01-01"
        }
      }
    ],
    "coordinationOfBenefits": {
      "classification": "MemberFoundNoCob",
      "instanceExists": false,
      "coverageOverlap": false,
      "benefitOverlap": false,
      "primacyDetermined": false
    },
    "dependent": {
      "firstName": "HUEY",
      "lastName": "DUCK",
      "middleName": "M",
      "gender": "F",
      "dateOfBirth": "1990-01-01",
      "relationToSubscriber": "Child",
      "relationToSubscriberCode": "19",
      "address": {
        "address1": "25 THE ROAD",
        "city": "READING",
        "state": "MA",
        "postalCode": "01867"
      }
    },
    "errors": [],
    "meta": {
      "applicationMode": "production",
      "traceId": "09JJSWD8RBGZMVCCYGQZS3P1F7",
      "outboundTraceId": "09JJSWD8RBGZMVCCYGQZS3P1F7"
    },
    "payer": {
      "name": "UnitedHealthcare",
      "payerIdentification": "UHC"
    },
    "provider": {
      "providerOrgName": "PROVIDER",
      "npi": "1999999984"
    },
    "subscriber": {
      "memberId": "999999999",
      "firstName": "DONALD",
      "lastName": "DUCK",
      "middleName": "X",
      "address": {
        "address1": "25 THE ROAD",
        "city": "READING",
        "state": "MA",
        "postalCode": "01867"
      }
    }
  }
  ```
</Accordion>

## Follow up with eligibility checks [#follow-up-with-eligibility-checks]

Our COB data is updated weekly, and the response doesn't contain complete details about the patient's coverage with each health plan.

When Stedi finds overlapping coverage, we strongly recommend conducting follow-up [eligibility checks](/healthcare/send-eligibility-checks) with each payer to verify coverage status and retrieve the patient's complete, up-to-date benefits information.

# COB troubleshooting
Source: https://www.stedi.com/docs/healthcare/cob-troubleshooting


A list of potential errors and possible resolutions when submitting coordination of benefits (COB) checks.

## Inaccurate patient data [#inaccurate-patient-data]

COB checks are significantly more sensitive to data accuracy than eligibility checks. To perform successful COB checks, the patient information you provide in the check **must** match the payer's data exactly.

For example, if a payer has a patient's name stored as "Jonathan Doe", they may return benefits information when you submit an eligibility check for "Jon Doe", as long as they can identify the patient through the other information provided. However, a COB request for "Jon Doe" will fail because the name doesn't match the payer's records exactly.

To avoid unnecessary COB check failures, we strongly recommend that you first submit an eligibility check request for the patient. Then use the patient's first name, last name, date of birth, and member ID from the successful eligibility response to build the COB request.

## Invalid or unsupported payer ID [#invalid-or-unsupported-payer-id]

COB requests require a valid payer ID in the `tradingPartnerServiceId` property. Visit the Stedi [Payer Network](https://www.stedi.com/healthcare/network?query=eyIyNzAiOnt9LCIyNzYiOnt9LCI4MzUiOnt9LCI4MzdQIjp7fSwiODM3SSI6e30sIjgzN0QiOnt9LCJDT0IiOnsiaXNTdXBwb3J0ZWQiOnRydWV9fQ%3D%3D\&page=0) for a complete list of supported payers and their payer IDs.

You should also ensure that you're sending the request to the correct payer entity. For example, Blue Cross Blue Shield (BCBS) has multiple entities that operate in different states. If you send a request to the wrong entity, the request will fail with an `AAA` = `75` error (Subscriber/Insured Not Found).

## Missing data [#missing-data]

COB requests must contain the patient's `firstName`, `lastName`, `dateOfBirth`, plus `memberId` and/or `ssn`. If you do not send all data points, Stedi returns an HTTP `400` error with a message listing the missing data.

{/* schema:ValidationExceptionResponseContent */}

```json
{
  "fieldList": [
    {
      "path": "/subscriber/dateOfBirth",
      "message": "Value at '/subscriber/dateOfBirth' failed to satisfy constraint: Member must not be null"
    }
  ],
  "message": "1 validation error detected. Value at '/subscriber/dateOfBirth' failed to satisfy constraint: Member must not be null"
}
```

## Request found multiple patients [#request-found-multiple-patients]

The `Duplicate Subscriber/Insured ID Number` error can occur when Stedi finds more than one member ID for the patient in the request. For example, this could occur if you only provide the patient's Social Security Number (SSN), and the search returns more than one member ID associated with that SSN.

In this case, Stedi returns a HTTP `200` response with an `AAA` error in the `subscriber` object.

{/* schema:COBResponseSubscriber:unwrap */}

```json
"subscriber": {
  "memberId": "123456789",
  "firstName": "John",
  "lastName": "Doe",
  "dateOfBirth": "1961-10-21",
  "aaaErrors": [
    {
      "field": "AAA",
      "code": "76",
      "description": "Duplicate Subscriber/Insured ID Number",
      "followupAction": "Please Correct and Resubmit",
      "location": "Loop 2100C",
      "possibleResolutions": "Duplicate member ID was found in the payer database."
    }
  ]
}
```

## Member not found [#member-not-found]

If Stedi cannot find a member ID for the patient in the request, it returns an HTTP `200` response with an `AAA` error in the `subscriber` object.

{/* schema:COBResponseSubscriber:unwrap */}

```json
"subscriber": {
  "memberId": "123456789",
  "firstName": "John",
  "lastName": "Doe",
  "dateOfBirth": "1961-10-21",
  "aaaErrors": [
    {
      "field": "AAA",
      "code": "75",
      "description": "Subscriber/Insured Not Found",
      "followupAction": "Please Correct and Resubmit",
      "location": "Loop 2100C",
      "possibleResolutions": "- Subscriber was not found."
    }
  ]
}
```

Mismatches in the `memberId` are one of the most common causes of `Subscriber/Insured Not Found` errors. We strongly recommend first performing an eligibility check and using the `memberId` in the response to populate your COB check.

You also receive a `Subscriber/Insured Not Found` error if you try to submit a COB check to a Medicare plan. Stedi doesn't support Medicare plans for COB checks, though we support many Medicare Advantage plans.

## Invalid service dates [#invalid-service-dates]

The service dates you provide **must** be within the past 2 years. COB checks don't support requests with dates outside of this range.

Don't send service dates that are in the future. Future service dates typically result in errors from the payer.

## Inactive coverage [#inactive-coverage]

For COB checks to return a positive result, the patient must have active coverage. Sometimes, you can receive a false negative or error on a COB check when a patient's coverage has very recently changed. For example, if the patient recently became eligible for coverage within the last few days, that information may not yet be reflected in the COB member data, and you will receive a `Subscriber/Insured Not Found` error.

Payers typically update COB member data on a weekly basis. If you receive an error and the patient's coverage has recently changed, we recommend trying again next week to give the changes time to propagate to the COB database.

## AAA errors [#aaa-errors]

The COB response may contain one or more `AAA` errors specify issues with your request and any recommended follow-up actions. Stedi includes this information in the `aaaErrors` object in the response JSON.

`AAA` errors can be present at multiple different levels in the response, depending on the type. In the COB response, the `subscriber`, `dependent`, and `provider` objects can each contain their own `aaaErrors` array.

Common causes for AAA errors include:

* Missing or incorrect information for the subscriber, dependent, provider, or payer. In this case, you should correct any errors before resubmitting.
* Issues with payer enrollment. Many of these issues require that the provider contact the payer directly to resolve, due to PHI/HIPAA guidelines.

Each error contains a code field that corresponds to a `followupAction`:

{/* X12 follow-up action code descriptions keep their spec semicolons. */}

{/* vale Stedi.Semicolons = NO */}

* `C` - Please correct and resubmit
* `N` - Resubmission not allowed | Note that this code doesn't mean you should never resubmit the request. Intermediary clearinghouses may send this code when they have temporarily lost connection to the payer, so this code indicates that you should wait at least a few minutes before retrying instead of retrying immediately.
* `P` - Please resubmit original transaction
* `R` - Resubmission allowed
* `S` - Do not resubmit; Inquire initiated to a third party
* `Y` - Do not resubmit; We will hold your request and respond again shortly

{/* vale Stedi.Semicolons = YES */}

# Configure webhooks
Source: https://www.stedi.com/docs/healthcare/configure-webhooks


You can set up webhooks that automatically send claim processing events to your endpoint.

These events contain the information you need to retrieve 277CA claim acknowledgment and 835 Electronic Remittance Advice (ERA) responses through Stedi APIs. They can also help you monitor your claims pipeline when you're submitting claims through [Stedi SFTP](/healthcare/submit-claims-sftp-connection).

You can either create a single webhook that forwards events from all transactions, or create a separate webhook for each transaction type.

Configuring a webhook involves:

* Creating a [credential set](#credential-set) for authentication to the endpoint.
* Creating a [webhook](#webhook) that specifies the URL where Stedi should deliver events.
* Adding one or more [event bindings](#event-bindings) that trigger the webhook.

## Credential set [#credential-set]

A credential set defines how to authenticate with a specific API. You can use a single credential set across multiple webhooks. Stedi supports the following types of configurations.

| Type       | Description                                                                                                                            |
| ---------- | -------------------------------------------------------------------------------------------------------------------------------------- |
| API Keys   | The API keys as headers in the request. The most common version is 'bearer tokens'.                                                    |
| Basic Auth | [HTTP Basic Auth](https://developer.mozilla.org/en-US/docs/Web/HTTP/Guides/Authentication), where you provide a username and password. |
| None       | For endpoints that don't require any authentication.                                                                                   |

### Unauthenticated endpoints [#unauthenticated-endpoints]

When using the 'None' credential set type in webhooks, it's functionally the same as using 'API Keys'. However, we set a dummy value for `Header name` and `Value` (`x-stedi-noauth` and `dummy`). Since the receiving API isn't authenticating the call, it will ignore these values and accept the request.

### Create credential set [#create-credential-set]

You can define a credential set as part of configuring a new webhook. You can also create a new credential set independently and then attach it to one or more webhooks.

To create a credential set:

1. Go to the [Webhooks](https://portal.stedi.com/app/settings/webhooks) page in your developer settings.
2. Click **Manage credentials**, and then click **Create credential set**.
3. Enter a name.
4. Choose the appropriate **Authentication type**.
5. Enter the details.
6. Click **Create credential set**.

## Webhook [#webhook]

A webhook defines which URL endpoint Stedi should call when the webhook is invoked, and which HTTP method to use (`POST`, `PUT`, `GET`, `PATCH`, `DELETE`).

You can only attach one credential set to each webhook. However, you might have multiple webhooks for a single system integration, each with a different endpoint.

### Create webhook [#create-webhook]

To create a new webhook:

1. Go to the [Webhooks](https://portal.stedi.com/app/settings/webhooks) page in your developer settings.
2. Click **Create webhook**.
3. Enter a name.
4. Choose a **Method** and enter an **Endpoint** URL. This is where Stedi delivers the events when the webhook is invoked.
5. Select a **Credential set** to use for authentication or create a new one for this endpoint.
6. (Optional) Set the **Concurrency**. You can set the maximum number of deliveries that Stedi will attempt to deliver to the endpoint at one time. This can help you avoid overloading the target service.

## Event bindings [#event-bindings]

Event bindings allow you to specify which events trigger the webhook. You can create multiple event bindings for a single webhook. For example, you may want to create an event binding for each type of transaction you want to send to your API.

### Create event binding [#create-event-binding]

To create a new event binding:

1. Go to the [Webhooks](https://portal.stedi.com/app/settings/webhooks) page in your developer settings.
2. Click the webhook.
3. Click the **Event bindings** tab.
4. Click **New event binding**.
5. Choose **Transaction processed** as the **Event type**.
6. (Optional) Set one or more [filters](#event-filters).
7. Click **Create binding**.

### Choosing event types [#choosing-event-types]

The recommended event bindings depend on your use case:

* **API claim submission:** At a minimum, you should create an event binding for transaction processed events because they contain the information you need to retrieve claim responses from Stedi. You may also want to set up event bindings for file delivered and file failed events.
* **SFTP claim submission:** At a minimum, we recommend creating an event binding for transaction processed events filtered to 999s so you receive instant notifications when Stedi rejects claims for validation errors. We also recommend monitoring file failed events, which can include errors that may require retries. You may also want to set up event bindings for transaction processed events for 277CAs and 835 ERAs to receive real-time notifications when these responses are available.

<Note>
  The file processed and fragment processed events are not relevant to claims
  processing.
</Note>

#### Transaction processed events [#transaction-processed-events]

Stedi emits a transaction processed event after it successfully receives and translates a payer or intermediary clearinghouse response into JSON. It also emits this event once it successfully translates a JSON claim submission into X12 EDI format for the payer. The event payload contains the information you need to retrieve processed responses through Stedi APIs:

* `x12.transactionSetIdentifier` specifies the transaction type (999, 277, or 835).
* `transactionId` allows you to retrieve the transaction in JSON format using either the [277CA Report](/healthcare/api-reference/get-healthcare-reports-277) or [835 ERA Report](/healthcare/api-reference/get-healthcare-reports-835) endpoint.
* `fileExecutionId` allows you to retrieve the transaction in X12 EDI format through the [Retrieve Execution Input](/healthcare/api-reference/get-execution-input) endpoint.

Even if you plan to retrieve claim responses through Stedi SFTP, you may want to monitor these events so you can receive alerts when new claim responses are available.

#### Example transaction processed events for 999, 277CA, and 835 ERA [#example-transaction-processed-events-for-999-277ca-and-835-era]

<Accordion title="Example transaction processed events for 999, 277CA, and 835 ERA" headingLevel="4" id="example-transaction-processed-events-for-999-277ca-and-835-era">
    <CodeBlockTabs defaultValue="processed 999">
      <CodeBlockTabsList>
        <CodeBlockTabsTrigger value="processed 999">
          processed 999
        </CodeBlockTabsTrigger>

        <CodeBlockTabsTrigger value="processed 277CA">
          processed 277CA
        </CodeBlockTabsTrigger>

        <CodeBlockTabsTrigger value="processed 835 ERA">
          processed 835 ERA
        </CodeBlockTabsTrigger>
      </CodeBlockTabsList>

      <CodeBlockTab value="processed 999">
        ```json
        {
          "event": {
            "version": "0",
            "id": "a3c7d891-2b4f-1a55-9e72-f8d3c5a9b1e6",
            "detail-type": "transaction.processed.v2",
            "source": "stedi.core",
            "account": "<ACCOUNT_ID>",
            "time": "2025-07-14T20:15:32Z",
            "region": "us-east-1",
            "resources": [
              "https://core.us.stedi.com/2023-08-01/transactions/7a2f8c9d-1e3b-4a5c-8d7f-9b6e4c2a1f8d"
            ],
            "detail": {
              "transactionId": "7a2f8c9d-1e3b-4a5c-8d7f-9b6e4c2a1f8d",
              "direction": "INBOUND",
              "mode": "test",
              "fileExecutionId": "3d8f7a5b-9c2e-4f1a-b8d6-e4c9a7f2b1d3",
              "processedAt": "2025-07-14T20:15:32.421Z",
              "fragments": null,
              "artifacts": [
                {
                  "artifactType": "application/edi-x12",
                  "usage": "input",
                  "url": "https://core.us.stedi.com/2023-08-01/transactions/7a2f8c9d-1e3b-4a5c-8d7f-9b6e4c2a1f8d/input",
                  "sizeBytes": 542,
                  "model": "transaction"
                },
                {
                  "artifactType": "application/json",
                  "usage": "output",
                  "url": "https://core.us.stedi.com/2023-08-01/transactions/7a2f8c9d-1e3b-4a5c-8d7f-9b6e4c2a1f8d/output",
                  "sizeBytes": 1823,
                  "model": "transaction"
                }
              ],
              "partnership": {
                "partnershipId": "local-clearinghouse-test",
                "partnershipType": "x12",
                "sender": {
                  "profileId": "clearinghouse-test"
                },
                "receiver": {
                  "profileId": "local"
                }
              },
              "x12": {
                "transactionSetting": {
                  "guideId": "01HMR0V8N2PHGA8M4ZG1CRHH0",
                  "transactionSettingId": "01HMR1P4N6QJHB9N5AH2DSKKJ1"
                },
                "metadata": {
                  "interchange": {
                    "acknowledgmentRequestedCode": "0",
                    "controlNumber": 123
                  },
                  "functionalGroup": {
                    "controlNumber": 456,
                    "release": "005010X231A1",
                    "date": "2025-07-14",
                    "time": "20:15:15",
                    "functionalIdentifierCode": "FA"
                  },
                  "transaction": {
                    "controlNumber": "0001",
                    "transactionSetIdentifier": "999"
                  },
                  "receiver": {
                    "applicationCode": "401576130024",
                    "isa": {
                      "qualifier": "ZZ",
                      "id": "401576130024"
                    }
                  },
                  "sender": {
                    "applicationCode": "STEDITEST",
                    "isa": {
                      "qualifier": "ZZ",
                      "id": "STEDITEST"
                    }
                  }
                }
              },
              "connectionId": "01J1M5124B2HWMNN91Q3Z6AM61"
            }
          }
        }
        ```
      </CodeBlockTab>

      <CodeBlockTab value="processed 277CA">
        ```json
        {
          "event": {
            "version": "0",
            "id": "f972fb53-653a-1747-ce30-bed15fc04f5c",
            "detail-type": "transaction.processed.v2",
            "source": "stedi.core",
            "account": "<ACCOUNT_ID>",
            "time": "2024-07-18T16:21:24Z",
            "region": "us-east-1",
            "resources": [
              "https://core.us.stedi.com/2023-08-01/transactions/f0d3f790-0bc9-432b-93kd-e4b7ece67946"
            ],
            "detail": {
              "transactionId": "f0d4f780-0ec9-432b-93gd-e4b7ece93946",
              "direction": "INBOUND",
              "mode": "test",
              "fileExecutionId": "9f76b485-6hca-43bf-917e-d5b54bec6234",
              "processedAt": "2024-07-18T16:21:24.658Z",
              "fragments": null,
              "artifacts": [
                {
                  "artifactType": "application/edi-x12",
                  "usage": "input",
                  "url": "https://core.us.stedi.com/2023-08-01/transactions/f0d9f790-0ec9-431b-93fd-e4h7ece63946/input",
                  "sizeBytes": 1313,
                  "model": "transaction"
                },
                {
                  "artifactType": "application/json",
                  "usage": "output",
                  "url": "https://core.us.stedi.com/2023-08-01/transactions/f0d3f740-0ec9-432b-98fd-e4b7ece63946/output",
                  "sizeBytes": 5602,
                  "model": "transaction"
                }
              ],
              "partnership": {
                "partnershipId": "local-clearinghouse-test",
                "partnershipType": "x12",
                "sender": {
                  "profileId": "clearinghouse-test"
                },
                "receiver": {
                  "profileId": "local"
                }
              },
              "x12": {
                "transactionSetting": {
                  "guideId": "01J1M50C1Q44KYDZY8V7R1TPBW",
                  "transactionSettingId": "01J1M50P9623BFE0FFT5Q2BR49"
                },
                "metadata": {
                  "interchange": {
                    "acknowledgmentRequestedCode": "0",
                    "controlNumber": 11
                  },
                  "functionalGroup": {
                    "controlNumber": 11,
                    "release": "005010X214",
                    "date": "2024-07-18",
                    "time": "16:20:47",
                    "functionalIdentifierCode": "HN"
                  },
                  "transaction": {
                    "controlNumber": "1001",
                    "transactionSetIdentifier": "277"
                  },
                  "receiver": {
                    "applicationCode": "001690149382",
                    "isa": {
                      "qualifier": "ZZ",
                      "id": "001690149382"
                    }
                  },
                  "sender": {
                    "applicationCode": "STEDITEST",
                    "isa": {
                      "qualifier": "ZZ",
                      "id": "STEDITEST"
                    }
                  }
                }
              },
              "connectionId": "01J1M5124B2HWMNN91Q3Z6AM61"
            }
          }
        }
        ```
      </CodeBlockTab>

      <CodeBlockTab value="processed 835 ERA">
        ```json
        {
          "event": {
            "version": "0",
            "id": "5d1bcb90-cb0b-1844-5b93-86d5e5b9c4a8",
            "detail-type": "transaction.processed.v2",
            "source": "stedi.core",
            "account": "<ACCOUNT_ID>",
            "time": "2025-07-14T20:43:39Z",
            "region": "us-east-1",
            "resources": [
              "https://core.us.stedi.com/2023-08-01/transactions/95e7786c-7066-4494-b83a-b1f300624902"
            ],
            "detail": {
              "transactionId": "95e7786c-7066-4494-b83a-b1f300624902",
              "direction": "INBOUND",
              "mode": "test",
              "fileExecutionId": "5d30f0a0-63af-4aeb-b96c-353b4b25c99a",
              "processedAt": "2025-07-14T20:43:39.808Z",
              "fragments": null,
              "artifacts": [
                {
                  "artifactType": "application/edi-x12",
                  "usage": "input",
                  "url": "https://core.us.stedi.com/2023-08-01/transactions/95e7786c-7066-4494-b83a-b1f300624902/input",
                  "sizeBytes": 2016,
                  "model": "transaction"
                },
                {
                  "artifactType": "application/json",
                  "usage": "output",
                  "url": "https://core.us.stedi.com/2023-08-01/transactions/95e7786c-7066-4494-b83a-b1f300624902/output",
                  "sizeBytes": 13864,
                  "model": "transaction"
                }
              ],
              "partnership": {
                "partnershipId": "local-clearinghouse-test",
                "partnershipType": "x12",
                "sender": {
                  "profileId": "clearinghouse-test"
                },
                "receiver": {
                  "profileId": "local"
                }
              },
              "x12": {
                "transactionSetting": {
                  "guideId": "01J8JH1SGTB2FYKN2PG4MH84RP",
                  "transactionSettingId": "01J8JH23VA3G2X8GENVVE6XZB9"
                },
                "metadata": {
                  "interchange": {
                    "acknowledgmentRequestedCode": "0",
                    "controlNumber": 1
                  },
                  "functionalGroup": {
                    "controlNumber": 1,
                    "release": "005010X221A1",
                    "date": "2025-07-14",
                    "time": "20:43:21",
                    "functionalIdentifierCode": "HP"
                  },
                  "transaction": {
                    "controlNumber": "0001",
                    "transactionSetIdentifier": "835"
                  },
                  "receiver": {
                    "applicationCode": "599264680681",
                    "isa": {
                      "qualifier": "ZZ",
                      "id": "599264680681"
                    }
                  },
                  "sender": {
                    "applicationCode": "STEDITEST",
                    "isa": {
                      "qualifier": "ZZ",
                      "id": "STEDITEST"
                    }
                  }
                }
              },
              "connectionId": "01JE9257XJ4G4YFMXCHJPFR434"
            }
          }
        }
        ```
      </CodeBlockTab>
    </CodeBlockTabs>
</Accordion>

#### File delivered events [#file-delivered-events]

Stedi emits a file delivered event when it successfully generates and delivers a claim. You may want to send these events to your system for monitoring and alerting.

Note that this event is emitted when Stedi delivers your claim to our connection with the payer. It doesn't indicate whether the payer received the claim or whether they have accepted or rejected it.

#### Example file delivered event [#example-file-delivered-event]

<Accordion title="Example file delivered event" headingLevel="4" id="example-file-delivered-event">
  ```json file.delivered.v2 event
  {
    "event": {
      "version": "0",
      "id": "3fb45b5f-bd7f-f9d0-c0a2-84946f20a9da",
      "detail-type": "file.delivered.v2",
      "source": "stedi.core",
      "account": "<ACCOUNT_ID>",
      "time": "2025-05-06T19:35:17Z",
      "region": "us-east-1",
      "resources": [],
      "detail": {
        "fileExecutionId": "e181c2ab-f85c-42bd-9cda-a7bd1e32b4c9",
        "processedAt": "2025-05-05T20:14:57.882927984Z",
        "artifacts": [
          {
            "artifactType": "application/edi-x12",
            "usage": "input",
            "sizeBytes": 1270,
            "url": "https://core.us.stedi.com/2023-08-01/executions/e181c2ab-f85c-42bd-9cda-a7bd1e32b4c9/input",
            "model": "execution"
          },
          {
            "artifactType": "application/edi-x12",
            "usage": "output",
            "sizeBytes": 1270,
            "url": "https://core.us.stedi.com/2023-08-01/executions/e181c2ab-f85c-42bd-9cda-a7bd1e32b4c9/output",
            "model": "execution"
          }
        ],
        "connection": {
          "connectionType": "STEDI_ACCOUNT_FTP",
          "connectionId": "01JM0XF37DXZ3THZ7N75YJTW52"
        },
        "delivery": {
          "status": "DELIVERED",
          "message": "Delivered to 'Test Account SFTP'",
          "artifactId": "9d7c38f4-410b-4032-aad4-016d8140b265.x12"
        }
      }
    }
  }
  ```
</Accordion>

#### File failed events [#file-failed-events]

Stedi emits a file failed event when it either fails to process a response from a payer or cannot deliver a submitted claim.

You may want to monitor these events because they include errors that are only available through this event type. For example, file failed events can include parsing issues or connection problems that our engineering team must resolve with the payer.

#### Example file failed event [#example-file-failed-event]

<Accordion title="Example file failed event" headingLevel="4" id="example-file-failed-event">
  ```json file failed event
  {
    "event": {
      "version": "0",
      "id": "cef43062-0258-cbac-b06d-ec6a21f03c69",
      "detail-type": "file.failed.v2",
      "source": "stedi.core",
      "account": "<ACCOUNT_ID>",
      "time": "2025-06-05T11:26:16Z",
      "region": "us-east-1",
      "resources": [
        "https://core.us.stedi.com/2023-08-01/executions/7590afcd-26d7-4182-a8fc-1d1051e2815c"
      ],
      "detail": {
        "fileExecutionId": "7590afcd-26d7-4182-a8fc-1d1051e2815c",
        "direction": "INBOUND",
        "processedAt": "2025-06-05T11:26:16.354Z",
        "source": {
          "dirname": "remote-ftp/test/01JJYJ0GGVZD5GR230YP6G3MEA/fromPartner",
          "name": "Test_Dental.1234567.835"
        },
        "artifacts": [
          {
            "artifactType": "application/edi-x12",
            "url": "https://core.us.stedi.com/2023-08-01/executions/7590afcd-26d7-4182-a8fc-1d1051e2815c/input",
            "usage": "input",
            "model": "execution"
          }
        ],
        "connectionId": "01JJYJ0GGVZD5GR230YP6G3MEA",
        "partnership": {
          "partnershipId": "stedi-test_dentalpartner",
          "partnershipType": "x12",
          "receiver": {
            "profileId": "stedi-test"
          },
          "sender": {
            "profileId": "dentalpartner"
          }
        },
        "errors": [
          {
            "message": "String element BPR-10 must have a length of 10, actual length is 5\nElement PER-02 is not used by this guide",
            "faultCode": "FAILED_TO_TRANSLATE"
          }
        ],
        "x12": {
          "metadata": {
            "interchange": {
              "acknowledgmentRequestedCode": "1",
              "controlNumber": 56199839
            }
          },
          "receiver": {
            "isa": {
              "qualifier": "30",
              "id": "117151744"
            }
          },
          "sender": {
            "isa": {
              "qualifier": "ZZ",
              "id": "900117186"
            }
          }
        }
      }
    }
  }
  ```
</Accordion>

### Event filters [#event-filters]

Without filters, Stedi sends all of the specified event types to your endpoint, regardless of the associated transaction. For example, if you subscribe to transaction processed events, you'll get transaction processed events for submitted claims and attachments as well as 999, 277CA, and 835 ERA responses.

To further filter the events Stedi sends to your endpoint:

* **Transaction:** This is useful if you want to send events for 277CA claim acknowledgments to one endpoint and events for 835 ERAs to another. For example, if you set this to `835: Health Care Claim Payment/Advice`, Stedi only sends events for processed 835 ERAs to your endpoint.
* **Partnership:** This is useful if you want to send test claims to one endpoint and production claims to another. For example, if you set this to `local-clearinghouse-test`, Stedi only sends events for test claims to your endpoint.

<Note>
  The **Guide**, **Connection**, and **Mode** filters are not relevant to claims
  processing.
</Note>

### Event schema [#event-schema]

All Stedi events follow a standard JSON Schema. The event payload itself does not include the contents of a given file or transaction. Instead, it references an API path to retrieve the entire object.

```json JSON event structure example
{
  "version": "0",
  "id": "8a9fc08a-24b2-4eeb-af7c-f96376ea471e",
  "detail-type": "transaction.processed.v2",
  "source": "stedi.core",
  "account": "<ACCOUNT_ID>",
  "time": "2021-11-12T00:00:00Z",
  "region": "us-east-1",
  "resources": [
    "https://core.us.stedi.com/2023-08-01/transactions/3543b3f7-0d78-48cc-97c3-ac145e250a1d"
  ],
  "detail": { ... }
}
```

In addition to their `version`, `id`, and `time`, events have the following properties:

* **`detail-type`** - Indicates the type of event, such as `transaction.processed.v2` or `file.failed.v2`.
* **`source`** - Indicates the component that generated the event. All events use `source: "stedi.core"`.
* **`account`** - The account ID that generated the event.
* **`region`** - The AWS region where the event was generated.
* **`resources`** - The URL to the resource that Stedi created. This could be a transaction or a file execution, depending on the event type.
* **`detail`** - The JSON payload. The schema for each payload is determined by the `detail-type`.

## HTTP response codes [#http-response-codes]

Stedi considers a `2xx` response a success, and marks any other response as a failure.

Stedi retries events associated with status codes other than `2xx` for up to 4 times with a 90 second wait period inbetween retries.

If the maximum number of retries has been exhausted, Stedi adds the event to the [error queue](#error-queue) for the webhook.

You can set the **Concurrency** when configuring the webhook to prevent throttling. This setting determines the maximum number of deliveries that Stedi will attempt to deliver to the endpoint at one time.

## Certificates [#certificates]

Webhooks only support valid, publicly trusted certificates. Self-signed certificates or certificates from private certificate authorities aren't supported.

You'll receive the following error if the endpoint configured for the webhook uses a certificate that isn't signed by a known, trusted certificate authority:

```
"awsResponse": "Unable to invoke ApiDestination endpoint: API destination endpoint cannot be reached."
```

## Timeouts [#timeouts]

The target endpoint must respond with a `2xx` status code within 5 seconds, or the event will be counted as a failed delivery.

<Note>
  This is a hard limit that cannot be increased or configured.
</Note>

Because of this timeout limitation, we recommend designing your webhook endpoints to immediately acknowledge receipt with a `2xx` response, then process the data asynchronously. See [Best practices for webhook endpoints](#best-practices-for-webhook-endpoints).

## Retries and duplicate deliveries [#retries-and-duplicate-deliveries]

When a delivery fails, Stedi will retry up to 4 times every 90 seconds. After the fifth retry, Stedi moves the event to the error queue.

If your webhook doesn't respond within 5 seconds, Stedi marks that as a failure and then automatically retries. This can result in duplicate deliveries.

<Warning>
  We strongly recommend using idempotency in your webhook receivers to safely
  handle duplicate deliveries. See [Best practices for webhook endpoints](#best-practices-for-webhook-endpoints).
</Warning>

## Error queue [#error-queue]

Each webhook includes an error queue. Each item in the queue consists of the original event that was attempted to be delivered. This ensures if the target service has some downtime, or anything else goes wrong, the missed events can be retried later. The error queue retains items for 14 days.

The order of the error queue is not guaranteed. The downstream service must be designed to be idempotent to handle at-least-once delivery of events, and must accept events out of order.

## Logs [#logs]

To view logs, click the webhook to go to its detail page, and then navigate to the **Logs** tab.

## Deauthorized connections [#deauthorized-connections]

If a webhook sends a message to an endpoint that returns a 401 (Unauthorized) response, the destination will be 'deauthorized'. In this state, the webhook won't be able to deliver messages.

If there is an issue with your authentication information (such as the password, API key, or OAuth settings), edit the webhook to fix it.

If the authentication information is correct, and there was a different reason for the endpoint returning a 401, you can try again by adding a temporary header. For example, `x-stedi-reauthorize` with today's date as a value. When you save, the webhook will attempt to deliver again. This header can be removed later. Editing the value of a header will also restart deliveries.

You will likely have a queue of messages to deliver, so Stedi will automatically start retrying them after you make this change. If the endpoint is still returning an invalid response, the webhook will return to `Deauthorized`.

## Best practices for webhook endpoints [#best-practices-for-webhook-endpoints]

When creating endpoints to receive webhooks from Stedi, we recommend the following architecture:

1. **Acknowledge first, process later**: Design your endpoint to immediately return a `2xx` status code to acknowledge receipt, then process the payload asynchronously.
2. **Store payloads for processing**: Capture the webhook data in a queue, database, or other storage mechanism before processing.
3. **Process asynchronously**: Handle the actual business logic in a separate process or worker after acknowledging receipt.
4. **Implement idempotency**: Use idempotency keys from the event payload to prevent duplicate processing.
   * Store the `eventId` from each webhook payload in your database
   * Before processing an incoming webhook, check if its `eventId` has already been processed
   * Design operations to be idempotent, ensuring that processing the same event multiple times doesn't cause issues (e.g., avoid incrementing counters on each processing attempt)

This architecture prevents [timeouts](#timeouts), handles potential duplicate deliveries, and allows you to process high volumes of events.

# Coordination of benefits (COB) checks
Source: https://www.stedi.com/docs/healthcare/coordination-of-benefits


Some patients have multiple health plans. For example, a dependent may have coverage with two private insurance companies through their parents. When a patient has active coverage with multiple plans, you need to know which health plan is primarily responsible for paying claims (coordination of benefits).

You can use a coordination of benefits (COB) check to determine:

* If a patient is covered by more than one health plan
* Whether there is coverage overlap between plans
* Whether coverage overlap requires coordination of benefits
* Each payer's responsibility for payment (primacy) in coordination of benefits scenarios

COB checks can help ensure that you submit claims to the correct payer and avoid claim denials. We recommend performing COB checks for all new patients who have coverage through one of Stedi's supported payers. When Stedi identifies overlapping coverage, we strongly recommend performing follow-up [eligibility checks](/healthcare/send-eligibility-checks) with each payer to verify coverage status and retrieve the patient's complete and current benefits information before you submit claims.

<Tip>
  COB checks require that you know at least one of the patient's active health
  plans. If you're unsure whether a patient has any active coverage at all, you
  can perform an [insurance discovery check](/healthcare/insurance-discovery) to
  find potential coverage.
</Tip>

## Supported payers [#supported-payers]

COB doesn't support Medicare plans. However, Stedi supports many Medicare Advantage plans. Visit the [Payer Network](https://www.stedi.com/healthcare/network?query=eyIyNzAiOnt9LCIyNzYiOnt9LCI4MzUiOnt9LCI4MzdQIjp7fSwiODM3SSI6e30sIjgzN0QiOnt9LCJDT0IiOnsiaXNTdXBwb3J0ZWQiOnRydWV9fQ%3D%3D\&page=0) for a complete list of supported payers.

## Transaction enrollment [#transaction-enrollment]

[Transaction enrollment](/healthcare/transaction-enrollment) isn't required to run COB checks through Stedi.

## How COB checks work [#how-cob-checks-work]

You submit a coordination of benefits request with information for one of the patient's health plans. The information required is similar to a standard eligibility check – first name, last name, DOB, and either member ID or SSN – and you should first run a [real-time eligibility check](https://www.stedi.com/docs/healthcare/api-reference/post-healthcare-eligibility) to ensure that the member's details are accurate.

Once you submit the request, Stedi searches a database of eligibility data from regional and national plans. This database has 245+ million patient coverage records from 45+ health plans, ASOs, TPAs, and others, including participation from the vast majority of national commercial health plans. Data is updated at least weekly to ensure accuracy.

<Warning>
  COB check results may be partial or negative and may fail to include some or all of a patient's health plans. Results depend on whether the patient's payers contribute to the COB database.
</Warning>

Stedi synchronously returns summary information about each of the patient's active health plans, whether there is coverage overlap, and, if so, the responsibility sequence number for each payer (such as primary or secondary, if that can be determined).

Once you receive the results, we strongly recommend performing follow-up [eligibility checks](/healthcare/send-eligibility-checks) with each payer to verify coverage status and retrieve the patient's complete and current benefits information before you submit claims.

## Check COB [#check-cob]

Each COB check must be for a participating health plan for which the patient has coverage. For example, if the patient has coverage from Cigna and UnitedHealthcare, a COB check to Aetna will return an error.

<Note>
  Medicare plans are not supported. However, many Medicare Advantage plans are
  supported.
</Note>

### Accurate patient data [#accurate-patient-data]

COB checks are significantly more sensitive to data accuracy than eligibility checks. To perform successful COB checks, the patient information you provide in the check **must** match the payer's data exactly.

For example, if a payer has a patient's name stored as "Jonathan Doe", they may return benefits information when you submit an eligibility check for "Jon Doe", as long as they can identify the patient through the other information provided. However, a COB request for "Jon Doe" will fail because the name doesn't match the payer's records exactly.

To avoid unnecessary COB check failures, we strongly recommend that you first submit an eligibility check request for the patient. Then use the patient's first name, last name, date of birth, and member ID from the successful eligibility response to build the COB request.

### Service type code [#service-type-code]

You can submit COB checks with the `30` service type code for Health Benefit Plan Coverage. This is the broadest service type code that covers all medical services and subtypes included in the patient's health plan.

### API submission [#api-submission]

Use the [Coordination of Benefits Check](/healthcare/api-reference/post-coordination-of-benefits) endpoint to submit COB checks programmatically. The information required in the request is similar to a standard eligibility check – first name, last name, DOB, and either member ID or SSN.

The following example shows a COB check for a dependent named Jordan Doe who has coverage with Blue Cross Blue Shield of Massachusetts (Stedi payer ID: `EWDCI`).

```bash
curl --request POST \
  --url "https://healthcare.us.stedi.com/2024-04-01/coordination-of-benefits" \
  --header "Authorization: <api_key>" \
  --header "Content-Type: application/json" \
  --data "'{
    "tradingPartnerServiceId": "EWDCI",
    "provider": {
      "organizationName": "ACME Health Services",
      "npi": "1999999984"
    },
    "subscriber": {
      "firstName": "John",
      "lastName": "Doe",
      "dateOfBirth": "1985-05-27",
      "memberId": "W000000000"
    },
    "dependent": {
      "firstName": "Jordan",
      "lastName": "Doe",
      "dateOfBirth": "2002-12-31"
    },
    "encounter": {
      "dateOfService": "2024-08-02",
      "serviceTypeCode": "30"
    }
  }'"
```

Visit [Request and response examples](/healthcare/cob-response#request-and-response-examples) to review sample COB checks for common scenarios.

#### Concurrency limit [#concurrency-limit]

Visit [Concurrency limits](/healthcare/api-reference#concurrency-limits) for more information.

### Manual submission [#manual-submission]

To prevent accidentally sending checks to unsupported payers, the Stedi portal only provides the option to perform a COB check within successful eligibility checks to supported COB payers.

To submit a new COB check through the Stedi portal:

1. Go to the [Eligibility searches](https://portal.stedi.com/app/healthcare/eligibility) page.
2. Click the eligibility check for the patient you want to check for coordination of benefits. This must be a successful eligibility check for the patient's health plan - failed checks can't be used as the basis for COB checks.
3. Click **View** to review the details of the eligibility check.
4. Click `New COB check` to open the coordination of benefits check form. Stedi prefills the patient's information from the eligibility check.

# Transaction enrollment requests
Source: https://www.stedi.com/docs/healthcare/create-manage-transaction-enrollments


An enrollment request includes the provider record, the transaction type you want to enroll, the payer you want to enroll with, and a designated contact that the payer can communicate with about the enrollment. All requests go through the same high-level [enrollment process](/healthcare/transaction-enrollment#enrollment-process) once submitted.

Developers can create enrollment requests individually in the UI, through bulk CSV import, or through the API.

<Tip>
  **Electronic Remittance Advice (ERAs):** Once enrollments are live, you'll no longer receive ERAs for that provider through your previous clearinghouse. If the payer supports it, you can specify a [requested effective date](#requested-effective-date) to help coordinate your migration to Stedi.
</Tip>

## Consider enrollment scope [#consider-enrollment-scope]

When you enroll a provider for 835 Electronic Remittance Advice (ERAs), payers can scope the enrollment in one of two ways:

* **NPI:** The payer registers only the specific National Provider Identifier (NPI) you submitted in the enrollment request. Other NPIs under the same Tax Identification Number (TIN) continue receiving ERAs through their existing clearinghouses.
* **TIN:** The payer registers all NPIs under the TIN. When you enroll one NPI, the payer switches the entire TIN to Stedi, affecting all NPIs that share that TIN.

Payers vary in how they manage enrollment scope, and this information isn't always disclosed to Stedi. For payers with TIN scope, enrolling one NPI may unintentionally enroll the other NPIs under that TIN. This means the ERAs for all of the associated NPIs will start flowing through Stedi - not just ERAs for the NPI you meant to enroll.

### Prevent disruptions [#prevent-disruptions]

To reduce the likelihood of unintentionally disrupting your workflows, we recommend:

* Enroll all NPIs that share the same TIN at the same time. This is common for hospital systems, clinic networks, or large medical groups that have multiple service locations operating under the same billing entity.
* If you need to keep some NPIs with your existing clearinghouse, contact Stedi support before submitting enrollment requests. We can help ensure the process goes smoothly.

## Submit enrollment requests [#submit-enrollment-requests]

Submit enrollment requests individually through the [Stedi portal](#individual-ui-submission), in bulk using [CSV import](#bulk-csv-import), or programmatically through the [Enrollments API](#api-submission).

### Individual UI submission [#individual-ui-submission]

Creating individual enrollment requests through the Stedi portal involves two steps: creating a provider record and submitting enrollment requests.

#### Step 1: Create a provider record [#step-1-create-a-provider-record]

You must create a provider record with the name, tax ID, NPI, and contact information of the billing provider you plan to use in claims. Stedi submits this information to the payer as part of the enrollment process.

If you're a solo provider, this is likely your information. If you're [enrolling a group practice](#practices-and-facilities-with-multiple-providers-or-locations), you only need to create provider records for the NPIs and the tax IDs you use for billing. You don't need to create provider records for individual rendering providers.

<img alt="Provider record example" src="__img0" />

To create a provider record:

1. Go to the [Providers page](https://portal.stedi.com/app/healthcare/providers).
2. Click **New provider**.
3. Enter the required information:
   * **Display name**: A name to help you identify the provider record in your account. For example, "XYZ Medical Group". We don't share this name with payers.
   * **NPI**: The National Provider Identifier (NPI) on file with the payer that you use for billing. If you're enrolling a group practice, this is typically the group's NPI.
   * **Tax ID**: The tax ID, which can be an EIN or SSN. This should be the tax ID on file with the payer that you use for billing.
   * **Contacts**: This is where the payer will send communications about the enrollment, if needed. For many providers, Stedi can fetch contact information from the NPI registry. The name and address should exactly match what the payer has on file. However, the email and phone number can be set to wherever you want to receive payer communications.
4. Click **Create provider**.

The provider record is created and appears in the list on the [**Providers** page](https://portal.stedi.com/app/healthcare/providers).

#### Step 2: Create enrollment requests [#step-2-create-enrollment-requests]

Once you've created a provider record, you can attach it to one or more enrollment requests.

<img alt="New enrollment request" src="__img1" />

To create an enrollment request:

1. Go to the [Enrollments page](https://portal.stedi.com/app/healthcare/enrollments).

2. Click **New enrollment**.

3. Complete the required information:
   * **Payer**: Select the payer you want to enroll with. Start typing the payer's name to filter the list.

   * **Provider**: Select an existing provider record. The form automatically populates the provider's information. You can choose to use an existing contact or enter new contact information for the payer to use for communications about the enrollment. Review our guidance on [provider contact information](#provider-contact) to ensure updates go to the correct location.

   * **Transaction**: Select the transaction type you want to enroll for. The form populates the list of transaction types that the payer supports, and you'll only be able to select transaction types that require enrollment.
     * **Aggregate ERAs by (optional)**: For Electronic Remittance Advice (ERA) enrollments with supported payers, you can specify an [aggregation preference](#era-aggregation-preference).

     * **Requested effective date (optional)**: For supported payers, you can specify the date you'd like the enrollment to take effect. This is helpful for coordinating the migration from your previous clearinghouse, especially for ERA enrollments. Visit [Requested effective date](#requested-effective-date) to learn more.

   * **Stedi contact person**: This is the email address where Stedi will send updates about the enrollment request. We'll use it to notify you when there are next steps and send updates on the enrollment's status. This email address can be different from the contact information you provided in the provider record. Set it to wherever you want to receive Stedi's communications about the enrollment.

4. Click **Create enrollment**. Stedi asks you to confirm the information.

5. Review the enrollment information carefully and then click **Submit enrollment**.

The enrollment request is created and appears in the list of enrollments on the [Enrollments page](https://portal.stedi.com/app/healthcare/enrollments).

### Bulk CSV import [#bulk-csv-import]

You can import enrollment requests from a CSV file. This is a great option if you need to submit many requests at once.

To submit enrollment requests through bulk CSV import:

1. Go to the [Bulk imports page](https://portal.stedi.com/app/healthcare/enrollments/bulk).
2. Click **New bulk import**. The upload page contains detailed instructions for formatting the CSV file.
3. Download the CSV template and prepare your file according to the provided instructions. We also recommend reviewing the instructions about [enrollment contact information](#enrollment-contact-information) and [practices and facilities with multiple providers or locations](#practices-and-facilities-with-multiple-providers-or-locations) to ensure your file is set up correctly.
4. Click **+ Upload file** and select your file or drag and drop your file into the **Upload CSV** section.
5. Enter a **Name** for the batch. Stedi displays this batch name in the portal, so choose something descriptive.
6. Click **Verify file**. Stedi checks for errors and flags any rows that require adjustments. If there are errors, you can either fix them and re-upload the CSV file or click **Execute import without invalid rows** to proceed with importing valid rows.
7. Click **Execute import**. Stedi processes the import and creates the enrollment requests.

You can review the status of each bulk import on the [Bulk imports page](https://portal.stedi.com/app/healthcare/enrollments/bulk). The overview shows the number of rows that were successfully imported, the number of rows that were skipped due to errors or duplicates, and the date and time of the import. Click an import to view more details and download the [import status report](#import-status-report).

Imported enrollment requests appear in the list of enrollments on the [Enrollments page](https://portal.stedi.com/app/healthcare/enrollments).

#### Importing behavior [#importing-behavior]

Stedi automatically does the following when importing enrollment requests from a CSV file:

* Creates a new provider record for each unique combination of NPI and tax ID in the CSV file. For example, these two providers would be created as separate records even though they have the same name and NPI:
  * `John Doe, NPI: 1999999984, Tax ID: 987654321`
  * `John Doe, NPI: 1999999984, Tax ID: 123456789`
    <Warning>
      When a row in your CSV file contains an NPI and tax ID that match an
      existing provider record in your account, Stedi overwrites the existing
      provider record with the information in the CSV file. Any changes (such as
      updated address or contact information) aren't automatically applied to
      existing enrollment requests for that provider, only to requests created
      after Stedi updated the record.
    </Warning>
* Creates and submits enrollment requests.
* Removes duplicate rows to prevent duplicate requests.
* Skips rows that contain errors. For example, if a row contains an invalid NPI, Stedi skips that row and imports the rest of the file. Review the import status report to understand which rows were skipped and why.

#### Import status report [#import-status-report]

After importing, you can download a report that shows the status of each row in the CSV file. For example, duplicate rows are marked as `Duplicate: Enrollment already exists` in the `result` column.

To download the report:

1. Go to the [Bulk imports page](https://portal.stedi.com/app/healthcare/enrollments/bulk).
2. Click an import to view its details.
3. Click **Download full report**.

Rows with errors display a clear inline error message to help you make the necessary adjustments. You can fix rows with errors and re-upload the CSV file as many times as needed until all imports are successful.

### API submission [#api-submission]

Creating enrollment requests programmatically through Stedi APIs involves two steps:

1. **Create a provider record:** Call the [Create Provider](/healthcare/api-reference/post-enrollment-create-provider) endpoint.
2. **Create an enrollment request:** Call the [Create Enrollment](/healthcare/api-reference/post-enrollment-create-enrollment) endpoint. You can create enrollment requests in `DRAFT` status first and change the status to `STEDI_ACTION_REQUIRED` later when you're ready to submit them to Stedi. Stedi won't process the enrollment until it is in `STEDI_ACTION_REQUIRED` status.

## Enrollment contact information [#enrollment-contact-information]

When you submit enrollment requests, you'll need to provide two types of contact information. It's important to understand the difference between them.

### Provider contact [#provider-contact]

This is where the **payer** will send communications about the enrollment, if needed.

* The name and address should match exactly what the payer has on file for the provider. Some payers reject enrollment requests with addresses that don't match their records.
* However, you may want to set the phone number or email to a different contact - for example, a credentialing or general inbox - to ensure payer communications go to the right place.
* If you're enrolling a group practice, select a single administrative entity as the contact - don't use individual provider emails.

#### Where to set [#where-to-set]

You can specify contacts on both the provider record and on the enrollment request.

* **(Optional) Provider record:** These contacts are for convenience - they allow the Stedi portal to prepopulate contact information options when you create enrollment requests manually. They aren't required when you create provider records, and they aren't automatically added to enrollment requests you submit through the portal or API.
* **(Required) Enrollment request:** You must specify a provider contact on the enrollment request. This is the information that Stedi shares with the payer when submitting the enrollment on your behalf. This contact information doesn't need to match the existing contact information on the provider record, which allows you to use different contacts for different payers as needed.

### Stedi contact email [#stedi-contact-email]

This is the email address where **Stedi** will send updates about the enrollment. It's required when you submit an enrollment request - we use it to notify you when there are next steps and send updates on the enrollment's status.

This is called the [`userEmail` property](/healthcare/api-reference/post-enrollment-create-enrollment#body.userEmail) in the Stedi API, the **user\_email** column in the CSV file for bulk imports, and the **Stedi contact person** in the UI form.

This email address can be different from the contact information you provided in the provider record. Set it to wherever you want to receive Stedi's communications about the enrollment.

## Requested effective date [#requested-effective-date]

You can specify a requested effective date for transaction enrollments. This is the date you'd like the enrollment to take effect with the payer. For example, setting this for an 835 Electronic Remittance Advice (ERAs) enrollment to a future date helps you coordinate the migration from your previous clearinghouse to Stedi.

Stedi processes enrollments accordingly, but can't guarantee that the enrollment will be effective on this exact date.

### Check payer support [#check-payer-support]

You can determine which payers support requested effective dates through the:

* [Payers API](/healthcare/api-reference/get-payer): Check the `requestedEffectiveDate` property in the transaction-specific enrollment process.
* [Payer Network](https://www.stedi.com/healthcare/network): Check the **Requested effective date** field for the transaction type.
  <img alt="Payer Network Aggregation Preferences" src="__img2" />

### Set requested effective date [#set-requested-effective-date]

To specify a requested effective date on enrollments:

* **API:** Set the [`requestedEffectiveDate` property](/healthcare/api-reference/post-enrollment-create-enrollment#body.requestedEffectiveDate) in your [Create Enrollment request](/healthcare/api-reference/post-enrollment-create-enrollment). Use YYYYMMDD format. You can submit today's date or a future date up to 6 months from today.
* **Stedi portal:** Enter a date in the **Requested effective date** field when submitting enrollments. This field is visible for supported payers once you select a transaction type.
* **CSV import:** Populate the `requested_effective_date` column in YYYYMMDD format for each enrollment. Only set this for payers that support requested effective dates.

If you include a requested effective date for an unsupported payer, Stedi rejects the enrollment request. If you don't set a requested effective date, Stedi defaults to the enrollment's submission date for submitted enrollments.

## ERA aggregation preference [#era-aggregation-preference]

835 Electronic Remittance Advice (ERAs) can contain payment and adjudication details for multiple claims.

For supported payers, you can specify an aggregation preference for grouping claim information within each ERA. This helps ensure ERAs arrive in the way your billing system expects, reducing time spent matching payments to providers or practices.

### Aggregation types [#aggregation-types]

Payers use one of the following billing provider identifiers to group claim information in ERAs:

* **NPI:** The National Provider Identifier (NPI) always uniquely identifies a single provider entity, either an individual provider or an organization. For example, a doctor employed by multiple clinics may use the same NPI to submit claims across multiple TINs.
* **TIN:** The Tax Identification Number (TIN) can be the provider's Social Security Number (SSN) or Employee Identification Number (EIN). TINs are sometimes shared across multiple billing providers within the same organization. For example, a clinic may submit claims for several doctors using a single TIN.

Most payers default to TIN-based aggregation, and not all payers support both aggregation types.

### Check payer support [#check-payer-support-1]

You can determine which aggregation types your payers support through the:

* [Payers API](/healthcare/api-reference/get-payer): Check the `supportedAggregationPreferences` array in any endpoint response.
* [Payer Network](https://www.stedi.com/healthcare/network): Check the **ERA aggregation preferences** field.
  <img alt="Payer Network Aggregation Preferences" src="__img3" />

### Set aggregation preference [#set-aggregation-preference]

To specify your aggregation preference on ERA enrollments:

* **API:** Set the [`aggregationPreference` property](/healthcare/api-reference/post-enrollment-create-enrollment#body.aggregationPreference) in your [Create Enrollment request](/healthcare/api-reference/post-enrollment-create-enrollment#body.aggregationPreference).
* **Stedi portal:** Choose an identifier in the **Aggregate ERAs by** section when submitting ERA enrollments.
* **CSV import:** Populate either the `aggregationPreferenceNpi` (10 digit string) or `aggregationPreferenceTaxId` (9 digit string) column for each enrollment.

Stedi attempts to enroll with with your specified preference, but it's not guaranteed - ultimately, the payer controls how ERAs are grouped and routed. If you don't set a preference, Stedi automatically selects a default based on the payer's supported aggregation types and the available identifiers for the provider.

When available, Stedi displays the aggregation preference on the enrollment request's details page in the Stedi portal. It's also available in Enrollment API endpoint responses in the [`aggregationPreference` property](/healthcare/api-reference/get-enrollment#response.aggregationPreference).

### Independent from scope [#independent-from-scope]

ERA aggregation preferences and [enrollment scope](#consider-enrollment-scope) are independent payer behaviors:

* **Enrollment scope:** Controls which NPIs the payer registers when you submit an enrollment request.
* **ERA aggregation:** Controls how the payer packages 835 ERAs after enrollment is complete - grouping claim information by NPI or TIN.

The payer's supported aggregation types don't indicate how they manage enrollment scope. A payer can support NPI-level aggregation preferences for 835 ERAs *and* manage enrollments at the TIN level. In these cases, specifying **NPI** as your preferred aggregation type in the enrollment request won't prevent the payer from enrolling all the NPIs associated with a specific TIN once the request is processed.

## Manage tasks and documents [#manage-tasks-and-documents]

After submitting an enrollment request, you may need to complete tasks to move the enrollment process forward. Tasks can include providing documentation, completing payer-specific requirements, or reviewing enrollment details.

Learn how to [complete enrollment tasks and manage documents](/healthcare/transaction-enrollment-tasks-documents).

## Review enrollment details [#review-enrollment-details]

You can track the status of your transaction enrollment requests from the [Enrollments page](https://portal.stedi.com/app/healthcare/enrollments) in your account.

Click an enrollment request to view its details, including:

* The provider and payer associated with the enrollment.
* The transaction types included in the enrollment.
* The current status of the enrollment.
* Any notes or instructions from Stedi or the payer.
* The history of status changes and actions taken on the enrollment.
* Enrollment documents, such as signed PDF forms.

Alternatively, you can retrieve information about enrollment requests through the [List Enrollments](/healthcare/api-reference/get-enrollment-list-enrollments) endpoint.

## Cancel enrollments [#cancel-enrollments]

You can only cancel enrollment requests that are in `DRAFT`, `STEDI_ACTION_REQUIRED`, or `PROVIDER_ACTION_REQUIRED` status. Reach out to Stedi support in Slack or Teams to cancel. Once an enrollment is canceled, Stedi sets its status to `CANCELED` and stops the enrollment process with the payer.

We can't cancel enrollments that are in `PROVISIONING` or `LIVE` status. Once an enrollment is in one of these statuses, the only way to stop 835 ERAs from coming to Stedi is to submit an enrollment through another clearinghouse.

## Notifications [#notifications]

Stedi sends in-app notifications and emails when enrollment request statuses change to `PROVISIONING`, `PROVIDER_ACTION_REQUIRED`, `LIVE`, or `REJECTED`. You can manage your [notification preferences](/healthcare/account-settings#notification-preferences) to control which notifications you receive.

* **In-app notifications:** You'll receive an in-app notifications for these status changes. Each notification includes links to the associated enrollment requests where you can review required tasks, notes, and other details.
* **Email notifications:** Once an hour, Stedi checks for enrollment request status changes. If there are updates, Stedi sends a batched notification email with a summary of all enrollment request updates.

If you aren't receiving notifications for enrollment request updates, contact Stedi support in Slack or Teams.

## Automatic enrollment requests [#automatic-enrollment-requests]

Some payers, such as the Centers for Medicare and Medicaid Services (CMS), require enrollment for eligibility checks.

Eligibility checks fail when a provider isn't properly enrolled. In these cases, Stedi automatically submits the required transaction enrollment request. Payers typically process these requests within 1-2 days.

We support automatic enrollment requests for the following payers in the [Payer Network](https://www.stedi.com/healthcare/network):

* The Centers for Medicare and Medicaid Services (CMS) (Payer ID: `CMS`)
* CMS MBI Lookup with SSN (Payer ID: `MBILU`)
* Highmark of Pennsylvania (Payer ID: `54771`)
* Highmark Senior Health Company (Payer ID: `15460`)
* Highmark Blue Cross Blue Shield of Delaware (Payer ID: `030`)
* Highmark Blue Cross Blue Shield of West Virginia (Payer ID: `54828`)

Please note:

* If the provider's NPI isn't active in the [National Plan & Provider Enumeration System (NPPES)](https://npiregistry.cms.hhs.gov/search), or if provider name information is unavailable from NPPES, Stedi won't automatically create the enrollment. Auto-enrollment requires provider name information, which is often unavailable for deactivated NPIs.
* For CMS enrollments, the provider must also complete [attestation](#cms-attestation). Stedi adds a task to the enrollment request when attestation is required.
* For CMS enrollments, the transaction enrollment request will be rejected and set to `REJECTED` status if the provider's NPI isn't active in [PECOS](https://pecos.cms.hhs.gov/pecos/login.do#headingLv1), the system CMS uses to manage active Medicare providers. In this case, we'll send you instructions explaining how to resolve the issue.
* Stedi sets the [Stedi contact email](#stedi-contact-email) to the oldest account member with the Admin role. This is where Stedi sends enrollment status notifications.

## CMS eligibility enrollment [#cms-eligibility-enrollment]

The Centers for Medicare and Medicaid Services (CMS) requires providers to complete attestation, also called HETS EDI Enrollment, before running Medicare eligibility checks. Attestation confirms that clearinghouses like Stedi have authorization to conduct eligibility checks on the provider's behalf. This requirement applies only to traditional Medicare, not Medicare Advantage (Part C) or Part D plans.

### How attestation works [#how-attestation-works]

Attestation is required for each billing National Provider Identifier (NPI) enrolled with CMS for eligibility checks. Stedi can't complete this step on the provider's behalf, and there is no bulk attestation across NPIs. The process takes approximately 5-15 minutes per NPI.

When you submit a CMS eligibility check enrollment request, Stedi moves the enrollment to the **Provider Action Required** status and adds an enrollment task to complete attestation. The task contains instructions for completing attestation. After the provider completes attestation, they can start submitting eligibility checks immediately, even if the enrollment status is not yet **Live**.

CMS rejects Medicare eligibility requests from providers who haven't completed attestation using `AAA` error code `41`.

You can view the attestation task and its status in:

* The **Tasks** section of the enrollment request's details page in the Stedi portal.
* The `tasks` object array of the [List Enrollments](/healthcare/api-reference/get-enrollment-list-enrollments) and [Retrieve Enrollment](/healthcare/api-reference/get-enrollment) API responses.

## Enrollments hub [#enrollments-hub]

Our network and enrollment operations team knows the nuances of each payer's enrollment requirements and maintains a public repository of payers that require additional steps through our [Transaction Enrollments Hub](https://enrollments.stedi.com).

## Practices and facilities with multiple providers or locations [#practices-and-facilities-with-multiple-providers-or-locations]

Some healthcare organizations operate multiple facilities or practices under a shared structure. This is common in hospital systems, clinic networks, or large medical groups where multiple service locations operate under the same billing entity.

Transaction enrollment requires the billing provider's tax ID and NPI that you plan to use in claims and Electronic Remittance Advice (ERAs). When providers in a healthcare organization all use the same group NPI and tax ID for billing, we recommend:

* Create a single provider record with that NPI and the tax ID. You don't need to create provider records for individual rendering providers.
* Create enrollment requests with the billing provider record attached. You don't need to submit additional enrollment requests for individual rendering providers. Select a single administrative entity as the contact - don't include individual provider emails. This should be a credentialing or general inbox.
* Use the taxonomy code that matches the billing provider's credentials when submitting claims.

# Credentialing and enrollment
Source: https://www.stedi.com/docs/healthcare/credentialing-and-enrollment


Healthcare providers may need to complete three distinct enrollment processes to work with payers and send transactions through clearinghouses. Which processes are required depends on the payer and the types of transactions the provider wants to send and receive.

* **Credentialing:** Validating a healthcare provider's qualifications
* **Payer enrollment:** Registering a credentialed provider with a specific payer's health plan(s)
* **Transaction enrollment:** Registering a provider to send and receive EDI transactions (such as claims and eligibility checks) through a specific clearinghouse with a specific payer

These enrollments typically happen in sequence: first credentialing, then payer enrollment, and then transaction enrollment, although credentialing and payer enrollment are sometimes combined into a single process.

<Tip>
  Stedi specifically handles [transaction
  enrollment](/healthcare/transaction-enrollment), the final step needed to
  exchange eligibility and claims transactions through our clearinghouse. Stedi
  doesn't handle credentialing or payer enrollment, which providers must
  complete directly with each payer or through a specialized credentialing
  service.
</Tip>

## Credentialing [#credentialing]

Credentialing is the process of validating a healthcare provider's qualifications, including:

* Verification of education, training, and licensure
* Review of board certifications and medical specialties
* Confirmation of work history and malpractice insurance
* Review of any sanctions, restrictions, or malpractice claims

Credentialing establishes that a provider meets the payer's standards for providing care to their members. Once credentialed, a provider becomes eligible to join the payer's networks. Some payers have multiple networks and those networks may contain multiple tiers of providers. In order to actually join a network, the payer may require the provider to agree to a rate schedule and sign a contract with other terms.

**Timeline:** Credentialing typically takes 90-180 days to complete.

**Who handles it:** Providers must complete credentialing directly with each payer or through a specialized credentialing service. &#x2A;*Stedi doesn't handle the credentialing process.**

There are several third-party vendors you can use for credentialing, including:

* [Assured](https://www.withassured.com/) - An AI-powered platform for provider network management, including automated credentialing, licensing, and payer enrollment.
* [Medallion](https://medallion.co/) - An all-in-one provider data network management platform to automate credentialing, payer enrollment, monitoring, and licensing.
* [Verifiable](https://verifiable.com/) - An API-first platform for credentialing, plus an AI agent designed to automate end-to-end credentialing with human oversight.

<Tip>
  There is a subset of eligibility payers who require credentialing but not transaction enrollment. If you get [`AAA` errors](/healthcare/eligibility-troubleshooting#payer-aaa-errors) in the `4x` range (such as `43`), the provider may need to complete credentialing with the payer even if transaction enrollment isn't required. Contact the payer to resolve.
</Tip>

## Payer enrollment [#payer-enrollment]

Payer enrollment (also called provider enrollment) is the process of registering a credentialed provider with a specific payer's health plan(s). This involves:

* Submitting applications to payers for specific lines of business (Medicare, Medicaid, commercial plans)
* Providing information about the provider's practice, such as locations and billing details
* Establishing contract terms for services and reimbursement rates
* Setting up payment arrangements

Payer enrollment establishes a business relationship between the provider and the payer. Once enrolled, the provider can submit claims to the payer and receive payments for services provided to the payer's members. (Payers might also accept at least certain types of claims from non-enrolled providers subject to legal requirements and plan rules.)

**Timeline:** Payer enrollment typically takes 60-120 days after credentialing is complete. However, this process is sometimes combined with or conducted in parallel with the credentialing process.

**Who handles it:** Providers must complete payer enrollment directly with each payer. &#x2A;*Stedi doesn't handle the payer enrollment process.**

## Transaction enrollment [#transaction-enrollment]

Transaction enrollment is the process of registering a provider to send and receive electronic EDI transactions (such as claims and eligibility checks) through a specific clearinghouse with a specific payer. Once enrolled, the provider can send and receive specific transactions with the payer through the clearinghouse.

Transaction enrollment involves:

* Submitting the provider's name, tax ID (EIN / TIN), NPI, billing address, and contact information
* Specifying which transaction types, such as claims, eligibility checks, and Electronic Remittance Advice (ERAs), the provider wants to exchange electronically
* Setting up the necessary technical connections between the clearinghouse and payer

All payers require providers to complete transaction enrollment before receiving ERAs because ERAs can only be sent to a single clearinghouse. When you submit an ERA enrollment in Stedi, it overrides the provider's existing ERA routing.

A much smaller number of payers also require transaction enrollment before providers can start submitting other transaction types, such as claims and eligibility checks.

**When it's required:** Check the [Payer Network](https://www.stedi.com/healthcare/network) to determine whether your payers require enrollment for the transaction types you want to send and receive. If the network says enrollment isn't required, then you can start sending those transactions right away - no transaction enrollment needed. However, you'll still need to include the provider's information (like their [NPI](/healthcare/national-provider-identifier)) in API requests when required.

**Timeline:** Transaction enrollment typically takes 2-6 weeks, depending on the payer.

**Who handles it:** Stedi handles the transaction enrollment process on behalf of providers. Visit [Transaction enrollment](/healthcare/transaction-enrollment) to learn how to complete transaction enrollment through Stedi.

<Warning>
  Transaction enrollment is specific to each clearinghouse. If you switch from
  another clearinghouse to Stedi, you'll need to complete transaction enrollment
  through Stedi even if you were previously enrolled with the same payer through
  a different clearinghouse.
</Warning>

# Active coverage, eligibility dates, plan details
Source: https://www.stedi.com/docs/healthcare/eligibility-active-coverage-benefits


After you send a successful eligibility or insurance discovery check, the payer sends back an X12 271 eligibility response containing the patient's benefits information. Stedi transforms the 271 response from the original X12 EDI into JSON, making it easier to read, understand, and ingest into your system.

You can find the full benefits response shape in the [Real-Time Eligibility Check](/healthcare/api-reference/post-healthcare-eligibility) and [Insurance Discovery Check](/healthcare/api-reference/post-insurance-discovery) API references. This documentation describes how to use the eligibility response to determine the patient's active coverage, plan details, and specific benefits.

<Tip>
  New to eligibility? Check out these blogs:

  * [How to read a 271 eligibility response in plain English](https://www.stedi.com/blog/how-to-read-a-271-eligibility-response-in-plain-english)
  * [What you can (and can't) reliably get from a 271 eligibility response](https://www.stedi.com/blog/what-you-can-reliably-get-from-a-271-eligibility-response)
  * [How to deal with gaps in eligibility responses](https://www.stedi.com/blog/how-to-deal-with-gaps-in-eligibility-responses)
</Tip>

## Does the patient have coverage for the requested service? [#does-the-patient-have-coverage-for-the-requested-service]

You need two key pieces of information to determine whether the patient's health plan covers the requested service. The patient has coverage when:

1. The date of service is within the [eligibility period](#when-is-the-patient-eligible-for-benefits) for their health plan.
2. They have [active coverage](#active-and-inactive-coverage) for the applicable [service type code](#service-type-codes).

Once you know that the patient has coverage, you can determine [patient responsibility](/healthcare/eligibility-patient-responsibility-benefits), or how much the patient will pay for the service. For example, you can determine the patient's co-payment, deductible, and out-of-pocket maximum.

## When is the patient eligible for benefits? [#when-is-the-patient-eligible-for-benefits]

The `planDateInformation` object contains dates related to the patient's coverage under their health plan. Most commercial payers only return information for the current calendar year.

You can use these dates to determine the patient's eligibility for benefits.

* The dates in `planDateInformation` apply to every benefit within the patient's health plan unless specifically overridden within a `benefitsInformation[].benefitsDateInformation` object. Visit [Benefit-specific eligibility dates](#benefit-specific-eligibility-dates) for more details.
* The patient likely doesn't have active coverage if the date of service is after the earliest ending `plan`, `eligibility` `planEnd`, `eligibilityEnd`, `policyEffective`, or `policyExpiration` value.

The following example shows part of the benefits response for a health plan that began on January 1, 2024 and ended on December 31, 2024. The patient was eligible for benefits under that health plan starting on January 2, 2024.

{/* schema:PlanDateInformation:unwrap */}

```json
"planDateInformation":
  {
    "planBegin": "20240101",
    "planEnd": "20241231",
    "eligibilityBegin": "20240102"
  }
```

### Plan dates for dependents [#plan-dates-for-dependents]

Dependents can have different coverage dates than the subscriber due to qualifying life events, such as starting a new job or passing the age limit for coverage through their parent's plan.

When the patient is a dependent, and the payer sends back date(s) that are different for the subscriber and dependent, Stedi includes only the dates for the dependent and omits the subscriber's date(s).

## What are the patient's benefits? [#what-are-the-patients-benefits]

The vast majority of the information you need to determine a patient's benefits under their health plan is contained in the `benefitsInformation` array. Each object in this array contains information about a specific benefit type, such as co-payments, deductibles, and exclusions.

The `benefitsInformation[].code` property indicates the type of benefits information described in the `benefitsInformation` object. Sometimes, the code simply indicates that the patient has active coverage for the `serviceTypes` listed. For example, the following excerpt shows a member with active coverage for service type code `30` (Health Benefit Plan Coverage).

{/* schema:BenefitsInformation */}

```json
{
  "code": "1",
  "name": "Active Coverage",
  "serviceTypeCodes": ["30"],
  "serviceTypes": ["Health Benefit Plan Coverage"],
  "planCoverage": "Open Access Plus",
  "additionalInformation": [
    {
      "description": "Complete Care Management"
    }
  ]
}
```

In other array entries, the code indicates that the `benefitsInformation` object contains details about specific benefits, such as co-payments, deductibles, and exclusions.

The following example shows a patient's co-payment for psychiatric, psychotherapy, and social work in-office visits.

* The copayment is $20 for providers considered in-network, as indicated by the `Y` in the `inPlanNetworkIndicatorCode` property.
* Note that the `inPlanNetworkIndicatorCode` doesn't tell you whether the provider that requested the eligibility check is in-network for the health plan, so you shouldn't assume a $20 copay for that provider until you can verify that they are in-network. Visit [Provider network status, authorizations, referrals](/healthcare/eligibility-network-status-authorization-referrals) for more details about verifying a provider's network status.

{/* schema:BenefitsInformation */}

```json
{
  "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": "ZZ",
    "industryCode": "Office"
  },
  "eligibilityAdditionalInformationList": [
    {
      "codeListQualifierCode": "ZZ",
      "industryCode": "Office"
    }
  ]
}
```

### Active and inactive coverage [#active-and-inactive-coverage]

You can quickly determine whether a patient has active coverage for specific service types when the `benefitsInformation[].code` is set to values `1` - `5`. The following example shows a member with active coverage for service type code `30` (Health Benefit Plan Coverage).

{/* schema:BenefitsInformation */}

```json
{
  "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"
  }
}
```

Likewise, you can quickly determine when a patient has inactive coverage for a service type when the `benefitsInformation[].code` is set to values `6` - `8`. The following example shows a member with inactive coverage for service type code `30` (Health Plan Benefit Coverage).

{/* schema:BenefitsInformation */}

```json
{
  "code": "6",
  "name": "Inactive",
  "serviceTypeCodes": ["30"],
  "serviceTypes": ["Health Benefit Plan Coverage"],
  "inPlanNetworkIndicatorCode": "W",
  "inPlanNetworkIndicator": "Not Applicable"
}
```

You can also assume the patient has active coverage for a service type when the response includes benefits information for that service type. This applies even if there is no explicit `benefitsInformation` object with `code` = `1` - `5`.

For example, if the response contains a `benefitsInformation` object with `code` = `B` (Co-Payment) for service type code `30`, you can assume active coverage for that service type.

### Benefit type codes [#benefit-type-codes]

The benefit type code indicates the type of benefit described in the `benefitsInformation` object, such as co-payments, deductibles, and exclusions. The benefit type code is different from the service type code, which indicates the type of service covered by the benefit. Payers may send multiple `benefitsInformation` objects for the same service type code with different benefit type codes to communicate different aspects of the benefits.

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

<Accordion title="Benefit type code list" id="benefit-type-code-list">
  * `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` - Inactive - Pending Investigation
  * `A` - [Co-Insurance](/healthcare/eligibility-patient-responsibility-benefits#co-insurance)
  * `B` - [Co-Payment](/healthcare/eligibility-patient-responsibility-benefits#co-payment)
  * `C` - [Deductible](/healthcare/eligibility-patient-responsibility-benefits#deductible)
  * `CB` - Coverage Basis
  * `D` - Benefit Description
  * `E` - Exclusions
  * `F` - Limitations
  * `G` - [Out of Pocket (Stop Loss)](/healthcare/eligibility-patient-responsibility-benefits#out-of-pocket-stop-loss)
  * `H` - Unlimited
  * `I` - Non-Covered
  * `J` - [Cost Containment](/healthcare/eligibility-patient-responsibility-benefits#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](/healthcare/eligibility-patient-responsibility-benefits#spend-down)
</Accordion>

#### Code `V` - Cannot Process [#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.

### Service type codes [#service-type-codes]

The `benefitsInformation[].serviceTypeCodes` property contains the service type codes (STCs) that apply to the benefit.

You should review the [STC list](/healthcare/eligibility-stc-procedure-codes#full-stc-list) to determine which STCs are relevant to the benefits you're interested in and check for all of them in the response. This is helpful because the payer may return relevant benefits under a different STC than the one you submitted. For example, mental health benefits are typically returned with STC `MH` (Mental Health), but some payers may use other STCs, such as `BH` (Behavioral Health), `A4` (Psychiatric) or `SA` (Substance Abuse) for related services.

You should also check all `benefitsInformation` objects with relevant `serviceTypeCodes` values because the same STC is typically repeated across multiple `benefitsInformation` objects in the response.

* Each object communicates a different aspect of benefits, such as coverage status, co-pays, or deductibles.
* Payers also use multiple objects to describe different subsets of services within an STC. For example, the `MH` STC might have one entry for standard therapy and another that notes coverage for other treatments. Descriptions typically appear in entries with code: `"1" (Active Coverage)` or code: `"D" (Benefit Description)`, but they can appear in other entries as well.

**Example**

The following three `benefitsInformation` objects all have the same `serviceTypeCodes` value of `CF`, which corresponds to `Mental Health Provider - Outpatient`. However, the `code` property is different for each object, indicating that they describe different aspects of the benefits:

* The first object has `code` = `1`, indicating that the patient has active coverage for outpatient mental health services.
* The second object has `code` = `C`, indicating that the patient has a $1000 deductible for outpatient mental health services.
* The third object has `code` = `D`, indicating that the patient has a benefit description that qualifies the coverage for outpatient mental health services.

{/* schema:BenefitsInformation:unwrapArray */}

```json
"benefitsInformation": [
  {
    "code": "1",
    "name": "Active Coverage",
    "serviceTypeCodes": ["CF"],
    "serviceTypes": [
      "Mental Health Provider - Outpatient"
    ],
    "timeQualifierCode": "23",
    "timeQualifier": "Calendar Year",
    "inPlanNetworkIndicatorCode": "Y",
    "inPlanNetworkIndicator": "Yes",
    "additionalInformation": [
      {
        "description": "INCLUSIONS SPEECH/PHYSICAL/OCCUPATIONAL THERAPY; APPLIED BEHAVIOR ANALYSIS (ABA)"
      }
    ]
  },
  {
    "code": "C",
    "name": "Deductible",
    "serviceTypeCodes": ["CF"],
    "serviceTypes": [
      "Mental Health Provider - Outpatient"
    ],
    "benefitAmount": "1000",
    "timeQualifierCode": "23",
    "timeQualifier": "Calendar Year",
    "inPlanNetworkIndicatorCode": "Y",
    "inPlanNetworkIndicator": "Yes"
  },
  {
    "code": "D",
    "name": "Benefit Description",
    "serviceTypeCodes": ["CF"],
    "serviceTypes": [
      "Mental Health Provider - Outpatient"
    ],
    "additionalInformation": [
      {
        "description": "EXCLUSIONS: DEVELOPMENTAL TESTING, EDUCATIONAL THERAPY"
      }
    ]
  }
]
```

### Benefit-specific eligibility dates [#benefit-specific-eligibility-dates]

When present, the `benefitsInformation[].benefitsDateInformation` object contains dates that determine the patient's eligibility for a specific type of benefits. You should use these dates to determine the patient's eligibility for that specific benefit type instead of the dates in the `planDateInformation` object.

Payers send benefit-specific dates when certain benefits within a plan have different activation rules or waiting periods than the overall plan coverage. This can happen in a variety of scenarios, including:

* Employers may offer plans with benefits that activate based on employment duration or role. For example, Medical coverage may start on your hire date, but life insurance or disability coverage begins after 90 days.
* Some plans require a delay before certain benefits start, even though your general plan is active. For example, dental insurance may have a 6-month waiting period for major services (like crowns), but basic services (like cleanings) are covered immediately.
* Some government programs like Medicare split coverage (Part A, B, D, etc.), each with its own effective date.
* You may switch plans during open enrollment, and new benefits might have different effective dates.

### Carveout benefits [#carveout-benefits]

A carveout is when the primary payer for a plan lets another entity handle certain benefits. Carveout administrators often specialize in benefits for a particular service, such as mental health services or pharmacy benefits. For example, many Blue Cross Blue Shield (BCBS) plans carve out mental (behavioral) health benefits to Magellan, a mental health payer.

Carveouts are part of a single health plan, so they're different from secondary or tertiary insurance coverage. A patient can have carveout benefits for their primary plan and still have secondary insurance coverage through other payers.

Most payers omit carveout benefits from eligibility responses, but many include the carveout administrator's information.

#### Carveout administrator information [#carveout-administrator-information]

Don't rely on `benefitsRelatedEntities[].entityIdentifier` to identify carveout administrators because the value can vary between payers.

Instead, look for a `benefitsInformation` object that has:

* `code` = `U` (Contact Following Entity for Eligibility or Benefit Information) or `code` = `1` (Active coverage).
* `serviceTypeCodes` with [related STCs](#service-type-codes).
* a `benefitsRelatedEntities` object containing contact information. If present, `benefitsRelatedEntities[].entityIdentificationValue` contains the patient's member ID for the carveout administrator.

You should also examine `benefitsInformation` objects with `code` = `D` (Benefit Description). The `additionalInformation[].description` property may contain relevant details.

The following example shows a benefits response for a patient whose mental health benefits (`serviceTypeCodes` = `MH`) are handled by a third-party administrator called Acme Health Payer. The `description` property in the second object indicates that these benefits are managed separately.

{/* schema:BenefitsInformation:unwrapArray */}

```json
"benefitsInformation": [
  {
    "code": "U",
    "serviceTypeCodes": [
      "MH"
    ],
    "benefitsRelatedEntities": [
      {
        "entityIdentifier": "Third-Party Administrator",
        "entityType": "Non-Person Entity",
        "entityName": "Acme Health Payer",
        "entityIdentificationValue": "123456789",
        "contactInformation": {
          "contacts": [
            {
              "communicationMode": "Telephone",
              "communicationNumber": "1234567890"
            }
          ]
        }
      }
    ]
  },
  {
    "code": "D",
    "serviceTypeCodes": ["MH"],
    "additionalInformation": [
      {
        "description": "BEHAVIORAL HEALTH MANAGED SEPARATELY"
      }
    ]
  }
]
```

#### Get carveout benefits details [#get-carveout-benefits-details]

When payers return carveout administrator information, you can:

1. Get the carveout administrator's payer ID from the [Payer Network](https://www.stedi.com/healthcare/network) or [Search Payers](/healthcare/api-reference/get-search-payers) endpoint.
2. Get the patient's member ID for the carveout administrator. It's in the `benefitsRelatedEntities[].entityIdentificationValue` property, if present.
3. Send a second eligibility check to the carveout administrator.

If you use the right STC, many carveout admins will return the missing carveout benefits. The STC may differ from the one you sent to the primary payer. Visit [STCs and procedure codes](/healthcare/eligibility-stc-procedure-codes) for tips on choosing the right STC.

If the primary payer doesn't return the carveout administrator's details, you can try checking the patient's member ID card. The back of the card often lists the carveout administrator's name and contact information. You can also try calling the primary payer and checking their website or portal.

### Pharmacy benefits [#pharmacy-benefits]

Some payers include benefits for STC `88` (Pharmacy) in eligibility responses, but these benefit entries usually only indicate that pharmacy coverage exists with `code` = `1` (Active coverage). They often don't include specific benefit details.

The following example shows a `benefitsInformation` object indicating that the patient has active pharmacy benefits.

{/* schema:BenefitsInformation */}

```json
{
  "planCoverage": "Advantage Pharmacy",
  "serviceTypes": ["Pharmacy"],
  "serviceTypeCodes": ["88"],
  "code": "1",
  "name": "Active Coverage"
}
```

However, some payers do return specific pharmacy benefit details, such as co-payments and out-of-pocket maximums. The following example shows a patient's [out of pocket (stop loss)](/healthcare/eligibility-patient-responsibility-benefits#out-of-pocket-stop-loss) benefit per calendar year for pharmacy services. This is the maximum amount the patient will pay for covered pharmacy services in a year. The payer includes a note that the patient's co-payments count toward this out-of-pocket maximum.

{/* schema:BenefitsInformation */}

```json
{
  "code": "G",
  "name": "Out of Pocket (Stop Loss)",
  "coverageLevelCode": "FAM",
  "coverageLevel": "Family",
  "serviceTypeCodes": ["88"],
  "serviceTypes": ["Pharmacy"],
  "benefitAmount": "6000",
  "inPlanNetworkIndicatorCode": "Y",
  "inPlanNetworkIndicator": "Yes",
  "timeQualifierCode": "23",
  "timeQualifier": "Calendar Year",
  "additionalInformation": [
    {
      "description": "Copay does apply to member's out-of-pocket maximum"
    }
  ]
}
```

#### Pharmacy Benefits Manager [#pharmacy-benefits-manager]

Pharmacy benefits are often handled by a Pharmacy Benefits Manager (PBM), a company separate from the payer.

Information for the plan's PBM is often (but not always) returned in a `benefitsRelatedEntities` object. Don't rely solely on the `benefitsRelatedEntities[].entityIdentifier` field to identify PBMs because the value can vary between payers. Review the `entityName` and `contactInformation` to confirm that the entity is a PBM.

The following example shows a benefits response indicating that the patient's pharmacy benefits are managed by a third-party administrator called Acme Pharmacy Services.

{/* schema:BenefitsInformation */}

```json
{
  "code": "U",
  "name": "Contact Following Entity for Eligibility or Benefit Information",
  "serviceTypeCodes": ["88"],
  "serviceTypes": ["Pharmacy"],
  "benefitsRelatedEntities": [
    {
      "entityIdentifier": "Third-Party Administrator",
      "entityType": "Non-Person Entity",
      "entityName": "Acme Pharmacy Services",
      "contactInformation": {
        "contacts": [
          {
            "communicationMode": "Telephone",
            "communicationNumber": "1234567890"
          }
        ]
      }
    }
  ]
}
```

#### RxBINs and RxPCNs [#rxbins-and-rxpcns]

Pharmacy Bank Identification Numbers (RxBINs) and Processor Control Numbers (RxPCNs) tell pharmacies where to send claims. RxBINs and RxPCNs are often on the member's insurance card.

Payers don't typically include these codes in eligibility responses.

### Crossover coverage [#crossover-coverage]

Crossover coverage is the process where a primary insurance payer (usually Medicare) automatically forwards claims and related information to a secondary payer (typically Medicaid or a supplemental private insurer) after processing. When there's crossover coverage, you won't need to manually resubmit claims to the secondary payer - it happens automatically.

When the patient has crossover coverage, the eligibility response may contain information about crossover carriers, such as their names and identifiers, in the `benefitsInformation[].benefitsRelatedEntities` array. However, you **shouldn't** automatically assume the responding payer will automatically forward crossover claims to those payers.

To determine whether a claim has been sent to a crossover carrier, you must review the 835 ERA. Visit [crossover claims](/healthcare/receive-claim-responses#crossover-claims) for more details.

## What are the patient's plan details? [#what-are-the-patients-plan-details]

The following details about the patient's health plan are sometimes included in the eligibility response. Not all payers return this information, and behavior can vary by payer.

### Plan name [#plan-name]

The only standard property that contains a health plan product or program name is `benefitsInformation[].planCoverage`.

Payers are only required to provide a plan name when returning Service Type Code (STC) `30`, but the plan name itself isn't tied to any specific STC. The `benefitsInformation` array can contain many entries for multiple plans, such as medical, dental, and vision.

For example, a payer might send back multiple `benefitsInformation` objects with STC `30`. Each one can have a different `planCoverage` value. You might see `"PPO DENTAL"` in one and `"PREFERRED PROVIDER OPTION MEDICAL"` in another. This just means the member has multiple plans – a dental plan and a medical plan. Each plan gets its own set of objects.

In the following example, the plan name is `Open Access Plus`:

{/* schema:BenefitsInformation */}

```json
{
  "code": "1",
  "name": "Active Coverage",
  "serviceTypeCodes": ["30"],
  "serviceTypes": ["Health Benefit Plan Coverage"],
  "planCoverage": "Open Access Plus",
  "additionalInformation": [
    {
      "description": "Complete Care Management"
    }
  ]
}
```

You may also be able to identify the plan name through the following properties, but they're not as reliable as `planCoverage.` Payers aren't required to return information for these properties, so behavior can vary by payer or even by plan.

* Some properties may contain a name for the group (often named for the employer if they sponsor the plan), insurance policy, or network. These properties are: `groupDescription`, `planDescription`, and `planNetworkIdDescription`. These properties may be included in the `subscriber`, `dependents`, or `benefitsInformation[].benefitsAdditionalInformation` objects, depending on where the payer places this information in the benefit response.
* Some payers may send something like a plan name in `planInformation.planDescription` or as unstructured text in `benefitsInformation[].additionalInformation[].description`.

#### BCBS home plan [#bcbs-home-plan]

Many Blue Cross Blue Shield (BCBS) payers are part of the BlueCard Program, which makes it easier to run eligibility checks for patients receiving care outside their home state. With BlueCard, you can send eligibility checks to any participating BCBS payer, and BlueCard routes them to the patient's home plan for benefits verification.

For example, if you send a request to BCBS Florida for a patient covered by BCBS Alabama, the response will include benefits information from the patient's home plan BCBS Alabama.

Stedi enriches the eligibility response with information about the patient's home plan when the eligibility check includes the member's first name, last name, birthdate, and full member ID (including the 3-character BCBS alpha prefix).

In JSON responses, Stedi returns information about the patient's home plan in a `benefitsInformation[].benefitsRelatedEntities` entry. The relevant object's `entityIdentifier` property is set to `Party Performing Verification`.

{/* schema:BenefitsInformation */}

```json
{
  "code": "1",
  "serviceTypeCodes": ["30"],
  "benefitsRelatedEntities": [
    {
      "entityIdentifier": "Party Performing Verification",
      "entityType": "Non-Person Entity",
      "entityName": "Blue Cross Blue Shield of Alabama",
      "entityIdentification": "PI",
      "entityIdentificationValue": "00510BC"
    }
  ]
}
```

In X12 EDI responses, Stedi returns this information in `Loop 2120C` (Subscriber Benefit Related Entity) or `Loop 2120D` (Dependent Benefit Related Entity), depending on whether the patient is the subscriber or a dependent. The `NM1-01` composite is set to `VER` (Party Performing Verification).

```
LS*2120~
NM1*VER*2*Blue Cross Blue Shield of Alabama*****PI*00510BC~
LE*2120~
```

BCBS enrichment isn't supported when:

* The patient's member ID doesn't contain the 3-character alpha prefix.
* The patient has stand-alone vision and pharmacy cards issued through an intermediary model.
* The patient's plan is a stand-alone dental product.
* The patient is part of a Federal Employee Program (FEP). In this case, the patient has `R` before their member ID.

### Plan number [#plan-number]

A plan number is the payer's unique ID for a plan. Not all payers return the patient's plan number. When returned, it can appear in multiple places, including outside the `benefitsInformation` object. Check the following properties in order:

* [`subscriber.planNumber`](/healthcare/api-reference/post-healthcare-eligibility#response.subscriber.planNumber)
* [`benefitsInformation[].benefitsAdditionalInformation.planNumber`](/healthcare/api-reference/post-healthcare-eligibility#response.benefitsInformation.benefitsAdditionalInformation.planNumber)
* [`planInformation.planNumber`](/healthcare/api-reference/post-healthcare-eligibility#response.planInformation.planNumber)

### Group number [#group-number]

A group number is the payer's code for the employer or other party that purchased the plan. Employees on a group plan typically share the same group number, though there are exceptions. Some employers use different group numbers for different employee categories, like union members and management.

Not all payers return the patient's group number. When returned, it can appear in multiple places, including outside the `benefitsInformation` object. Check the following properties in order:

* [`subscriber.groupNumber`](/healthcare/api-reference/post-healthcare-eligibility#response.subscriber.groupNumber)
* [`benefitsInformation[].benefitsAdditionalInformation.groupNumber`](/healthcare/api-reference/post-healthcare-eligibility#response.benefitsInformation.benefitsAdditionalInformation.groupNumber)
* [`planInformation.groupNumber`](/healthcare/api-reference/post-healthcare-eligibility#response.planInformation.groupNumber)

### Medicare Advantage plans [#medicare-advantage-plans]

A Medicare Advantage plan (also known as Medicare Part C) is a type of health plan offered by private insurance companies approved by Medicare. It provides all the benefits of standard Medicare (Parts A and B) and often includes additional services such as prescription drug coverage, vision, dental, and hearing care. Medicare Advantage plans also include an annual out-of-pocket spending limit, offering financial protection beyond what standard Medicare provides.

Here's how to identify Medicare Advantage plans in eligibility responses from commercial payers and CMS.

#### Commercial payers [#commercial-payers]

A response from a commercial payer likely contains a Medicare Advantage plan when it has any of the following properties:

* `benefitsInformation[].insuranceTypeCode` = `MA` or `MB` which correspond to `benefitsInformation[].insuranceType` = `Medicare Part A` and `Medicare Part B`, respectively.
* `planInformation.hicNumber` and/or `benefitsInformation[].benefitsAdditionalInformation.hicNumber`. These properties contain the Medicare Beneficiary Identifier (MBI), so if either of these are present, then it's almost certainly a Medicare Advantage plan.

Behavior varies by payer, so these properties may not always be included, even if the patient has a Medicare Advantage plan.

#### CMS [#cms]

A response from CMS likely contains a Medicare Advantage plan when it has the following properties:

* `benefitsInformation[].code` = `U` (which corresponds to `benefitsInformation[].name` = `Contact Following Entity for Eligibility or Benefit Information`) combined with `serviceTypeCodes` = `30`.
* `benefitsInformation[].additionalInformation[].description` - CMS provides what they call the MA Bill Option Code in this property.

The MA Bill Option code may be one of two sets of values, depending on whether the Medicare beneficiary is locked in. When a Medicare beneficiary is locked in, they can only make changes to their coverage during specific times of the year, unless they qualify for a Special Enrollment Period (SEP).

In the following code sets, the Fiscal Intermediary is what CMS refers to as a MAC.

{/* CMS MA Bill Option Code descriptions are verbatim; keep their modal "should". */}

{/* vale Stedi.Should = NO */}

**Medicare Beneficiary locked in to Medicare Advantage (MA)**

* `A`: Fiscal Intermediary should process all claims
* `B`: MA should process only in-plan Part A claims and in-area Part B claims
* `C`: MA should process all claims

**Medicare Beneficiary NOT locked in to Medicare Advantage (MA)**

* `1`: Fiscal Intermediary should process all claims
* `2`: MA should process only in-plan Part A claims and in-area Part B claims

{/* vale Stedi.Should = YES */}

# Eligibility code lists
Source: https://www.stedi.com/docs/healthcare/eligibility-code-lists


You may need to reference the following code lists when submitting eligibility checks through Stedi. Note that this page doesn't contain every code list in the eligibility request and response. It only contains code lists that are too long to represent clearly within the [API reference documentation](/healthcare/api-reference/post-healthcare-eligibility).

## Delivery Frequency Codes [#delivery-frequency-codes]

Returned in the `benefitsInformation[].benefitsServiceDelivery[].deliveryOrCalendarPatternCode` property. This code specifies the routine shipments, deliveries, or calendar pattern.

* `1` - 1st Week of the Month
* `2` - 2nd Week of the Month
* `3` - 3rd Week of the Month
* `4` - 4th Week of the Month
* `5` - 5th Week of the Month
* `6` - 1st & 3rd Weeks of the Month
* `7` - 2nd & 4th Weeks of the Month
* `8` - 1st Working Day of Period
* `9` - Last Working Day of Period
* `A` - Monday through Friday
* `B` - Monday through Saturday
* `C` - Monday through Sunday
* `D` - Monday
* `E` - Tuesday
* `F` - Wednesday
* `G` - Thursday
* `H` - Friday
* `J` - Saturday
* `K` - Sunday
* `L` - Monday through Thursday
* `M` - Immediately
* `N` - As Directed
* `O` - Daily Mon. through Fri.
* `P` - 1/2 Mon. & 1/2 Thurs.
* `Q` - 1/2 Tues. & 1/2 Thurs.
* `R` - 1/2 Wed. & 1/2 Fri.
* `S` - Once Anytime Mon. through Fri.
* `SG`- Tuesday through Friday
* `SL` - Monday, Tuesday and Thursday
* `SP` - Monday, Tuesday and Friday
* `SX` - Wednesday and Thursday
* `SY` - Monday, Wednesday and Thursday
* `SZ` - Tuesday, Thursday and Friday
* `T` - 1/2 Tue. & 1/2 Fri.
* `U` - 1/2 Mon. & 1/2 Wed.
* `V` - 1/3 Mon., 1/3 Wed., 1/3 Fri.
* `W` - Whenever Necessary
* `X` - 1/2 By Wed., Bal. By Fri.
* `Y` - None (Also Used to Cancel or Override a Previous Pattern)

## Delivery Pattern Time Codes [#delivery-pattern-time-codes]

Returned in the `benefitsInformation[].benefitsServiceDelivery[].deliveryPatternTimeQualifierCode` property. This code specifies the time for routine shipments or deliveries.

* `A` - 1st Shift (Normal Working Hours)
* `B` - 2nd Shift
* `C` - 3rd Shift
* `D` - A.M.
* `E` - P.M.
* `F` - As Directed
* `G` - Any Shift
* `Y` - None (Also Used to Cancel or Override a Previous Pattern)

## Eligibility and benefit type codes [#eligibility-and-benefit-type-codes]

Returned in the `benefitsInformation[].code` property. Visit [Determine patient benefits](/healthcare/eligibility-active-coverage-benefits#benefit-type-codes) for a complete list.

## Employment Status Codes [#employment-status-codes]

Returned in the `subscriber.employmentStatusCode` and `dependents.employmentStatusCode` properties. These codes indicate the employment status of the subscriber or dependent as it relates to military service.

* `AE` - Active Reserve
* `AO` - Active Military - Overseas
* `AS` - Academy Student
* `AT` - Presidential Appointee
* `AU` - Active Military - USA
* `CC` - Contractor
* `DD` - Dishonorably Discharged
* `HD` - Honorably Discharged
* `IR` - Inactive Reserves
* `LX` - Leave of Absence: Military
* `PE` - Plan to Enlist
* `RE` - Recommissioned
* `RM` - Retired Military - Overseas
* `RR` - Retired Without Recall
* `RU` - Retired Military - USA

## Government Service Affiliation Codes [#government-service-affiliation-codes]

Returned in the `subscriber.governmentServiceAffiliationCode` and `dependent.governmentServiceAffiliationCode` properties. These codes indicate the government service affiliation of the subscriber or dependent as it relates to military service.

* `A` - Air Force
* `B` - Air Force Reserves
* `C` - Army
* `D` - Army Reserves
* `E` - Coast Guard
* `F` - Marine Corps
* `G` - Marine Corps Reserves
* `H` - National Guard
* `I` - Navy
* `J` - Navy Reserves
* `K` - Other
* `L` - Peace Corp
* `M` - Regular Armed Forces
* `N` - Reserves
* `O` - U.S. Public Health Service
* `Q` - Foreign Military
* `R` - American Red Cross
* `S` - Department of Defense
* `U` - United Services Organization
* `W` - Military Sealift Command

## Identification Code Qualifiers [#identification-code-qualifiers]

Returned in the `benefitsInformation[].benefitsRelatedEntities[].entityIdentification` object. This property designates the type of identifier in the `benefitsInformation[].benefitsRelatedEntities[].entityIdentificationValue` property.

* `24` - Employer's Identification Number
* `34` - Social Security Number
* `46` - Electronic Transmitter Identification Number (ETIN)
* `FA` - Facility Identification
* `FI` - Federal Taxpayer's Identification Number
* `II` - Standard Unique Health Identifier for each Individual in the United States
* `MI` - Member Identification Number
* `NI` - National Association of Insurance Commissioners (NAIC) Identification
* `PI` - Payor Identification
* `PP` - Pharmacy Processor Number
* `SV` - Service Provider Number
* `XV` - Centers for Medicare and Medicaid Services PlanID
* `XX` - Centers for Medicare and Medicaid Services National Provider Identifier

## Industry Codes [#industry-codes]

Returned in the `benefitsInformation[].eligibilityAdditionalInformationList[].industryCode` property when `benefitsInformation[].eligibilityAdditionalInformationList[].codeListQualifierCode` is set to `ZZ` - Mutually defined.

Visit the Centers for Medicare and Medicaid Services [Place of Service Code Set](https://www.cms.gov/medicare/coding-billing/place-of-service-codes/code-sets) for a complete list of codes and descriptions.

## Information Status Codes [#information-status-codes]

Returned in the `subscriber.informationStatusCode` and `dependents.informationStatusCode` properties. These codes report military service data.

* `A` - Partial
* `C` - Current
* `L` - Latest
* `O` - Oldest
* `P` - Prior
* `S` - Second Most Current
* `T` - Third Most Current

## Insurance Type Codes [#insurance-type-codes]

Returned in the `benefitsInformation[].insuranceTypeCode` property. These codes indicate the type of insurance policy within a specific insurance program.

* `12` - Medicare Secondary Working Aged Beneficiary or Spouse with Employer Group Health Plan
* `13` - Medicare Secondary End-Stage Renal Disease Beneficiary in the Mandated Coordination Period with an Employer's Group Health Plan
* `14` - Medicare Secondary, No-fault Insurance including Auto is Primary
* `15` - Medicare Secondary Worker's Compensation
* `16` - Medicare Secondary Public Health Service (PHS) or Other Federal Agency
* `41` - Medicare Secondary Black Lung
* `42` - Medicare Secondary Veteran's Administration
* `43` - Medicare Secondary Disabled Beneficiary Under Age 65 with Large Group Health Plan (LGHP)
* `47` - Medicare Secondary, Other Liability Insurance is Primary
* `AP` - Auto Insurance Policy
* `C1` - Commercial
* `CO` - Consolidated Omnibus Budget Reconciliation Act (COBRA)
* `CP` - Medicare Conditionally Primary
* `D` - Disability
* `DB` - Disability Benefits
* `EP` - Exclusive Provider Organization
* `FF` - Family or Friends
* `GP` - Group Policy
* `HM` - Health Maintenance Organization (HMO)
* `HN` - Health Maintenance Organization (HMO) - Medicare Risk
* `HS` - Special Low Income Medicare Beneficiary
* `IN` - Indemnity
* `IP` - Individual Policy
* `LC` - Long Term Care
* `LD` - Long Term Policy
* `LI` - Life Insurance
* `LT` - Litigation
* `MA` - Medicare Part A
* `MB` - Medicare Part B
* `MC` - Medicaid
* `MH` - Medigap Part A
* `MI` - Medigap Part B
* `MP` - Medicare Primary
* `OT` - Other | When this code is returned by Medicare or a Medicare Part D administrator, it indicates a type of insurance of Medicare Part D.
* `PE` - Property Insurance - Personal
* `PL` - Personal
* `PP` - Personal Payment (Cash - No Insurance)
* `PR` - Preferred Provider Organization (PPO)
* `PS` - Point of Service (POS)
* `QM` - Qualified Medicare Beneficiary
* `RP` - Property Insurance - Real
* `SP` - Supplemental Policy
* `TF` - Tax Equity Fiscal Responsibility Act (TEFRA)
* `WC` - Workers Compensation
* `WU` - Wrap Up Policy

## Military Service Rank Codes [#military-service-rank-codes]

Returned in the `subscriber.militaryServiceRankCode` and `dependents.militaryServiceRankCode` properties. These codes indicate the military service rank of the subscriber or dependent.

* `A1` - Admiral
* `A2` - Airman
* `A3` - Airman First Class
* `B1` - Basic Airman
* `B2` - Brigadier General
* `C1` - Captain
* `C2` - Chief Master Sergeant
* `C3` - Chief Petty Officer
* `C4` - Chief Warrant
* `C5` - Colonel
* `C6` - Commander
* `C7` - Commodore
* `C8` - Corporal
* `C9` - Corporal Specialist 4
* `E1` - Ensign
* `F1` - First Lieutenant
* `F2` - First Sergeant
* `F3` - First Sergeant-Master Sergeant
* `F4` - Fleet Admiral
* `G1` - General
* `G4` - Gunnery Sergeant
* `L1` - Lance Corporal
* `L2` - Lieutenant
* `L3` - Lieutenant Colonel
* `L4` - Lieutenant Commander
* `L5` - Lieutenant General
* `L6` - Lieutenant Junior Grade
* `M1` - Major
* `M2` - Major General
* `M3` - Master Chief Petty Officer
* `M4` - Master Gunnery Sergeant Major
* `M5` - Master Sergeant
* `M6` - Master Sergeant Specialist 8
* `P1` - Petty Officer First Class
* `P2` - Petty Officer Second Class
* `P3` - Petty Officer Third Class
* `P4` - Private
* `P5` - Private First Class
* `R1` - Rear Admiral
* `R2` - Recruit
* `S1` - Seaman
* `S2` - Seaman Apprentice
* `S3` - Seaman Recruit
* `S4` - Second Lieutenant
* `S5` - Senior Chief Petty Officer
* `S6` - Senior Master Sergeant
* `S7` - Sergeant
* `S8` - Sergeant First Class Specialist 7
* `S9` - Sergeant Major Specialist 9
* `SA` - Sergeant Specialist 5
* `SB` - Staff Sergeant
* `SC` - Staff Sergeant Specialist 6
* `T1` - Technical Sergeant
* `V1` - Vice Admiral
* `W1` - Warrant Officer

## Provider Codes [#provider-codes]

Use this code list in the request `provider.providerCode` property. Stedi also returns these values in the following response properties:

* `provider.providerCode`
* `benefitsInformation[].benefitsRelatedEntities[].providerInformation.providerCode`

These codes indicate the type of provider.

* `AD` - Admitting
* `AT` - Attending
* `BI` - Billing
* `CO` - Consulting
* `CV` - Covering
* `H` - Hospital
* `HH` - Home Health Care
* `LA` - Laboratory
* `OT` - Other Physician
* `P1` - Pharmacist
* `P2` - Pharmacy
* `PC` - Primary Care Physician
* `PE` - Performing
* `R` - Rural Health Clinic
* `RF` - Referring
* `SB` - Submitting
* `SK` - Skilled Nursing Facility
* `SU` - Supervising

## Quantity Qualifier Codes [#quantity-qualifier-codes]

Returned in the `benefitsInformation[].quantityQualifierCode` property. These codes provide more information about the type of quantity.

* `8H` - Minimum
* `99` - Quantity Used
* `CA` - Covered - Actual
* `CE` - Covered - Estimated
* `D3` - Number of Co-insurance Days
* `DB` - Deductible Blood Units
* `DY` - Days
* `HS` - Hours
* `LA` - Life-time Reserve - Actual
* `LE` - Life-time Reserve - Estimated
* `M2` - Maximum
* `MN` - Month
* `P6` - Number of Services or Procedures
* `QA` - Quantity Approved
* `S7` - Age, High Value | Use this code when a benefit is based on a maximum age for the patient.
* `S8` - Age, Low Value | Use this code when a benefit is based on a minimum age for the patient.
* `VS` - Visits
* `YY` - Years

## Service Type Codes [#service-type-codes]

Returned in the `benefitsInformation[].serviceTypeCodes` array.

Visit [Service Type Codes](/healthcare/eligibility-active-coverage-benefits#service-type-codes) for a complete list. This list is specific to X12 version 005010, the mandated version for eligibility checks. It differs from the current [X12 Service Type Codes](https://x12.org/codes/service-type-codes) list, which applies to X12 versions later than 005010. Payers shouldn't send service type codes not explicitly listed in version 005010.

## Time Qualifier Codes [#time-qualifier-codes]

Returned in the `benefitsInformation[].timeQualifierCode` and `benefitsInformation[].benefitsServiceDelivery[].timePeriodQualifierCode` properties. These codes provide more information about the time period to which the benefit applies.

* `6` - Hour
* `7` - Day
* `13` - 24 Hours
* `21` - Years
* `22` - Service Year
* `23` - Calendar Year
* `24` - Year to Date
* `25` - Contract
* `26` - Episode
* `27` - Visit
* `28` - Outlier
* `29` - Remaining
* `30` - Exceeded
* `31` - Not Exceeded
* `32` - Lifetime
* `33` - Lifetime Remaining
* `34` - Month
* `35` - Week
* `36` - Admission

# Provider network status, authorizations, referrals
Source: https://www.stedi.com/docs/healthcare/eligibility-network-status-authorization-referrals


You have a few options for determining whether the requesting provider is in- or out-of-network for the patient. The most reliable method is contacting the payer or provider directly.

You can also use the `benefitsInformation` objects in the eligibility response to determine whether prior authorization or a referral is required for requested services.

## Is the provider in- or out-of-network? [#is-the-provider-in--or-out-of-network]

Unfortunately, you can't reliably answer this question from a standard eligibility response.

Payers typically don't explicitly indicate whether the requesting provider is in- or out-of-network for the patient (though there are some [exceptions](#additional-network-status-details)). You also can't use the [`inPlanNetworkIndicatorCode` property](#in-plan-network-indicator) for this purpose. The `inPlanNetworkIndictorCode` indicates whether the specific benefit type applies to in- versus out-of-network, not the requesting provider.

The most reliable way to determine network status is to check directly with the payer or the provider. Note that payers may have different networks for different health plans, such as employer-sponsored plans versus Medicare Advantage, and these networks may have different contact paths.

### Payer FHIR APIs [#payer-fhir-apis]

Some payers have implemented the HL7 Da Vinci PDEX Plan Net (FHIR) API, which allows you to query directly for provider network status. Here are links to these APIs for a few large, commercial payers:

* [Aetna](https://developerportal.aetna.com/welcome)
* [Cigna](https://developer.cigna.com/docs/service-apis)
* [Humana](https://developers.humana.com/provider-directory-api/doc)
* [UnitedHealthcare](https://www.uhc.com/legal/interoperability-apis)

This is not an exhaustive list, and we provide these links for convenience and reference only. Stedi can't give any additional support on how to use third-party APIs.

### Additional network status details [#additional-network-status-details]

Some payers do provide additional information about whether the requesting provider is in- or out-of-network. They may do this through either selective inclusion of benefits in the response or through freeform messages.

#### Selective inclusion of benefits [#selective-inclusion-of-benefits]

A small subset of payers selectively include portions of the eligibility response according to the provider's network status. For example, some payers only return out-of-network benefits if the requesting provider is out-of-network. Likewise, if the provider is in-network, they only provide in-network benefits.

One example is Blue Cross and Blue Shield of New Mexico (BCBSNM). Their [270/271 Transaction Standard Companion Guide](https://www.bcbsnm.com/docs/provider/nm/nm_eligibility_benefits_270_271.pdf) states in section 5.3:

> "When local transactions are submitted, BCBSNM uses the provider type and/or provider specialty along with the providers contracting network status to determine the applicable benefits."

Stedi doesn't have a complete list of payers that selectively include or exclude benefits based on the provider's network status. The most reliable way to determine network status is to reach out to the provider or payer directly.

#### Freeform messages [#freeform-messages]

While uncommon, some payers communicate information about the requesting provider's network status using freeform messages. For example, Cigna's [270/271 Companion Guide](https://www.cigna.com/static/www-cigna-com/docs/5010-270-271-companion-guide.pdf) states:

> "When the requestor's network participation status can be determined, Cigna will send a Message on the EB1\*30 Row that indicates either the Health Care Professional (or facility) is in or out of the customer's medical network."

In Stedi's eligibility response, these types of freeform messages are typically included in the `benefitsInformation[].additionalInformation[].description` property. For example:

* `PROVIDER IS OUT NETWORK FOR MEMBER`
* `BENEFITS RETURNED BASED ON NON-AFFILIATED PROVIDER STATUS`

This `description` property may also contain information about network tier levels, since some plans have more complex benefit structures with reduced patient responsibility for higher-tier providers.

**These freeform messages are not standardized across payers and may even differ across plans for the same payer.** Again, the most reliable way to determine network status is to reach out to the provider or payer directly.

### In Plan Network Indicator [#in-plan-network-indicator]

The X12 EDI 271 eligibility response includes a data element called `EB12` (In Plan Network Indicator). Stedi represents this field as the `benefitsInformation[].inPlanNetworkIndicatorCode` property in the eligibility benefits response.

Counterintuitively, &#x2A;*this value doesn't indicate whether the provider is in- or -out-of-network for the patient's health plan.**

Instead, the `InPlanNetworkIndicatorCode` specifies whether the specific benefit type applies to in- vs. out-of-network. Most payers include information about both the patient's in- and out-of-network coverage and benefits in the response, regardless of the requesting provider's network status.

Payers can send the following `inPlanNetworkIndicatorCode` values:

* `Y` - Yes
* `N` - No
* `W` - Not Applicable | This indicates that the benefit applies to **both** in and out-of-network providers.
* `U` - Unknown | This indicates that it is unknown whether the benefits apply to in- or out-of-network providers.

The example `benefitsInformation` object below shows the patient's out-of-network deductible for the calendar year, which is $7,500. The `inPlanNetworkIndicatorCode` is `N`, indicating that the deductible is applicable to services performed by providers outside the patient's network.

{/* schema:BenefitsInformation */}

```json
{
  "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"
}
```

## Is prior authorization required? [#is-prior-authorization-required]

Prior authorization (also called pre-authorization or pre-certification) is a requirement that the patient or their provider must get approval before a payer will cover specific services, procedures, medications, or devices. Without it, the payer may deny claims.

For example, some payers require prior authorization for:

* Elective surgeries, such as joint replacements
* Advanced imaging, such as MRIs or CT scans
* Step therapy, where a patient must try lower-cost treatments before a higher-cost one is approved

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.

The following example `benefitsInformation` object shows that prior authorization is required for anesthesia services:

{/* schema:BenefitsInformation */}

```json
{
  "code": "A",
  "name": "Co-Insurance",
  "coverageLevelCode": "IND",
  "coverageLevel": "Individual",
  "serviceTypeCodes": ["7"],
  "serviceTypes": ["Anesthesia"],
  "timeQualifierCode": "23",
  "timeQualifier": "Calendar Year",
  "benefitPercent": ".20",
  "authOrCertIndicator": "Y"
}
```

If you don't receive the `benefitsInformation[].authOrCertIndicator` property in the response, you can assume that prior authorization is not required.

### Authorization notes [#authorization-notes]

Some payers may send additional notes about prior authorization rules in the `benefitsInformation[].additionalInformation[].description` property. Payers may also send these notes in a separate `benefitsInformation` object, typically with a code of `1` (Active coverage), `CB` (Coverage Benefit), or `D` (Benefit Description).

The following example shows a separate `benefitsInformation` object containing additional information about prior authorization requirements for imaging services:

{/* schema:BenefitsInformation */}

```json
{
  "code": "CB",
  "name": "Coverage Basis",
  "coverageLevelCode": "IND",
  "coverageLevel": "Individual",
  "inPlanNetworkIndicatorCode": "W",
  "inPlanNetworkIndicator": "Not Applicable",
  "additionalInformation": [
    {
      "description": "PRECERTIFICATION REQUIRED FOR PET SCANS, CT/CTA SCANS, MRI/MRA SCANS."
    }
  ]
}
```

### Handling `U` (unknown) [#handling-u-unknown]

When the `authOrCertIndicator` property is `U` (unknown), it means the payer can't determine in real time whether prior authorization is required for the service. The payer may require additional details, like diagnosis or place of service, that you can't provide using an eligibility check.

In these cases, do the following:

* Check the `benefitsInformation[].additionalInformation[].description` property for any clarification on prior authorization requirements. Also check for separate `benefitsInformation` objects that may contain `description` properties with additional information.
* Call the payer or use the payer's provider portal to see if you can get more information. You can use an AI voice agent or screen scraper to do this programmatically.
* Use a third-party prior authorization platform. Stedi's [Platform Partner directory](https://www.stedi.com/platform-partners) includes trusted vendors that can help you get prior authorization details that aren't available through an eligibility check.
* If your payer has implemented the [HL7 Da Vinci Coverage Requirements Discovery (CRD) FHIR API](https://hl7.org/fhir/us/davinci-crd/STU2/), you can query it to determine whether a specific service requires prior authorization. For example, here's the link to [Aetna's Prior Authorization APIs](https://developerportal.aetna.com/fhirapis).

### Gold carding [#gold-carding]

Some payers offer "gold carding" programs that let certain providers skip prior authorization requirements. In some cases, gold carding is required by state law.

Unfortunately, you can't reliably get a provider's gold card status from an eligibility response. If you think a provider may qualify, check directly with the payer or provider.

### Prior authorization status [#prior-authorization-status]

Payers typically don't indicate whether the requesting provider has obtained prior authorization for services that require it. Instead, they indicate whether prior authorization is required for a specific service type code (STC) or procedure code.

If you need to check the status of an existing prior authorization, contact the payer directly or use their provider portal if they have one.

## Is a referral required? [#is-a-referral-required]

A referral is a written or electronic authorization from a primary care physician (PCP) to see a specialist or receive certain services. Some health plans won't cover specialty care without a referral.

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.

## Primary care provider (PCP) [#primary-care-provider-pcp]

A primary care provider (PCP) is the main physician responsible for managing a patient's care and coordinating referrals to specialists. Some payers include the patient's PCP information in eligibility responses, but this is payer-dependent and not guaranteed.

When a payer returns PCP information, it appears in the `benefitsInformation` array.

* The `benefitsInformation[].code` is usually set to `L` (Primary Care Provider).
* The PCP's details appear in a `benefitsRelatedEntities` object with `entityIdentifier` set to `Primary Care Provider`.
* If the PCP is an individual, the response will contain their first and last name in the `entityFirstName` and `entityName`. If the PCP is an organization (not an individual), the organization name appears in `entityName`.

The following example shows a benefits response indicating the patient's assigned PCP is an organization called Acme Physician Group:

{/* schema:BenefitsInformation */}

```json
{
  "code": "L",
  "name": "Primary Care Provider",
  "serviceTypeCodes": ["30"],
  "serviceTypes": ["Health Benefit Plan Coverage"],
  "benefitsRelatedEntities": [
    {
      "entityIdentifier": "Primary Care Provider",
      "entityType": "Non-Person Entity",
      "entityName": "Acme Physician Group"
    }
  ]
}
```

# Patient responsibility
Source: https://www.stedi.com/docs/healthcare/eligibility-patient-responsibility-benefits


Some benefits require the patient to pay a portion of the cost of care, also known as patient responsibility. For example, a patient may have a co-payment for in-office visits.

## Where can I find patient responsibility? [#where-can-i-find-patient-responsibility]

You can use `benefitsInformation` objects with `benefitsInformation[].code` values `A`, `B`, `C`, `F`, `G`, and `Y` to determine the patient's financial responsibility for a given service type code (STC). These objects almost always contain either a `benefitAmount` or `benefitPercent` property that indicates the patient's responsibility.

The following example shows a sample response with three different types of patient responsibility:

* **Co-Payment:** The object with the `code` set to `B` shows that the patient's co-payment for pharmacy services is $10 for in-network providers.
* **Deductible:** The object with the `code` set to `C` shows that the patient's deductible for general medical services is $1,000 per calendar year for in-network providers.
* **Co-Insurance:** The object with the `code` set to `A` shows that the patient's co-insurance for out-of-network for dental care is 0% for a comprehensive oral evaluation. The patient is allowed one visit every 6 months, and their last visit was on April 4, 2024.

{/* schema:BenefitsInformation:unwrapArray */}

```json
"benefitsInformation": [{
    "code": "B",
    "name": "Co-Payment",
    "serviceTypeCodes": ["88"],
    "serviceTypes": ["Pharmacy"],
    "benefitAmount": "10",
    "inPlanNetworkIndicatorCode": "Y",
    "inPlanNetworkIndicator": "Yes"
  },
  {
    "code": "C",
    "name": "Deductible",
    "coverageLevelCode": "IND",
    "coverageLevel": "Individual",
    "serviceTypeCodes": ["30"],
    "serviceTypes": ["Health Benefit Plan Coverage"],
    "timeQualifierCode": "23",
    "timeQualifier": "Calendar Year",
    "benefitAmount": "1000",
    "inPlanNetworkIndicatorCode": "Y",
    "inPlanNetworkIndicator": "Yes"
  },
  {
    "code": "A",
    "name": "Co-Insurance",
    "serviceTypeCodes": ["35"],
    "serviceTypes": ["Dental Care"],
    "benefitPercent": "0",
    "inPlanNetworkIndicatorCode": "N",
    "inPlanNetworkIndicator": "No",
    "compositeMedicalProcedureIdentifier": {
      "productOrServiceIDQualifierCode": "AD",
      "productOrServiceIDQualifier": "American Dental Association",
      "procedureCode": "D0150"
    },
    "benefitsDateInformation": {
      "latestVisitOrConsultation": "20240404"
    },
    "benefitsServiceDelivery": [
      {
        "quantityQualifierCode": "VS",
        "quantityQualifier": "Visits",
        "quantity": "1",
        "timePeriodQualifierCode": "34",
        "timePeriodQualifier": "Month",
        "numOfPeriods": "6"
      }
    ]
}]
```

### Service history [#service-history]

Some benefits have frequency limits. For example, "one visit every 6 months" or "two cleanings per year." Others depend on when the patient last received the service. If the patient has already reached the allowed frequency, the next visit may not be covered. In that case, they may owe the full amount.

To estimate patient cost for these types of benefits, you'll need to look at two additional properties in the `benefitsInformation` object:

* `benefitsDateInformation`: Shows when a service (like a cleaning or exam) was last performed.
* `benefitsServiceDelivery`: Indicates how often a service is allowed, such as once every 6 months or twice per year. Many payers don't populate this field and instead return this information as free text in additionalInformation.description.

These properties show up in responses for dental, vision, and Medicaid. They also apply to some medical services, like annual wellness visits or therapy sessions.

Some plans, especially dental, apply shared frequency limits across a group of procedures. For example, a plan might allow one X-ray series per year, regardless of the procedure code used later in the claim. If a claim has already been paid for one of the codes in the group, subsequent claims for others may be denied.

## Types of patient responsibility [#types-of-patient-responsibility]

The following types of benefits indicate patient financial responsibility for care. Note that payers may respond with zero in the `benefitAmount` or `benefitPercent` properties when the patient has no responsibility.

If a particular benefit category is not applicable to a plan, the payer will often send nothing for that category rather than explicitly sending a zero benefit. For example, if a health plan has 20% co-insurance for STC `98` but no co-payment, then typically none of the `benefitsInformation` array entries for that STC will have `benefitsInformation[].code` = `B` (Co-Payment).

### Co-Insurance [#co-insurance]

Co-Insurance is indicated by `benefitsInformation[].code` = `A` and always includes a value for the `benefitsInformation[].benefitPercent` property.

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%, they would pay $20 for a treatment that costs $100. The amount of co-insurance can differ depending on whether a provider is in-network with the health plan.

### Co-Payment [#co-payment]

Co-Payment is indicated by `benefitsInformation[].code` = `B` and always includes a value for the `benefitsInformation[].benefitAmount` property.

Co-Payment represents a fixed dollar amount a patient must pay for a benefit. For example, a patient may have a $10 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.

### Cost Containment [#cost-containment]

Cost Containment is indicated by `benefitsInformation[].code` = `J` and always includes a value for the `benefitsInformation[].benefitAmount` property.

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 eligibility 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.

### Deductible [#deductible]

Deductible is indicated by `benefitsInformation[].code` = `C` and always includes a value for the `benefitsInformation[].benefitAmount` property.

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 $1,000, they will have to pay $1,000 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).

#### No deductible for specific benefits [#no-deductible-for-specific-benefits]

Some health plans list an annual deductible amount while offering a subset of benefits with a zero deductible. The most common case is preventive care benefits, which are usually required to be covered with no deductible or copay by the Affordable Care Act. For example, a High Deductible Health Plan (HDHP) may have a $3,000 annual deductible, but cover an annual wellness visit at no cost.

For benefits with a zero deductible, the patient is not required to pay any amount out of pocket before coverage begins, regardless of whether they've met their annual deductible amount. Note that a zero deductible doesn't necessarily mean that the patient will pay nothing - their health plan may still require a co-payment or co-insurance for the benefit type.

Payers may indicate that a specific benefit has a zero deductible by including a `benefitsInformation` object with `benefitsInformation[].code` = `C` and the `benefitsInformation[].benefitAmount` set to `0`. Alternatively, they may simply send a message in the `benefitsInformation[].additionalInformation[].description` property indicating that the patient has no deductible.

#### No annual deductible [#no-annual-deductible]

If the payer doesn't include a `benefitsInformation` object with `benefitsInformation[].code` = `C`, you can generally assume that the patient has no annual deductible. This behavior is common with group HMO plans, which sometimes rely only on co-insurance or co-payment for cost control, but it can also occur with other types of health plans.

Medical payers are required to return deductible information for service type code `30` (Health Benefit Plan Coverage), so if the first eligibility response for another service type code doesn't include deductible information and you suspect that a deductible may still apply, then we recommend running another eligibility check for service type code `30`.

#### Example [#example]

In the following example:

* The first object shows that the patient has $500 remaining to meet their annual deductible (`timeQualifier` = `Remaining`).
* The second object shows that the patient's annual deductible is $1,000 (`timeQualifier` = `Calendar Year`).

{/* schema:BenefitsInformation:unwrapArray */}

```json
"benefitsInformation": [{
  "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"
  }
}]
```

### Limitations [#limitations]

Limitations are indicated by `benefitsInformation[].code` = `F`. Dental and vision plans often use this benefit type to specify an annual maximum benefit amount.

The Affordable Care Act prevents most commercial health plans from imposing limits on annual or lifetime benefit amounts. However, this generally doesn't apply to government health plans and and some commercial health plans may be exempt. So we recommend checking for limitations for all plan types: medical, dental, and vision.

When present, limitations might include a value for the `benefitsInformation[].benefitAmount` property that indicates the maximum benefit amount allocated to the patient. The `description` property is also often (but not always) set to a value like "ANNUAL MAXIMUM".

The following example shows a sample response from a dental payer. The patient has an annual maximum benefit for dental care of $2,500.

{/* schema:BenefitsInformation */}

```json
{
  "timeQualifier": "Calendar Year",
  "inPlanNetworkIndicator": "Yes",
  "timeQualifierCode": "23",
  "benefitAmount": "2500",
  "code": "F",
  "coverageLevel": "Individual",
  "inPlanNetworkIndicatorCode": "Y",
  "serviceTypeCodes": ["35"],
  "additionalInformation": [
    {
      "description": "ANNUAL MAXIMUM"
    }
  ],
  "serviceTypes": ["Dental Care"],
  "name": "Limitations",
  "coverageLevelCode": "IND"
}
```

### Out of Pocket (Stop Loss) [#out-of-pocket-stop-loss]

<Warning>
   This benefits type doesn't apply to most dental plans.
</Warning>

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

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% of the allowed amount for covered services unless some other coverage limitation (code `F` [Limitations](#limitations)) applies. For example, if a health plan has a limit of 12 covered mental health visits per year, the patient may still be responsible for covering 100% of visits beyond that limit even if they have met their out-of-pocket maximum.

Most health plans are required to set an out-of-pocket maximum, but health plans with provider networks are allowed to have unlimited patient responsibility for out-of-network care. If there is no `benefitsInformation` object in the response that has `benefitsInformation[].code` = `G`, the payer is indicating that the out-of-pocket maximum is unlimited.

### Spend Down [#spend-down]

Spend Down is indicated by `benefitsInformation[].code` = `Y` and always includes a value for the `benefitsInformation[].benefitAmount` property.

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.

## When do payers return patient responsibility? [#when-do-payers-return-patient-responsibility]

Not all service type codes (STCs) require payers to return patient responsibility information. For example, health plans are required to support inquiries for the following STCs, but aren't required to return patient responsibility information for them.

* `1` - Medical Care
* `30` - Health Plan Benefit Coverage
* `35` - Dental Care
* `88` - Pharmacy
* `AL` - Vision (Optometry)
* `MH` - Mental Health

However, health plans regulated under HIPAA **must** return any applicable patient co-insurance, co-payment, or deductible amounts for the following service type codes.

* `33` - Chiropractic
* `47` - Hospital
* `48` - Hospital Inpatient
* `50` - Hospital Outpatient
* `86` - Emergency Services
* `98` - Professional (Physician) Visit – Office
* `UC` - Urgent Care

These lists don't necessarily extend to dental or vision plans. Some payers may support returning patient responsibility information for additional STCs.

## How much is left (accumulators)? [#how-much-is-left-accumulators]

Benefit types, such as deductibles, usually include accumulator data, which indicates the amount of the benefit remaining for the calendar year. In fact, the [federally mandated](https://www.caqh.org/core/operating-rules#widget_1706047899185__operating_rules_mandate) Phase II CAQH CORE 260: Eligibility & Benefits Data Content (270/271) Rule requires HIPAA-covered health plans to return remaining deductible amounts for many commonly used service type codes (STCs), including `30` (Health Benefit Plan Coverage).

When present, accumulator information is provided in a separate `benefitsInformation` object, with the `timeQualifierCode` set to `29` for `Remaining`.

The following example shows a deductible benefit (`code`: `C`) for health benefit plan coverage (STC `30`). The `timeQualifierCode` of `29` indicates that this is the remaining amount, and the `benefitAmount` of `0` indicates that the patient has already met their deductible for the year. The `inPlanNetworkIndicatorCode` of `W` indicates that this benefit is not specific to in-network or out-of-network providers.

{/* schema:BenefitsInformation */}

```json
{
  "code": "C",
  "name": "Deductible",
  "serviceTypeCodes": ["30"],
  "serviceTypes": ["Health Benefit Plan Coverage"],
  "coverageLevelCode": "IND",
  "coverageLevel": "Individual",
  "timeQualifierCode": "29",
  "timeQualifier": "Remaining",
  "benefitAmount": "0",
  "inPlanNetworkIndicatorCode": "W",
  "inPlanNetworkIndicator": "Not Applicable"
}
```

## No Surprises Act [#no-surprises-act]

The No Surprises Act is a federal law that protects patients from surprise medical bills — especially in emergency situations or when they unknowingly receive care from out-of-network providers. Under NSA, patients also have the right to a good faith estimate for non-emergency care if they're uninsured or self-pay.

The No Surprises Act bans surprise billing (also known as balance billing) in these situations:

* **Emergency Services:** Even if patients go to an out-of-network hospital or ER, they only have to pay in-network cost-sharing. This includes services at freestanding ERs and urgent care centers licensed to provide emergency care.
* **Non-Emergency Services at In-Network Facilities:** If patients go to an in-network hospital or surgery center, but an out-of-network provider (like an anesthesiologist or radiologist) treats them, they can't be charged more than their in-network rate.
* **Air Ambulance Services:** Patients are only responsible for their in-network rate.

### Does the NSA apply? [#does-the-nsa-apply]

Payers don't typically note when the NSA applies to a patient's plan in the eligibility response. However, the NSA applies to most health plans, including fully insured and self-funded employer plans. It **doesn't** apply to:

* Ground ambulance services
* Medicare, Medicaid, TRICARE, or VA patients because these programs already have their own strong balance billing protections
* Some people with health care sharing ministries or short-term limited-duration plans
* Some unlicensed or unregulated providers

## Balance Billing Protection Act [#balance-billing-protection-act]

The Balance Billing Protection Act (BBPA) is a Washington state law that protects patients from unexpected medical bills (also known as balance billing) when they receive care from out-of-network providers. It's similar to the No Surprises Act, but it applies specifically to Washington residents with state-regulated plans. It doesn't apply to self-funded employer plans unless they opt in.

The BBPA protects patients from balance billing in the following situations:

* Emergency services, even if patients are treated by an out-of-network provider or at an out-of-network facility.
* Non-emergency services at an in-network hospital or ambulatory surgical center when patients are unknowingly treated by an out-of-network provider (like an anesthesiologist or radiologist).

In these cases, the patient only pays their normal in-network cost-share (deductible, copay, coinsurance), and the provider must work out the rest with their insurer.

### Does the BBPA apply? [#does-the-bbpa-apply]

When the BBPA applies to a patient's health plan, payers are required to note this in `benefitsInformation` objects with a `benefitsInformation[].code` of:

* `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` (Inactive - Pending Investigation)

In these cases, you will see one of the following messages in the `benefitsInformation[].additionalInformation[].description` property:

> Services provided to this patient are subject to the Balance Billing Protection Act. Please see RCW 48.49.020 for details.

> Services provided to this patient are subject to the No Surprises Act. Please see RCW 48.49.020 for details.

The following example shows a `benefitsInformation` object with the BBPA message included in the `additionalInformation` array.

{/* schema:BenefitsInformation */}

```json
{
  "code": "1",
  "name": "Active Coverage",
  "serviceTypeCodes": ["30"],
  "serviceTypes": ["Health Benefit Plan Coverage"],
  "planCoverage": "Open Access Plus",
  "additionalInformation": [
    {
      "description": "Complete Care Management",
      "description": "Services provided to this patient are subject to the Balance Billing Protection Act. Please see RCW 48.49.020 for details."
    }
  ]
}
```

# Eligibility PDF
Source: https://www.stedi.com/docs/healthcare/eligibility-pdf


Stedi generates a PDF for eligibility checks with valid 271 responses. The PDF includes a summary of the request details and a human-readable version of the 271 response.

If the response contains [`AAA` errors](/healthcare/eligibility-troubleshooting#payer-aaa-errors), the PDF displays them with their possible resolutions. When an eligibility check returns benefits information, you can use the PDF to determine:

* whether the patient has active coverage with the health plan.
* whether a patient's health plan covers the requested services.
* patient responsibility amounts, such as co-pays and deductibles.
* whether prior authorization is required for specific services.

<Tip>
  Download a [sample PDF](/files/sample-eligibility-check-pdf.pdf) with test data.
</Tip>

## Retrieve the PDF [#retrieve-the-pdf]

You can retrieve the eligibility PDF by:

* Calling the [Retrieve Eligibility PDF](/healthcare/api-reference/get-eligibility-pdf) endpoint with the eligibility check's ID.
* Downloading the PDF from the eligibility check's details page within the [Stedi portal](https://portal.stedi.com/app/healthcare/eligibility). Go to the eligibility check's details page and click the **Download PDF** icon at the top.

## PDF structure [#pdf-structure]

The PDF has the following primary sections.

### Summary [#summary]

For successful eligibility checks, the summary section at the top clearly indicates whether Stedi found *any* service type codes (STCs) or procedure codes with active coverage in the response. You can then check the [benefits tables](#benefits) to determine which specific services are covered.

The summary section also shows details about the subscriber, payer, and provider. This includes plan details such as when coverage starts, the plan dates, and the group name and number.

<img alt="PDF summary coverage found" src="__img0" />

If the eligibility check response contains errors, the summary section indicates that the check was **Failed** and lists the errors with possible resolutions.

<img alt="PDF summary errors" src="__img1" />

### Benefits [#benefits]

The **Benefits** section contains tables listing all the benefits information returned in the response. Each row in the table corresponds to a specific benefit for a specific service type code (STC) or procedure code.

The benefits are grouped in two ways:

* The first grouping mechanism is the patient's health plan. Many eligibility responses only contain benefits for a single health plan, but some responses include benefits for multiple plans. For example, if the patient has both a primary health plan and a dental plan, the PDF will contain separate sections for each plan.
* Within each health plan section, benefits are further grouped by STC and procedure code.

The following example shows the patient's benefits for STC `30` (Health Benefit Plan Coverage). Note that their plan name **E20** is at the top of the section. The PDF notes that this is **Plan 1 of 1**, meaning that the payer returned information about a single health plan for this patient.

<img alt="PDF benefits table" src="__img2" />

For each STC or procedure code, the columns in the table include:

| Column                | Description                                                                                                                                                                                                                                                                                                                        |
| --------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Type**              | The type of benefit, such as co-payment, deductible, or prior authorization requirement.                                                                                                                                                                                                                                           |
| **Coverage level**    | The level of coverage for the benefit, such as Individual or Family.                                                                                                                                                                                                                                                               |
| **Network indicator** | Whether the benefit applies to in-network or out-of-network providers. Note that this column only indicates whether the benefit applies to in-network or out-of-network providers in general. It doesn't indicate whether the requesting provider is in-network or out-of-network for the patient.                                 |
| **Coverage**          | The amount or details of the benefit. For rows with the **Statuses** type, this column lists whether the patient has active coverage for that STC or procedure code. For patient responsibility rows, this column lists the amount the patient is responsible for. For example, a co-payment row may list a $20 co-payment amount. |
| **Benefit**           | Additional details about the benefit. This column includes the plan type, places of service, whether prior authorization is required, and any messages from the payer about the benefit. For example, a co-payment row may include a message that says "waived if admitted to hospital."                                           |

There may be multiple benefits for the same STC and benefit type. For example, a patient may have different co-insurance amounts for in-network and out-of-network providers or for specific services within a broader STC. The **Messages** field contains notes from the payer, which typically list limitations or conditions that apply to the benefit.

In the following example, the patient has a $200 co-payment for STC `86` (Emergency Services), but the messages indicate that this co-payment is waived if the patient is admitted to the hospital.

<img alt="PDF messages example" src="__img3" />

### Request [#request]

The final **Request** section provides a human-readable version of the original 270 eligibility check request. This helps you remember what STCs and procedure codes you requested and compare that to the benefits the payer returned in the response.

<img alt="PDF request section" src="__img4" />

## Interpret the PDF [#interpret-the-pdf]

You can use the information in the PDF to answer important questions about the patient's coverage and financial responsibility for services.

### Does the patient have coverage? [#does-the-patient-have-coverage]

The PDF indicates at the top in the **Summary** section whether there was a service type code (STC) or procedure code with active coverage returned.

<img alt="PDF active coverage" src="__img5" />

Then, you can check to see if there's a **Statuses** row for the STCs or procedure codes you care about. Typically, only broad STCs (`30` and `35` for general medical and dental coverage) will have a status.

<img alt="PDF statuses" src="__img6" />

Quick reference:

* The patient has coverage when the status is **Active coverage** for the relevant STC or procedure code. You can also assume the patient has coverage when there is no status, but benefits are listed (such as co-pay or deductible amounts).
* The patient doesn't have coverage when the status is **Inactive** for an STC or procedure code. You can also assume the patient doesn't have coverage if there are no benefits listed or the payer returned a message indicating that the service isn't covered.

### What is the patient's financial responsibility? [#what-is-the-patients-financial-responsibility]

Once you've confirmed that the patient has coverage, you may want to understand their financial responsibility for services. For example, you may want to know their co-pay amount for an in-office visit or whether they've met their deductible.

Within each STC or procedure code section, the PDF includes rows for each type of patient responsibility.

The following example shows that for STC `83` (Infertility), the patient has a yearly out-of-pocket maximum of $7,500 for individual coverage and a $15,000 out-of-pocket maximum for family coverage. They also have a co-payment of $50 for in-office visits for both in and out-of-network providers.

<img alt="PDF patient responsibility" src="__img7" />

### Is the provider in- or -out-of-network? [#is-the-provider-in--or--out-of-network]

Unfortunately, you can't reliably answer this question from a standard eligibility response. That means you also can't reliably answer this question from the generated PDF.

Payers typically don't explicitly indicate whether the requesting provider is in- or out-of-network for the patient (though there are some exceptions). The Network indicator field in the table only indicates whether the benefit applies to in-network or out-of-network providers in general. It doesn't tell you whether the requesting provider is in- or out-of-network for the patient.

Some payers do provide additional information about whether the requesting provider is in- or out-of-network. They may do this through either freeform messages or selective inclusion of benefits in the response.

For example, some payers only return out-of-network benefits if the requesting provider is out-of-network. Likewise, if the provider is in-network, they only provide in-network benefits. Stedi doesn't have a complete list of payers that selectively include or exclude benefits based on the provider's network status.

**The most reliable way to determine network status is to check directly with the payer or the provider.** Note that payers may have different networks for different health plans, such as employer-sponsored plans versus Medicare Advantage, and these networks may have different contact paths.

### Is prior authorization required? [#is-prior-authorization-required]

Prior authorization (also called pre-authorization or pre-certification) is a requirement that the patient or their provider must get approval before a payer will cover specific services, procedures, medications, or devices. Without it, the payer may deny claims.

If the payer provides prior authorization information in the eligibility response, it will be listed in the **Benefit** column for that service or procedure. The payer may also send messages about prior authorization rules.

If the payer doesn't provide prior authorization information for a service or procedure, you can assume that prior authorization isn't required.

In the following example, the patient requires prior authorization for both STC `A7` (Psychiatric - Inpatient) and STC `A8` (Psychiatric - Outpatient) services. This rule applies to both in-network and out-of-network providers.

<img alt="PDF prior authorization" src="__img8" />

# Review benefits in the Stedi portal
Source: https://www.stedi.com/docs/healthcare/eligibility-portal-benefits-view


You can review eligibility check results in the [checks view](https://portal.stedi.com/app/healthcare/eligibility/checks). For successful eligibility checks, you can use our filterable benefits table to determine benefits details such as:

* whether a patient's health plan covers the requested services.
* patient responsibility amounts, such as co-pays and deductibles.
* whether prior authorization is required for specific services.

## Eligibility check results [#eligibility-check-results]

To review an eligibility check's results:

1. Go to the [checks view](https://portal.stedi.com/app/healthcare/eligibility/checks).
2. Click the eligibility check with the patient information you want to view.

Stedi opens the eligibility check's **Overview** tab.

### Overview tab [#overview-tab]

The **Overview** tab shows details about the eligibility check.

<img alt="Eligibility search details page" src="__img0" />

If the eligibility check was successful, the **Overview** tab contains:

* The check's [result](#eligibility-check-result)
* Patient information, such as their name, date of birth, and member ID.
* The service type code(s) you requested.
* The requesting provider's information, including their name and NPI.
* The payer's information, including their name and Payer ID.
* The patient's health plan information, including the plan names, group number, and plan begin and end dates.
* Any benefits related entities, which are commonly used to designate the patient's primary care provider (PCP), another organization that handles a specific carveout benefit type (such as telehealth mental health services), or another health plan for the patient (coordination of benefits scenarios).

### Benefits tab [#benefits-tab]

The **Benefits** tab displays the patient's benefits in filterable tables. Information in the table is grouped into sections:

* The first grouping mechanism is the patient's health plan. Many eligibility responses only contain benefits for a single health plan, but some responses include benefits for multiple plans. For example, if the patient has both a primary health plan and a dental plan, the benefits view will contain separate sections listing all of the benefits for each plan.
* Within each health plan section, benefits are further grouped by service type code (STC) and procedure code so that you can easily find and review all of the benefits for a specific set of services.

<img alt="Benefits table overview" src="__img1" />

There may be multiple benefits for the same STC and benefit type. For example, a patient may have different co-insurance amounts for in-network and out-of-network providers or for specific services within a broader STC. The **Message** or **Messages** field contains notes from the payer, which typically list limitations or conditions that apply to the benefit.

In the following example, the patient has a $50 co-pay for Emergency Services (STC `86`), but the messages indicate that this co-pay is waived if the patient is admitted to the hospital.

<img alt="benefits table notes" src="__img2" />

#### Benefits filters [#benefits-filters]

Payers typically send more benefits information than you requested. You can filter the benefits table by the following criteria to review only the benefits you care about. The options for each filter type depend on the benefits data in the payer's response. For example, if the payer didn't return any family-level benefits, the **Coverage level** filter won't have a `Family` option.

{/* prettier-ignore-start */}

| Filter               | Description                                                                                                                                                                                                                                                                                                                                                                                                             |
| -------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Type                 | This is the benefit type code, such as `Co-insurance` or `Deductible`.                                                                                                                                                                                                                                                                                                                                                  |
| Coverage level       | The coverage level. This is typically either `Individual` or `Family`, but the values can vary depending on the patient's plan.                                                                                                                                                                                                                                                                                         |
| Network              | Whether the benefit applies to in-network providers, out-of-network providers, or both.<ul><li>The payer may not send this indicator for every benefit. In these cases, the **Network indicator** field in the benefits table will be `Not set`.</li><li>This field doesn't tell you whether the provider is in or out-of-network for the patient. To determine that, you must check directly with the payer.</li></ul> |
| Service or procedure | The service type code (STC) or procedure code associated with the benefit. For example, `UC` for Urgent Care or `MH` for Mental Health.                                                                                                                                                                                                                                                                                 |
| Place of service     | The names of place of service codes associated with the benefit. For example, `Emergency Room - Hospital` for service type code `23`.                                                                                                                                                                                                                                                                                   |
| Message              | Messages from the payer associated with the benefit. For example, `Co-pay waived if admitted`.                                                                                                                                                                                                                                                                                                                          |
| Plan name            | The name of the patient's health plan.                                                                                                                                                                                                                                                                                                                                                                                  |

{/* prettier-ignore-end */}

For example, to determine the patient's co-pay for urgent care visits with in-network providers, you might set the **Type** filter to `Co-payment`, the **Network** filter to `In-Network`, and the **Service or procedure** filter to `UC` or another relevant code.

### Eligibility check result [#eligibility-check-result]

An eligibility check can have one of the following results:

{/* prettier-ignore-start */}

| Status          | Description                                                                                                                         |
| --------------- | ----------------------------------------------------------------------------------------------------------------------------------- |
| **Active**      | The payer's response contains an active eligibility and benefit type.                                                               |
| **Inactive**    | The payer's response doesn't contain an active eligibility and benefit type.                                                        |
| **Investigate** | The payer returned an unexpected eligibility or benefit type code. Review the response and contact the payer if you have questions. |
| **Failed**      | The payer returned an error code in the response. Review the error code and retry the eligibility check.                            |

{/* prettier-ignore-end */}

Note that an **Active** result only indicates that there was at least one service type with active coverage in the benefits response. You must check the response details to determine whether the patient has active coverage for the services you care about.

## Does the patient have coverage? [#does-the-patient-have-coverage]

The patient has coverage when the date of service is within the plan's eligibility period, and the patient has active coverage for the relevant services. Here's how to check whether these conditions are met:

<Steps>
  <Step title="Check whether the date of service is within the eligibility period.">
    1. Go to the **Overview** tab of an eligibility check.
    2. Review any available **Plan begin** and/or **Plan end** dates.

    If the date of service is within that range, the patient may have coverage.

        <img alt="Benefits plan overview" src="__img3" />
  </Step>

  <Step title="Check whether the patient has active coverage for the requested service type code (STC) or procedure code.">
    1. Go to the **Benefits** tab.
    2. Filter by **Service / procedure** and choose the STC(s) or procedure code(s) you care about.

    The **Status** field in the **Benefit** column may show whether the patient has active coverage for the relevant STC(s) or procedure code(s). Typically, only broad STCs (`30` and `35` for general medical and dental coverage) will have a status.

    * The patient has coverage when the status is **Active coverage** for the relevant STC or procedure code. You can also assume the patient has coverage when there is no status, but benefits are listed (such as co-pay or deductible amounts).
    * The patient doesn't have coverage when the status is **Inactive** for an STC or procedure code. You can also assume the patient doesn't have coverage if there are no benefits listed or the payer returned a message indicating that the service isn't covered.

        <img alt="Benefits table statuses" src="__img4" />
  </Step>
</Steps>

<Tip>
  An eligibility check has an **Active** result when the response contains at least one active benefit type. However, you must review the benefits table to confirm that the patient has active coverage for the STCs you care about.
</Tip>

## What is the patient's financial responsibility? [#what-is-the-patients-financial-responsibility]

Once you've confirmed that the patient has coverage, you may want to understand their financial responsibility for services. For example, you may want to know their co-pay amount for an in-office visit or whether they've met their deductible.

You can use the **Type** filter on the **Benefits** tab to narrow the results to specific benefits types (such as co-pay amounts) for each STC or procedure code.

The following example shows that the patient has a 20% co-insurance for Hospital - Inpatient (STC `48`) services performed by in-network providers and a 50% co-insurance for services performed by out-of-network providers. The co-insurance amounts also apply to specific services, which are listed in the **Messages** field.

<img alt="Benefits plan overview" src="__img5" />

## Is the provider in- or out-of-network? [#is-the-provider-in--or-out-of-network]

Unfortunately, you can't reliably answer this question from a standard eligibility response.

Payers typically don't explicitly indicate whether the requesting provider is in- or out-of-network for the patient (though there are some exceptions). The **Network indicator** field in the table only indicates whether the benefit applies to in-network or out-of-network providers in general. It doesn't tell you whether the requesting provider is in- or out-of-network for the patient.

Some payers do provide additional information about whether the requesting provider is in- or out-of-network. They may do this through either freeform messages or selective inclusion of benefits in the response.

For example, some payers only return out-of-network benefits if the requesting provider is out-of-network. Likewise, if the provider is in-network, they only provide in-network benefits. Stedi doesn't have a complete list of payers that selectively include or exclude benefits based on the provider's network status.

**The most reliable way to determine network status is to check directly with the payer or the provider.** Note that payers may have different networks for different health plans, such as employer-sponsored plans versus Medicare Advantage, and these networks may have different contact paths.

## Is prior authorization required? [#is-prior-authorization-required]

Prior authorization (also called pre-authorization or pre-certification) is a requirement that the patient or their provider must get approval before a payer will cover specific services, procedures, medications, or devices. Without it, the payer may deny claims.

If the payer provides prior authorization information in the eligibility response, it will be listed in the **Benefit** column for that service or procedure. The payer may also send messages about prior authorization rules.

<img alt="Benefits plan overview" src="__img6" />

If the payer doesn't provide prior authorization information for a service or procedure, you can assume that prior authorization isn't required.

# STCs and procedure codes
Source: https://www.stedi.com/docs/healthcare/eligibility-stc-procedure-codes


You're likely running an eligibility check to determine the patient's coverage and financial responsibility for particular medical or dental services, such as chiropractic or hospice care.

You can retrieve specific types of benefits information from the payer by including either a service type code (STC) or a procedure code and qualifier in your request.

However, it's not always clear which STC or procedure code to use for best results. This page explains how to choose the right STC or procedure code for your eligibility check, how to test whether a payer supports a specific STC, and how to map procedure codes to STCs when necessary.

## Should I use STCs or procedure codes? [#should-i-use-stcs-or-procedure-codes]

It depends on the type of benefits information you want to retrieve.

### Medical benefits [#medical-benefits]

You'll almost always need to submit an STC because most medical payers don't support procedure codes (CPT/HCPCS/CDT). Refer to our guidance for [choosing STCs](#choose-the-right-stc).

### Dental benefits [#dental-benefits]

Many (but not all) dental payers support procedure codes. However, we recommend:

1. First try STC `35` - especially if you need information about general dental benefits. Many payers only return comprehensive dental-specific benefits for STC `35`.
2. Try the relevant CDT code if you still need more benefits information for a specific service.
3. If the CDT code still doesn't return what you need, try the STC mapped to that CDT code. Refer to our list of [common mappings](#dental) for dental benefits.

## Choose the right STC [#choose-the-right-stc]

A Service Type Code (STC) is a two-character code that groups similar healthcare services into standard categories, such as `47` (Hospital) and `UC` (Urgent Care). STC support varies by payer:

* Not all payers support all STCs.
* Some payers only respond to the first STC you send and ignore the rest.
* Some payers completely ignore the STCs in the request and always return a default response for STC `30` (Health Benefit Plan Coverage).
* Some payers don't support multiple STCs in a single request.
* Some payers do support multiple STCs, but only a limited number per request.

When choosing an STC, we recommend:

* Send the most specific STC you can for the services you're targeting. You should [test the STCs](#test-payer-stc-support) that seem most appropriate to determine which ones yield the most benefits information. Refer to our list of [STCs for common services](#stcs-for-common-services).
* If no specific STC seems appropriate or if the payer doesn't support it, fall back to a [general benefit check](#general-benefit-checks).
* Include only one STC per request, unless you've tested the payer and confirmed they support multiple STCs in a single request *and* that the response contains better benefits information when you include more than one.

If after testing, no STC produces the benefits information you need, you may need to call the payer or visit the payer portal.

### General benefit checks [#general-benefit-checks]

Use STC `30` for general medical benefits or `35` for general dental benefits. These STCs are supported by all payers and are a good fall back when a payer doesn't support a more specific STC.

When you send STC `30` in an eligibility check, all payers must return benefits information for the following STCs when the patient's plan covers them:

* `1` (Medical Care)
* `33` (Chiropractic)
* `47` (Hospital)
* `86` (Emergency Services)
* `88` (Pharmacy)
* `98` (Professional Physician Visit - Office)
* `AL` (Vision - Optometry)
* `MH` (Mental Health)
* `UC` (Urgent Care)

<Note>
  [CAQH CORE-certified payers](#required-stcs-for-core-certified-payers) are required to support a broader set of STCs.
</Note>

### STCs for common services [#stcs-for-common-services]

Try the following STCs in the order shown - from the most specific to more general alternatives. We recommend sending only one STC at a time, unless you've [tested the payer](#test-payer-stc-support) and confirmed they support multiple in a single request.

We've also included the mapping to specific procedure codes where possible, to make it easier to determine the right STC for your use case.

<Tip>
  Try our interactive [Service Type Code Lookup](https://www.stedi.com/cpt-hcpcs-to-stc) tool for additional mappings.
</Tip>

#### Medical [#medical]

Ranges of applicable codes are represented as `rangeStart - rangeEnd`.

{/* prettier-ignore-start */}

| Procedure codes                                                                          | Type of care                                 | STCs to try                                          |
| ---------------------------------------------------------------------------------------- | -------------------------------------------- | ---------------------------------------------------- |
| `97151 - 97157`                                                                          | ABA Therapy                                  | `BD`, `MH`                                           |
| `97810`, `97811 - 97814`                                                                 | Acupuncture                                  | `64`, `1`                                            |
| `96401 - 96549`                                                                          | Chemotherapy                                 | `ON`, `78`, `87`, `91`, `92`                         |
| `96493`                                                                                  | Chemotherapy, IV push                        | `78`, `87`, `91`, `92`                               |
| `96494`                                                                                  | Chemotherapy, additional infusion            | `78`, `87`, `91`, `92`                               |
| `99490`, `99439`, `99491`, `99437`, `99487`                                              | Chronic Care Management (CCM) services       | `A4`, `MH`, `98`, `1`                                |
| too many to list                                                                         | Dermatology                                  | `3`, `98`                                            |
| `T1032`, `T1033`                                                                         | Doula                                        | `BT`, `BU`, `BV`, `1`                                |
| `E1399`                                                                                  | Durable Medical Equipment                    | `DM`, `11`, `12`, `18`                               |
| `96375`                                                                                  | IV push                                      | `92`                                                 |
| `96360`, `96365`, `96366`                                                                | IV Therapy/Infusion                          | `92`, `98`                                           |
| too many to list                                                                         | Maternity (professional)                     | `BT`, `BU`, `BV`, `69`                               |
| `97802`                                                                                  | Medical nutrition therapy                    | `98`, `MH`, `BZ`, `1`                                |
| `97803`                                                                                  | Medical nutrition follow-up                  | `98`, `MH`, `BZ`, `1`                                |
| too many to list                                                                         | Mental health                                | `MH`, `96`, `98`, `A4`, `BD`, `CF`                   |
| `95700 - 96020`                                                                          | Neurology                                    | `98`                                                 |
| `99460`, `99463`                                                                         | Newborn/facility                             | `65`, `BI`                                           |
| `97165 - 97168` and `97110`, `97530`, `97112`, `97140`, `97535`, `97116`, `97129`        | Occupational therapy                         | `AD`, `98`                                           |
| `97110`, `97112`, `97116`, `97350`, and several others                                   | Physical therapy                             | `PT`, `AE`                                           |
| too many to list                                                                         | Podiatry                                     | `93`, `98`                                           |
| too many to list                                                                         | Primary care                                 | `96`, `98`, `A4`, `A3`, `99`, `A0`, `A1`, `A2`, `98` |
| `99214`                                                                                  | Physician office visit                       | `1`, `98`, `BY`                                      |
| `96130 - 96133`, `96136 - 96137`                                                         | Psychological testing evaluation             | `MH`, `CF`, `A6`, `A8`, `A4`, `98`, `96`             |
| `90832 - 90834`, `90836 - 90840`, `90845 - 90847`, `90849`, `90853`                      | Psychotherapy                                | `MH`, `CF`, `A6`, `A8`, `A4`, `BD`, `98`, `96`       |
| too many to list                                                                         | Rehabilitation                               | `A9`, `AA`, `AB`, `AC`                               |
| `98975`, `98976`, `98977`, `98980`, `98981`                                              | Remote Therapeutic Monitoring (RTM) services | `A4`, `98`, `MH`, `92`, `DM`, `1`                    |
| `99304-99318`                                                                            | Skilled Nursing                              | `AG`, `AH`                                           |
| `92507`, `92508`, `92521`, `92522`, `92523`, `92526`, `92607`, `92609`, `92605`, `92618` | Speech Therapy                               | `AF`, `98`                                           |
| `90791`, `90832`, `90834`, `90837`, `90853`, `99408`, `99409`, and `H0017-H0019`         | Substance Abuse/Addiction                    | `AI`, `AJ`, `AK`, `MH`                               |
| `99202-99215`, `99421-99423`, `99441-99443`, `G2010` and `G2012`                         | Telehealth                                   | `9`, `98`                                            |
| `90867`                                                                                  | Transcranial magnetic stimulation            | `A4`, `MH`                                           |

{/* prettier-ignore-end */}

#### Dental [#dental]

Procedure codes are listed in ranges. For example, `D0xxx` represents CDT codes from `D0000` to `D0999`.

{/* prettier-ignore-start */}

| Procedure                     | Type of care                                                                                   | STCs to try |
| ----------------------------- | ---------------------------------------------------------------------------------------------- | ----------- |
| `D0xxx`                       | Diagnostic (such as evaluations and radiographs)                                               | `23`        |
| `D1xxx`                       | Preventive (such as prophylaxis, fluoride, and sealants)                                       | `41`        |
| `D2xxx`                       | Restorative (fillings and crowns not tied to implants)                                         | `25`        |
| `D3xxx`                       | Endodontics (such as root canals)                                                              | `26`        |
| `D4xxx`                       | Periodontics (such as SRP and perio maintenance)                                               | `24`        |
| `D59xx`                       | Maxillofacial prosthetics (specifically for `D5900–D5999`, all other `D5xxx` use `39` instead) | `27`        |
| `D5xxx/D6xxx`, except `D59xx` | Prosthodontics (removable and fixed, such as dentures and bridges)                             | `39`        |
| `D7xxx`                       | Oral & maxillofacial surgery (such as extractions and osseous surgery)                         | `40`        |
| `D9xxx`                       | Adjunctive general services (such as palliative, occlusal guards, and anesthesia)              | `28`        |

{/* prettier-ignore-end */}

### Full STC list [#full-stc-list]

You can include the following STCs in an eligibility check. Not all payers support all STCs, so you should always [test each payer](#test-payer-stc-support) to ensure they support the STCs you plan to use.

* The word physician in service type codes refers to any healthcare provider, including physician assistants, nurse practitioners, and other types of healthcare professionals.
* **Don't send STCs that aren't in this list.** This list is specific to X12 version 005010, the mandated version for eligibility checks. It's different from the [X12 Service Type Codes](https://x12.org/codes/service-type-codes) list, which applies to X12 versions later than 005010. Payers shouldn't accept or send STCs not explicitly listed in version 005010.

<Accordion title="Service Type Codes" id="service-type-codes">
  - `1` Medical Care
  - `2` Surgical
  - `3` Consultation
  - `4` Diagnostic X-Ray
  - `5` Diagnostic Lab
  - `6` Radiation Therapy
  - `7` Anesthesia
  - `8` Surgical Assistance
  - `9` Other Medical
  - `10` Blood Charges
  - `11` Used Durable Medical Equipment
  - `12` Durable Medical Equipment Purchase
  - `13` Ambulatory Service Center Facility
  - `14` Renal Supplies in the Home
  - `15` Alternate Method Dialysis
  - `16` Chronic Renal Disease (CRD) Equipment
  - `17` Pre-Admission Testing
  - `18` Durable Medical Equipment Rental
  - `19` Pneumonia Vaccine
  - `20` Second Surgical Opinion
  - `21` Third Surgical Opinion
  - `22` Social Work
  - `23` Diagnostic Dental
  - `24` Periodontics
  - `25` Restorative
  - `26` Endodontics
  - `27` Maxillofacial Prosthetics
  - `28` Adjunctive Dental Services
  - `30` Health Benefit Plan Coverage - **supported by all payers**
  - `32` Plan Waiting Period
  - `33` Chiropractic
  - `34` Chiropractic Office Visits
  - `35` Dental Care
  - `36` Dental Crowns
  - `37` Dental Accident
  - `38` Orthodontics
  - `39` Prosthodontics
  - `40` Oral Surgery
  - `41` Routine (Preventive) Dental
  - `42` Home Health Care
  - `43` Home Health Prescriptions
  - `44` Home Health Visits
  - `45` Hospice
  - `46` Respite Care
  - `47` Hospital
  - `48` Hospital - Inpatient
  - `49` Hospital - Room and Board
  - `50` Hospital - Outpatient
  - `51` Hospital - Emergency Accident
  - `52` Hospital - Emergency Medical
  - `53` Hospital - Ambulatory Surgical
  - `54` Long Term Care
  - `55` Major Medical
  - `56` Medically Related Transportation
  - `57` Air Transportation
  - `58` Cabulance
  - `59` Licensed Ambulance
  - `60` General Benefits
  - `61` In-vitro Fertilization
  - `62` MRI/CAT Scan
  - `63` Donor Procedures
  - `64` Acupuncture
  - `65` Newborn Care
  - `66` Pathology
  - `67` Smoking Cessation
  - `68` Well Baby Care
  - `69` Maternity
  - `70` Transplants
  - `71` Audiology Exam
  - `72` Inhalation Therapy
  - `73` Diagnostic Medical
  - `74` Private Duty Nursing
  - `75` Prosthetic Device
  - `76` Dialysis
  - `77` Otological Exam
  - `78` Chemotherapy
  - `79` Allergy Testing
  - `80` Immunizations
  - `81` Routine Physical
  - `82` Family Planning
  - `83` Infertility
  - `84` Abortion
  - `85` AIDS
  - `86` Emergency Services
  - `87` Cancer
  - `88` Pharmacy
  - `89` Free Standing Prescription Drug
  - `90` Mail Order Prescription Drug
  - `91` Brand Name Prescription Drug
  - `92` Generic Prescription Drug
  - `93` Podiatry
  - `94` Podiatry - Office Visits
  - `95` Podiatry - Nursing Home Visits
  - `96` Professional (Physician)
  - `97` Anesthesiologist
  - `98` Professional (Physician) Visit - Office
  - `99` Professional (Physician) Visit - Inpatient
  - `A0` Professional (Physician) Visit - Outpatient
  - `A1` Professional (Physician) Visit - Nursing Home
  - `A2` Professional (Physician) Visit - Skilled Nursing Facility
  - `A3` Professional (Physician) Visit - Home
  - `A4` Psychiatric
  - `A5` Psychiatric - Room and Board
  - `A6` Psychotherapy
  - `A7` Psychiatric - Inpatient
  - `A8` Psychiatric - Outpatient
  - `A9` Rehabilitation
  - `AA` Rehabilitation - Room and Board
  - `AB` Rehabilitation - Inpatient
  - `AC` Rehabilitation - Outpatient
  - `AD` Occupational Therapy
  - `AE` Physical Medicine
  - `AF` Speech Therapy
  - `AG` Skilled Nursing Care
  - `AH` Skilled Nursing Care - Room and Board
  - `AI` Substance Abuse
  - `AJ` Alcoholism
  - `AK` Drug Addiction
  - `AL` Vision (Optometry)
  - `AM` Frames
  - `AN` Routine Exam - Use for Routine Vision Exam only
  - `AO` Lenses
  - `AQ` Nonmedically Necessary Physical
  - `AR` Experimental Drug Therapy
  - `B1` Burn Care
  - `B2` Brand Name Prescription Drug - Formulary
  - `B3` Brand Name Prescription Drug - Non-Formulary
  - `BA` Independent Medical Evaluation
  - `BB` Partial Hospitalization (Psychiatric)
  - `BC` Day Care (Psychiatric)
  - `BD` Cognitive Therapy
  - `BE` Massage Therapy
  - `BF` Pulmonary Rehabilitation
  - `BG` Cardiac Rehabilitation
  - `BH` Pediatric
  - `BI` Nursery
  - `BJ` Skin
  - `BK` Orthopedic
  - `BL` Cardiac
  - `BM` Lymphatic
  - `BN` Gastrointestinal
  - `BP` Endocrine
  - `BQ` Neurology
  - `BR` Eye
  - `BS` Invasive Procedures
  - `BT` Gynecological
  - `BU` Obstetrical
  - `BV` Obstetrical/Gynecological
  - `BW` Mail Order Prescription Drug - Brand Name
  - `BX` Mail Order Prescription Drug - Generic
  - `BY` Physician Visit - Office: Sick
  - `BZ` Physician Visit - Office: Well
  - `C1` Coronary Care
  - `CA` Private Duty Nursing - Inpatient
  - `CB` Private Duty Nursing - Home
  - `CC` Surgical Benefits - Professional (Physician)
  - `CD` Surgical Benefits - Facility
  - `CE` Mental Health Provider - Inpatient
  - `CF` Mental Health Provider - Outpatient
  - `CG` Mental Health Facility - Inpatient
  - `CH` Mental Health Facility - Outpatient
  - `CI` Substance Abuse Facility - Inpatient
  - `CJ` Substance Abuse Facility - Outpatient
  - `CK` Screening X-ray
  - `CL` Screening Laboratory
  - `CM` Mammogram, High Risk Patient
  - `CN` Mammogram, Low Risk Patient
  - `CO` Flu Vaccination
  - `CP` Eyewear and Eyewear Accessories
  - `CQ` Case Management
  - `DG` Dermatology
  - `DM` Durable Medical Equipment
  - `DS` Diabetic Supplies
  - `GF` Generic Prescription Drug - Formulary
  - `GN` Generic Prescription Drug - Non-Formulary
  - `GY` Allergy
  - `IC` Intensive Care
  - `MH` Mental Health
  - `NI` Neonatal Intensive Care
  - `ON` Oncology
  - `PT` Physical Therapy
  - `PU` Pulmonary
  - `RN` Renal
  - `RT` Residential Psychiatric Treatment
  - `TC` Transitional Care
  - `TN` Transitional Nursery Care
  - `UC` Urgent Care
</Accordion>

### Test payer STC support [#test-payer-stc-support]

We recommend testing each payer to determine which STC(s) they support and which STC(s) return the most benefits information for the services you care about.

To test whether a payer supports a specific STC:

1. Send a baseline request with just STC `30` for general medical benefits or `35` for general dental benefits.
2. Send a request with the specific STC that best matches the benefit type you want to check. For example, to check mental health benefits, you might send a request with STC `MH` (Mental Health). Use our list of [STCs for common services](#stcs-for-common-services) as a starting point.
3. Compare the baseline response with the response to the specific STC. If they're different, the payer likely supports the specific STC.

You may also want to test whether the payer supports multiple STCs in a single request:

1. Send a baseline request with just STC `30` for general medical benefits or `35` for general dental benefits.
2. Send a request with multiple STCs matching the benefit types you want to check.
3. Compare the responses. If they change based on the number of STCs, the payer likely supports multiple STCs in a single request. If not, the payer may be ignoring or only partially supporting STCs - for example, they may only be returning information for the first STC.

<Tip>
  **Developers:** We recommend scripting your requests to speed up the testing process. Specifically, you should loop through candidate STCs and compare the responses against the baseline STC `30` or `35` response for the same patient. You can also save the `benefitsInformation` array for each STC and diff them.
</Tip>

## Map procedure codes to STCs [#map-procedure-codes-to-stcs]

It can be hard to map procedure codes to the right STC. For example, if a provider offers medical nutrition therapy and bills using CPT code 97802, should they use service type code `1` - Medical Care, `3` - Consultation, `MH` - Mental Health, or another option?

Unfortunately, there's no standardized mapping between procedure codes and STCs. In fact, payers themselves often don't have an explicit mapping for their own health plans. Their eligibility check systems aren't necessarily directly integrated with their claims processing systems, so when you ask them which STC to use, they may not always be able to provide a good answer.

Review our list of [STCs for common services](#stcs-for-common-services), which contains mappings to the associated procedure codes. Try our interactive [Service Type Code Lookup](https://www.stedi.com/cpt-hcpcs-to-stc) tool for additional mappings.

If you don't find the procedure code you're looking for, use the following approaches to determine the best STC for your use case:

* Review the payers' documentation for eligibility checks. Some payers provide a list of STCs they support and their mappings to procedure codes.
* If you can't find the information in the payer's documentation, contact the payer directly or reach out to [Stedi support](https://www.stedi.com/contact), and we'll contact the payer for you.
* For dental payers that don't support specific CDT codes, you can use either of these sources to map CDT codes to service type codes. You can either purchase a copy of these documents or contact Stedi support for recommendations about specific mappings:
  * NDEDIC's [Companion to ASC X12 270/271](https://ndedic.org/Sys/Store/Products/1016)
  * Table 6 in the American Dental Association's [Technical Report No. 1102](https://engage.ada.org/p/eg/ada-technical-report-no-1102-electronic-dental-benefits-eligibility-verification-e-book-1390?itm_source=pp-1316\&itm_component=p-related).
* If none of the above methods work, you can ask a medical coder with [AAPC certification](https://www.aapc.com/certifications) for guidance. Their familiarity with billable codes will help them make good recommendations about service type code mappings.

Once you determine the right STC code(s), we recommend maintaining an internal document that contains the mappings for the health plans you most frequently bill.

## Required STCs for CORE-Certified payers [#required-stcs-for-core-certified-payers]

CAQH CORE creates operating rules and frameworks that improve interoperability in healthcare data exchange. CORE requires certified payers to support a broader set of STC codes than those mandated for [general benefits inquiries](#general-benefit-checks).

If the plan covers the service, certified payers must return benefit information for the following STCs. Visit CAQH CORE's website for a complete list of [CORE-Certified Health Plans](https://www.caqh.org/core/core-certified-organizations-pending-and-current).

<Accordion title="Required STCs for CORE-Certified Health Plans" id="required-stcs-for-core-certified-health-plans">
  * `4` Diagnostic X-Ray
  * `5` Diagnostic Lab
  * `6` Radiation Therapy
  * `7` Anesthesia
  * `8` Surgical Assistance
  * `12` DME Purchase
  * `13` Ambulatory Surgery Facility
  * `18` DME Rental
  * `20` Second Surgical Opinion
  * `30` Health Benefit Plan Coverage
  * `33` Chiropractic
  * `62` MRI/CAT Scan
  * `65` Newborn Care
  * `68` Well Baby Care
  * `78` Chemotherapy
  * `80` Immunizations
  * `81` Routine Physical
  * `82` Family Planning
  * `86` Emergency Services
  * `93` Podiatry
  * `98` Physician Visit - Office
  * `99` Physician Visit - Inpatient
  * `A0` Physician Visit - Outpatient
  * `A3` Physician Visit - Home
  * `AD` Occupational Therapy
  * `AE` Physical Medicine
  * `AF` Speech Therapy
  * `AG` Skilled Nursing Care
  * `BG` Cardiac Rehabilitation
  * `BH` Pediatric
</Accordion>

## STCs in the eligibility response [#stcs-in-the-eligibility-response]

To determine whether the payer is returning the benefits information you need, you must check the [`benefitsInformation` array](/healthcare/api-reference/post-healthcare-eligibility#response.benefitsInformation). Each object in this array contains a `serviceTypeCodes` property that lists the applicable STCs.

The payer may send benefits information for additional STCs you didn't request - this is expected. It can also mean that the payer is ignoring the STC you sent, which is why we recommend [testing payers](#test-payer-stc-support) to determine their support for specific STCs.

The following example shows a `benefitsInformation` object that specifies a patient's co-payment ($20) for psychiatric, psychotherapy, and social work in-office visits.

```json
{
  "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": "ZZ",
    "industryCode": "Office"
  },
  "eligibilityAdditionalInformationList": [
    {
      "codeListQualifierCode": "ZZ",
      "industryCode": "Office"
    }
  ]
}
```

You should review the [STC list](/healthcare/eligibility-stc-procedure-codes#full-stc-list) to determine which STCs are relevant to the benefits you're interested in and check for all of them in the response. This is helpful because the payer may return relevant benefits under a different STC than the one you submitted. For example, mental health benefits are typically returned with STC `MH` (Mental Health), but some payers may use other STCs, such as `BH` (Behavioral Health), `A4` (Psychiatric) or `SA` (Substance Abuse) for related services.

You should also check all `benefitsInformation` objects with relevant `serviceTypeCodes` values because the same STC is typically repeated across multiple `benefitsInformation` objects in the response.

* Each object communicates a different aspect of benefits, such as coverage status, co-pays, or deductibles.
* Payers also use multiple objects to describe different subsets of services within an STC. For example, the `MH` STC might have one entry for standard therapy and another that notes coverage for other treatments. Descriptions typically appear in entries with code: `"1" (Active Coverage)` or code: `"D" (Benefit Description)`, but they can appear in other entries as well.

To learn more about interpreting the eligibility response, visit [Determine patient benefits](/healthcare/eligibility-active-coverage-benefits).

# Eligibility troubleshooting
Source: https://www.stedi.com/docs/healthcare/eligibility-troubleshooting


A list of potential errors and possible resolutions when submitting 270/271 eligibility checks.

## Review eligibility check errors [#review-eligibility-check-errors]

The [Eligibility check errors page](https://portal.stedi.com/app/healthcare/checks/reports/errors) shows a list of recent eligibility check `AAA` error codes. These are errors the payer returns when they reject your eligibility request. They specify the reasons for rejection and any recommended follow-up actions.

To go to this page, click **Errors** under **Eligibility** in the side navigation.

<img alt="Eligibility check errors page" src="__img0" />

The errors are grouped by error code, and you can filter the list by Payer ID. You can look up any payer's ID in the [Payer Network](https://www.stedi.com/healthcare/network). Click on an error code to review a list of all the instances of that error.

This page helps you identify patterns in eligibility check failures. For example, if you see a large number of errors with code `75` (Subscriber/Insured Not Found) for a specific payer, you might want to investigate whether there are common issues with the patient data being submitted to that payer.

Visit [Payer `AAA` errors](#payer-aaa-errors) for a complete list of `AAA` errors and their possible causes and resolutions.

## Retry strategy [#retry-strategy]

Implementing the right retry strategy for eligibility check failures saves a lot of time and money.

At a minimum, we **strongly recommend** automatically retrying every request that fails due to payer connectivity issues. Automatic retries resolve a significant portion of these types of failures without manual intervention.

### Payer connectivity issues [#payer-connectivity-issues]

We recommend implementing automatic retries for all of the following [`AAA` error](/healthcare/eligibility-troubleshooting#payer-aaa-errors) cases. These scenarios indicate temporary payer downtime, throttling, or intermittent connectivity issues:

* `42` (Unable to Respond at Current Time)
* `42` (Unable to Respond at Current Time) and `79` (Invalid Participant Identification)
* `80` (No Response received - Transaction Terminated)

Our recommended retry strategy depends on your eligibility check workflow.

#### Real-time eligibility checks [#real-time-eligibility-checks]

For real-time eligibility checks that require a response within a few minutes, we recommend:

* Retry immediately and continue retrying for up to 2 minutes.
* The recommended retry window is based on what's acceptable in real-time human workflows. For example, a patient checking in for an appointment at their doctor's office.
* If the request is still unsuccessful, fail gracefully and escalate as needed.

#### Scheduled eligibility checks [#scheduled-eligibility-checks]

You may want to run scheduled or background eligibility checks to perform periodic refreshes for a patient population or when checking eligibility for upcoming appointments.

If you're using the [Batch Eligibility Check](/healthcare/api-reference/post-healthcare-batch-eligibility) endpoint (recommended), Stedi automatically retries checks that fail due to payer connectivity issues for up to 8 hours.

If you're submitting real-time checks that can tolerate longer wait times, we recommend:

* Wait 1 minute to perform the first retry.
* Then, exponentially increase the wait between subsequent retries to up to 30 minutes between attempts.
* We recommend retrying for at least 8 hours, but the retry window should be based on your business workflows.

### Other common error cases [#other-common-error-cases]

You should also consider the following common error cases when implementing retries:

| AAA error | HTTP status | Reason                                                                                                                     | Retry Strategy                                                                                                                                                                                                                                                                                                                                                           |
| --------- | ----------- | -------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| -         | `429`       | Request rejected before processing due to temporary capacity limits, typically from exceeding allowed concurrent requests. | Retry immediately. Monitor your open concurrent requests and replace any finished requests under your Stedi account limit.                                                                                                                                                                                                                                               |
| `79`      | `200`       | Stedi successfully sent your request to the payer, but the payer rejected it.                                              | First, retry as soon as possible with a different member and a different [NPI](/healthcare/national-provider-identifier). This helps determine whether the issue is with the original request or there is a broader issue with the payer. If you determine the issue is with the payer, follow our guidance for [payer connectivity issues](#payer-connectivity-issues). |
| `79`      | `400`       | Either Stedi doesn't recognize the payer ID you provided, or the payer is not configured for eligibility checks.           | **Don't automatically retry.** Fix the payer ID or contact Stedi support to resolve.                                                                                                                                                                                                                                                                                     |

## Can't find payer ID [#cant-find-payer-id]

You can use Stedi Agent to identify the correct payer for eligibility checks. This is helpful when:

* You're receiving `AAA` errors indicating the payer can't find the subscriber (such as code `75` Subscriber/Insured Not Found)
* You're unsure which Stedi Payer ID matches the insurance information on the patient's card.

To identify a payer from a member card:

1. Go to the Stedi Agent [**Chats** page](https://portal.stedi.com/app/healthcare/chats) in the Stedi portal.
2. Click **New chat** and select the **Upload member ID card** option.
3. Upload a photo or scan of the front of the patient's insurance member card.
4. Review the results. The agent analyzes the card and either:
   * Successfully maps the information on the insurance card to a payer in Stedi's [Payer Network](https://www.stedi.com/healthcare/network). In this case, the agent returns information about the matching payer, including the payer's primary payer ID, Stedi payer ID, operating states, and supported transactions.
   * Indicates that it cannot read the information from the card. Try taking a clearer picture and resubmitting.
   * Indicates that it cannot determine the payer ID. Contact Stedi support.

## Payer unable to find patient [#payer-unable-to-find-patient]

Sometimes, a payer can't return benefits information for a patient even when the patient exists in their system. This problem can occur for a couple reasons.

### Multiple matching records [#multiple-matching-records]

Payers can have multiple records of patients with the same name and date of birth. The payer cannot return benefits information unless they are able to identify a unique match within their system.

To avoid this issue, we recommend:

* Include all of the demographic information available for a patient.
* Include the patient's member ID, if available.

### Information discrepancies [#information-discrepancies]

There can be discrepancies between the information the provider has collected from the patient and the record the payer has in their system. These discrepancies can lead to issues returning a patient, even though a match exists. Some examples include differences in spelling the patient's name, using a nickname instead of the full name ("Nick" vs. "Nicolas"), and accidentally transposing numbers in the date of birth.

If a request fails to return the expected member in the response, we recommend progressively sending additional eligibility check requests with fewer patient identity and demographic data elements, or different combinations of those. This allows you to identify and handle cases where there are data errors or discrepancies between payer and provider data.

### Name mismatches [#name-mismatches]

If the payer fails to find a matching plan member due to a name mismatch, the `errors` array in the response typically has the `code` set to one of the following values:

* `65`: Invalid/Missing Patient Name
* `67`: Patient Not Found
* `73`: Invalid/Missing Subscriber/Insured Name
* `75`: Subscriber/Insured Not Found

These error codes are set by the payer, not by Stedi, so it's possible that other error codes could be returned.

Resolving the error may require trying different name variations until the check is successful.

* Replace any nickname or shortened name with the full legal name, for example "Robert" instead of "Bob".
* Replace any non-English or accented characters (letters with diacritical marks) such as "Ñ" or "é" with the closest equivalent within the character restrictions. Stedi automatically replaces most such characters with the usual closest equivalent but this might not match the payer's record. For example, the character "Đ" could be transliterated to "D" or "J" depending on the romanization system used.
* For compound names try using only one or the other part. You can also try try removing the separator, or changing the separator from hyphen to space, or vice versa. Some payers may ignore special or separator characters when performing name searches.
* If the patient has recently changed their name, for example due to marriage, then the name stated by the patient or printed on their ID card might not match the payer's record. Try both the current and previous name.

## CMS attestation required [#cms-attestation-required]

CMS requires providers to complete attestation (also called HETS EDI Enrollment) before running Medicare eligibility checks. This requirement applies to traditional Medicare only, not Medicare Advantage (Part C) or Part D plans.

If you submit a Medicare eligibility check without completing attestation, CMS rejects the request with an [`AAA` error](#payer-aaa-errors) with code `41` (Authorization/Access Restrictions).

To resolve this error, complete the [CMS eligibility enrollment requirement](/healthcare/create-manage-transaction-enrollments#cms-eligibility-enrollment) for the billing NPI. Attestation takes approximately 5-15 minutes per NPI.

## Portal credentials [#portal-credentials]

The following payers are some of the few that require additional credentials to process eligibility checks:

* Medicaid California (Payer ID: `100065`) | [Provider Portal](https://www.medi-cal.ca.gov/)
* Kern Family Health Care (Payer ID: `77039`) | [Provider Portal](https://provider.kernfamilyhealthcare.com/)
* AltaMed (Payer ID: `ALTAM`) | [Provider Portal](https://www.altamed.org/providers)

When submitting eligibility checks to these payers, you must include the Provider Identification Number (PIN) the requesting provider uses for the Medi-Cal program. This PIN will be different for each provider.

* **JSON endpoint**: Set the [`portalPassword`](/healthcare/api-reference/post-healthcare-eligibility#body.portalPassword) property to the provider's PIN. You can omit the [`portalUsername`](/healthcare/api-reference/post-healthcare-eligibility#body.portalUsername).
* **Raw X12 endpoint:** Include the provider's PIN in `Loop 2100B REF02` when `REF01` is set to `4A` (Personal Identification Number (PIN)).
* **Stedi portal:** To add this field to the [New eligibility check form](https://portal.stedi.com/app/healthcare/checks/create), click **Select fields** and check the box next to **Portal password**.

If you don't include the provider's PIN or if the PIN is invalid, you'll receive an [`AAA` error](#payer-aaa-errors) with code `41` (Authorization/Access Restrictions) at the `payer` or `provider` level.

## Missing member ID [#missing-member-id]

Our eligibility check endpoints require submitting at least one of the patient's member ID, date of birth, or last name in the request. However, some payers always require the member ID and reject requests without it.

Stedi tracks which payers require the member ID and returns a warning when you submit an eligibility check to one of those payers without it. The warning appears in the `warnings` array along with the [`AAA` error](#payer-aaa-errors) from the payer in the `errors` array.

```json
  {
    "warnings": [
      {
        "code": "request::270::member_id_required",
        "description": "This payer requires the patient's member ID to be included in eligibility requests."
      }
    ],
    "errors": [
      {
        "code": "72",
        "description": "Invalid/Missing Subscriber/Insured ID",
        ...
      }
    ],
    ...
  }
```

Eligibility check requirements vary by payer. If we don't know whether a payer requires the member ID for eligibility checks, we don't return a warning.

## Errors [#errors]

You may encounter the following types of errors when submitting eligibility requests.

### Stedi payer errors [#stedi-payer-errors]

Stedi returns errors when it encounters issues with the payer ID you provided.

{/* prettier-ignore-start */}

| Error message                                                                                                         | Possible causes and resolutions                                                                                                                                                                                                                     |
| --------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `Payer is not configured for {transaction type}. Please contact Stedi support to resolve.`                            | Stedi does not yet support this transaction type for this payer, or there is a mis-mapping of payer IDs. Contact us with the name of the payer, and we'll investigate the issue.                                                                    |
| `Payer connection does not support {transaction type}. Please contact Stedi support to discuss connectivity options.` | Stedi has a connection to this payer, but it doesn't currently support this functionality (real-time eligibility or claim submission). Contact us for a timeline on enabling it.                                                                    |
| `Payer is not configured. Please check our published payer list or contact Stedi support to resolve.`                 | Stedi doesn't recognize the payer ID you provided. Double-check the payer ID in the [Stedi Payer Network](https://www.stedi.com/healthcare/network), or contact us with the name of the payer, and we will help you determine the correct payer ID. |
| `Payer is not supported. Please contact Stedi support to discuss connectivity options.`                               | Stedi doesn't yet have connectivity to this payer. We're likely already working on it - contact us for details about the connectivity timeline.                                                                                                     |

{/* prettier-ignore-end */}

The following error resulted from an unrecognized payer ID:

{/* schema:EligibilityCheckResponseContent */}

```json
{
  "meta": {
    "outboundTraceId": "01KEJ02BRD3H716AP3HRBDM5Y8"
  },
  "controlNumber": "602859072",
  "tradingPartnerServiceId": "AHS",
  "errors": [
    {
      "code": "79",
      "description": "Invalid Participant Identification",
      "followupAction": "Please Correct and Resubmit",
      "location": "2100A",
      "possibleResolutions": "Payer AHS is not configured. Please check our published payer list or contact Stedi support to resolve."
    }
  ],
  "status": "ERROR",
  "eligibilitySearchId": "019ba401-2f01-7262-a2b8-8707b70198c9",
  "id": "ec_9d6a4f2b-1c7e-4e9a-b3f8-0a2c5e1d7b84"
}
```

### Validation errors [#validation-errors]

You may receive validation errors from Stedi or, rarely, from the payer.

#### Stedi [#stedi]

Stedi validates the structure of your eligibility request and won't submit your request to the payer if it's missing required fields or if the data is formatted incorrectly. The following Stedi validation error resulted from a missing required property:

```json
{
  "message": "Missing required field: provider npi, serviceProviderNumber, payorId, taxId, ssn, pharmacyProcessorNumber, servicesPlanID, or employersId is required",
  "code": "BAD_REQUEST",
  "eligibilitySearchId": "019ba403-e5ce-7181-8a2f-8cf093dde812",
  "id": "ec_9d6a4f2b-1c7e-4e9a-b3f8-0a2c5e1d7b84"
}
```

The following shows an example of a Stedi validation error resulting from an invalid date format:

```json
{
  "message": "subscriber.dateOfBirth: Provided date should be valid and in YYYYMMDD format.",
  "code": "INVALID_REQUEST_BODY",
  "eligibilitySearchId": "019ba405-e1ec-79e2-bde2-830664a901df",
  "id": "ec_9d6a4f2b-1c7e-4e9a-b3f8-0a2c5e1d7b84"
}
```

#### Payer (999 rejections) [#payer-999-rejections]

Stedi's validation catches the majority of syntax and structural issues. However, some payers may occasionally return a [999 Implementation Acknowledgment](https://portal.stedi.com/app/guides/view/hipaa/implementation-acknowledgment-x231/01HRF41ES1DVGCA6X1EHSRPFXZ) indicating that the request was rejected.

Stedi can usually translate these 999 rejections into a more user-friendly 271 response with descriptive [`AAA` errors](#payer-aaa-errors) in the `errors` array. When Stedi can't generate a 271, we return the raw 999 in the `x12` property, set the `status` to `ERROR`, and include the number of EDI syntax errors in the `implementationTransactionSetSyntaxError` property. The `errors` array includes a general description indicating that the payer rejected the request due to validation errors.

The following example shows a 999 that resulted from sending the payer more than one STC code in the request:

{/* schema:EligibilityCheckResponseContent */}

```json
{
  "id": "ec_019c00bb-2293-7241-b283-9b94642b4ec4",
  "transactionSetAcknowledgement": "R",
  "tradingPartnerServiceId": "TESTPAYER",
  "errors": [
    {
      "description": "The payer or intermediary clearinghouse rejected the request with validation errors. The original EDI response is returned in the `x12` field. Contact Stedi Support if you need further help."
    }
  ],
  "implementationTransactionSetSyntaxError": "5",
  "controlNumber": "123456789",
  "x12": "ISA*00*          *00*          *ZZ*STEDI          *01*11234567890    *260127*1032*^*00501*000000000*0*P*:~GS*FA*STEDI*11234567890*20260127*1032*0*X*005010X231A1~ST*999*0001*005010X231A1~AK1*HS*1*005010X231A1~AK2*270*0001~IK3*EQ*12**8~IK4*1*0*5*32~IK5*R*5~AK9*R*1*1*0~SE*8*0001~GE*1*0~IEA*1*000000000~",
  "meta": {
    "outboundTraceId": "01KG0BP8NA69HK7095HE8XG03F"
  },
  "status": "ERROR",
  "eligibilitySearchId": "019c00bb-229e-72c3-8585-8b28f0556a38"
}
```

### Payer AAA errors [#payer-aaa-errors]

When a payer rejects your eligibility check, the 271 response contains one or more [`AAA` Request Validation segments](https://portal.stedi.com/app/guides/view/hipaa/health-care-eligibility-benefit-response-x279a1/01GS66YHZPB37ABF34DBPSR213#properties.detail.properties.information_source_level_HL_loop.items.properties.request_validation_AAA) that specify the reasons for the rejection and any recommended follow-up actions. Stedi includes this information in the `aaaErrors` object in the response JSON.

Common causes for AAA errors include:

* Missing or incorrect information for the subscriber, dependent, provider, or payer. In this case, you should correct any errors before resubmitting.
* Issues with payer [enrollment](/healthcare/credentialing-and-enrollment). Many of these issues require that the provider contact the payer directly to resolve, due to PHI/HIPAA guidelines.
* The payer's system is down or experiencing issues. In this case, the payer may not have actually validated the data in your request. If you receive these types of errors, you should wait a few minutes and resend the request again.

Each error contains a `followupAction`:

{/* X12 follow-up action code descriptions keep their spec semicolons. */}

{/* vale Stedi.Semicolons = NO */}

* Please Correct and Resubmit
* Resubmission Not Allowed | Note that this code doesn't mean you should never resubmit the request. Intermediary clearinghouses may send this code when they have temporarily lost connection to the payer, so this code indicates that you should wait at least a few minutes before retrying instead of retrying immediately.
* Resubmission Allowed
* Do Not Resubmit; Inquiry Initiated to a Third Party | This code is uncommon
* Please Resubmit Original Transaction
* Please Wait 30 Days and Resubmit | This code is uncommon
* Please Wait 10 Days and Resubmit | This code is uncommon
* Do not resubmit; We Will Hold Your Request and Respond Again Shortly | This code is uncommon

{/* vale Stedi.Semicolons = YES */}

AAA errors can be present at multiple different levels in the response, depending on the type. The following example shows an error at the subscriber level (`subscriber.aaaErrors`):

{/* schema:EligibilityCheckResponseContent */}

```json
{
  "subscriber": {
    "memberId": "123456789",
    "firstName": "JANE",
    "lastName": "DOE",
    "entityIdentifier": "Insured or Subscriber",
    "entityType": "Person",
    "dateOfBirth": "19001103",
    "aaaErrors": [
      {
        "field": "AAA",
        "code": "75",
        "description": "Subscriber/Insured Not Found",
        "followupAction": "Please Correct and Resubmit",
        "location": "Loop 2100C",
        "possibleResolutions": "- Subscriber was not found."
      }
    ]
  }
}
```

However, all errors at the `payer`, `provider`, `subscriber`, and `dependents` levels are also reported in the top-level `errors` array in the eligibility check response.

Visit [Eligibility mock requests](/healthcare/api-reference/mock-requests-eligibility-checks)
to retrieve more examples of common AAA errors in eligibility responses.

<Warning>
  To help with troubleshooting, we include additional strings containing
  possible causes and resolutions for each `AAA` error. We periodically update
  this guidance, so these strings may change at any time and may differ between
  eligibility responses. &#x2A;*Don't build programmatic logic that depends on
  matching these strings exactly.**
</Warning>

#### Payer [#payer]

You may receive the following types of errors at the `payer` level.

{/* prettier-ignore-start */}

| Code | Description                                   | Possible causes and resolutions                                                                                                                                                                                                                                                                                                                                                                   |
| ---- | --------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `04` | Authorized Quantity Exceeded                  | You included too many patients in the request - you can only request benefits information for one patient at a time. <ul><li>When the patient is the subscriber, put their details in the `subscriber` object.</li><li>When the patient is the dependent, put the subscriber's details in the `subscriber` object and the patient's details in the `dependents` array.</li></ul>                  |
| `41` | Authorization/Access Restrictions             | The problem is either:<ul><li>An issue with the `provider.npi` or `provider.federalTaxpayersIdNumber`. This typically indicates that the provider isn't properly [enrolled](https://www.stedi.com/docs/healthcare/credentialing-and-enrollment) with the payer.</li><li>An issue with the `portalPassword` or `portalUsername` you provided.</li></ul>                                            |
| `42` | Unable to Respond at Current Time             | The payer can't respond to your request. This is typically a temporary issue with the payer's system, such as downtime, but it can also be an extended outage. We recommend retrying immediately and continuing to retry for up to 2 minutes. Learn more about our [recommended retry strategy](/healthcare/eligibility-troubleshooting#payer-connectivity-issues) for payer connectivity issues. |
| `79` | Invalid Participant Identification            | There is a problem connecting with this payer. Contact Stedi support.                                                                                                                                                                                                                                                                                                                             |
| `80` | No Response received - Transaction Terminated | The payer can't respond to your request. This is typically a temporary issue with the payer's system, such as downtime, but it can also be an extended outage. We recommend retrying immediately and continuing to retry for up to 2 minutes. Learn more about our [recommended retry strategy](/healthcare/eligibility-troubleshooting#payer-connectivity-issues) for payer connectivity issues. |
| `T4` | Payer Name or Identifier Missing              | The problem is either:<ul><li>An issue with the `tradingPartnerName` or `tradingPartnerServiceId`. Check the [Payer Network](https://www.stedi.com/healthcare/network) to ensure you're using valid values.</li><li>A payer processing issue. If the issue persists, contact Stedi support to resolve.</li></ul>                                                                                  |

{/* prettier-ignore-end */}

#### Provider [#provider]

You may receive the following types of errors at the `provider` level.

{/* prettier-ignore-start */}

| Code | Description                                              | Possible causes and resolutions                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              |
| ---- | -------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `15` | Required application data missing                        | The payer needs more information about the provider requesting the eligibility check. Try including the `provider.taxId`, typically their EIN or SSN.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        |
| `41` | Authorization/Access Restrictions                        | The problem is either: <ul><li>An issue with the `provider.npi` or `provider.federalTaxpayersIdNumber`. This typically indicates that the provider isn't properly [enrolled](/healthcare/credentialing-and-enrollment) with the payer.</li><li>An issue with the `portalPassword` or `portalUsername` you provided.</li><li>The payer may require other [credentialing or enrollment processes](/healthcare/credentialing-and-enrollment).</li></ul>                                                                                                                                                                                         |
| `43` | Invalid/Missing Provider Identification                  | The problem is either: <ul><li>The `provider.npi` isn't registered correctly with the payer.</li><li>The payer requires an agreement to begin processing eligibility checks for this provider.</li></ul> Check the [Payer Network](https://www.stedi.com/healthcare/network) to determine whether this payer requires transaction enrollment for eligibility checks. <ul><li>If yes, you must submit a [transaction enrollment request](/healthcare/transaction-enrollment) for the provider.</li><li>If not, the payer may still require other [credentialing or enrollment processes](/healthcare/credentialing-and-enrollment).</li></ul> |
| `44` | Invalid/Missing Provider Name                            | The provider's NPI is registered with an incorrect name for this payer. <ul><li>Verify that the `provider.organizationName` or the `provider.firstName` and `provider.lastName` are correct. If so, the provider must contact the payer directly to resolve this issue due to PHI/HIPAA guidelines.</li><li>The payer may require other [credentialing or enrollment processes](/healthcare/credentialing-and-enrollment).</li></ul>                                                                                                                                                                                                         |
| `45` | Invalid/Missing Provider Specialty                       | The provider's NPI isn't registered with the payer under the correct specialty. The provider must contact the payer directly to resolve this issue due to PHI/HIPAA guidelines. The payer may require other [credentialing or enrollment processes](/healthcare/credentialing-and-enrollment).                                                                                                                                                                                                                                                                                                                                               |
| `46` | Invalid/Missing Provider Phone Number                    | The provider's phone number doesn't match the one registered with the payer or the one in the NPPES system. The provider must contact the payer directly to resolve this issue because of PHI/HIPAA guidelines. The payer may require other [credentialing or enrollment processes](/healthcare/credentialing-and-enrollment).                                                                                                                                                                                                                                                                                                               |
| `47` | Invalid/Missing Provider State                           | The `provider.address` either doesn't match the address registered with the payer or it doesn't match the provider's address in the NPPES system. <ul><li>Ensure the information in `provider.address` is correct.</li><li>If so, the provider must contact the payer directly to resolve this issue due to PHI/HIPAA guidelines. The payer may require other [credentialing or enrollment processes](/healthcare/credentialing-and-enrollment).</li></ul>                                                                                                                                                                                   |
| `48` | Invalid/Missing Referring Provider Identification Number | The referring provider (specified in `subscriber.providerIdentifier`) either: <ul><li>Isn't enrolled correctly with the payer. Contact Stedi support to resolve.</li><li>Isn't registered with the payer's health plans. The provider must contact the payer directly to complete the registration process.</li><li>Must complete additional [credentialing or enrollment processes](/healthcare/credentialing-and-enrollment) with the payer.</li></ul>                                                                                                                                                                                     |
| `50` | Provider Ineligible for Inquiries                        | The provider requesting the eligibility check isn't registered with the payer for the service type in `encounter.serviceTypeCodes`. <ul><li>Ensure the `provider.npi` and `encounter.serviceTypeCodes` are correct.</li><li>If so, the provider must contact the payer directly to complete the registration process. Contact Stedi support with questions.</li></ul>                                                                                                                                                                                                                                                                        |
| `51` | Provider Not on File                                     | The provider isn't registered with the payer. <ul><li>Ensure the `provider.npi` is correct.</li><li>If so, the provider must contact the payer directly to complete the registration process. This can include [credentialing and/or enrollment](/healthcare/credentialing-and-enrollment). Contact Stedi support with questions.</li></ul>                                                                                                                                                                                                                                                                                                  |
| `79` | Invalid Participant Identification                       | There is a problem connecting with this payer. Contact Stedi support.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        |
| `97` | Invalid or Missing Provider Address                      | The payer requires the address for the provider requesting the eligibility check. Retry with the provider's complete address in the `provider.address` object.                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |
| `T4` | Payer Name or Identifier Missing                         | The problem is either: <ul><li>An issue with the `tradingPartnerName` or `tradingPartnerServiceId`. Check the [Payer Network](https://www.stedi.com/healthcare/network) to ensure you're using valid values.</li><li>A payer processing issue. If the issue persists, contact Stedi support to resolve.</li></ul>                                                                                                                                                                                                                                                                                                                            |

{/* prettier-ignore-end */}

#### Subscriber [#subscriber]

You may receive the following types of errors at the `subscriber` level.

{/* prettier-ignore-start */}

| Code | Description                                                            | Possible causes and resolutions                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |
| ---- | ---------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `15` | Required application data missing                                      | <ul><li>The payer likely needs more information about the subscriber to complete the eligibility check. We recommend providing the subscriber's `memberId`, `dateOfBirth`, `firstName`, and `lastName`. Given this information, all payers must return benefits details as long as they can find a unique match for the member within their system. Visit [patient information](/healthcare/send-eligibility-checks#patient-information) to learn more.</li><li>Try including the `provider.taxId`, typically their EIN or SSN.</li></ul>                                                                                                                                                                                                                                                                                                                                                     |
| `33` | Input Errors                                                           | The request doesn't meet the payer's requirements, which usually means it doesn't contain enough information to identify the patient. We recommend providing the subscriber's `memberId`, `dateOfBirth`, `firstName`, and `lastName`. Given this information, all payers must return benefits details as long as they can find a unique match for the member within their system. Visit [patient information](/healthcare/send-eligibility-checks#patient-information) to learn more.                                                                                                                                                                                                                                                                                                                                                                                                         |
| `35` | Out of Network                                                         | The subscriber isn't in the provider's network. <ul><li>Verify that the `provider.npi` is valid.</li><li>If yes, contact the payer for clarification.</li></ul>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |
| `42` | Unable to Respond at Current Time                                      | The payer can't respond to your request. This is typically a temporary issue with the payer's system, such as downtime, but it can also be an extended outage. We recommend retrying immediately and continuing to retry for up to 2 minutes. Learn more about our [recommended retry strategy](/healthcare/eligibility-troubleshooting#payer-connectivity-issues) for payer connectivity issues.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             |
| `43` | Invalid/Missing Provider Identification                                | The problem is either: <ul><li>The `provider.npi` isn't registered correctly with the payer.</li><li>The payer requires an agreement to begin processing eligibility checks for this provider.</li></ul> Check the [Payer Network](https://www.stedi.com/healthcare/network) to determine whether this payer requires transaction enrollment for eligibility checks. <ul><li>If yes, you must submit a [transaction enrollment request](/healthcare/transaction-enrollment) for the provider.</li><li>If not, the payer may still require other [credentialing or enrollment processes](/healthcare/credentialing-and-enrollment). Contact Stedi support to determine next steps.</li></ul>                                                                                                                                                                                                   |
| `45` | Invalid/Missing Provider Specialty                                     | The `provider.npi` isn't registered with the payer under the correct specialty. The provider must contact the payer directly to resolve this issue due to PHI/HIPAA guidelines.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |
| `47` | Invalid/Missing Provider State                                         | The `provider.address` either doesn't match the address registered with the payer, or it doesn't match the provider's address in the NPPES system. <ul><li>Ensure the information in `provider.address` is correct.</li><li>If so, the provider must contact the payer directly to resolve this issue due to PHI/HIPAA guidelines.</li></ul>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  |
| `48` | Invalid/Missing Referring Provider Identification Number               | The referring provider (specified in `subscriber.providerIdentifier`) either: <ul><li>Isn't enrolled correctly with the payer. Contact Stedi support to resolve.</li><li>Isn't registered with the payer's health plans. The provider must contact the payer directly to complete the registration process. Contact Stedi support with questions.</li></ul>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   |
| `49` | Provider is Not Primary Care Physician                                 | The payer doesn't list the provider as a primary care physician but requires them to be one. The provider or the patient must contact the payer to update their records.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      |
| `51` | Provider Not on File                                                   | The provider isn't registered with the payer. <ul><li>Ensure the `provider.npi` is correct.</li><li>If so, the provider must contact the payer directly to complete the registration process. This can include [credentialing and/or enrollment](/healthcare/credentialing-and-enrollment). Contact Stedi support with questions.</li></ul>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   |
| `52` | Service Dates Not Within Provider Plan Enrollment                      | The provider wasn't registered with the patient's health plan on the date of service listed in the eligibility check. <ul><li>Verify that the `provider.npi` and the service dates in the `encounter` object are correct.</li><li>If so, the provider must contact the payer directly to resolve this issue.</li></ul>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        |
| `53` | Inquired Benefit Inconsistent with Provider Type Enrollment            | The provider isn't registered with the payer to perform the requested benefit type. Some payers only return benefits that match the provider's taxonomy code.<ul><li>Verify that the `provider.npi` is correct.</li><li>Verify that the `serviceTypeCodes` or the `procedureCode` and `productOrServiceIDQualifier` in the `encounter` object are correct.</li><li>Check the provider taxonomy you sent in `provider.referenceIdentification`. It should match what's recorded in the payer's system.</li><li>If the issue persists, the provider must contact the payer directly to resolve.</li></ul>                                                                                                                                                                                                                                                                                       |
| `54` | Inappropriate Product/Service ID Qualifier                             | You provided an invalid `encounter.productOrServiceIDQualifier`. Update the request and resubmit.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             |
| `55` | Inappropriate Product/Service ID                                       | You provided an invalid `encounter.procedureCode`. Update the request and resubmit.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           |
| `56` | Inappropriate Date                                                     | The service dates in the `encounter` object are incorrect or are formatted incorrectly. . <ul><li>Dates must be in YYYYMMDD format.</li><li>We recommend submitting dates up to 12 months in the past or up to the end of the current month. Payers aren't required to support dates outside these ranges. However, some payers do support dates further in the future, especially the next calendar month. Check the payer's documentation to determine their specific behavior.</li></ul>                                                                                                                                                                                                                                                                                                                                                                                                   |
| `57` | Invalid/Missing Date(s) of Service                                     | The service dates in the `encounter` object are missing, incorrect, or formatted incorrectly. <ul><li>Dates must be in YYYYMMDD format.</li><li>We recommend submitting dates up to 12 months in the past or up to the end of the current month. Payers aren't required to support dates outside these ranges. However, some payers do support dates further in the future, especially the next calendar month. Check the payer's documentation to determine their specific behavior.</li></ul>                                                                                                                                                                                                                                                                                                                                                                                               |
| `58` | Invalid/Missing Date-of-Birth                                          | The payer needs the subscriber's date of birth for identification. <ul><li>Include `subscriber.dateOfBirth` in the request.</li><li>The date should be in YYYYMMDD format.</li></ul>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |
| `60` | Date of Birth Follows Date(s) of Service                               | The date(s) of service you provided are earlier than the subscriber's date of birth. <ul><li>Check the service dates in the `encounter` object.</li><li>Check the `subscriber.dateOfBirth`.</li><li>If this eligibility check is for a newborn, resubmit it with the mother's information instead.</li></ul>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  |
| `61` | Date of Death Precedes Date(s) of Service                              | The date(s) of service you provided are after the patient's date of death. <ul><li>Check the service dates in the `encounter` object.</li><li>Note that if you don't provide a service date in the request, the payer defaults to using the current date in their timezone.</li></ul>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         |
| `62` | Date of Service Not Within Allowable Inquiry Period                    | The payer doesn't support the date(s) of service you provided.<ul><li>Check the service dates in the `encounter` object.</li><li>We recommend submitting dates up to 12 months in the past or up to the end of the current month. Payers aren't required to support dates outside these ranges. However, some payers do support dates further in the future, especially the next calendar month. Check the payer's documentation to determine their specific behavior.</li></ul>                                                                                                                                                                                                                                                                                                                                                                                                              |
| `63` | Date of Service in Future                                              | Some payers don't support future date(s) of service.<ul><li>Check the service dates in the `encounter` object.</li><li>Check the payer's specific requirements.</li></ul>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     |
| `69` | Inconsistent with Patient's Age                                        | The diagnosis codes provided don't match the patient's age. <ul><li>Check the `subscriber.dateOfBirth`.</li><li>Check any `subscriber.healthCareCodeInformation[].diagnosisCode` values.</li></ul>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            |
| `70` | Inconsistent with Patient's Gender                                     | The procedure codes provided are inconsistent with the patient's gender. <ul><li>Check `subscriber.gender`.</li><li>Check the values in `encounter.procedureCode` or `encounter.medicalProcedures[].procedureCode`.</li></ul>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |
| `71` | Patient Birth Date Does Not Match That for the Patient on the Database | The subscriber's birth date doesn't match what's in the payer's database. <ul><li>Check that the `subscriber.dateOfBirth` is correct.</li><li>If so, contact the payer to resolve this issue.</li></ul>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       |
| `72` | Invalid/Missing Subscriber/Insured ID                                  | The subscriber's member ID is either missing or invalid.<ul><li>Check the `subscriber.memberId`.</li><li>Ensure the member ID doesn't include the [Card Issuer Identifier](/healthcare/eligibility-troubleshooting#card-issuer-identifier-80840).</li><li>If you can't locate the correct member ID, try running an [insurance discovery check](/healthcare/insurance-discovery) to retrieve the patient's benefits information instead.</li></ul>                                                                                                                                                                                                                                                                                                                                                                                                                                            |
| `73` | Invalid/Missing Subscriber/Insured Name                                | The payer doesn't recognize the subscriber's name. <ul><li>Verify that the `subscriber.firstName` and `subscriber.lastName` are valid and spelled correctly.</li><li>Enter the patient's name exactly as it appears on their insurance card, if available, including any special or punctuation characters such as apostrophes, hyphens (dashes), or spaces. Review our other best practices for [entering patient names](/healthcare/send-eligibility-checks#patient-names).</li></ul>                                                                                                                                                                                                                                                                                                                                                                                                       |
| `74` | Invalid/Missing Subscriber/Insured Gender Code                         | The payer requires the subscriber's gender code. Ensure `subscriber.gender` is set to a valid value that matches the payer's records.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         |
| `75` | Subscriber/Insured Not Found                                           | The payer couldn't locate the subscriber in their database. <ul><li>We recommend providing the subscriber's `memberId`, `dateOfBirth`, `firstName`, and `lastName`. Given this information, all payers must return benefits details as long as they can find a unique match for the member within their system.</li><li> Enter the patient's name exactly as it appears on their insurance card, if available, including any special or punctuation characters such as apostrophes, hyphens (dashes), or spaces. Review our other best practices for [entering patient names](/healthcare/send-eligibility-checks#patient-names).</li><li>Sometimes patients provide outdated insurance information for the wrong payer. If the issue persists, try running an [insurance discovery check](/healthcare/insurance-discovery) to retrieve the patient's benefits information instead.</li></ul> |
| `76` | Duplicate Subscriber/Insured ID Number                                 | The payer found another member with the same member ID in their database. Ensure the `subscriber.memberId` is correct.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        |
| `78` | Subscriber/Insured Not in Group/Plan identified                        | The subscriber isn't in the specified health plan. <ul><li>Verify that the `subscriber.memberId` and `subscriber.groupNumber` are correct.</li><li>If so, contact the payer directly to resolve this issue.</li></ul>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         |
| `98` | Experimental Service or Procedure                                      | Contact the payer for guidance.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |
| `Aa` | Authorization Number Not Found                                         | The prior authorization number the payer has on file doesn't match the one you sent. Verify that the `encounter.priorAuthorizationOrReferralNumber` is correct.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |
| `AE` | Requires Primary Care Physician Authorization                          | The payer requires a prior authorization number. Add the `encounter.priorAuthorizationOrReferralNumber` to your request and resubmit.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         |
| `AF` | Invalid/Missing Diagnosis Code(s)                                      | The payer requires one or more diagnosis codes, or the diagnosis codes you provided are invalid. Ensure the information in the `subscriber.healthCareCodeInformation[]` array is correct.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     |
| `AG` | Invalid/Missing Procedure Code(s)                                      | The payer requires a procedure code or the procedure code you provided is invalid. Ensure `encounter.productOrServiceIDQualifier` and `encounter.procedureCode` are set to valid values.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      |
| `AO` | Additional Patient Condition Information Required                      | Contact the payer for guidance.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |
| `CI` | Certification Information Does Not Match Patient                       | The prior authorization number the payer has on file doesn't match the one you sent. Verify that the `encounter.priorAuthorizationOrReferralNumber` is correct.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |
| `E8` | Requires Medical Review                                                | Contact the payer for guidance.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |
| `IA` | Invalid Authorization Number Format                                    | The `encounter.priorAuthorizationOrReferralNumber` wasn't formatted correctly.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                |
| `MA` | Missing Authorization Number                                           | You must include a previously issued referral or authorization number in your request. Set the `encounter.referenceIdentificationQualifier` and `encounter.priorAuthorizationOrReferralNumber` properties and resubmit.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       |

{/* prettier-ignore-end */}

#### Dependents [#dependents]

You may receive the following errors at the `dependents` level.

{/* prettier-ignore-start */}

| Code | Description                                                     | Possible causes and resolutions                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
| ---- | --------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `15` | Required application data missing                               | <ul><li>The payer needs more information about the dependent to complete the eligibility check. We recommend providing the dependent's `firstName`, `lastName`, and `dateOfBirth`, when possible. Many payers return errors when the dependent's date of birth is missing.</li><li>Some payers don't support dependent eligibility checks. In these cases, submit the dependent as the subscriber with their own member ID.</li><li>Try including the `provider.taxId`, typically their EIN or SSN.</li></ul>                                                                                                                                                                                                                      |
| `33` | Input Errors                                                    | The request doesn't meet the payer's requirements, which usually means it doesn't contain enough information to identify the patient. <ul><li>We recommend providing the subscriber's `memberId`, `dateOfBirth`, `firstName`, and `lastName`.</li><li>We recommend providing the dependent's `firstName`, `lastname`, and `dateOfBirth`.</li></ul>                                                                                                                                                                                                                                                                                                                                                                                 |
| `35` | Out of Network                                                  | The dependent isn't in the provider's network. <ul><li>Verify that the `provider.npi` is valid.</li><li>If yes, contact the payer for clarification.</li></ul>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     |
| `42` | Unable to Respond at Current Time                               | The payer can't respond to your request. This is typically a temporary issue with the payer's system, such as downtime, but it can also be an extended outage. We recommend retrying immediately and continuing to retry for up to 2 minutes. Learn more about our [recommended retry strategy](/healthcare/eligibility-troubleshooting#retry-strategy) for payer connectivity issues.                                                                                                                                                                                                                                                                                                                                             |
| `43` | Invalid/Missing Provider Identification                         | The problem is either: <ul><li>The `provider.npi` isn't registered correctly with the payer.</li><li>The payer requires an agreement to begin processing eligibility checks for this provider.</li></ul> Check the [Payer Network](https://www.stedi.com/healthcare/network) to determine whether this payer requires transaction enrollment for eligibility checks. <ul><li>If yes, you must submit a [transaction enrollment request](/healthcare/transaction-enrollment) for the provider.</li><li>If not, the payer may still require other [credentialing or enrollment processes](/healthcare/credentialing-and-enrollment). Contact Stedi support to determine next steps.</li></ul>                                        |
| `45` | Invalid/Missing Provider Specialty                              | The `provider.npi` isn't registered with the payer under the correct specialty. The provider must contact the payer directly to resolve this issue due to PHI/HIPAA guidelines.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
| `47` | Invalid/Missing Provider State Specialty                        | The `provider.address` either doesn't match the address registered with the payer, or it doesn't match the provider's address in the NPPES system. <ul><li>Ensure the information in `provider.address` is correct.</li><li>If so, the provider must contact the payer directly to resolve this issue due to PHI/HIPAA guidelines.</li></ul>                                                                                                                                                                                                                                                                                                                                                                                       |
| `48` | Invalid/Missing Referring Provider Identification Number        | The referring provider (specified in `dependents[].providerIdentifier`) either: <ul><li>Isn't enrolled correctly with the payer. Contact Stedi support to resolve.</li><li>Isn't registered with the payer's health plans. The provider must contact the payer directly to complete the registration process. Contact Stedi support with questions.</li></ul>                                                                                                                                                                                                                                                                                                                                                                      |
| `49` | Provider is Not Primary Care Physician                          | The payer doesn't list the provider as a primary care physician, but requires them to be one. The provider or the patient must contact the payer to update their records.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |
| `51` | Provider Not on File                                            | The provider isn't registered with the payer. <ul><li>Ensure the `provider.npi` is correct.</li><li>If so, the provider must contact the payer directly to complete the registration process. This can include [credentialing and/or enrollment](/healthcare/credentialing-and-enrollment). Contact Stedi support with questions.</li></ul>                                                                                                                                                                                                                                                                                                                                                                                        |
| `52` | Service Dates Not Within Provider Plan Enrollment               | The provider wasn't registered with the patient's health plan on the date of service listed in the eligibility check. <ul><li>Verify that the `provider.npi` and the service dates in the `encounter` object are correct.</li><li>If so, the provider must contact the payer directly to resolve this issue.</li></ul>                                                                                                                                                                                                                                                                                                                                                                                                             |
| `53` | Inquired Benefit Inconsistent with Provider Type Enrollment     | The provider isn't registered with the payer to perform the requested benefit type. Some payers only return benefits that match the provider's taxonomy code. <ul><li>Verify that the `provider.npi` is correct.</li><li>Verify that the `serviceTypeCodes` or `procedureCode` and `productOrServiceIDQualifier` in the `encounter` object are correct.</li><li>Check the provider taxonomy in `provider.referenceIdentification` to ensure it matches what's in the payer's system.</li><li>If the issue persists, the provider must contact the payer directly to resolve.</li></ul>                                                                                                                                             |
| `54` | Inappropriate Product/Service ID Qualifier                      | You provided an invalid `encounter.productOrServiceIDQualifier`. Update the request and resubmit.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  |
| `55` | Inappropriate Product/Service ID                                | You provided an invalid `encounter.procedureCode`. Update the request and resubmit.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                |
| `56` | Inappropriate Date                                              | The service dates in the `encounter` object are incorrect or are formatted incorrectly. <ul><li>Dates must be in YYYYMMDD format.</li><li>We recommend submitting dates up to 12 months in the past or up to the end of the current month. Payers aren't required to support dates outside these ranges. However, some payers do support dates further in the future, especially the next calendar month. Check the payer's documentation to determine their specific behavior.</li></ul>                                                                                                                                                                                                                                          |
| `57` | Invalid/Missing Date(s) of Service                              | The service dates in the `encounter` object are missing, incorrect, or formatted incorrectly. <ul><li>Dates must be in YYYYMMDD format.</li><li>We recommend submitting dates up to 12 months in the past or up to the end of the current month. Payers aren't required to support dates outside these ranges. However, some payers do support dates further in the future, especially the next calendar month. Check the payer's documentation to determine their specific behavior.</li></ul>                                                                                                                                                                                                                                    |
| `58` | Invalid/Missing Date-of-Birth                                   | The payer needs the dependent's date of birth for identification. <ul><li>Include `dependents[].dateOfBirth` in the request.</li><li>The date should be in YYYYMMDD format.</li></ul>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              |
| `60` | Date of Birth Follows Date(s) of Service                        | The date(s) of service you provided are earlier than the dependent's date of birth. <ul><li>Check the service dates in the `encounter` object.</li><li>Check the `dependents[].dateOfBirth`.</li><li>If this eligibility check is for a newborn, resubmit it with the mother's information instead.</li></ul>                                                                                                                                                                                                                                                                                                                                                                                                                      |
| `61` | Date of Death Precedes Date(s) of Service                       | The date(s) of service you provided are after the dependent's date of death. <ul><li>Check the service dates in the `encounter` object.</li><li>Note that if you don't provide a service date in the request, the payer defaults to using the current date in their timezone.</li></ul>                                                                                                                                                                                                                                                                                                                                                                                                                                            |
| `62` | Date of Service Not Within Allowable Inquiry Period             | The payer doesn't support the date(s) of service you provided. <ul><li>Check the service dates in the `encounter` object.</li><li>We recommend submitting dates up to 12 months in the past or up to the end of the current month. Payers aren't required to support dates outside these ranges. However, some payers do support dates further in the future, especially the next calendar month. Check the payer's documentation to determine their specific behavior.</li></ul>                                                                                                                                                                                                                                                  |
| `63` | Date of Service in Future                                       | Some payers don't support future date(s) of service. <ul><li>Check the service dates in the `encounter` object.</li><li>Check the payer's specific requirements.</li></ul>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         |
| `64` | Invalid/Missing Patient ID                                      | The payer requires an additional identifier in the `dependents[].additionalIdentification` object. <ul><li>The required identifier is payer-specific. Check the payer's requirements.</li><li>Don't include the `healthInsuranceClaimNumber` or `medicaidRecipientIdentificationNumber` unless they're different from the member ID.</li></ul>                                                                                                                                                                                                                                                                                                                                                                                     |
| `65` | Invalid/Missing Patient Name                                    | The payer doesn't recognize the dependent's name. <ul><li>Ensure that the `dependents[].firstName` and `dependents[].lastName` are valid and spelled correctly.</li><li>Enter the patient's name exactly as it appears on their insurance card, if available, including any special or punctuation characters such as apostrophes, hyphens (dashes), or spaces. Review our other best practices for entering [patient names](/healthcare/send-eligibility-checks#patient-names).</li></ul>                                                                                                                                                                                                                                         |
| `66` | Invalid/Missing Patient Gender Code                             | The payer requires the dependent's gender code. Ensure `dependents[].gender` is set to a valid value that matches the payer's records.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             |
| `67` | Patient Not Found                                               | The payer couldn't locate the dependent in their database. <ul><li>We recommend providing the dependent's `firstName`, `lastName`, and `dateOfBirth`.</li><li>Enter the patient's name exactly as it appears on their insurance card, if available, including any special or punctuation characters such as apostrophes, hyphens (dashes), or spaces. Review our other best practices for entering [patient names](/healthcare/send-eligibility-checks#patient-names).</li><li>Sometimes patients provide outdated insurance information for the wrong payer. If the issue persists, try running an [insurance discovery check](/healthcare/insurance-discovery) to retrieve the patient's benefits information instead.</li></ul> |
| `68` | Duplicate Patient ID Number                                     | The payer found another member with the same member ID in their database. Ensure the `subscriber.memberId` is correct.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             |
| `69` | Inconsistent with Patient's Age                                 | The diagnosis codes provided don't match the patient's age. <ul><li>Check the `dependents[].dateOfBirth`.</li><li>Check any `dependents[].healthCareCodeInformation[].diagnosisCode` values.</li></ul>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             |
| `70` | Inconsistent with Patient's Gender                              | The procedure codes provided are inconsistent with the patient's gender. <ul><li>Check `dependents[].gender`.</li><li>Check the values in `encounter.procedureCode` or `encounter.medicalProcedures[].procedureCode`.</li></ul>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
| `71` | Patient DOB Does Not Match That for the Patient on the Database | The dependent's birth date doesn't match what's in the payer's database. <ul><li>Check that the `dependents[].dateOfBirth` is correct.</li><li>If so, contact the payer to resolve this issue.</li></ul>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           |
| `77` | Subscriber Found, Patient Not Found                             | The payer identified the subscriber in their database, but not the dependent.<ul><li>We recommend providing the dependent's `firstName`, `lastName`, and `dateOfBirth`.</li><li>Enter the patient's name exactly as it appears on their insurance card, if available, including any special or punctuation characters such as apostrophes, hyphens (dashes), or spaces. Review our other best practices for entering [patient names](/healthcare/send-eligibility-checks#patient-names).</li><li>If the dependent has a unique member ID, you must submit their information in the `subscriber` object instead.</li></ul>                                                                                                          |
| `98` | Experimental Service or Procedure                               | Contact the payer for guidance.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
| `AA` | Authorization Number Not Found                                  | The payer didn't recognize the prior authorization number you provided. Ensure the `encounter.priorAuthorizationOrReferralNumber` is correct.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      |
| `AE` | Requires Primary Care Physician Authorization                   | The payer requires a prior authorization number. Add the `encounter.priorAuthorizationOrReferralNumber` to your request and resubmit.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              |
| `AF` | Invalid/Missing Diagnosis Code(s)                               | The payer requires diagnosis codes, or the diagnosis codes you provided were invalid. Ensure the information in the `dependents[].healthCareCodeInformation[]` array is correct.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   |
| `AG` | Invalid/Missing Procedure Code(s)                               | The payer requires a procedure code or the procedure code you provided is invalid. Ensure `encounter.productOrServiceIDQualifier` and `encounter.procedureCode` are set to valid values.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           |
| `AO` | Additional Patient Condition Information Required               | Contact the payer for guidance.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
| `CI` | Certification Information Does Not Match Patient                | The prior authorization or referral number the payer has on file for the patient doesn't match the one you sent. Verify that the `encounter.priorAuthorizationOrReferralNumber` is correct.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        |
| `E8` | Requires Medical Review                                         | Contact the payer for guidance.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
| `IA` | Invalid Authorization Number Format                             | The `encounter.priorAuthorizationOrReferralNumber` wasn't formatted correctly.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     |
| `MA` | Missing Authorization Number                                    | You must include a previously issued referral or authorization number in your request. Set the `encounter.referenceIdentificationQualifier` and `encounter.priorAuthorizationOrReferralNumber` properties and resubmit.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            |

{/* prettier-ignore-end */}

### Card Issuer Identifier (80840) [#card-issuer-identifier-80840]

All health plans use (80840) as the first five digits of the Card Issuer Identifier.

This is a placeholder value used for standards compliance only, and you shouldn't pass it in an electronic eligibility check. However, many providers and OCR systems accidentally pass (80840) in other eligibility check fields. For example, they may try to pass this value as a subscriber or dependent ID, causing an [AAA rejection](#payer-aaa-errors) from the payer.

{/* prettier-ignore-start */}

To prevent these types of mistakes, Stedi automatically suppresses any string containing (80840) in the following fields:

| JSON                                                  | X12 EDI                                               |
| ----------------------------------------------------- | ----------------------------------------------------- |
| `subscriber.memberId`                                 | Loop 2100C `NM109` Subscriber Primary Identifier      |
| Any property in `subscriber.additionalIdentification` | Loop 2100C `REF02` Subscriber Supplemental Identifier |
| Any property in `dependent.additionalIdentification`  | Loop 2100D `REF02` Dependent Supplemental Identifier  |

{/* prettier-ignore-end */}

If the payer's eligibility response returns an AAA error, Stedi returns the following warning:

```
The field {FIELD} contains the string "(80840)", which is a known
placeholder prefix for a field that should not be provided in {FIELD}.
We have omitted that value in the request, and the request failed.
Please locate the correct value for {FIELD} and resubmit.
```

To correct this error, read the documentation for the corresponding field, locate the correct value, and resubmit the eligibility check.

### SOAP requests [#soap-requests]

Our [Real-Time Eligibility Check SOAP](/healthcare/api-reference/post-healthcare-eligibility-soap) endpoint respects the error handling rules defined in the [CAQH CORE vC2.2.0 Rule](https://www.caqh.org/core/connectivity).

At a high level, you can experience errors in the following categories:

* [Authentication errors](#authentication-errors): Either your API key, your Stedi account ID, or both are invalid.
* [SOAP faults](#soap-faults): Issues with the request `Envelope` or `Header` elements, such as malformed XML.
* [CORE-compliant errors](#core-compliant-errors): The request don't conform to CAQH CORE rules for eligibility checks.
* [X12 EDI validation errors](#x12-edi-validation-errors): The X12 EDI transaction doesn't match the required format.
* [Too many requests errors](#too-many-requests): You've exceeded your concurrency limit.
* [Payer `AAA` errors](#payer-aaa-errors): Errors from the payer indicating issues with processing your request.

#### Authentication errors [#authentication-errors]

If the `wsse:Username` or `wsse:Password` values are incorrect within the `Header` element:

* Stedi returns an HTTP `401` status code.
* The response includes an `ErrorCode` element set to `UnAuthorized`.

The following example shows an authentication error response:

```xml
<soapenv:Envelope xmlns:soapenv="http://www.w3.org/2003/05/soap-envelope">
  <soapenv:Body>
    <COREEnvelopeRealTimeResponse>
      <PayloadType>CoreEnvelopeError</PayloadType>
      <ProcessingMode>RealTime</ProcessingMode>
      <PayloadID>01987b7e-56cc-7871-8520-a22721948fb4</PayloadID>
      <TimeStamp>2025-08-06T22:23:50Z</TimeStamp>
      <CORERuleVersion>2.2.0</CORERuleVersion>
      <Payload></Payload>
      <ErrorCode>UnAuthorized</ErrorCode>
      <ErrorMessage>Invalid username and/or password.</ErrorMessage>
    </COREEnvelopeRealTimeResponse>
  </soapenv:Body>
</Envelope>
```

#### SOAP faults [#soap-faults]

SOAP faults indicate issues with the request `Envelope` or `Header` elements, such as malformed XML or missing required elements.

When these errors occur:

* Stedi returns an HTTP `400` status code.
* The response includes a `Fault` element that contains details about the error. The `Fault` element always contains a `Code` and `Reason` element. The `Code` element indicates the source of the error and the `Reason` element provides a description.

The following example shows a SOAP fault response:

```xml
<soapenv:Envelope xmlns:soapenv="http://www.w3.org/2003/05/soap-envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">

    <soapenv:Body>
        <soapenv:Fault>
            <soapenv:Code>
                <soapenv:Value>soapenv:Sender</soapenv:Value>
            </soapenv:Code>
            <soapenv:Reason>
                <soapenv:Text xml:lang="en">Unable to parse payload as CORE SOAP request</soapenv:Text>
            </soapenv:Reason>
        </soapenv:Fault>
    </soapenv:Body>

</soapenv:Envelope>
```

Visit the [SOAP Fault documentation](https://www.w3.org/TR/soap12-part1/#soapfault) for more details and a complete list of possible error codes.

#### CORE-compliant errors [#core-compliant-errors]

These errors typically indicate issues with the `COREEnvelopeRealTimeRequest` element that contains the request body. However, they can sometimes indicate specific issues with the SOAP `Envelope` or `Header` elements, such as an incorrect SOAP version or invalid credentials.

When these errors occur:

* Stedi returns an HTTP `400` status code.
* The `COREEnvelopeRealTimeResponse` element contains an `ErrorCode` and `ErrorMessage` with a description.
* The `Payload` element is empty because Stedi didn't process the eligibility check.

The following example shows a CORE-compliant error response:

```xml
<soapenv:Envelope xmlns:soapenv="http://www.w3.org/2003/05/soap-envelope">
  <soapenv:Body>
    <COREEnvelopeRealTimeResponse>
      <PayloadType>CoreEnvelopeError</PayloadType>
      <ProcessingMode>RealTime</ProcessingMode>
      <PayloadID>01987b70-2b7e-7b40-9875-10d3139dcf2a</PayloadID>
      <TimeStamp>2025-08-06T22:23:50Z</TimeStamp>
      <SenderID>TestStedi</SenderID>
      <ReceiverID>Stedi</ReceiverID>
      <CORERuleVersion>2.2.0</CORERuleVersion>
      <Payload></Payload>
      <ErrorCode>PayloadIDIllegal</ErrorCode>
      <ErrorMessage>Illegal value provided for PayloadID. Must be a valid UUID</ErrorMessage>
    </COREEnvelopeRealTimeResponse>
  </soapenv:Body>
</soapenv:Envelope>
```

The following table lists the possible values for `ErrorCode` and and their causes:

{/* prettier-ignore-start */}

| Error Code                | Possible Causes                                                                                                                                                                                                |
| ------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `CORERuleVersionIllegal`  | The `CORERuleVersion` element is not set to `2.2.0`.                                                                                                                                                           |
| `CORERuleVersionRequired` | The `CORERuleVersion` element is missing from the request. Set this to `2.2.0`.                                                                                                                                |
| `PayloadIDIllegal`        | The `PayloadID` element is not a valid UUID.                                                                                                                                                                   |
| `PayloadIDRequired`       | The `PayloadID` element is missing from the request. This must be a valid UUID.                                                                                                                                |
| `PayloadIllegal`          | The `Payload` element is empty or doesn't contain a valid X12 EDI 270 transaction.                                                                                                                             |
| `PayloadRequired`         | The `Payload` element is missing from the request. This must be a valid X12 EDI 270 transaction.                                                                                                               |
| `PayloadTypeIllegal`      | The `PayloadType` element is invalid. Set this to `X12_270_Request_005010X279A1`.                                                                                                                              |
| `PayloadTypeRequired`     | The `PayloadType` element is missing from the request. Set this to `X12_270_Request_005010X279A1`.                                                                                                             |
| `ProcessingModeIllegal`   | The `ProcessingMode` element is not set to `RealTime`.                                                                                                                                                         |
| `ProcessingModeRequired`  | The `ProcessingMode` element is missing from the request. Set this to `RealTime` for real-time eligibility checks.                                                                                             |
| `ReceiverIDIllegal`       | The `ReceiverID` exceeds the maximum length of 50 characters.                                                                                                                                                  |
| `ReceiverIDRequired`      | The `ReceiverID` element is missing from the request. Visit the [Request](/healthcare/api-reference/post-healthcare-eligibility-soap#request) reference documentation for guidance on which identifier to use. |
| `SenderIDIllegal`         | The `SenderID` exceeds the maximum length of 50 characters.                                                                                                                                                    |
| `SenderIDRequired`        | The `SenderID` element is missing from the request. Visit the [Request](/healthcare/api-reference/post-healthcare-eligibility-soap#request) reference documentation for guidance on which identifier to use.   |
| `TimeStampIllegal`        | The `TimeStamp` element is not in the correct format. It must be in ISO 8601 format, such as `2024-07-28T12:00:00Z`.                                                                                           |
| `TimeStampRequired`       | The `TimeStamp` element is missing from the request.                                                                                                                                                           |
| `UnAuthorized`            | The request is unauthorized. This can happen if the `wsse:UsernameToken` is missing or invalid, or if the API key is incorrect.                                                                                |
| `VersionMismatch`         | The SOAP version in the request does not match the expected version.                                                                                                                                           |

{/* prettier-ignore-end */}

#### X12 EDI validation errors [#x12-edi-validation-errors]

Validation errors occur when the X12 EDI transaction doesn't conform to the expected [270 X12 EDI format](https://portal.stedi.com/app/guides/view/hipaa/health-care-eligibility-benefit-inquiry-x279a1/01GRYB6GTDJ4MEP5Z16CGMQWT6) or contains invalid data.

When there are validation errors, Stedi returns an HTTP `400` status code. There are two possible error cases:

* **Invalid EDI envelope:** There are issues with the `ISA` or `GS` header. The `ErrorCode` element is set to `PayloadIllegal`, and the `Payload` element is empty because Stedi couldn't parse the request.
  ```xml
  <soapenv:Envelope xmlns:soapenv="http://www.w3.org/2003/05/soap-envelope"><soapenv:Body>
      <COREEnvelopeRealTimeResponse>
        <PayloadType>CoreEnvelopeError</PayloadType>
        <ProcessingMode>RealTime</ProcessingMode>
        <PayloadID>01987c0b-c8b3-71c1-bd6f-8e26725c7110</PayloadID>
        <TimeStamp>2025-08-06T22:23:50Z</TimeStamp>
        <SenderID>RECEIVER-ID</SenderID>
        <ReceiverID>SENDER-ID</ReceiverID>
        <CORERuleVersion>2.2.0</CORERuleVersion>
        <Payload></Payload>
        <ErrorCode>PayloadIllegal</ErrorCode>
        <ErrorMessage>Error while getting metadata for an X12 file: Error reading EDI: Invalid ISA: ISA-11 must be 'U' for interchange control versions earlier than 00402</ErrorMessage>
      </COREEnvelopeRealTimeResponse>
    </soapenv:Body>
  </soapenv:Envelope>
  ```
* **Invalid EDI transaction:** Stedi successfully parsed the EDI envelope, but there are validation issues with the rest of the transaction. The `ErrorCode` element is set to `Success`, and the `Payload` element contains a 999 Implementation Acknowledgment describing the errors. This 999 is usually from Stedi, but it can also be from the payer.
  ```xml
  <soapenv:Envelope xmlns:soapenv="http://www.w3.org/2003/05/soap-envelope">
    <soapenv:Body>
      <COREEnvelopeRealTimeResponse>
        <PayloadType>X12_999_Response_005010X231A1</PayloadType>
        <ProcessingMode>RealTime</ProcessingMode>
        <PayloadID>01987c11-ae2e-7f63-801d-cb3529f45952</PayloadID>
        <TimeStamp>2025-08-06T22:23:50Z</TimeStamp>
        <SenderID>RECEIVER-ID</SenderID>
        <ReceiverID>SENDER-ID</ReceiverID>
        <CORERuleVersion>2.2.0</CORERuleVersion>
        <Payload><![CDATA[ISA*00*          *00*          *ZZ*RECEIVER       *ZZ*SENDER         *250806*1910*^*00501*000000001*0*T*:~GS*FA*STEDI*117151744*20250806*191051*10*X*005010X231A1~ST*999*0001*005010X231A1~AK1*HS*1*005010X279A1~AK2*270*1234*005010X279A1~IK3*BHT*2**8~IK4*4*373*8*20240321!1319~IK4*5**1~IK3*BHT*2**8~IK4*4*373*8*20240321!1319~IK4*5**1~IK5*R*5~AK9*R*1*1*0~SE*12*0001~GE*1*10~IEA*1*000000001~]]></Payload>
        <ErrorCode>Success</ErrorCode>
        <ErrorMessage/>
      </COREEnvelopeRealTimeResponse>
    </soapenv:Body>
  </soapenv:Envelope>
  ```

#### Too many requests [#too-many-requests]

If you exceed your [concurrency limit](/healthcare/api-reference#concurrency-limits) for the SOAP endpoint:

* Stedi returns an HTTP `429` status code.
* The X12 EDI transaction inside the `Payload` element contains an `AAA` error with code `42`.

Stedi will continue rejecting additional requests with a `429` status code until one of your previous requests is completed.

The following example shows a too many requests response:

```xml
<soapenv:Envelope xmlns:soapenv="http://www.w3.org/2003/05/soap-envelope">
  <soapenv:Body>
    <COREEnvelopeRealTimeResponse>
      <PayloadType>X12_271_Response_005010X279A1</PayloadType>
      <ProcessingMode>RealTime</ProcessingMode>
      <PayloadID>019afed8-aa83-7fe2-a1bf-18dd5942a772</PayloadID>
      <TimeStamp>2025-12-08T16:43:23Z</TimeStamp>
      <SenderID>STEDI</SenderID>
      <ReceiverID>686460348755</ReceiverID>
      <CORERuleVersion>2.2.0</CORERuleVersion>
      <Payload><![CDATA[ISA*00*          *00*          *ZZ*STEDI          ...*AAA*Y**42*R*...]]></Payload>
      <ErrorCode>Success</ErrorCode>
      <ErrorMessage> </ErrorMessage>
    </COREEnvelopeRealTimeResponse>
  </soapenv:Body>
</soapenv:Envelope>
```

# Eligibility views
Source: https://www.stedi.com/docs/healthcare/eligibility-views


The Stedi portal provides two views for tracking eligibility checks. You can navigate to each view from the side navigation.

* **[Checks](https://portal.stedi.com/app/healthcare/eligibility/checks)** - Shows individual eligibility check attempts. Every attempt appears as a separate row. If a check is retried, the retry appears as its own row.
* **[Searches](https://portal.stedi.com/app/healthcare/eligibility/searches)** - Groups all retry attempts for the same check into a single record, called an eligibility search.

## Checks view [#checks-view]

The [checks view](https://portal.stedi.com/app/healthcare/eligibility/checks) shows individual eligibility check attempts. For example, if you submit a check for patient Jane Doe that initially fails and then retry to get successful results, the initial attempt and the retry appear as separate checks in the list.

You can use the checks view to:

* Check the status of individual eligibility check attempts. For example, you may want to reference the results of an eligibility check that you ran earlier in the day.
* Identify patterns in check failures. For example, if you filter by a specific payer and find that checks for all patients within the last hour have failed, the payer may be experiencing an outage.

Eligibility checks are sorted by **Processed date**, with the most recent checks appearing first.

<img alt="Eligibility checks view" src="__img0" />

### Filter [#filter]

You can filter eligibility checks by the following criteria:

{/* prettier-ignore-start */}

| Filter             | Description                                                                                                                                                |
| ------------------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Processed date** | A date range for when Stedi processed the eligibility check.                                                                                               |
| **Results**        | By the check result status (Active, Inactive, Investigate, or Failed).                                                                                     |
| **Member ID**      | By the patient's member ID.                                                                                                                                |
| **Payer**          | By a Payer ID or alias in the [Payer Network](https://www.stedi.com/healthcare/network) or a payer's business name (such as Cigna).                        |
| **Provider NPI**   | By the National Provider Identifier (NPI) of the requesting provider.                                                                                      |
| **Error code**     | By the [AAA code](/healthcare/eligibility-troubleshooting#payer-aaa-errors) returned by the payer. For example, `42` errors indicate a connectivity issue. |
| **Search ID**      | By the ID of the eligibility search containing the check.                                                                                                  |

{/* prettier-ignore-end */}

### Check result [#check-result]

Each eligibility check can have one of the following results:

{/* prettier-ignore-start */}

| Result          | Description                                                                                                                                                                                                                     |
| --------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Active**      | The payer's response contains an active eligibility and benefit type. Visit [Eligibility and benefit type codes](/healthcare/eligibility-active-coverage-benefits#benefit-type-codes) for a complete list of valid code values. |
| **Inactive**    | The payer's response doesn't contain an active eligibility and benefit type.                                                                                                                                                    |
| **Investigate** | The payer returned an unexpected eligibility or benefit type code. Review the response and contact the payer if you have questions.                                                                                             |
| **Failed**      | The payer returned an error code in the response. Review the error code and retry the eligibility check.                                                                                                                        |

{/* prettier-ignore-end */}

### Check details [#check-details]

Click any check to view its details, including the check overview, benefits information (if present), and raw request and response data.

<img alt="Eligibility check overview page" src="__img1" />

From an individual eligibility check's detail page, you can go to the associated [eligibility search](#searches-view) to review all related attempts. Click **View search** to open the search. If the search contains multiple checks, the button shows the count of related checks.

## Searches view [#searches-view]

The [searches view](https://portal.stedi.com/app/healthcare/eligibility/searches) displays a list of eligibility searches. An eligibility search is a container for retry attempts of a particular eligibility check.

When you submit an eligibility check through any method, Stedi creates a new eligibility search record. Every time you retry that eligibility check, Stedi stores the retry details within the existing eligibility search. This creates a clear timeline of troubleshooting efforts for failed requests.

You can use the searches view to:

* Track the full retry history for a specific patient's eligibility check. For example, you can see all troubleshooting attempts made to resolve a failed check for patient Jane Doe and track what you changed for each attempt.
* View the overall status of an eligibility check based on the highest-priority result. An [eligibility search's result](#search-result) is based on the best outcome achieved across all retry attempts.

Eligibility searches are sorted by the date of the original eligibility check within the eligibility search, with the most recent listed first.

<img alt="Eligibility searches view" src="__img2" />

### Filter [#filter-1]

You can filter eligibility searches by the following criteria:

{/* prettier-ignore-start */}

| Filter           | Description                                                                                                                                                                                                                                                                                                                                        |
| ---------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Error code**   | By the [AAA code](/healthcare/eligibility-troubleshooting#payer-aaa-errors) returned by the payer. For example, `42` errors indicate a connectivity issue.                                                                                                                                                                                         |
| **Payer**        | By a Payer ID or alias in the [Payer Network](https://www.stedi.com/healthcare/network) or a payer's business name (such as Cigna).                                                                                                                                                                                                                |
| **Result**       | By Active, Inactive, Investigate, and Failed.                                                                                                                                                                                                                                                                                                      |
| **Date**         | A date range for the submission of the initial eligibility check within a search. For example, a filter beginning on October 1st would only include eligibility searches with an initial submission on or after October 1st. It would *not* include an eligibility search with an initial submission on September 30th and a retry on October 1st. |
| **Provider NPI** | By the National Provider Identifier (NPI) of the requesting provider.                                                                                                                                                                                                                                                                              |

{/* prettier-ignore-end */}

### Search result [#search-result]

The result of an eligibility search is determined by the **highest-priority check** among all checks in the search. Stedi uses the following priority order: **Active → Inactive → Investigate → Failed**. If multiple checks share the same priority result, the most recent check determines the search result.

**Example:** A search contains three sequential checks: first a Failed check, then an Active check, and finally another Failed check. The search result is `Active` because Active has the highest priority, even though it's not the most recent check.

This priority logic also applies to all search-level data displayed in the Eligibility searches view, including patient information, payer details, service type codes, and error metadata. All of this data comes from the highest-priority check, not necessarily the most recent check.

An eligibility search can have one of the following results:

{/* prettier-ignore-start */}

| Result          | Description                                                                                                                                                                                                                     |
| --------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Active**      | The payer's response contains an active eligibility and benefit type. Visit [Eligibility and benefit type codes](/healthcare/eligibility-active-coverage-benefits#benefit-type-codes) for a complete list of valid code values. |
| **Inactive**    | The payer's response doesn't contain an active eligibility and benefit type.                                                                                                                                                    |
| **Investigate** | The payer returned an unexpected eligibility or benefit type code. Review the response and contact the payer if you have questions.                                                                                             |
| **Failed**      | The payer returned an error code in the response. Review the error code and retry the eligibility check.                                                                                                                        |

{/* prettier-ignore-end */}

### Search details [#search-details]

Click any search to view its details, including the search overview and a complete history of all check attempts.

<img alt="Eligibility search details page" src="__img3" />

From a search detail page, you can view all individual checks within the search to see the progression of retry attempts. Click any check to see its full details, including benefits information (if present), and the raw request and response data.

## Run eligibility checks [#run-eligibility-checks]

You can run eligibility checks in the Stedi portal through either view. To run a new eligibility check:

1. Go to the [checks view](https://portal.stedi.com/app/healthcare/eligibility/checks) or [searches view](https://portal.stedi.com/app/healthcare/eligibility/searches).
2. Click **+ New eligibility check**.

Visit [Run eligibility checks - UI](/healthcare/send-eligibility-checks-ui) for complete instructions about completing the form and retrying failed checks.

## Link to specific eligibility checks [#link-to-specific-eligibility-checks]

Stedi assigns a globally unique identifier to each eligibility check, formatted as `ec_<UUID>`. For example: `ec_f81d4fae-7dec-11d0-a765-00a0c91e6b12`.

Stedi returns the unique eligibility check ID in the following locations:

* **SOAP Eligibility Check endpoint:** `stedi-id` header in the HTTP response
* **JSON and Raw X12 Eligibility Check endpoints** `id` property in the JSON response
* **Poll Batch Checks endpoint:** `items.id` property in the JSON response
* **Retrieve Batch Check Statuses endpoint:** `items[].additionalInfo.eligibility.id` property in the JSON response

You can use the eligibility check ID to link directly to a specific eligibility check's results in the Stedi portal. The format for direct portal links is: `https://portal.stedi.com/app/healthcare/eligibility/checks/{check-id}`, where `{check-id}` is the unique Stedi-assigned eligibility check ID.

# Overview
Source: https://www.stedi.com/docs/healthcare/eligibility-workflows-overview


Eligibility refers to a patient's qualification to receive specific medical benefits, services, or coverage under their health plan.

Stedi allows you to reliably determine patient eligibility, even when the patient doesn't know or can't provide accurate insurance information. Once you integrate with Stedi, you can use the UI tools in the Stedi portal to test, troubleshoot, and monitor your entire eligibility pipeline.

## Eligibility workflows [#eligibility-workflows]

Here's an overview of the eligibility workflows you can automate with Stedi APIs:

* [Eligibility checks](/healthcare/intro-eligibility-checks): Verify a patient's coverage with a specific payer. Eligibility checks return full benefits information from the payer, so they're helpful when you need to determine a patient's financial responsibilities for medical services, such as co-payments, deductibles, and out-of-pocket maximums.
* [Insurance discovery](/healthcare/insurance-discovery): Find a patient's active health plans using their demographic information, such as their name and date of birth. Insurance discovery checks return the same benefits information as a standard eligibility check, making them a great backup for verifying coverage when eligibility checks fail or aren't possible.
* [MBI lookup](/healthcare/mbi-lookup): Find a Medicare patient's Medicare Beneficiary Identifier (MBI) using their demographic information. check. Stedi returns a complete eligibility response, including the patient's coverage status and MBI for future reference.
* [Coordination of benefits](/healthcare/coordination-of-benefits): Determine whether a patient has multiple, overlapping coverages and if so, which plan is primarily responsible for payment (primacy). COB checks help you submit claims to the correct payer and avoid claim denials.

The most common workflows for eligibility checks and insurance discovery are patient intake and claims submission. You can also use insurance discovery checks during revenue recovery.

The following flowchart shows how these workflows typically work together during patient intake and claims submission:

<img alt="Insurance discovery workflow" src="__img0" />

## Eligibility views [#eligibility-views]

The [Eligibility views](/healthcare/eligibility-views) help you track and manage your entire eligibility pipeline. The portal provides two views - Checks and Searches - that give you different perspectives on your eligibility checks. You can efficiently troubleshoot issues, review patient coverage details, and resolve common errors automatically with Stedi Agent.

Within the Stedi portal, you can also manually submit new eligibility checks and coordination of benefits checks as needed.

## MCP server [#mcp-server]

Our [Model Context Protocol (MCP) server](/healthcare/mcp-server) defines a set of tools that AI agents can use to perform and troubleshoot eligibility checks through Stedi.

When building agents that work with eligibility data, we recommend using our MCP server. It excels at individual eligibility checks, especially when your agent needs to retrieve coverage data in real time.

# Configure and test event destinations
Source: https://www.stedi.com/docs/healthcare/event-destinations-configure


You can configure event destinations that automatically send Stedi events to your endpoint. Events indicate changes to Stedi resources, such as [transaction enrollment](/healthcare/transaction-enrollment) requests.

In each event message, Stedi includes a signature you can use to [verify its authenticity](/healthcare/event-destinations-message-handling#verify-authenticity-and-receipt-time). Stedi also automatically manages retries for event deliveries and sends you in-app notifications and emails when there are repeated failures. You can manage your [notification preferences](/healthcare/account-settings#notification-preferences) to control which notifications you receive.

Currently, you can configure event destinations for Stedi transaction enrollment events. More event types, including transaction processing events, will be available in future releases.

## Create event destinations [#create-event-destinations]

You can create up to 16 event destinations per Stedi account. To create event destinations:

1. Go to the [Event destinations page](https://portal.stedi.com/app/settings/developer/event-destinations) in your developer settings.

2. Click All event destinations.

3. Click **+ New destination**.

4. Enter the following information into the **Create an event destination** form:
   1. **Name:** Choose a descriptive, human-readable name for the event destination. Stedi displays this name in the portal for identification.

   2. **URL:** Enter the webhook URL where you want Stedi to send events. The URL must use `https://` and must point directly at your webhook receiver. Stedi doesn't follow HTTP redirects - if your endpoint responds with a `3xx` status code, the delivery is recorded as a failure.

   3. **Description:** Optionally, describe the intended use for the destination in more detail. This description will be displayed in the Stedi portal.

   4. **Events:** Select the event types you want to send to the designated webhook URL.

5. Click **Create destination**. Stedi displays a modal containing the signing secret for this webhook. Save it to a secure location. You'll need it to verify that the events you receive are from Stedi.

You can now begin testing the event destination.

## Trigger test events [#trigger-test-events]

You can manually trigger [`event.ping` events](/healthcare/event-destinations-event-types#eventping) for any configured event destination. To trigger test events:

1. Go to the [Event destinations page](https://portal.stedi.com/app/settings/developer/event-destinations) in your developer settings.
2. Click the event destination you want to test.
3. Click the **Event deliveries** tab.
4. Click the **Ping** button.

Stedi attempts to deliver an `event.ping` to the designated webhook URL. You can review its status and details on the **Event deliveries** tab.

## Secrets [#secrets]

Stedi generates a secret for each event destination. You can use the secret to [verify the authenticity](/healthcare/event-destinations-message-handling#verify-authenticity-and-receipt-time) of the event messages you receive from Stedi.

### Manage secrets [#manage-secrets]

You can review, copy, and rotate an event destination's secret at any time from its **Overview** tab.

### Rotate secret [#rotate-secret]

You can rotate the secret in accordance with your organization's security policies. To rotate the secret for an event destination:

1. Go to the [Event destinations page](https://portal.stedi.com/app/settings/developer/event-destinations) in your developer settings.
2. Click the event destination you want to edit to go to its **Overview** tab.
3. Under **Signing secret**, click the **Rotate secret** icon.
4. Select an **Expiry period**. This is the number of hours the previous secret should remain valid after rotation. Available options are:
   * 0 hours (previous secret expires immediately)
   * 24 hours
   * 720 hours (30 days)
5. Click **Rotate**.

If you specified an expiry period, the event message will contain two signatures until that period has concluded: one matching the previous secret and one matching the new secret. You'll need to run any verification steps with both until the expiry period ends.

Each event destination can have only two active secrets at a time. If you set an expiry period for the rotated secret, you must wait until that expiry period has passed before attempting to rotate the secret again.

## Edit event destinations [#edit-event-destinations]

You can review a list of all configured event destinations from the [Event destinations page](https://portal.stedi.com/app/settings/developer/event-destinations) in your developer settings.

Click the &#x2A;*ellipses (...)** to the right of any destination to view, edit, disable, re-enable, or delete it.

### Disable vs. delete [#disable-vs-delete]

Disabling an event destination causes Stedi to stop sending new events to the webhook. Stedi also attempts to complete any in-progress retry attempts, and then pauses additional retries until the event destination is re-enabled. Once you re-enable the event destination, Stedi resumes retrying undelivered events until the retry limit is reached.

Deleting an event destination stops all event deliveries, including in-progress retry attempts immediately.

# Events and message schema
Source: https://www.stedi.com/docs/healthcare/event-destinations-event-types


You can configure event destinations for Stedi transaction enrollment events.

<Note>
  More event types, including transaction processing events, will be available in future releases. Please contact [Stedi support](https://www.stedi.com/contact) to request event types for your use case.
</Note>

## Message schema [#message-schema]

Stedi sends relevant events as a `POST` HTTP request to the specified destination URL. Stedi uses the following schema for event destination deliveries.

### Headers [#headers]

Each event delivery includes the following required headers:

| Header              | Type    | Description                                                                                                                                                                                    |
| ------------------- | ------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `attempt-number`    | integer | The delivery attempt number. The initial delivery is `1`.                                                                                                                                      |
| `attempt-type`      | enum    | Whether the attempt originated from Stedi (`AUTOMATIC`) or was a manual retry (`MANUAL`).                                                                                                      |
| `destination-id`    | string  | The identifier for the event destination,formatted as `dst_{UUID}`.                                                                                                                            |
| `event-id`          | string  | The event identifier, formatted as `evt_{UUID}`.                                                                                                                                               |
| `webhook-id`        | string  | A unique message identifier per the [Standard Webhooks](https://www.standardwebhooks.com/) specification, formatted as `msg_{UUID}`. You can use this to check for duplicate event deliveries. |
| `webhook-signature` | string  | A Stedi-generated signature, formatted as `v1,{signature}`. Use this to verify message authenticity.                                                                                           |
| `webhook-timestamp` | integer | A Unix timestamp indicating when the event was created. This is different from when the event was delivered. You can use this to verify the time of receipt.                                   |

The following example headers show that this is the original delivery (`attempt-number: 1`) from Stedi.

```bash
attempt-number: 1
attempt-type: AUTOMATIC
destination-id: dst_019d30e3-5e39-7ab3-9a2e-fcf8218a313d
event-id: evt_b73ae1d2-9128-90b5-60ff-7479ab8b30ac
webhook-id: msg_b73ae1d2-9128-90b5-60ff-7479ab8b30ac
webhook-signature: v1,Z5wMZ2rqRMsnGdfKzOLnRv1SIwivsLFCGQzJH7eCmlU=
webhook-timestamp: 1774641758
```

### Event payload [#event-payload]

Stedi events use a thin event schema. Thin events notify you that a resource has changed but don't include the resource's data. Once you receive an event, verify the resource's state and retrieve details using Stedi's APIs or the Stedi portal.

The event payload schema is available in the [Retrieve Event](/healthcare/api-reference/get-event-destinations-event) endpoint's `eventPayload.v1Event` object.

## Events [#events]

You can subscribe to transaction enrollment events. You can also [trigger a generic test event](/healthcare/event-destinations-configure#trigger-test-events) from within the Stedi portal to test your event destinations.

### enrollment.activated [#enrollmentactivated]

Stedi generates this event when a [transaction enrollment](/healthcare/transaction-enrollment) request is set to `LIVE` status. This indicates that the enrollment process is complete, and the specified provider can begin exchanging the listed transaction types with the payer.

You can use the enrollment ID in `resource.id` to retrieve details through the [Retrieve Enrollment](/healthcare/api-reference/get-enrollment) endpoint or the [Enrollments page](https://portal.stedi.com/app/healthcare/enrollments) in the Stedi portal.

```json
{
  "account": "11111111-2222-3333-4444-555555555555",
  "created": "2026-03-30T23:19:00.501Z",
  "environment": "PRODUCTION",
  "id": "evt_a81659f1-16a5-9bec-03e1-0ba8ab5e9652",
  "object": "v1.event",
  "resource": {
    "id": "019bb508-dc63-73a1-8ddc-9d4720299072",
    "type": "enrollment"
  },
  "type": "enrollment.activated"
}
```

### enrollment.rejected [#enrollmentrejected]

Stedi generates this event when a [transaction enrollment](/healthcare/transaction-enrollment) request is set to `REJECTED` status. This indicates that the payer rejected the enrollment. Common reasons for rejection include incorrect details in the request and the provider not being credentialed with the payer. Customer support will contact you with reasons for rejection and next steps.

You can use the enrollment ID in `resource.id` to retrieve details through the [Retrieve Enrollment](/healthcare/api-reference/get-enrollment) endpoint or the [Enrollments page](https://portal.stedi.com/app/healthcare/enrollments) in the Stedi portal.

```json
{
  "account": "11111111-2222-3333-4444-555555555555",
  "created": "2026-03-30T23:18:52.772Z",
  "environment": "PRODUCTION",
  "id": "evt_8c28ce2e-5d4f-ae1c-fddb-e2421245a873",
  "object": "v1.event",
  "resource": {
    "id": "019bb4e9-5209-7e83-bc84-0db436be7e00",
    "type": "enrollment"
  },
  "type": "enrollment.rejected"
}
```

### enrollment.updated [#enrollmentupdated]

Stedi generates this event when a [transaction enrollment](/healthcare/transaction-enrollment) request changes, such as an update to its status, payer, contacts, provider details, tasks, or documents. Use it to keep your records in sync with the latest state of the enrollment.

You can use the enrollment ID in `resource.id` to retrieve details through the [Retrieve Enrollment](/healthcare/api-reference/get-enrollment) endpoint or the [Enrollments page](https://portal.stedi.com/app/healthcare/enrollments) in the Stedi portal.

```json
{
  "account": "11111111-2222-3333-4444-555555555555",
  "created": "2026-03-30T23:19:00.501Z",
  "environment": "PRODUCTION",
  "id": "evt_a81659f1-16a5-9bec-03e1-0ba8ab5e9652",
  "object": "v1.event",
  "resource": {
    "id": "019bb508-dc63-73a1-8ddc-9d4720299072",
    "type": "enrollment"
  },
  "type": "enrollment.updated"
}
```

### enrollment.task.assigned [#enrollmenttaskassigned]

Stedi generates this event when it assigns a new enrollment [task](/healthcare/transaction-enrollment-tasks-documents) to the provider. Tasks describe actions the provider must take to move the enrollment forward. When a new task is assigned, the enrollment status changes to `PROVIDER_ACTION_REQUIRED`.

You can use the task ID in `resource.id` and the enrollment ID in `relatedResources[].id` to retrieve details through the [Retrieve Enrollment](/healthcare/api-reference/get-enrollment) endpoint or the [Enrollments page](https://portal.stedi.com/app/healthcare/enrollments) in the Stedi portal.

```json
{
  "account": "11111111-2222-3333-4444-555555555555",
  "created": "2026-04-24T10:00:00.000Z",
  "environment": "PRODUCTION",
  "id": "evt_a81659f1-16a5-9bec-03e1-0ba8ab5e9652",
  "object": "v1.event",
  "resource": {
    "id": "019bb508-dc63-73a1-8ddc-9d4720299072",
    "type": "enrollment.task"
  },
  "relatedResources": [
    {
      "id": "019bb4e9-5209-7e83-bc84-0db436be7e00",
      "type": "enrollment"
    }
  ],
  "type": "enrollment.task.assigned"
}
```

### enrollment.task.completed [#enrollmenttaskcompleted]

Stedi generates this event when an enrollment [task](/healthcare/transaction-enrollment-tasks-documents) assigned to the provider is completed. This indicates that the provider finished the requested action, such as uploading a document or providing an identifier.

You can use the task ID in `resource.id` and the enrollment ID in `relatedResources[].id` to retrieve details through the [Retrieve Enrollment](/healthcare/api-reference/get-enrollment) endpoint or the [Enrollments page](https://portal.stedi.com/app/healthcare/enrollments) in the Stedi portal.

```json
{
  "account": "11111111-2222-3333-4444-555555555555",
  "created": "2026-04-24T10:00:00.000Z",
  "environment": "PRODUCTION",
  "id": "evt_a81659f1-16a5-9bec-03e1-0ba8ab5e9652",
  "object": "v1.event",
  "resource": {
    "id": "019bb508-dc63-73a1-8ddc-9d4720299072",
    "type": "enrollment.task"
  },
  "relatedResources": [
    {
      "id": "019bb4e9-5209-7e83-bc84-0db436be7e00",
      "type": "enrollment"
    }
  ],
  "type": "enrollment.task.completed"
}
```

### enrollment.task.deleted [#enrollmenttaskdeleted]

Stedi generates this event when Stedi deletes an enrollment [task](/healthcare/transaction-enrollment-tasks-documents) assigned to the provider. This typically occurs when a new task supersedes an existing one for a payer. For example, if the requirements for the enrollment process change, we will delete the old task and create a new one that reflects the updated requirements. When you receive this event, the deleted task is no longer needed to move the enrollment forward.

You can use the task ID in `resource.id` and the enrollment ID in `relatedResources[].id` to retrieve details through the [Retrieve Enrollment](/healthcare/api-reference/get-enrollment) endpoint or the [Enrollments page](https://portal.stedi.com/app/healthcare/enrollments) in the Stedi portal.

```json
{
  "account": "11111111-2222-3333-4444-555555555555",
  "created": "2026-04-24T10:00:00.000Z",
  "environment": "PRODUCTION",
  "id": "evt_a81659f1-16a5-9bec-03e1-0ba8ab5e9652",
  "object": "v1.event",
  "resource": {
    "id": "019bb508-dc63-73a1-8ddc-9d4720299072",
    "type": "enrollment.task"
  },
  "relatedResources": [
    {
      "id": "019bb4e9-5209-7e83-bc84-0db436be7e00",
      "type": "enrollment"
    }
  ],
  "type": "enrollment.task.deleted"
}
```

### event.ping [#eventping]

A test event you can trigger to validate your event destination.

```json
{
  "id": "evt_019d51b6-8d19-71c3-8f5f-cfb55830b618",
  "object": "v1.event",
  "created": "2026-04-03T05:00:11.417Z",
  "environment": "PRODUCTION",
  "resource": {
    "type": "destination",
    "id": "dst_019d51b6-707c-7920-8569-de40061cbe5c"
  },
  "account": "cd26e999-2cb9-4c64-be13-f7375e640b83",
  "type": "event.ping"
}
```

## Data retention [#data-retention]

By default, Stedi returns event data and displays delivery attempts from the past 30 days. Contact us if you need access to older event data.

# Handle event deliveries and retries
Source: https://www.stedi.com/docs/healthcare/event-destinations-message-handling


Stedi begins sending events to your webhook immediately after you [configure an event destination](/healthcare/event-destinations-configure).

## Review events and deliveries [#review-events-and-deliveries]

You can access events and event delivery attempts manually through the Stedi portal or programmatically through Stedi's Events API.

### Stedi portal [#stedi-portal]

You can review all events and attempted event deliveries in the Stedi portal. This allows you to verify your destination is working and helps with troubleshooting.

To review events and event deliveries through the **Events** page:

1. Go to the [Events page](https://portal.stedi.com/app/settings/developer/events) in your developer settings. Stedi displays a list of all events in your account for the past 30 days.
2. Click an event to review its details. Stedi shows key information, including the created date and type, as well as a list of every delivery attempt to configured event destinations.
3. Click a delivery attempt to review its complete details, including the HTTP status code and the full request and response bodies for that attempt.

To review event deliveries for a specific event destination:

1. Go to the [Event destinations page](https://portal.stedi.com/app/settings/developer/event-destinations) in your developer settings.
2. Click an event destination and select its **Event deliveries** tab. Stedi lists all the event delivery attempts and their status for the past 30 days.
3. Click an event delivery to review its details, including the HTTP status code and the full request and response bodies for that attempt.

### Events API [#events-api]

You can also retrieve events programmatically through the following endpoints:

* [List Events](/healthcare/api-reference/get-event-destinations-list-events): Retrieve a list of all events generated in your Stedi account within the last 30 days. You can filter by event type, delivery status, and created date.
* [Retrieve Event](/healthcare/api-reference/get-event-destinations-event): Retrieve the full details of a specific event, including the full event payload Stedi sends to event destinations.

## Delivery failures [#delivery-failures]

When Stedi can't deliver an event to one or more event destinations, Stedi automatically retries each failed delivery for up to 48 hours. If all attempted retries fail, Stedi temporarily disables the associated event destination to prevent more missed deliveries. Once you address the issue, you can [re-enable the event destination](/healthcare/event-destinations-configure#edit-event-destinations) to resume event deliveries.

### What causes failures [#what-causes-failures]

Stedi marks a delivery as failed in the following scenarios:

* **HTTP redirects (3xx status codes)**: Stedi doesn't follow HTTP redirects. If your endpoint responds with a `3xx` status code, the delivery is recorded as a failure. Configure your endpoint to serve webhooks directly instead of redirecting to another URL.
* **Client and server errors (4xx and 5xx status codes)**: Any status code other than `2xx` is treated as a failure.
* **Network errors**: Connection timeouts, DNS failures, or other network-level issues.

Stedi considers only `2xx` status codes as successful deliveries.

### Automatic retries [#automatic-retries]

Stedi automatically retries at the following intervals:

* 5 minutes
* 30 minutes
* 2 hours
* 8 hours
* 24 hours
* 48 hours

You can review all retry attempts from within the Stedi portal.

### Manual retries [#manual-retries]

You can manually retry event deliveries as needed. Manual retries reset Stedi's automated retry process. For example, if you manually retry an event delivery after the second automatic attempt at 2 hours, the next automated retry attempt will occur after 5 minutes and continue according to Stedi's retry schedule for up to 48 hours.

To retry through the **Events** page:

1. Go to the [Events page](https://portal.stedi.com/app/settings/developer/events) in your developer settings. Stedi displays a list of all events in your account.
2. Click an event to review its details. Stedi shows key information, including the created date and source, as well as a list of every delivery attempt to configured event destinations.
3. Click the **Retry** button next to a failed delivery to start a retry attempt. Stedi adds a new delivery row to the event record so you can monitor the progress.

To retry through an event destination's **Event deliveries** tab:

1. Go to the [Event destinations page](https://portal.stedi.com/app/settings/developer/event-destinations) in your developer settings.
2. Click an event destination and select its **Event deliveries** tab. Stedi lists all the event delivery attempts and their status.
3. Click an event delivery to review its details.
4. Click **Retry delivery** to start a retry attempt. Stedi adds a new event delivery row to the **Event deliveries** tab so you can monitor the progress.

### Notifications [#notifications]

When event deliveries to an event destination repeatedly fail, Stedi sends in-app notifications and emails to alert you. You can manage your [notification preferences](/healthcare/account-settings#notification-preferences) to control which notifications you receive.

Stedi sends in-app notifications and emails to every member of the Stedi account at the following intervals:

1. **After 2 hours:** If retry attempts for all events continue failing for 2 hours, we send an in-app notification and email notifying you that deliveries are failing for the associated event destination. You should log in to your Stedi account and investigate the issue as soon as you can. Stedi will continue automatic retries.
2. **After 24 hours:** If retry attempts for all events associated with an event destination continue failing for 24 hours, we send another in-app notification and email informing you that Stedi's retry limit is approaching.

If all attempts fail, Stedi disables the associated event destination to prevent more missed deliveries.

## Process undelivered events [#process-undelivered-events]

Stedi [automatically retries event deliveries](#delivery-failures) for up to 48 hours before marking them as failed. However, we recommend implementing a strategy to manually process undelivered events in case your endpoint remains unavailable or event delivery is interrupted.

1. Call the [List Events](/healthcare/api-reference/get-event-destinations-list-events) endpoint to retrieve a list of all events with a `FAILED` status. The response includes an `id` for each event.

   ```json
   {
     "items": [
       {
         "id": "evt_a81659f1-16a5-9bec-03e1-0ba8ab5e9652",
         "eventType": "enrollment.activated",
         "status": "FAILED",
         "createdAt": "2026-02-01T12:00:00Z"
       }
     ]
   }
   ```

2. Call the [Retrieve Event](/healthcare/api-reference/get-event-destinations-event) endpoint to get the full payload for each event.
   ```json
   {
     "account": "11111111-2222-3333-4444-555555555555",
     "created": "2026-03-30T23:19:00.501Z",
     "environment": "PRODUCTION",
     "id": "evt_a81659f1-16a5-9bec-03e1-0ba8ab5e9652",
     "object": "v1.event",
     "resource": {
       "id": "019bb508-dc63-73a1-8ddc-9d4720299072",
       "type": "enrollment"
     },
     "type": "enrollment.activated"
   }
   ```

3. Process each event. Note that the receipt time will likely be outside your normal tolerance window.

## Message handling best practices [#message-handling-best-practices]

We **strongly recommend** implementing these best practices for event handling.

### Don't rely on event order [#dont-rely-on-event-order]

Stedi attempts to deliver events as soon as possible after they're generated. However, we can't guarantee that your endpoint will receive events in order. Ensure your implementation isn't dependent on event order.

### Verify authenticity and receipt time [#verify-authenticity-and-receipt-time]

We strongly recommend verifying each signed message to ensure it's from Stedi. You should also verify that the message was generated within your expected timeframe for receipt. This helps protect you from replay attacks.

Each event contains two headers you can use to verify a message's authenticity: `webhook-signature` and `webhook-timestamp`.

```bash
webhook-signature: v1,Z5wMZ2rqRMsnGdfKzOLnRv1SIwivsLFCGQzJH7eCmlU=
webhook-timestamp: 1774641758
```

To verify the message authenticity and receipt time:

1. Create a `signed_payload` string by concatenating the timestamp (as a string) with the character `.` and the entire JSON request body.
2. Compute an [HMAC with the SHA256 hash function](https://datatracker.ietf.org/doc/html/rfc4868). Use the event destination secret as the key, and use the `signed_payload` string as the message. This should produce a signature.
3. Split the signature string in the message's `webhook-signature` header from the version (`v1`).
4. Compare the signature from the event message to your computed signature. If they are equivalent, then the message is from Stedi. If not, reject the message.
5. Compute the difference between the timestamp provided in the message and the current timestamp. If the difference is outside your tolerance, reject it.

   <Tip>
     To protect against timing attacks, use a constant-time string comparison to compare the expected signature to each one you received from Stedi.
   </Tip>

Our implementation follows the [Standard Webhooks](https://www.standardwebhooks.com/) specification. The following TypeScript example uses the `standardwebhooks` library for signature verification.

```typescript
import { Webhook } from "standardwebhooks";
import type { CapturedWebhook } from "./types";

export function assertWebhookValid(
  webhook: CapturedWebhook,
  secret: string,
): void {
  const wh = new Webhook(secret);
  try {
    wh.verify(webhook.request.body, webhook.request.headers);
  } catch (err) {
    throw new Error(
      `Webhook signature verification failed: ${err instanceof Error ? err.message : String(err)}. ` +
        `Headers: ${JSON.stringify(webhook.request.headers)}`,
    );
  }
}
```

### Check the resource record [#check-the-resource-record]

Stedi events use a thin event schema that doesn't include the updated resource's data.

Before taking action based on an event, you should use Stedi APIs to retrieve the resource's details and verify its current state. This approach ensures you're acting on the latest data, even if events arrive out of order.

### Check for duplicates [#check-for-duplicates]

Your webhook may occasionally receive the same event multiple times. For example, your webhook may receive the same event from both automatic retries and a [manual recovery process](#process-undelivered-events).

We strongly recommend logging the IDs for events you've processed, comparing them against new events, and filtering out duplicates.

We recommend using the `webhook-id` header for this purpose. It contains a unique Stedi-generated identifier for the event, formatted as `msg_{UUID}`.

```bash
webhook-id: msg_b73ae1d2-9128-90b5-60ff-7479ab8b30ac
```

### Check for processing errors [#check-for-processing-errors]

We recommend periodically listing events to catch cases where events may have been delivered successfully but your processing logic encountered an error.

1. Call the [List Events](/healthcare/api-reference/get-event-destinations-list-events) endpoint to retrieve events generated in your Stedi account. Use the `created` parameter to filter for events within a specific time range and use the `eventType` parameter to filter for the event types relevant to your use case.
2. Compare the event IDs against the your internal records for processed events.

Note that Stedi sends [notifications](/healthcare/event-destinations-message-handling#notifications) when event deliveries to an event destination fail repeatedly. You should also monitor for these notifications to help catch connectivity issues as soon as possible.

# Developer Docs
Source: https://www.stedi.com/docs/healthcare
Integrate with the Stedi clearinghouse. Automate workflows with AI and APIs.

## Eligibility & benefits [#eligibility--benefits]

Reliably determine eligibility and coordination of benefits, even when patients can't provide accurate insurance information.

<CardGroup cols="2">
  <Card title="Send eligibility checks" icon="mail-check-line" href="healthcare/send-eligibility-checks">
    Submit 270/271 eligibility checks through the Stedi portal or API in either
    JSON or X12 EDI.
  </Card>

  <Card title="Check coordination of benefits" icon="survey-line" href="healthcare/coordination-of-benefits">
    Identify coverage overlap and determine payer responsibility for claims
    (primacy).
  </Card>

  <Card title="Find patient coverage" icon="search-line" href="healthcare/insurance-discovery">
    Find active health plans using the patient's demographic data.
  </Card>

  <Card title="API Docs" icon="code-line" href="healthcare/api-reference/post-healthcare-eligibility">
    Full reference for our Eligibility, Coordination of Benefits, and Insurance
    Discovery APIs.
  </Card>
</CardGroup>

## Claims processing [#claims-processing]

Submit 837P professional, 837I institutional, and 837D dental claims and 276/277 real-time claim status checks in both JSON and X12 EDI.

<CardGroup cols="2">
  <Card title="Submit claims" icon="file-upload-line" href="healthcare/submit-professional-claims">
    Send claims to payers through the API, an SFTP connection, or the Stedi
    portal.
  </Card>

  <Card title="Retrieve claim responses" icon="file-download-line" href="healthcare/receive-claim-responses">
    Retrieve processed 277CA claim acknowledgments and 835 ERAs from Stedi.
  </Card>

  <Card title="Check claim status" icon="file-search-line" href="healthcare/check-claim-status">
    Determine the processing status of existing claims in real time.
  </Card>

  <Card title="API Docs" icon="code-line" href="api-reference/healthcare/post-healthcare-claims">
    Full reference for our Claims, Claim Status, and Reports (277CA and ERA)
    APIs.
  </Card>
</CardGroup>

# Insurance discovery checks
Source: https://www.stedi.com/docs/healthcare/insurance-discovery


Eligibility checks verify a patient's coverage with a specific payer. But what if you don't know the patient's insurance details or you're not sure whether they have coverage at all? In these situations, you can use an insurance discovery check to search for a patient's active coverage using only their demographic data.

Insurance discovery checks return an array of coverages along with subscriber details and benefits information. These coverages may be active or inactive, and there may be multiple of each type. If an insurance discovery check returns active coverage for the patient, you don't need to perform a follow-up eligibility check. The results include the same benefits information you'd get from running an eligibility check with the payer.

## Use cases [#use-cases]

If you have all the patient's demographic details (first name, last name, date of birth, member ID) and know the payer, running a standard eligibility check with that payer is always the most cost-effective and reliable path. Insurance discovery is the best option if running a standard eligibility check isn't possible.

You may need to perform an insurance discovery check when:

* You don't know the payer, such as when a patient doesn't have their insurance card or can't provide insurance details in an urgent care situation.
* One or more eligibility checks failed with an AAA `75` (Subscriber Not Found) or similar error.
* The patient's information is incomplete or outdated, such as when the patient can't provide their member ID.
* The coverage on file is no longer active, such as when a member changes employers or loses coverage.

The most common workflows for eligibility checks and insurance discovery are patient intake and claims submission. You can also use insurance discovery checks during revenue recovery. The following flowchart shows how insurance discovery works as part of these workflows:

<img alt="Insurance discovery workflow" src="__img0" />

For patients who are likely covered by Medicare, such as those 65 or older, an [MBI lookup](/healthcare/mbi-lookup) is a targeted alternative to an insurance discovery check. An MBI lookup returns the patient's Medicare Beneficiary Identifier (MBI) and, if found, the patient's complete eligibility response from Medicare. You can run MBI lookups using only the patient's demographic information and (optionally) Social Security Number (SSN).

## Usage notes [#usage-notes]

* **Match rates vary**: Insurance discovery checks aren't guaranteed to return a patient's active health plans 100% of the time - especially when the request doesn't include key demographic information like the patient's state or Social Security Number (SSN). Although unlikely, false positives are possible, so you're ultimately responsible for matching results to your own records.
* **Dental and vision use cases aren't supported**: Insurance discovery checks only reliably identify active medical coverage. Some payers may return dental coverage (service type code `35`) or vision coverage (service type code `AL`) in their response, but insurance discovery checks won't return results for dental-only or vision-only payers even if the patient has coverage. Don't use insurance discovery for dental or vision use cases.
* **Coverage is relative to service dates**: Insurance discovery checks can only return active coverage for the service dates in the request. For example: A patient starts a new job, and coverage with their new employer starts through Cigna in March 2026. Previously, they had active coverage through UnitedHealthcare (UHC). If you submit an insurance discovery check for a date of service in February 2026, and it succeeds, Stedi returns active coverage for UHC and no coverage for Cigna.
* **No payer primacy**: Insurance discovery checks can't determine payer primacy. You must either run a coordination of benefits (COB) check or use your own internal logic to determine whether the patient has active coverage with additional payers and which payer is responsible for paying claims (primacy).
* **Response time**: The p50 latency is \~3.5 seconds and the p90 latency is \~13 seconds. If the discovery check has not completed after 120 seconds, it returns a `PENDING` state, and you can [retrieve the final results asynchronously](#retrieve-results-asynchronously).

## How insurance discovery works [#how-insurance-discovery-works]

<Steps>
  <Step title="Submit insurance discovery check.">
    Call the [Insurance Discovery Check](/healthcare/api-reference/post-insurance-discovery) endpoint or submit through the [Create insurance discovery check form](https://portal.stedi.com/app/healthcare/insurance-discovery/create) in the Stedi portal.

    Provide as much patient demographic information as possible, such as first name, last name, DOB, state, and SSN, to increase the chances of finding matching coverage. You'll also include information like the provider's NPI and the date of service, similar to an eligibility check.
  </Step>

  <Step title="Stedi searches for active coverage.">
    Stedi uses the supplied information - alongside its proprietary logic - to find coverage. This process usually takes between 3.5s and 13s.
  </Step>

  <Step title="Receive results.">
    Stedi returns an array of coverages along with subscriber details and benefits information. Always review the results to ensure that the returned subscriber information matches the patient's demographic information. These coverages could be active or inactive, depending on what the payer supplied.

    * If there's a match, you can use the benefits information to determine the patient's eligibility for services. Since the coverage result comes directly from the payer's 271 response, you don't need to perform a follow-up eligibility check, as the insurance discovery response includes all the necessary benefits information.
    * If you need to change the date of service or service type code (STC), run a standard eligibility check with the exact demographic information the insurance discovery check returned.
  </Step>
</Steps>

## Run insurance discovery checks [#run-insurance-discovery-checks]

You can run insurance discovery checks manually through the Stedi portal or programmatically through Stedi's API.

### Transaction enrollment [#transaction-enrollment]

[Transaction enrollment](/healthcare/transaction-enrollment) isn't required for insurance discovery, but we do strongly recommend it. Enrollment lets Stedi run [MBI lookups](/healthcare/mbi-lookup) as part of the discovery check in addition to checks to other large payers that require enrollment, improving your results.

To enroll, submit an enrollment request for the Stedi insurance discovery payer ([payer ID: `DISCOVERY`](https://www.stedi.com/healthcare/network?page=0\&search=disco\&entry=UQKWC)):

1. Create a provider record with the information required for enrollment. If you already have a record for the provider, you can skip this step. [Stedi portal](https://portal.stedi.com/app/healthcare/providers) | [API endpoint](/healthcare/api-reference/post-enrollment-create-provider)
2. Submit an enrollment request for **Real-time eligibility checks**. Use `DISCOVERY` as the payer ID (Stedi Insurance Discovery). [Stedi portal](https://portal.stedi.com/app/healthcare/enrollments) | [API endpoint](/healthcare/api-reference/post-enrollment-create-enrollment)

#### Medicaid Provider ID [#medicaid-provider-id]

A Medicaid Provider ID is a unique identification number that state Medicaid programs assign to healthcare providers when they enroll. It's different than a provider's [National Provider Identifier (NPI)](/healthcare/national-provider-identifier), which the federal government assigns. If a provider works in multiple states, they'll have different Medicaid IDs for each state.

Medicaid Provider IDs aren't required for transaction enrollment with Stedi, but they can enhance insurance discovery check results for certain payers. To add Medicaid Provider IDs to transaction enrollment requests, email [enrollments@stedi.com](mailto:enrollments@stedi.com) with a CSV file containing the NPI and Medicaid ID(s) for each provider.

Many state Medicaid agencies have a provider lookup tool you can use to find a provider's Medicaid Provider ID. For example, providers practicing in Texas can use the [Texas Medicaid & Healthcare Partnership Provider lookup tool](https://opl.tmhp.com/) to search for enrolled providers. You can also call the state Medicaid agency to request a provider's ID.

### Required patient information [#required-patient-information]

Provide as much patient demographic information as possible when submitting insurance discovery checks. The more information you provide, the more likely Stedi is to find matching coverage.

#### Minimum required [#minimum-required]

At a minimum, you must provide the patient's:

* First name
* Last name
* Date of birth (DOB)

#### Recommended [#recommended]

We **strongly recommend** providing as much of the following additional information as possible:

* State from the current address or previous addresses. This ensures that Stedi's insurance discovery logic finds localized, relevant payers. Without the state, Stedi can only determine coverage from the large, national payers.
* Social Security Number (SSN). The patient's full SSN is best, but even the last 4 digits of the SSN can help narrow down matching coverage.

### Manual submission [#manual-submission]

You can submit insurance discovery checks through the [Create insurance discovery check](https://portal.stedi.com/app/healthcare/insurance-discovery/create) form in the Stedi portal.

<Note>
  Unlike eligibility checks, Stedi doesn't display historical insurance
  discovery checks in the UI for review.{" "}
</Note>

### API submission [#api-submission]

You can submit an insurance discovery check using the [Insurance Discovery Check](/healthcare/api-reference/post-insurance-discovery) endpoint.

#### Request [#request]

The following example shows an insurance discovery check for a patient named Jane Doe.

{/* schema:InsuranceDiscoveryCheckRequestContent */}

```bash
curl --request POST \
  --url "https://healthcare.us.stedi.com/2024-04-01/insurance-discovery/check/v1" \
  --header "Authorization: <api_key>" \
  --header "Content-Type: application/json" \
  --data '{
      "provider": {
        "npi": "1999999984"
      },
      "encounter": {
        "beginningDateOfService": "20250326",
        "endDateOfService": "20250328"
      },
      "subscriber": {
        "dateOfBirth": "20010925",
        "firstName": "Jane",
        "lastName": "Doe",
        "ssn": "123456789",
        "address": {
          "address1": "1 MAIN ST",
          "address2": "UNIT 1",
          "city": "ANYTOWN",
          "state": "MO",
          "postalCode": "12341"
        }
      }
  }'
```

#### Response [#response]

Stedi's synchronous response to the [Insurance Discovery Check](/healthcare/api-reference/post-insurance-discovery) endpoint can take up to 120 seconds, though it's often faster (typically 3.5-12 seconds).

The synchronous response can have one of two `status` values:

* `COMPLETE` - Stedi has completed the insurance discovery check for the patient. If Stedi finds coverage for the patient, the `items` array contains the results. If Stedi doesn't find any coverage for the patient, the `items` array is empty.
* `PENDING` - Stedi is still processing the insurance discovery check for the patient. You can use the `discoveryId` in the response to [retrieve the results asynchronously](#retrieve-results-asynchronously).

The following example response shows a `PENDING` insurance discovery check. In this case, you use the `discoveryId` to retrieve the results asynchronously.

{/* schema:InsuranceDiscoveryCheckResponseContent */}

```json Insurance discovery check in progress
{
  "discoveryId": "12345678-abcd-4321-efgh-987654321abc",
  "meta": {
    "applicationMode": "production",
    "traceId": "1-abcdef12-123456789abcdef123456789"
  },
  "status": "PENDING",
  "items": []
}
```

The following example response shows a `COMPLETE` insurance discovery check. Stedi found one instance of potential matching coverage for the patient, Jane Doe. Insurance discovery checks only return active coverage for the provided date-of-service range, so old plans with expired coverage aren't in the results.

Information about the potential match is available in the `items` array.

* The `payer` is Aetna. Payer names and IDs aren't normalized, so you may need to handle matching these results to Stedi's Payer Network or your own internal payer list.
* The patient in the request, Jane, is a dependent on the Aetna plan because her demographic information appears in the `dependent` object in the response. The dependent's last name is slightly different from the patient's last name in the insurance discovery request. However, all of the other demographic details in the dependent object - first name, date of birth, address - match the patient from the request. The two-part last name, Smith Doe, appears to be the complete version of the last name in the request, Doe. Based on this information, you can confirm that this is active coverage for the patient.
* The `benefitsInformation object` (truncated to keep this example concise) contains the patient's benefits details. For example, the patient has active medical coverage under their health plan for the service dates in the request. Visit [Determine patient benefits](/healthcare/eligibility-active-coverage-benefits) to learn more about interpreting the benefits information in the insurance discovery check response.

{/* schema:InsuranceDiscoveryCheckResponseContent */}

{/* replace:// truncated for brevity: */}

```json Insurance discovery check completed
{
  "coveragesFound": 1,
  "discoveryId": "12345678-abcd-4321-efgh-987654321abc",
  "items": [
    {
      "provider": {
        "providerName": "THE DOCTORS OFFICE",
        "entityType": "Non-Person Entity",
        "npi": "1999999984"
      },
      "subscriber": {
        "memberId": "J9606211996",
        "firstName": "JOHN",
        "lastName": "DOE",
        "groupNumber": "012345607890008",
        "groupDescription": "SAMPLE HEALTH GROUP",
        "insuredIndicator": "Y"
      },
      "dependent": {
        "firstName": "JANE",
        "lastName": "SMITH DOE",
        "gender": "F",
        "dateOfBirth": "20010925",
        "planNumber": "0123654",
        "relationToSubscriber": "Child",
        "relationToSubscriberCode": "19",
        "address": {
          "address1": "1 MAIN ST",
          "address2": "UNIT 1",
          "city": "ANYTOWN",
          "state": "MO",
          "postalCode": "12341"
        }
      },
      "payer": {
        "entityIdentifier": "Payer",
        "entityType": "Non-Person Entity",
        "lastName": "Aetna",
        "name": "Aetna",
        "payorIdentification": "100003"
      },
      "planInformation": {
        "planNumber": "0123654"
      },
      "planDateInformation": {
        "planBegin": "20250101",
        "eligibilityBegin": "20250101",
        "service": "20250327"
      },
      "benefitsInformation": [
        {
          "code": "1",
          "name": "Active Coverage",
          "coverageLevelCode": "FAM",
          "coverageLevel": "Family",
          "serviceTypeCodes": ["30"],
          "serviceTypes": ["Health Benefit Plan Coverage"],
          "insuranceTypeCode": "PS",
          "insuranceType": "Point of Service (POS)",
          "planCoverage": "Aetna Choice POS II",
          "inPlanNetworkIndicatorCode": "W",
          "inPlanNetworkIndicator": "Not Applicable"
        },
        // truncated for brevity
        {
          "code": "W",
          "name": "Other Source of Data",
          "benefitsRelatedEntities": [
            {
              "entityIdentifier": "Payer",
              "entityType": "Non-Person Entity",
              "entityName": "AETNA",
              "address": {
                "address1": "PO BOX 981106",
                "city": "EL PASO",
                "state": "TX",
                "postalCode": "79998"
              }
            }
          ]
        }
      ],
      "confidence": {
        "level": "REVIEW_NEEDED",
        "reason": "This record was identified as a low confidence match due to a last name mismatch."
      }
    }
  ],
  "meta": {
    "applicationMode": "production",
    "traceId": "1-67e5a730-75011daa6caebf3c6595bf7c"
  },
  "status": "COMPLETE"
}
```

#### Concurrency limit [#concurrency-limit]

Visit [Concurrency limits](/healthcare/api-reference#concurrency-limits) for more information.

#### Recommended API clients [#recommended-api-clients]

You may want to use an API client to make testing and debugging easier.

We **don't recommend** using Postman for requests containing Protected Health Information (PHI) because Postman defaults to storing request history - including full request payloads - on its cloud servers. You can't turn this feature off without impractical workarounds.

Visit [API clients](/healthcare/api-reference#api-clients) for a list of recommended clients you can use instead.

## Retrieve results asynchronously [#retrieve-results-asynchronously]

If the synchronous insurance discovery response indicates that the search is still `PENDING`, you can use the `discoveryId` to retrieve the complete results asynchronously from the [Insurance Discovery Check Results](/healthcare/api-reference/get-insurance-discovery-results) endpoint.

You can begin polling immediately after receiving the `PENDING` status response from the synchronous endpoint. Like the synchronous endpoint, the Insurance Discovery Check Results endpoint can take up to 120 seconds to return a response.

It's unlikely for the insurance discovery process to take more than a few minutes, so it's rare to have to poll the asynchronous endpoint more than once. However, if you receive a `PENDING` status, you can poll the endpoint immediately again, and continue this polling process until the status changes to `COMPLETE`.

Note that you can only expect to retrieve checks submitted within the last 24 hours. After 24 hours, the results may no longer be available.

## Verify the match [#verify-the-match]

Always verify that the returned subscriber or dependent information matches the demographic information you submitted for the patient. Pay special attention to:

* **Name matching** - The patient's name must match, though slight variations (like hyphenated last names) may appear.
* **Date of birth** - Must match exactly.
* **Address** - Must match or be a previous address.

If the information matches, you can use the benefits details to understand the patient's coverage. You don't need to run a follow-up eligibility check since the insurance discovery response includes the same benefits information.

## No matches [#no-matches]

Insurance discovery checks can return zero matches for a patient even when they have active coverage.

```json
{
  "coveragesFound": 0,
  "discoveryId": "0197a79a-ed75-77c3-af58-8ece597ea0be",
  "items": [],
  "meta": {
    "applicationMode": "production",
    "traceId": "1-685c0f14-1b559a954f0bd0127110d161"
  },
  "status": "COMPLETE"
}
```

Common reasons for zero matches include:

* Recommended demographic data, like state or SSN, was missing from the request. Provide as much [patient demographic information](#required-patient-information) as possible to increase the chances of finding matching coverage.
* The patient's data doesn't exactly match what the payer has on file. For example, the patient demographics in the request don't match the patient's legal name or date of birth.
* The payer that the patient has doesn't support real-time eligibility checks, which makes it impossible for Stedi to determine coverage.
* The patient has coverage with a payer that supports eligibility checks, but Stedi's insurance discovery system couldn't find the payer.

We're always looking for feedback. If you know the patient has coverage and determined the payer through other means, reach out to Stedi's support team for further investigation.

# Overview
Source: https://www.stedi.com/docs/healthcare/integrated-account-overview


Integrated accounts are Stedi accounts that your providers create and link to your product through a Stedi app. They're a great option when you want to:

* Extend your product with the features in the Stedi portal.
* Simplify multi-tenant claim workflows by scoping credentials and activity per provider or practice.

## How integrated accounts work [#how-integrated-accounts-work]

Instead of using a single Stedi account to manage transactions and enrollments across all providers, you can set up an integrated account for each provider or practice.

1. Each provider or practice creates their own production Stedi account.
2. Providers install your app in their account. As part of the installation, you receive an invite to join their account as a support user.
3. You log into each integrated account to generate API or SFTP credentials that you'll use to link the account to your system. These credentials are scoped to that provider or practice. You can also configure webhooks to monitor claim processing events.
4. Providers log into their integrated accounts to access the Stedi portal, which acts as a co-branded extension of your product.

For example, an Electronic Health Record (EHR) system might build eligibility checks and claim submission directly into its product UI using Stedi's APIs and SFTP. With integrated accounts, their providers can also log into the Stedi portal to submit enrollments, review submitted claims, perform claim status checks, resubmit claims, and more.

## Why use integrated accounts? [#why-use-integrated-accounts]

Integrated accounts have several benefits:

* **Extended functionality:** Offer providers additional features through the Stedi portal. Stedi apps provide this access as a co-branded experience, and providers automatically get new features as soon as we release them.
* **Lower development effort:** Focus on building UIs for the workflows you care about. Avoid building and maintaining custom routing, tenancy, and attribution logic for claims workflows.
* **Built-in tenancy:** Integrated accounts scope API and SFTP credentials to each provider or practice, so you can attribute, monitor, and isolate enrollments and transactions. This model also simplifies usage tracking and billing by provider or practice.
* **Support access:** Your support team can log into integrated accounts to troubleshoot issues directly.

## Stedi apps [#stedi-apps]

Stedi apps are prebuilt integrations between Stedi and your system. After you publish your app to the Stedi app directory, your providers can install it from within their Stedi accounts. Then, you can log into each integrated account to generate credentials and configure webhooks to link the account to your system.

As an app developer, you need a [custom plan](/healthcare/billing#custom) to consolidate billing for your integrated accounts. Visit [Publish your app](/healthcare/integrated-account-setup#step-1-publish-your-app) for more details.

# Set up integrated accounts
Source: https://www.stedi.com/docs/healthcare/integrated-account-setup


Integrated accounts allow your providers to create their own Stedi accounts that act as a co-branded extension of your product's functionality.

This guide explains how to set up integrated accounts for your providers.

## Step 1: Publish your app [#step-1-publish-your-app]

Your providers will install a Stedi app to link their Stedi account to your product. [Contact us](https://www.stedi.com/contact) to discuss adding your business to the Stedi app directory. The process is simple and typically takes 1-2 days:

1. Meet with our team to align on how your customers' accounts will map to Stedi organizations. During this process, you can request to automatically add one or more support users (members) with a [Developer role](/healthcare/account-settings#assign-member-roles) to accounts that install your app. This allows your support team to troubleshoot issues directly within customer accounts and help with implementation.
2. Confirm that existing services contracts and a partner or platform integration agreement are in place.
3. Supply your company logo, URL, support email, and description.
4. We publish your app listing to the directory and make it discoverable to customers.

Once your app is published, your providers can install it from within their Stedi accounts.

## Step 2: Your providers create Stedi accounts [#step-2-your-providers-create-stedi-accounts]

Once your app is listed in the directory, Stedi generates a custom signup link for your providers. The link takes providers through a signup flow that creates an integrated account, a production Stedi account. The signup page is branded with your app's name and logo. Providers will need to install your app (Step 3) to complete the integration.

To get the signup link for your Stedi app, contact us in your Slack or Microsoft Teams channel. You can also email us or use our [contact form](https://www.stedi.com/contact).

Providers will:

1. Go to the custom signup link for your app.
2. Follow the signup process, which includes:
   * Filling out the signup form.
   * Setting up Multi-Factor Authentication (MFA).
   * Naming their Stedi account.
   * Agreeing to a Business Associate Agreement (BAA).

After completing these steps, Stedi begins provisioning the account. This process takes approximately 20-30 minutes, and your providers will need to wait until it's complete before proceeding to Step 3.

## Step 3: Your providers install your app [#step-3-your-providers-install-your-app]

Providers will be able to install your app once their Stedi accounts are fully provisioned (20-30 minutes). To install your app, providers will:

1. In the side navigation, click their account name, then click **Connect account to apps** to go to the [Apps page](https://portal.stedi.com/app/settings/developer/apps).

2. Find and click on your app from the available list.

3. Click **Install** to begin the installation process.

4. Read the installation details and then click **Confirm and install**. This action sends an email invitation to the support email you specified for your Stedi app.

   Stedi displays new API and SFTP credentials that the provider can copy and paste into your system to complete the integration. We generally recommend that providers ignore these credentials during installation - you will generate and manage credentials for them in Step 4.

5. (Optional) Check the box next to **I've added these details to my \[Your Company Name] account** and click **Done**.

   <Note>
     You'll get invited to the integrated account as a support regardless of whether the provider completes this final step.
   </Note>

The app is now installed, and the provider can start using the functionality within Stedi's portal.

## Step 4: You configure each integrated account [#step-4-you-configure-each-integrated-account]

After your providers install your app, you can use the Stedi portal to manage each integrated account.

### Accept email invitation [#accept-email-invitation]

Stedi automatically invites the specified support email to the integrated account when providers install your app. Accept the email invitation and log in to complete the setup.

This process also allows your support team to troubleshoot issues directly as needed.

### Generate API or SFTP credentials [#generate-api-or-sftp-credentials]

You can generate credentials manually at any time within each integrated account. You can also revoke or rotate credentials as needed, without reinstalling the app.

To generate credentials:

1. Log in to the integrated account using your support email.
2. In the side navigation, click **Developer**, then click **Apps**. Stedi opens a side panel with a list of installed apps.
3. Click your app to open the app settings page.
4. Generate new API or SFTP credentials.

### Create webhooks to monitor processed transactions [#create-webhooks-to-monitor-processed-transactions]

We strongly recommend setting up webhooks in each integrated account to monitor claim processing events.

These events contain the information you need to retrieve 277CA claim acknowledgment and 835 Electronic Remittance Advice (ERA) responses through Stedi APIs. They can also help you monitor your claims pipeline when submitting claims through Stedi SFTP.

To configure webhooks:

1. Log in to the integrated account using your support email.
2. In the side navigation, click **Developer**, then click **Apps**. Stedi opens a side panel with a list of installed apps.
3. Click your app to open the app settings page.
4. Scroll to the **Webhooks** section and click **Configure webhooks**.

Stedi takes you to the webhooks configuration page, where you can create and manage webhooks for the integrated account. Our [Configure webhooks](/healthcare/configure-webhooks) docs explain how to set up webhooks and which events to monitor for your use case.

## Next steps [#next-steps]

We maintain a separate set of [Provider docs](https://www.stedi.com/docs/providers) that you can share with your providers to help them get started with Stedi. You can also use our docs as a starting point for your own documentation about how to use Stedi. The docs include information on:

* Managing a Stedi account
* Running eligibility checks
* Submitting and managing claims
* Accessing 277CA claim acknowledgments and 835 Electronic Remittance Advice (ERAs)
* Running claim status checks
* Other helpful Stedi UI features

You may want to refer to the following resources as you build your integration with Stedi:

* [Developer guides](https://www.stedi.com/docs/healthcare)
* [API reference](https://www.stedi.com/docs/healthcare/api-reference)

# Overview
Source: https://www.stedi.com/docs/healthcare/intro-eligibility-checks


An eligibility check is the process of verifying whether a patient has coverage for specific medical benefits under their health insurance plan. This process allows patients and healthcare providers to determine a patient's financial responsibilities for medical services.

You can send either real-time or batch eligibility checks through Stedi. With real-time checks, you receive the response from the payer in seconds. With batch checks, you can submit up to 10,000 eligibility checks in a single request for Stedi to process asynchronously.

<Tip>
  Eligibility checks verify coverage with a specific payer. If you don't know
  the payer, you can perform an [insurance discovery
  check](/healthcare/insurance-discovery) instead to find a patient's coverage
  using their demographic data.
</Tip>

## Real-time eligibility checks [#real-time-eligibility-checks]

Real-time eligibility checks are ideal for in-person patient visits, telehealth appointments, and other scenarios where you need immediate information about a patient's coverage.

We recommend always starting with real-time checks when integrating with a new payer. This approach allows you to quickly test and refine your pipeline through fast feedback loops. Once you're comfortable with real-time checks, you may also want to start sending asynchronous batch checks to perform periodic refreshes for all or a subset of patients.

<Steps>
  <Step title="Submit eligibility checks to Stedi.">
    Stedi supports sending real-time eligibility checks to payers, in either
    JSON or X12 EDI format. You can submit requests manually through the Stedi
    portal or programmatically through the API.
  </Step>

  <Step title="Stedi delivers eligibility checks to the payer.">
    Stedi routes requests to the payer using the most reliable connection. Stedi
    receives payer responses in X12 EDI and transforms them into JSON to make
    them easier to ingest into your business systems.
  </Step>

  <Step title="Receive the payer's eligibility response in real time.">
    Stedi returns the payer's synchronous response. It contains details about a
    patient's medical coverage, including the start and end date of the
    coverage, covered benefits and services, copayments, deductibles, and
    out-of-pocket maximums.
  </Step>
</Steps>

Learn more about [Real-time eligibility checks](/healthcare/send-eligibility-checks).

## Batch eligibility checks [#batch-eligibility-checks]

Batch eligibility checks are a great option as your volume grows. Stedi handles complexity like queuing and retries according to established best practices, so you don't have to build this logic yourself. We recommend using batch checks for bulk workflows that aren't time sensitive, including:

* Monthly or weekly coverage refreshes
* Upcoming appointments
* Sets of thousands or millions of checks that can run in the background

However, batch checks have a longer feedback cycle than real-time checks because you don't receive the payer's response immediately. That's why we strongly recommend starting with [real-time checks](/healthcare/api-reference/post-healthcare-eligibility) when integrating with a new payer or working with eligibility checks for the first time. This approach allows you to ensure that your pipeline is working smoothly before you begin staging batch checks.

<Steps>
  <Step title="Submit eligibility checks to Stedi.">
    You can submit batch eligibility checks manually by uploading CSV files to
    the Stedi portal or programmatically by sending a request to the [Batch Eligibility Check](/healthcare/api-reference/post-healthcare-batch-eligibility)
    endpoint. Each batch can contain up to 10,000 eligibility checks.
  </Step>

  <Step title="Stedi delivers eligibility checks to the payer.">
    Stedi processes these batch checks asynchronously, implementing best practices
    to avoid payer throttling. Stedi routes requests to the payer using the most
    reliable connection.
  </Step>

  <Step title="Poll to retrieve eligibility responses.">
    The API's synchronous response contains a `batchId` that you can use to
    retrieve the results of the batch checks using the [Poll Batch Eligibility Checks](/healthcare/api-reference/get-healthcare-polling-eligibility)
    endpoint. You can also review the results of batch eligibility checks from
    the [Eligibility check batches page](https://portal.stedi.com/app/healthcare/checks/batch) in the Stedi
    portal.
  </Step>
</Steps>

Learn more about [Batch eligibility checks](/healthcare/batch-refresh-eligibility-checks).

## Patient benefits [#patient-benefits]

The payer's 271 response includes detailed information about the patient's coverage and benefits. You can use this information to determine:

* whether the patient has active coverage with the health plan.
* whether a patient's health plan covers the requested services.
* patient responsibility amounts, such as co-pays and deductibles.
* whether prior authorization is required for specific services.

You can review this benefits information in multiple ways, depending on your use case.

| Method              | Description                                              | Docs                                                              |
| ------------------- | -------------------------------------------------------- | ----------------------------------------------------------------- |
| **API responses**   | Lossless responses in JSON or X12 EDI                    | [API responses](/healthcare/eligibility-active-coverage-benefits) |
| **Stedi portal**    | A user-friendly, filterable table                        | [Stedi portal UI](/healthcare/eligibility-portal-benefits-view)   |
| **Eligibility PDF** | A PDF that you can download or retrieve programmatically | [Eligibility PDF](/healthcare/eligibility-pdf)                    |

## X12 HIPAA format [#x12-hipaa-format]

The Health Insurance Portability and Accountability Act (HIPAA) mandates that eligibility checks be submitted in a standardized format: X12 HIPAA. X12 HIPAA is a type of Electronic Data Interchange (EDI), a data format developed in the 1970s to allow businesses to exchange documents electronically.

While some healthcare institutions can submit eligibility checks directly in X12 HIPAA, many of today's software applications are built to use more modern data formats like JSON. That's why Stedi offers two types of APIs for eligibility checks: one that accepts JSON and automatically converts it to X12 HIPAA behind the scenes, and another that accepts X12 HIPAA directly.

## Billing for eligibility checks [#billing-for-eligibility-checks]

Transactions are billable at the usage rates specified in your contract unless they fall into one of the following non-billable categories:

1. All eligibility checks you send in [Test Mode](/healthcare/test-mode).
2. All eligibility checks that return `AAA` = `42` or `AAA` = `80` errors, which indicate that the payer is down.
3. All eligibility checks that return `AAA` = `79` errors, which indicate there was a problem connecting to this payer.
4. All API calls that return `4xx` or `5xx` errors.

# Overview
Source: https://www.stedi.com/docs/healthcare/intro-to-claim-submission


A claim is a request for payment submitted to an insurance company or health plan. It details the medical services rendered to a patient, including information about the diagnosis, treatment, and any procedures performed. Payers use the claim to determine the reimbursement amount that the submitter (typically a medical provider) receives.

Payers sometimes require additional documentation to process claims, such as medical records, treatment plans, radiographs, photographs, itemized bills, and letters from providers. These documents are submitted as claim attachments.

You can submit claims and claim attachments through Stedi APIs, SFTP, and the Stedi portal.

## API claim submission [#api-claim-submission]

You can submit claims and attachments to Stedi APIs in either JSON or X12 EDI format. We recommend this approach when you want to submit claims and attachments programmatically without dealing with the complexities of the X12 EDI format.

<Steps>
  <Step title="Submit claims and attachments to Stedi.">
    Stedi supports sending the following transactions to payers:

    * 837P professional claim |
      [JSON API](/healthcare/api-reference/post-healthcare-claims) | [X12 EDI API](/healthcare/api-reference/post-healthcare-claims-raw-x12)
    * 837I institutional claim | [JSON API](/healthcare/api-reference/post-healthcare-institutional-claims) | [X12 EDI API](/healthcare/api-reference/post-healthcare-institutional-claims-raw-x12)
    * 837D dental claim | [JSON API](/healthcare/api-reference/post-healthcare-dental-claims) | [X12 EDI API](/healthcare/api-reference/post-healthcare-dental-claims-raw-x12)
    * 275 attachments | [JSON API](/healthcare/api-reference/post-healthcare-create-claim-attachment) | [X12 EDI API](/healthcare/api-reference/post-healthcare-submit-claim-attachment-raw-x12)

    Stedi translates JSON requests into X12 EDI and validates the data using our growing library of [claim edits](/healthcare/claim-edits-and-repairs) to ensure claims comply with HIPAA and the payer's specifications.
  </Step>

  <Step title="Stedi delivers requests to the payer and receives responses.">
    Stedi routes requests to the payer. Stedi receives payer responses in X12 EDI and transforms them into JSON to make them easier to ingest into your business systems.
  </Step>

  <Step title="Retrieve payer responses from Stedi.">
    You can either poll or listen for event-driven webhooks to discover new 277CA claim acknowledgments and 835 Electronic Remittance Advice (ERAs). Then, you can use Stedi APIs to retrieve these responses in JSON format.
  </Step>
</Steps>

Learn more about API submission for [professional](/healthcare/submit-professional-claims), [institutional](/healthcare/submit-institutional-claims), and [dental](/healthcare/submit-dental-claims) claims, as well as [unsolicited claim attachments](/healthcare/submit-claim-attachments).

## SFTP claim submission [#sftp-claim-submission]

We recommend Stedi SFTP when you have an existing system that generates X12 EDI files, and you want to send them through Stedi without completing an API integration.

<Steps>
  <Step title="Create SFTP users.">
    You can create both test and production SFTP users. Test users can only send
    claims to Stedi's test clearinghouse, which helps ensure you never
    accidentally send test claims to payers while you're getting up and running.
  </Step>

  <Step title="Drop claims and attachments onto Stedi's SFTP server.">
    Connect to Stedi's server and drop compliant X12 EDI professional,
    institutional, or dental claim files, as well as unsolicited 275
    attachments, into the `to-stedi` directory.
  </Step>

  <Step title="Stedi processes the claim.">
    Stedi automatically validates claims using our growing library of [claim
    edits](/healthcare/claim-edits-and-repairs) to ensure they comply with HIPAA
    and the payer's specifications. Then, Stedi routes claims to the test or
    production clearinghouse.
  </Step>

  <Step title="Retrieve claim responses from the SFTP server.">
    Stedi places claim responses - 277CA claim acknowledgments and 835 ERAs -
    into the `from-stedi` directory in X12 EDI format. You can retrieve these
    responses from the directory at your preferred cadence.
  </Step>
</Steps>

Learn more about [SFTP claim and attachment submission](/healthcare/submit-claims-sftp-connection).

## X12 HIPAA format [#x12-hipaa-format]

The Health Insurance Portability and Accountability Act (HIPAA) mandates that claims and claim attachments be submitted in a standardized format: X12 HIPAA. X12 HIPAA is a type of Electronic Data Interchange (EDI), a data format developed in the 1970s to allow businesses to exchange documents electronically.

While some healthcare institutions can submit claims and claim attachments directly in X12 HIPAA, many of today's software applications are built to use more modern data formats like JSON. That's why Stedi offers two types of APIs for claims processing: one that accepts JSON and automatically converts it to X12 HIPAA behind the scenes, and another that accepts X12 HIPAA directly.

## Billing for 837 claims and 275 attachments [#billing-for-837-claims-and-275-attachments]

Transactions are billable at the usage rates specified in your contract, except for API calls that return 4xx or 5xx errors. For example, you won't be charged when a request fails because the payer isn't supported - in this case, Stedi returns a `400` HTTP status code.

# Medicare Beneficiary Identifier (MBI) lookup
Source: https://www.stedi.com/docs/healthcare/mbi-lookup


A [Medicare Beneficiary Identifier (MBI)](https://www.cms.gov/training-education/partner-outreach-resources/new-medicare-card/medical-beneficiary-identifiers-mbis) is a unique, randomly-generated identifier assigned to individuals enrolled in Medicare. You must include the patient's MBI in every eligibility check you submit to the Centers for Medicare and Medicaid Services ([payer ID: CMS](https://www.stedi.com/healthcare/network/cms)).

When patients don't know their MBI, you can use Stedi's eligibility APIs to perform an MBI lookup instead of a standard eligibility check. Stedi returns a complete eligibility response containing the patient's coverage status and their MBI for future reference.

<Warning>
  There is an additional cost to perform MBI lookups with Stedi's eligibility
  check APIs. Visit [pricing](https://www.stedi.com/pricing) for details.
</Warning>

## Types of MBI lookups [#types-of-mbi-lookups]

There are two types of MBI lookups you can perform with Stedi. For each, you'll use a special payer ID that tells Stedi to perform an MBI lookup for the patient in addition to a standard eligibility check.

| Type     | What's required                                                    | Payer ID     |
| -------- | ------------------------------------------------------------------ | ------------ |
| With SSN | first name, last name, date of birth, Social Security Number (SSN) | `MBILU`      |
| No SSN   | first name, last name, date of birth, U.S. state                   | `MBILUNOSSN` |

<Note>
  When running an MBI lookup without SSN using our [raw
  X12](/healthcare/api-reference/post-healthcare-eligibility-raw-x12) or
  [SOAP](/healthcare/api-reference/post-healthcare-eligibility-soap) endpoints,
  you must include a city, in addition to a U.S. state, in `Loop 2100C N4`. You
  can use a dummy city value, such as `DUMMY`, if needed. If you omit the city
  value, you'll receive an X12 validation error.
</Note>

We recommend running MBI lookups **with** the patient's SSN whenever possible. When the SSN is present, the MBI lookup has a higher likelihood of successfully returning their MBI. MBI lookups with no SSN are a fallback option when the patient's SSN isn't available.

You don't need to include more patient demographic information than what's required, such as additional address data. It doesn't improve MBI lookup success rates.

## Transaction enrollment [#transaction-enrollment]

[Transaction enrollment](/healthcare/transaction-enrollment) is the process of registering a provider to exchange specific healthcare transactions with a payer.

Unlike standard eligibility checks, MBI lookups **always** require transaction enrollment. This is because MBI lookups involve sending requests to special Stedi payers that tell Stedi to perform the MBI lookup in addition to a standard eligibility check. The provider must be enrolled with Stedi's MBI lookup payers to use these services.

To enroll, complete the following steps:

1. Create a provider record with the information required for enrollment. If you already have a record for the provider, you can skip this step. [Stedi portal](https://portal.stedi.com/app/healthcare/providers) | [API endpoint](/healthcare/api-reference/post-enrollment-create-provider)
2. Submit an enrollment request for **Real-time eligibility checks**. [Stedi portal](https://portal.stedi.com/app/healthcare/enrollments) | [API endpoint](/healthcare/api-reference/post-enrollment-create-enrollment)

   Select the payer ID based on the type of MBI lookup you want to perform:

   * **With SSN:** [`MBILU` (CMS MBI Lookup)](https://www.stedi.com/healthcare/network?page=0\&search=MBIL\&entry=ASKVB)
   * **No SSN:** [`MBILUNOSSN` (CMS MBI Lookup Without SSN)](https://www.stedi.com/healthcare/network?page=0\&search=MBIL\&entry=APSMC)

If you want to perform both types of MBI lookups, you must submit separate enrollment requests for each payer ID.

<Note>
  When MBI lookups with SSN (Payer ID: `MBILU`) fail because the provider isn't enrolled, Stedi automatically submits the required transaction enrollment request. [Learn more](/healthcare/create-manage-transaction-enrollments#automatic-enrollment-requests)
</Note>

## Run MBI lookups [#run-mbi-lookups]

You can run MBI lookups with and without SSN using the following endpoints:

* [Real-Time Eligibility Check JSON](/healthcare/api-reference/post-healthcare-eligibility)
* [Real-Time Eligibility Check Raw X12](/healthcare/api-reference/post-healthcare-eligibility-raw-x12)
* [Real-Time Eligibility Check SOAP](/healthcare/api-reference/post-healthcare-eligibility-soap)
* [Batch Eligibility Check](/healthcare/api-reference/post-healthcare-batch-eligibility)

You can also run MBI lookups with and without SSN through the [New eligibility check form](https://portal.stedi.com/app/healthcare/checks/create) in the Stedi portal and through [bulk CSV uploads](/healthcare/batch-refresh-eligibility-checks#manual-submission).

### Request [#request]

Construct an eligibility check request that includes the required patient demographic data:

* **With SSN:** first name, last name, date of birth, Social Security Number (SSN)
* **No SSN:** first name, last name, date of birth, U.S. state

<Note>
  When running an MBI lookup without SSN using our [raw
  X12](/healthcare/api-reference/post-healthcare-eligibility-raw-x12) or
  [SOAP](/healthcare/api-reference/post-healthcare-eligibility-soap) endpoints,
  you must include a city, in addition to a U.S. state, in `Loop 2100C N4`. You
  can use a dummy city value, such as `DUMMY`, if needed. If you omit the city
  value, you'll receive an X12 validation error.
</Note>

Set the `tradingPartnerServiceId` to:

* **With SSN:** `MBILU`
* **No SSN:** `MBILUNOSSN`

These are special payer IDs that tell Stedi to perform an MBI lookup for the patient in addition to a standard eligibility check.

You don't need to include other patient information, such as additional address data. It doesn't improve lookup success rates.

The following sample requests show how to perform an MBI lookup for a patient named Jane Doe.

{/* schema:EligibilityCheckRequestContent */}

<Tabs items="[&#x22;With SSN&#x22;, &#x22;No SSN&#x22;]">
  <Tab value="With SSN">
    ```bash Example MBI Lookup request
    curl --request POST \
      --url https://healthcare.us.stedi.com/2024-04-01/change/medicalnetwork/eligibility/v3 \
      --header 'Authorization: <api-key>' \
      --header 'Content-Type: application/json' \
      --data '{
      "tradingPartnerServiceId": "MBILU",
      "externalPatientId": "UAA111222333",
      "encounter": {
        "serviceTypeCodes": [
          "30"
        ]
      },
      "provider": {
        "organizationName": "ACME Health Services",
        "npi": "1999999984"
      },
      "subscriber": {
        "dateOfBirth": "19000101",
        "firstName": "Jane",
        "lastName": "Doe",
        "ssn": "123456789"
      }
    }'
    ```
  </Tab>

  <Tab value="No SSN">
    ```bash Example MBI Lookup request
    curl --request POST \
      --url https://healthcare.us.stedi.com/2024-04-01/change/medicalnetwork/eligibility/v3 \
      --header 'Authorization: <api-key>' \
      --header 'Content-Type: application/json' \
      --data '{
      "tradingPartnerServiceId": "MBILUNOSSN",
      "externalPatientId": "UAA111222333",
      "encounter": {
        "serviceTypeCodes": [
          "30"
        ]
      },
      "provider": {
        "organizationName": "ACME Health Services",
        "npi": "1999999984"
      },
      "subscriber": {
        "dateOfBirth": "19000101",
        "firstName": "Jane",
        "lastName": "Doe",
        "address": {
          "state": "WV"
        }
      }
    }'
    ```
  </Tab>
</Tabs>

### Response [#response]

Stedi uses the patient's demographic data and SSN to perform an MBI lookup. If there is a match, Stedi submits an eligibility check to CMS. The response shape is the same for both the SSN and no SSN lookup types.

Stedi returns a complete eligibility response from CMS for the patient and places the patient's MBI in the `subscriber.memberId` property.
Visit [Determine patient benefits](/healthcare/eligibility-active-coverage-benefits) for details about how you can use the eligibility response to determine a patient's coverage status and benefits. Although unlikely, false positives are possible, so you're ultimately responsible for matching results to your own records.

The following example shows a CMS eligibility response returned from an MBI lookup. In this scenario, the patient's MBI is `1AA2CC3DD45`.

{/* schema:EligibilityCheckResponseContent */}

```json Example MBI Lookup response
{
  "meta": {
    "senderId": "STEDI",
    "submitterId": "117151744",
    "applicationMode": "production",
    "traceId": "11112222333344445555666677",
    "outboundTraceId": "11112222333344445555666677"
  },
  "controlNumber": "112233445",
  "id": "ec_01234567-89ab-cdef-0123-456789abcdef",
  "reassociationKey": "112233445",
  "tradingPartnerServiceId": "CMS",
  "provider": {
    "providerName": "ACME HEALTH SERVICES",
    "entityIdentifier": "Provider",
    "entityType": "Non-Person Entity",
    "npi": "1999999984"
  },
  "subscriber": {
    "memberId": "1AA2CC3DD45",
    "firstName": "JANE",
    "lastName": "DOE",
    "middleName": "A",
    "gender": "F",
    "entityIdentifier": "Insured or Subscriber",
    "entityType": "Person",
    "dateOfBirth": "19000101",
    "address": {
      "address1": "1234 FIRST ST",
      "city": "NEW YORK",
      "state": "WV",
      "postalCode": "123451111"
    }
  },
  "payer": {
    "entityIdentifier": "Payer",
    "entityType": "Non-Person Entity",
    "name": "CMS",
    "payorIdentification": "CMS"
  },
  "planDateInformation": {
    "eligibility": "20241025"
  },
  "planStatus": [
    {
      "statusCode": "1",
      "status": "Active Coverage",
      "serviceTypeCodes": ["88"]
    },
    {
      "statusCode": "1",
      "status": "Active Coverage",
      "serviceTypeCodes": [
        "30",
        "42",
        "45",
        "48",
        "49",
        "69",
        "76",
        "83",
        "A5",
        "A7",
        "AG",
        "BT",
        "BU",
        "BV"
      ]
    },
    {
      "statusCode": "1",
      "status": "Active Coverage",
      "serviceTypeCodes": [
        "30",
        "2",
        "23",
        "24",
        "25",
        "26",
        "27",
        "28",
        "3",
        "33",
        "36",
        "37",
        "38",
        "39",
        "40",
        "42",
        "50",
        "51",
        "52",
        "53",
        "67",
        "69",
        "73",
        "76",
        "83",
        "86",
        "98",
        "A4",
        "A6",
        "A8",
        "AI",
        "AJ",
        "AK",
        "AL",
        "BT",
        "BU",
        "BV",
        "DM",
        "UC"
      ]
    }
  ],
  "benefitsInformation": [
    {
      "code": "I",
      "name": "Non-Covered",
      "serviceTypeCodes": ["41", "54"],
      "serviceTypes": ["Routine (Preventive) Dental", "Long Term Care"],
      "inPlanNetworkIndicatorCode": "W",
      "inPlanNetworkIndicator": "Not Applicable"
    },
    {
      "code": "1",
      "name": "Active Coverage",
      "serviceTypeCodes": ["88"],
      "serviceTypes": ["Pharmacy"],
      "inPlanNetworkIndicatorCode": "W",
      "inPlanNetworkIndicator": "Not Applicable"
    },
    {
      "code": "R",
      "name": "Other or Additional Payor",
      "insuranceTypeCode": "QM",
      "insuranceType": "Qualified Medicare Beneficiary",
      "planCoverage": "CA QMB Plan",
      "inPlanNetworkIndicatorCode": "W",
      "inPlanNetworkIndicator": "Not Applicable",
      "benefitsDateInformation": {
        "coordinationOfBenefits": "20230101"
      }
    },
    {
      "code": "1",
      "name": "Active Coverage",
      "serviceTypeCodes": [
        "30",
        "42",
        "45",
        "48",
        "49",
        "69",
        "76",
        "83",
        "A5",
        "A7",
        "AG",
        "BT",
        "BU",
        "BV"
      ],
      "serviceTypes": [
        "Health Benefit Plan Coverage",
        "Home Health Care",
        "Hospice",
        "Hospital - Inpatient",
        "Hospital - Room and Board",
        "Maternity",
        "Dialysis",
        "Infertility",
        "Psychiatric - Room and Board",
        "Psychiatric - Inpatient",
        "Skilled Nursing Care",
        "Gynecological",
        "Obstetrical",
        "Obstetrical/Gynecological"
      ],
      "insuranceTypeCode": "MA",
      "insuranceType": "Medicare Part A",
      "inPlanNetworkIndicatorCode": "W",
      "inPlanNetworkIndicator": "Not Applicable",
      "benefitsDateInformation": {
        "plan": "20190101"
      },
      "additionalInformation": [
        {
          "description": "0-Beneficiary insured due to age OASI"
        }
      ]
    },
    {
      "code": "C",
      "name": "Deductible",
      "serviceTypeCodes": ["30"],
      "serviceTypes": ["Health Benefit Plan Coverage"],
      "insuranceTypeCode": "QM",
      "insuranceType": "Qualified Medicare Beneficiary",
      "planCoverage": "Medicare Part A",
      "timeQualifierCode": "26",
      "timeQualifier": "Episode",
      "benefitAmount": "0",
      "inPlanNetworkIndicatorCode": "W",
      "inPlanNetworkIndicator": "Not Applicable",
      "benefitsDateInformation": {
        "plan": "20240101-20241231"
      }
    },
    {
      "code": "1",
      "name": "Active Coverage",
      "serviceTypeCodes": [
        "30",
        "2",
        "23",
        "24",
        "25",
        "26",
        "27",
        "28",
        "3",
        "33",
        "36",
        "37",
        "38",
        "39",
        "40",
        "42",
        "50",
        "51",
        "52",
        "53",
        "67",
        "69",
        "73",
        "76",
        "83",
        "86",
        "98",
        "A4",
        "A6",
        "A8",
        "AI",
        "AJ",
        "AK",
        "AL",
        "BT",
        "BU",
        "BV",
        "DM",
        "UC"
      ],
      "serviceTypes": [
        "Health Benefit Plan Coverage",
        "Surgical",
        "Diagnostic Dental",
        "Periodontics",
        "Restorative",
        "Endodontics",
        "Maxillofacial Prosthetics",
        "Adjunctive Dental Services",
        "Consultation",
        "Chiropractic",
        "Dental Crowns",
        "Dental Accident",
        "Orthodontics",
        "Prosthodontics",
        "Oral Surgery",
        "Home Health Care",
        "Hospital - Outpatient",
        "Hospital - Emergency Accident",
        "Hospital - Emergency Medical",
        "Hospital - Ambulatory Surgical",
        "Smoking Cessation",
        "Maternity",
        "Diagnostic Medical",
        "Dialysis",
        "Infertility",
        "Emergency Services",
        "Professional (Physician) Visit - Office",
        "Psychiatric",
        "Psychotherapy",
        "Psychiatric - Outpatient",
        "Substance Abuse",
        "Alcoholism",
        "Drug Addiction",
        "Vision (Optometry)",
        "Gynecological",
        "Obstetrical",
        "Obstetrical/Gynecological",
        "Durable Medical Equipment",
        "Urgent Care"
      ],
      "insuranceTypeCode": "MB",
      "insuranceType": "Medicare Part B",
      "inPlanNetworkIndicatorCode": "W",
      "inPlanNetworkIndicator": "Not Applicable",
      "benefitsDateInformation": {
        "plan": "20190101"
      },
      "additionalInformation": [
        {
          "description": "0-Beneficiary insured due to age OASI"
        }
      ]
    },
    {
      "code": "C",
      "name": "Deductible",
      "serviceTypeCodes": ["30"],
      "serviceTypes": ["Health Benefit Plan Coverage"],
      "insuranceTypeCode": "QM",
      "insuranceType": "Qualified Medicare Beneficiary",
      "planCoverage": "Medicare Part B",
      "timeQualifierCode": "23",
      "timeQualifier": "Calendar Year",
      "benefitAmount": "0",
      "inPlanNetworkIndicatorCode": "W",
      "inPlanNetworkIndicator": "Not Applicable",
      "benefitsDateInformation": {
        "plan": "20240101-20241231"
      }
    },
    {
      "code": "A",
      "name": "Co-Insurance",
      "serviceTypeCodes": ["30"],
      "serviceTypes": ["Health Benefit Plan Coverage"],
      "insuranceTypeCode": "QM",
      "insuranceType": "Qualified Medicare Beneficiary",
      "planCoverage": "Medicare Part B",
      "timeQualifierCode": "27",
      "timeQualifier": "Visit",
      "benefitPercent": "0",
      "inPlanNetworkIndicatorCode": "W",
      "inPlanNetworkIndicator": "Not Applicable",
      "benefitsDateInformation": {
        "plan": "20240101-20241231"
      }
    },
    {
      "code": "R",
      "name": "Other or Additional Payor",
      "serviceTypeCodes": ["88"],
      "serviceTypes": ["Pharmacy"],
      "insuranceTypeCode": "OT",
      "insuranceType": "Other",
      "inPlanNetworkIndicatorCode": "W",
      "inPlanNetworkIndicator": "Not Applicable",
      "benefitsAdditionalInformation": {
        "planNumber": "A0505",
        "planNetworkIdNumber": "555"
      },
      "benefitsDateInformation": {
        "benefit": "20230101"
      },
      "benefitsRelatedEntity": {
        "entityIdentifier": "Payer",
        "entityType": "Non-Person Entity",
        "entityName": "UHC OF CALIFORNIA",
        "address": {
          "address1": "202 Main St",
          "city": "Sacramento",
          "state": "CA",
          "postalCode": "94203"
        },
        "contactInformation": {
          "contacts": [
            {
              "communicationMode": "Telephone",
              "communicationNumber": "8006446644"
            },
            {
              "communicationMode": "Uniform Resource Locator (URL)",
              "communicationNumber": "UHC.com/Medicare"
            }
          ]
        }
      },
      "benefitsRelatedEntities": [
        {
          "entityIdentifier": "Payer",
          "entityType": "Non-Person Entity",
          "entityName": "UHC OF CALIFORNIA",
          "address": {
            "address1": "202 Main St",
            "city": "Sacramento",
            "state": "CA",
            "postalCode": "94203"
          },
          "contactInformation": {
            "contacts": [
              {
                "communicationMode": "Telephone",
                "communicationNumber": "8006446644"
              },
              {
                "communicationMode": "Uniform Resource Locator (URL)",
                "communicationNumber": "UHC.com/Medicare"
              }
            ]
          }
        }
      ]
    },
    {
      "code": "U",
      "name": "Contact Following Entity for Eligibility or Benefit Information",
      "serviceTypeCodes": ["30"],
      "serviceTypes": ["Health Benefit Plan Coverage"],
      "insuranceTypeCode": "HN",
      "insuranceType": "Health Maintenance Organization (HMO) - Medicare Risk",
      "inPlanNetworkIndicatorCode": "W",
      "inPlanNetworkIndicator": "Not Applicable",
      "benefitsAdditionalInformation": {
        "planNumber": "A0505",
        "planNetworkIdNumber": "555"
      },
      "benefitsDateInformation": {
        "coordinationOfBenefits": "20230101"
      },
      "benefitsRelatedEntity": {
        "entityIdentifier": "Primary Payer",
        "entityType": "Non-Person Entity",
        "entityName": "UHC OF CALIFORNIA",
        "address": {
          "address1": "202 Main St",
          "city": "Sacramento",
          "state": "CA",
          "postalCode": "94203"
        },
        "contactInformation": {
          "contacts": [
            {
              "communicationMode": "Telephone",
              "communicationNumber": "8006446644"
            },
            {
              "communicationMode": "Uniform Resource Locator (URL)",
              "communicationNumber": "UHC.com/Medicare"
            }
          ]
        }
      },
      "benefitsRelatedEntities": [
        {
          "entityIdentifier": "Primary Payer",
          "entityType": "Non-Person Entity",
          "entityName": "UHC OF CALIFORNIA",
          "address": {
            "address1": "202 Main St",
            "city": "Sacramento",
            "state": "CA",
            "postalCode": "94203"
          },
          "contactInformation": {
            "contacts": [
              {
                "communicationMode": "Telephone",
                "communicationNumber": "8006446644"
              },
              {
                "communicationMode": "Uniform Resource Locator (URL)",
                "communicationNumber": "UHC.com/Medicare"
              }
            ]
          }
        }
      ],
      "additionalInformation": [
        {
          "description": "MA Bill Option Code - A"
        }
      ]
    }
  ],
  "errors": [],
  "x12": ""
}
```

### Concurrency limit [#concurrency-limit]

MBI lookups you perform using real-time eligibility check endpoints (JSON and Raw X12) share a concurrency pool with other real-time healthcare APIs. For more information, visit [Concurrency limits](/healthcare/api-reference#concurrency-limits).

MBI lookups you perform using the [Batch Eligibility Check](/healthcare/api-reference/post-healthcare-batch-eligibility) endpoint don't count toward your Stedi account concurrency limit.

## Mock request [#mock-request]

When you submit the following mock MBI lookup request to the eligibility check endpoints with a [test API key](/healthcare/api-reference#api-key-types), Stedi returns mock benefits data you can use for testing. The mock request works with Stedi's [JSON](/healthcare/api-reference/post-healthcare-eligibility), [Raw X12](/healthcare/api-reference/post-healthcare-eligibility-raw-x12), and [SOAP](/healthcare/api-reference/post-healthcare-eligibility-soap) endpoints.

This mock request is for an MBI lookup with SSN.

<Tip>
  Mock requests are free for testing purposes and won't incur any charges in
  your Stedi account.
</Tip>

Request Notes:

* `encounter`: MBI lookup supports only service type code `30`.
* `provider`: You can use any organization name and any NPI, as long as it passes check digit validation. To generate a dummy NPI, you can use this [free tool](https://jsfiddle.net/alexdresko/cLNB6).
* `subscriber`: You must use the exact values in the test request. Other birth dates, first names, last names, and Social Security Numbers return errors.

<Accordion title="MBI lookup mock request" id="mbi-lookup-mock-request">
  <Tabs items="[&#x22;Request - JSON&#x22;, &#x22;Request - Raw X12&#x22;, &#x22;Request - SOAP&#x22;]">
    <Tab value="Request - JSON">
      {/* schema:EligibilityCheckRequestContent */}

      ```bash test request for CMS MBI Lookup
      curl --request POST \
        --url 'https://healthcare.us.stedi.com/2024-04-01/change/medicalnetwork/eligibility/v3' \
        --header 'Authorization: Key <test_api_key>' \
        --header 'Content-Type: application/json' \
        --data '{
          "controlNumber": "112233445",
          "tradingPartnerServiceId": "MBILU",
          "provider": {
              "organizationName": "Provider Name",
              "npi": "1999999984"
          },
          "subscriber": {
              "lastName": "Doe",
              "dateOfBirth": "19550505",
              "ssn": "123456789"
          },
          "encounter": {
              "serviceTypeCodes": [
                  "30"
              ]
          }
      }'
      ```
    </Tab>

    <Tab value="Request - Raw X12">
      ```bash test request for CMS MBI Lookup
      curl --request POST \
        --url 'https://healthcare.us.stedi.com/2024-04-01/change/medicalnetwork/eligibility/v3/raw-x12' \
        --header 'Authorization: Key <test_api_key>' \
        --header 'Content-Type: application/json' \
        --data '{
          "x12": "ISA*00*          *00*          *ZZ*AV09311993     *01*030240928      *210101*1200*^*00501*000000001*0*P*>~GS*HS*1510848*030240928*20210101*120000*1*X*005010X279A1~ST*270*0001*005010X279A1~BHT*0022*13*00000000000000000000000000*20210101*1200~HL*1**20*1~NM1*PR*2*CMS MBI Lookup*****PI*MBILU~HL*2*1*21*1~NM1*1P*2*Provider Name*****XX*1999999984~HL*3*2*22*0~TRN*1*00000000000000000000000000*3117151744~NM1*IL*1*Doe*****MI*123456789~REF*SY*123456789~DMG*D8*19550505~EQ*30~SE*13*0001~GE*1*1~IEA*1*000000001~"
        }'
      ```
    </Tab>

    <Tab value="Request - SOAP">
      ```bash test request for CMS MBI Lookup
      curl --request POST \
        --url 'https://healthcare.us.stedi.com/2025-06-01/protocols/caqh-core' \
        --header 'Content-Type: application/soap+xml' \
        --data '<soapenv:Envelope xmlns:soapenv="http://www.w3.org/2003/05/soap-envelope" xmlns:cor="http://www.caqh.org/SOAP/WSDL/CORERule2.2.0.xsd">
        <soapenv:Header>
          <wsse:Security soapenv:mustUnderstand="true" xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">
            <wsse:UsernameToken>
              <wsse:Username>STEDI-ACCOUNT-ID</wsse:Username>
              <wsse:Password>STEDI-API-KEY</wsse:Password>
            </wsse:UsernameToken>
          </wsse:Security>
        </soapenv:Header>
        <soapenv:Body>
            <cor:COREEnvelopeRealTimeRequest>
              <PayloadType>X12_270_Request_005010X279A1</PayloadType>
              <ProcessingMode>RealTime</ProcessingMode>
              <PayloadID>f81d4fae-7dec-11d0-a765-00a0c91e6b12</PayloadID>
              <TimeStamp>2007-08-30T10:20:34.000Z</TimeStamp>
              <SenderID>STEDI</SenderID>
              <ReceiverID>STEDI</ReceiverID>
              <CORERuleVersion>2.2.0</CORERuleVersion>
              <Payload><![CDATA[ISA*00*          *00*          *ZZ*AV09311993     *01*030240928      *210101*1200*^*00501*000000001*0*P*>~GS*HS*1510848*030240928*20210101*120000*1*X*005010X279A1~ST*270*0001*005010X279A1~BHT*0022*13*00000000000000000000000000*20210101*1200~HL*1**20*1~NM1*PR*2*CMS MBI Lookup*****PI*MBILU~HL*2*1*21*1~NM1*1P*2*Provider Name*****XX*1999999984~HL*3*2*22*0~TRN*1*00000000000000000000000000*3117151744~NM1*IL*1*Doe*****MI*123456789~REF*SY*123456789~DMG*D8*19550505~EQ*30~SE*13*0001~GE*1*1~IEA*1*000000001~]]></Payload>
            </cor:COREEnvelopeRealTimeRequest>
        </soapenv:Body>
      </soapenv:Envelope>'
      ```
    </Tab>
  </Tabs>
</Accordion>

## Health Insurance Claim Number (HICN) [#health-insurance-claim-number-hicn]

Some payers return the patient's MBI in one of the following properties of the standard eligibility response:

* [`benefitsInformation[].benefitsAdditionalInformation.hicNumber`](/healthcare/api-reference/post-healthcare-eligibility#response.benefitsInformation.benefitsAdditionalInformation.hicNumber)
* [`planInformation.hicNumber`](/healthcare/api-reference/post-healthcare-eligibility#response.planInformation.hicNumber)

If the value in either of these properties matches the format specified in the [Medicare Beneficiary Identifier documentation](https://www.cms.gov/training-education/partner-outreach-resources/new-medicare-card/medical-beneficiary-identifiers-mbis), the number is likely an MBI. In these cases, you don't need to perform an MBI lookup - you can use this value in a standard eligibility check to CMS.

You're most likely to receive an MBI in eligibility responses from commercial Medicare Advantage plans, but they can also be present in responses from Medicaid plans for dual-eligible patients.

## Medicare Advantage plans [#medicare-advantage-plans]

A Medicare Advantage plan (also known as Medicare Part C) is a type of health insurance plan offered by private companies that contract with Medicare to provide all of a patient's Part A (hospital insurance) and Part B (medical insurance) benefits.

Medicare Advantage plans have their own unique member ID, which **isn't** returned in the MBI lookup response. However, the MBI lookup response will include the patient's Medicare Advantage plan name in the [`benefitsInformation[].benefitsRelatedEntities[].entityName`](/healthcare/api-reference/post-healthcare-eligibility#response.benefitsInformation.benefitsRelatedEntities.entityName) property when available. Please note that you shouldn't submit eligibility checks for Medicare Advantage plans to CMS (HETS) - you should submit them to the actual Medicare Advantage plan payer instead.

Many Medicare Advantage plans allow you to submit [eligibility checks](/healthcare/send-eligibility-checks) with just the patient's name and date of birth. However, if that approach is unsuccessful and you don't have the patient's member ID, you can use [Insurance Discovery](/healthcare/insurance-discovery) to retrieve benefits information with the patient's demographic information instead.

### HETS Rules of Behavior [#hets-rules-of-behavior]

You must abide by the HIPAA Eligibility Transaction System (HETS) [Rules of Behavior](https://www.cms.gov/research-statistics-data-and-systems/cms-information-technology/hetshelp/downloads/eligibilitytransactionsysteminquiriesrulesofbehavior.pdf) when you use MBI lookup. HETS is intended to support original Medicare fee-for-service (FFS) activities, such as preparing and submitting FFS claims.

If you have no intention of submitting claims to Medicare, using MBI lookup to identify whether a patient is enrolled in a Medicare Advantage plan is likely outside the scope of permitted HETS use. You should consult your own legal counsel to determine what's permissible for your specific situation.

Stedi can't make this determination on your behalf or provide consultation about what may or may not be permitted.

## Outdated MBI error [#outdated-mbi-error]

Stedi's MBI lookup may rarely retrieve an outdated MBI for a patient. CMS may rotate an MBI for a member for various reasons at any time, such as to help protect against identity theft.

In these cases, the response will contain an [`AAA` error](/healthcare/eligibility-troubleshooting#payer-aaa-errors) with code `72` (Invalid/Missing Subscriber/Insured ID) *and* return the `subscriber.memberId` containing the outdated MBI.

```json
{
  "warnings": [
    {
      "code": "request::270::member_id_required",
      "description": "This payer requires the patient's member ID to be included in eligibility requests."
    }
  ],
  "errors": [
    {
      "code": "72",
      "description": "Invalid/Missing Subscriber/Insured ID",
      "field": "AAA",
      "followupAction": "Please Correct and Resubmit",
      "location": "2100C",
      "possibleResolutions": "The subscriber's member ID is either missing or invalid.\n• Check the `subscriber.memberId`.\n• Ensure the member ID doesn't include the [Card Issuer Identifier](https://www.stedi.com/docs/healthcare/eligibility-troubleshooting#card-issuer-identifier-80840).\n• If you can't locate the correct member ID, try running an [insurance discovery check](https://www.stedi.com/docs/healthcare/insurance-discovery) to retrieve the patient's benefits information instead."
    }
  ],
  "subscriber": {
    "aaaErrors": [
        {
          "code": "72",
          "followupAction": "Please Correct and Resubmit",
          "description": "Invalid/Missing Subscriber/Insured ID",
          "possibleResolutions": "The subscriber's member ID is either missing or invalid.\n• Check the `subscriber.memberId`.\n• Ensure the member ID doesn't include the [Card Issuer Identifier](https://www.stedi.com/docs/healthcare/eligibility-troubleshooting#card-issuer-identifier-80840).\n• If you can't locate the correct member ID, try running an [insurance discovery check](https://www.stedi.com/docs/healthcare/insurance-discovery) to retrieve the patient's benefits information instead.",
          "location": "Loop 2100C",
          "field": "AAA"
        }
    ],
    "memberId": "1AA2CC3DD45", // Outdated MBI
    "firstName": "JANE",
    "lastName": "DOE",
      ...
  },
  ...
}
```

## Recommended retry strategy [#recommended-retry-strategy]

Implementing the right retry strategy for eligibility check failures saves a lot of time and money.

At a minimum, we **strongly recommend** automatically retrying every request that fails due to payer connectivity issues. Automatic retries resolve a significant portion of these types of failures without manual intervention. Visit [Retry strategy](/healthcare/eligibility-troubleshooting#retry-strategy) for details.

## CMS traceability requirements [#cms-traceability-requirements]

<Note>
  All parties involved in HETS eligibility transactions must comply with the [HETS Rules of Behavior](https://www.cms.gov/research-statistics-data-and-systems/cms-information-technology/hetshelp/downloads/eligibilitytransactionsysteminquiriesrulesofbehavior.pdf). Compliance is also required under our terms. Review the Rules of Behavior before sending eligibility checks to CMS.
</Note>

Starting November 8, 2025, the Centers for Medicare & Medicaid Services (CMS) requires submitters to include the entire chain of network hops for every eligibility request sent to CMS's eligibility system, HETS.

Specifically, requests must include an `X-Forwarded-For` HTTP header containing the network IP addresses from the point of origin through receipt by the HETS system. CMS expects `X-Forwarded-For` to list each IP, comma-separated, starting with the originating system and continuing through every intermediary.

To comply with this requirement:

* You must collect all IP addresses for upstream requests and pass them in the standard `X-Forwarded-For` header when calling Stedi's API. If you are yourself an intermediary – for example, an RCM, EHR, or PMS system – you'll need to coordinate with your providers and any third-party organizations to ensure they include the Network IP details as part of the `X-Forwarded-For` header. This enables CMS to receive a complete list of all IPs, including the original initiator of the request (typically, the provider).
* Stedi records the IP address you use when you call our API, as well as all the IP addresses listed in the `X-Forwarded-For` header. We include these IP addresses in the list submitted to CMS.

You only need to include the `X-Forwarded-For` header in eligibility requests when there are upstream IP addresses.

The following examples illustrate when and how to include the header:

| Scenario                                                                                                                                                                   | `X-Forwarded-For` required?                                                                                                                      | Result                                                                |
| -------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------ | --------------------------------------------------------------------- |
| A provider (IP `2.2.2.2`) connects directly to Stedi without intermediaries.                                                                                               | No.                                                                                                                                              | CMS ultimately receives `X-Forwarded-For: 2.2.2.2`                    |
| A provider (IP `2.2.2.2`) routes through an RCM platform's transactional system (IP `3.3.3.3`) that calls Stedi's API using a separate integration backend (IP `4.4.4.4`). | Yes. The RCM platform sets `X-Forwarded-For: 2.2.2.2, 3.3.3.3`. Stedi records the IP address of the API caller (`4.4.4.4` ) and sends it to CMS. | CMS ultimately receives `X-Forwarded-For: 2.2.2.2, 3.3.3.3, 4.4.4.4`. |
| A provider network (IP `2.2.2.2`) passes through an office firewall (IP `4.4.4.4`) and then an RCM platform (IP `3.3.3.3`), which calls Stedi's API.                       | Yes. The RCM platform sets `X-Forwarded-For: 2.2.2.2, 4.4.4.4`. Stedi records the IP address of the API caller (`3.3.3.3`) and sends it to CMS.  | CMS ultimately receives `X-Forwarded-For: 2.2.2.2, 4.4.4.4, 3.3.3.3`. |

### U.S. IP address requirement [#us-ip-address-requirement]

Stedi blocks eligibility requests to CMS when any IP address in the chain – the originating IP address or any in the X-Forwarded-For header – is located outside the United States.

# Model Context Protocol (MCP)
Source: https://www.stedi.com/docs/healthcare/mcp-server


Our Model Context Protocol (MCP) server defines a set of tools that AI agents can use to perform and troubleshoot eligibility checks through Stedi.

When building agents that work with eligibility data, we recommend using our MCP server. It excels at individual eligibility checks, especially when your agent needs to retrieve coverage data in real time. For example:

* A voice agent can use the MCP server to quickly verify benefits in a few seconds instead of calling payers over the phone. It can then place follow-up calls to payers only as needed - for example, to collect additional benefit details.
* A Revenue Cycle Management (RCM) workflow agent can use the MCP server to validate a patient's coverage before scheduling an appointment or submitting a claim.

You can also use the MCP server to perform individual checks with MCP clients. This is useful for testing your integration during development and for enabling operations teams to run ad-hoc checks or troubleshoot issues. Be sure to put measures in place to stay compliant with your organization's data-handling policies, HIPAA, and other applicable requirements.

## Why use the MCP server? [#why-use-the-mcp-server]

Performing eligibility checks successfully requires more than just calling Stedi's APIs. In addition to determining the right payer, you must know the required and recommended properties, know how to interpret errors, and build out a robust retry strategy for various failure cases.

The troubleshooting process can be complex. For example, if your check fails due to a payer connectivity issue, you should retry immediately. If it fails due to a `Subscriber Not Found` error, you must systematically diagnose the issue in order to successfully retrieve benefits information. We have best practices for entering [patient data](/healthcare/send-eligibility-checks#patient-information), [troubleshooting](/healthcare/eligibility-troubleshooting), and [retries](/healthcare/eligibility-troubleshooting#retry-strategy) in our docs - you'd typically need to implement this logic in your product and then maintain it over time.

The MCP server is helpful because it comes with all of this logic built in.

### Features [#features]

The MCP server allows agents to:

* **Find the correct payer:** The MCP server has a tool for searching Stedi's payer database. This allows agents to access information like payer IDs and supported transaction types as needed when answering questions or running eligibility checks.
* **Run eligibility checks:** The MCP server has a tool for constructing and submitting eligibility requests using available patient and provider data. If the first attempt fails, the server provides instructions about how to adjust inputs, retry, and move forward.
* **Troubleshoot rejection codes:** The MCP server provides instructions on what to do in these scenarios - for example, remove the member ID, adjust the name, or try alternate, related payer IDs. These are the same tactics our support team uses internally to resolve issues.

In essence, the MCP server allows you to tell your agent to "run an eligibility check" at the appropriate times during its workflow. You can focus on building your agent's core functionality, while the MCP server handles the complexities of eligibility checks.

### Limitations [#limitations]

The MCP server is designed for an agent that is performing and troubleshooting a single eligibility check. It's not intended for bulk eligibility checks, or for interpreting the benefits in an eligibility response.

* For bulk eligibility checks, use Batch Eligibility Check API directly. Visit [batch refresh checks](/healthcare/batch-refresh-eligibility-checks) for details.
* To interpret the eligibility response, you'll need to layer your own logic on top of the MCP server. For example, you'll need custom logic for tasks like determining whether a patient has active coverage for a particular service or retrieving the patient's copay. Visit [determine patient benefits](/healthcare/eligibility-active-coverage-benefits) for complete details.

### Data security and compliance [#data-security-and-compliance]

The MCP server uses TLS encryption for all connections. You can authenticate to the MCP server using one of the following methods:

* API key authentication (standard Stedi production or test key)
* OAuth 2.x authentication (OAuth required for Claude integrations)

If you're using our MCP server with a third-party tool like Claude or ChatGPT, follow your organization's data handling policies to ensure that you stay compliant with HIPAA and other applicable requirements. For example, your organization likely requires a BAA with any third-party tool before using the tool with Stedi's MCP server.

#### Test mode [#test-mode]

You can start using the MCP server in [test mode](/healthcare/test-mode). In test mode, you can use test API keys to develop and test your integration without transmitting PHI or PII.

<Note>
  The MCP server is only available for production accounts. If you have a [sandbox account](/healthcare/billing#sandbox-accounts), click **Upgrade account** in the side navigation to access the MCP server.
</Note>

## How the MCP server works [#how-the-mcp-server-works]

Your AI agent connects to the server using an MCP client. Once connected, the server gives your agent access to the available [tools](#tools) and [prompts](#prompts) for running eligibility checks.

<img alt="MCP Server Diagram" src="__img0" />

The MCP server adds minimal overhead - you'll get the same fast response times from our APIs with added intelligence for your agents.

### Tools [#tools]

Tools interact with Stedi's APIs to perform tasks. The MCP server provides the following tools for your agent to use:

{/* prettier-ignore-start */}

| Tool Name           | Description                                                                                                                                                                                                            |
| ------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `search_for_payer`  | Calls the [Search Payers](/healthcare/api-reference/get-search-payers) endpoint to find a Stedi payer based on a provided payer ID or name. It even works with partial names or typos. For example, `cig` finds Cigna. |
| `eligibility_check` | Runs an eligibility check using the [Real-Time Eligibility Check JSON](/healthcare/api-reference/post-healthcare-eligibility) endpoint. The JSON format provides the most reliable results for AI agents.              |

{/* prettier-ignore-end */}

### Prompts [#prompts]

The MCP server includes prompts to help your agent recover from common eligibility errors. They cover the most common recoverable scenarios we see in production:

* How to handle common errors
* When to retry eligibility checks
* What to do when a payer isn't found

You and your agent stay in control of executing follow-up actions, such as troubleshooting and retries.

<Tip>
  Many LLM clients don't automatically read prompt definitions. You must
  explicitly instruct them to "read the prompts" or use a client-specific
  command. Otherwise, the model may never access prompt content.
</Tip>

## Install the MCP server [#install-the-mcp-server]

The eligibility MCP server is a Streamable HTTP MCP server. We support two authentication methods:

* **API key authentication** (standard usage)
* **OAuth 2.x authentication** (required for Claude integrations)

### API Key Authentication [#api-key-authentication]

Endpoint:

```
https://mcp.us.stedi.com/2025-07-11/mcp
```

To connect your agent:

* Create a [production or test API key](/healthcare/api-reference#api-key-types) for authentication. Use test API keys to develop without transmitting PHI or PII.
* Add the following configuration to your agent's MCP client:
  ```json
  {
    "mcpServers": {
      "stedi-healthcare": {
        "type": "http",
        "url": "https://mcp.us.stedi.com/2025-07-11/mcp",
        "headers": {
          "Authorization": "STEDI_PROD_API_KEY"
        }
      }
    }
  }
  ```

### OAuth Authentication [#oauth-authentication]

<Note>
  We recommend using API key authentication when possible for simplicity.
</Note>

Endpoint:

```
https://mcp.us.stedi.com/mcp2
```

This flow doesn't require an API key in the MCP configuration. To connect your agent, add the following configuration to your agent's MCP client:

```json
{
  "mcpServers": {
    "healthcare-mcp": {
      "type": "http",
      "url": "https://mcp.us.stedi.com/mcp2"
    }
  }
}
```

<Note>
  OAuth authentication currently supports email and password only. Single sign-on (SSO) authentication is not supported. You must have the [Operator role](/healthcare/account-settings#assign-member-roles) or above, and your plan must include healthcare eligibility. Sessions expire after 30 days - you'll need to reauthenticate through your chosen AI agent.
</Note>

#### Claude Code [#claude-code]

OAuth authentication is required when adding Stedi's MCP server to Claude Code. Run this command to install the MCP server:

```bash
claude mcp add --transport http stedi-eligibility-mcp https://mcp.us.stedi.com/mcp2
```

To use the MCP server:

1. Run `/mcp` inside Claude Code.
2. Begin the authentication process for `stedi-eligibility-mcp`. A browser window opens where you can sign in to your Stedi account.
3. Sign in using your Stedi account credentials.

OAuth completes and the MCP server becomes available for you to use.

#### ChatGPT [#chatgpt]

<Note>
  The Stedi app requires a [ChatGPT Enterprise plan](https://chatgpt.com/pricing/). The app isn't available on ChatGPT plans for individuals (Free/Go/Plus/Pro).
</Note>

The Stedi app is available for ChatGPT users. To connect:

1. Open [ChatGPT](https://chatgpt.com/).
2. Click **Apps** in the sidebar.
3. Search for and select **Stedi** from the list of available apps.
4. Click **Connect**.
5. Sign in to your Stedi account.
6. Review and authorize the permissions the Stedi app is requesting.

Once connected, you can use ChatGPT to perform actions in your Stedi account. For example, you might write "Run an eligibility check for John Doe with the following demographic information."

## Example use [#example-use]

Here are some examples of how you might use the MCP server in different scenarios.

### Search for a payer [#search-for-a-payer]

You can instruct your agent to retrieve the correct payer ID before running an eligibility check.

**Example prompt**

> Determine the correct payer ID for Cigna and confirm whether eligibility checks are supported.

**What happens**

The MCP server:

* Invokes the `search_for_payer` tool.
* Matches "Cigna".
* Returns the correct payer ID and supported transaction types.
* Confirms whether the payer supports eligibility (270/271) transactions.

### Run an eligibility check [#run-an-eligibility-check]

You can instruct your agent to use the MCP server to check patient eligibility before scheduling appointments.

**Example prompt**

> Run an eligibility check for this patient before scheduling their appointment.

**What happens**

The MCP server:

* Invokes the `eligibility_check` tool.
* Constructs a properly formatted JSON eligibility request using available patient and provider data.
* Submits the request to the payer in real time.
* Returns structured eligibility response data.
* Provides retry guidance if the request fails due to a recoverable issue.

### Recover from failures [#recover-from-failures]

The MCP server can help your agent recover from common errors when running eligibility checks.

**Example prompt**

> Read the prompts from Stedi's MCP server. Then use Stedi's MCP server to troubleshoot and retry the eligibility check for patients with "Subscriber Not Found" errors.

**What happens**

The MCP server:

* Analyzes the rejection reason.
* Provides structured retry guidance based on best practices for that error type. For example, if the error is `Subscriber Not Found`, the MCP server may recommend removing the member ID or adjusting the name details.
* After the agent updates the request, the MCP server re-runs the eligibility check and returns the updated results.

## MCP server vs. Stedi Agent [#mcp-server-vs-stedi-agent]

The Stedi Agent and the Model Context Protocol (MCP) server can both help you resolve failed eligibility checks and find payer information, but they serve different use cases.

* The [Stedi Agent](/healthcare/stedi-agent) is a Stedi-controlled, AI assistant within the Stedi portal. It's ready to use whenever you need it. Unlike the MCP server, you can't manage or invoke the Stedi Agent programmatically - you can only use it within the Stedi portal. The Stedi Agent is built on top of the MCP server, meaning it uses the MCP server's exposed tools to perform actions.
* The [MCP Server](/healthcare/mcp-server) provides a set of tools, which are a wrapper around Stedi's APIs, that AI agents can use to find payer information and perform and troubleshoot eligibility checks. The MCP server includes the same retry logic (in a prompt) that the Stedi Agent uses to automatically resolve eligibility check failures.

  You can use the MCP server to build your own AI agents tailored to your use case. Unlike the Stedi Agent, you'll need to install and configure the MCP server for your preferred AI agent.

## Pricing [#pricing]

Stedi offers the MCP server on all [paid plans](https://www.stedi.com/pricing). There is no charge for using the MCP server itself - you only pay for related API requests.

Note that for eligibility checks, there's no charge for non-billable requests, such as those that return errors indicating that the payer is down. Visit [billing for eligibility checks](/healthcare/intro-eligibility-checks#billing-for-eligibility-checks) for details.

We encourage you to contact us with questions, feedback, or for help using our products.

## Contact us [#contact-us]

We make every effort to respond as soon as possible, particularly to urgent requests. For both general support requests and billing inquiries, you can contact us through the following methods:

* [Website](https://www.stedi.com/contact) for all request types
* Email [support@stedi.com](mailto:support@stedi.com) for support requests, billing questions, and/or set up a dedicated Slack or Teams channel

When you report an issue, please include the following:

* A description of the issue, including the current behavior and the expected behavior
* Your Stedi account ID, if you submit through our website
* Screenshots showing the problem, when possible

## Privacy Policy [#privacy-policy]

Refer to our [Privacy Notice](https://legal.stedi.com/legal/privacy-notice-b91ef9d6) for details on how we handle your data.

# National Provider Identifier (NPI)
Source: https://www.stedi.com/docs/healthcare/national-provider-identifier
Learn what a National Provider Identifier (NPI) is, the two NPI types – and how to find, validate, or apply for an NPI.

The National Provider Identifier (NPI) is a unique identification number assigned to healthcare providers. It's used to identify providers in healthcare transactions, like billing, referrals, and insurance claims, and it's required when processing administrative and financial transactions adopted under HIPAA (the Health Insurance Portability and Accountability Act).

If a provider has an NPI, it's required when completing [transaction enrollment](/healthcare/transaction-enrollment) and when sending any healthcare transaction through Stedi, including eligibility checks and claims. Our service terms require that you have legal authority to use the NPI. In certain rare circumstances, payers may allow providers who don't have an NPI to submit transactions using another identifier, such as their Social Security Number (SSN) instead. Providers who don't have an NPI are typically non-medical providers, such as social workers, home health aides, or transportation services.

In practice, alternative identifiers to the NPI are almost never supported, and using alternative identifiers typically requires a special agreement with the payer. We don't recommend attempting to send an alternative identifier in any transaction unless the payer has explicitly instructed you to do so.

## NPI types [#npi-types]

There are two types of NPIs:

* **Type 1 - Individual:** This type of NPI is for individual healthcare providers, such as doctors, dentists, nurse practitioners, physical therapists, and chiropractors. Note that providers who run their own practice likely still need to obtain an individual NPI to use when billing services under their own name.
* **Type 2 - Organization:** This type of NPI is for healthcare organizations or group practices, such as hospitals, clinics, labs, nursing homes, and home health agencies. Use this type of NPI when billing services under the organization's name, not an individual person. Unlike individual NPIs, a single organization can have multiple organization NPIs for different locations, divisions, or services.

## Find a provider's NPI [#find-a-providers-npi]

You can use the [NPPES NPI Registry](https://npiregistry.cms.hhs.gov/search) to look up a provider's NPI. The registry allows you to search for NPIs by name, organization, or NPI number. You can also verify the status of an NPI and view the provider's information, including their taxonomy codes and practice locations. Remember, our service terms require that you have legal authority to use an NPI with Stedi.

## Find a provider by NPI [#find-a-provider-by-npi]

You can use Stedi's [NPI Registry](https://www.stedi.com/npi-registry) to look up a provider's information using their NPI. The registry provides access to over 9.3 million records, and search results include the provider's name, practice address, phone number, specialty, taxonomy codes, and credential information.

## Generate a dummy NPI [#generate-a-dummy-npi]

You can generate a dummy NPI for test transactions using this [free online tool](https://jsfiddle.net/alexdresko/cLNB6). Note that these dummy NPIs aren't valid for production transactions.

## Apply for an NPI [#apply-for-an-npi]

You can obtain an NPI from the [National Plan and Provider Enumeration System (NPPES)](https://nppes.cms.hhs.gov/webhelp/nppeshelp/NPPES%20FAQS.html#how-do-i-apply-for-an-npi). The process includes the following steps:

You'll be required to provide the following in your application:

* Personal information, such as your name, address, and phone number
* Type of provider (individual or organization)
* Provider specialty (taxonomy code)
* Practice location and contact information
* Other information, such as your state license number and the name of your state licensing board

Most online applications are processed within 10 business days. Paper applications may take longer. Once approved, you'll receive your 10-digit NPI number through email or mail, depending on how you applied.

## NPI format and validation [#npi-format-and-validation]

The NPI is a 10-position, intelligence-free numeric identifier (10-digit number). This means that the numbers do not carry other information about healthcare providers, such as the state in which they live or their medical specialty.

The NPI format consists of 9 numeric digits followed by one numeric check digit. The check digit is calculated using the Luhn formula. When you submit a transaction such as an eligibility check or claim to Stedi, we validate the NPI before submitting it to the upstream payer. At a minimum, we validate that the submitted number passes check digit validation. For example, NPIs in test eligibility checks submitted with a test API key must pass check digit validation. In certain cases, we also validate that the NPI exists in the NPPES database.

### Calculate the check digit manually [#calculate-the-check-digit-manually]

Assume the 9-position identifier part of the NPI is 123456789. Using the Luhn formula on the identifier portion, you would calculate the check digit as follows:

1. Double the value of alternate digits, beginning with the rightmost digit:

   2 6 10 14 18

2. Add a constant 24 (to account for the 80840 prefix that would be present on a card issuer identifier), plus the individual digits of the products of doubling, plus unaffected digits:

   24 + 2 + 2 + 6 + 4 + 1 + 0 + 6 + 1 + 4 + 8 + 1 + 8 = 67

3. Subtract the sum from the next higher number ending in zero:

   70 - 67 = 3

The check digit is 3. So, the final NPI with check digit is 1234567893.

# Notifications
Source: https://www.stedi.com/docs/healthcare/notifications


Stedi sends notifications through two channels: in-app (the bell icon in the side navigation) and email. You can manage your notification preferences from the [Notifications page](https://portal.stedi.com/app/settings/notifications) in your account settings.

## Notification categories [#notification-categories]

Stedi sends you notifications about the following:

### Transaction enrollments [#transaction-enrollments]

Stedi sends notifications when a [transaction enrollment](/healthcare/transaction-enrollment) request changes status to `PROVISIONING`, `PROVIDER_ACTION_REQUIRED`, `LIVE`, or `REJECTED`.

* **Who:** The [email set as the **Stedi contact person**](/healthcare/create-manage-transaction-enrollments#stedi-contact-email)
* **What:** In-app notifications, plus a batched email once per hour with all updates.

Visit [Notifications](/healthcare/create-manage-transaction-enrollments#notifications) in the transaction enrollment guide for more details.

### Event destinations [#event-destinations]

Stedi sends notifications when [event deliveries](/healthcare/event-destinations-message-handling) to an event destination repeatedly fail.

* **Who:** Every member of the Stedi account
* **What:** In-app and email notifications at the following intervals:
  * **After 2 hours:** If retry attempts for all events continue failing for 2 hours, Stedi sends an in-app notification and email. You should investigate the issue as soon as possible. Stedi will continue automatic retries.
  * **After 24 hours:** If retry attempts continue failing for 24 hours, Stedi sends another notification informing you that the retry limit is approaching.

Visit [Notifications](/healthcare/event-destinations-message-handling#notifications) in the event destinations guide for more details.

### Account activity [#account-activity]

Stedi sends notifications for the following account activity:

* You're invited to a new account.
  * **Who:** The invited user
  * **What:** In-app and email notifications
* Your account or account update is reviewed and approved.
  * **Who:** All account users
  * **What:** In-app and email notifications
* A user requests to join your account.
  * **Who:** Account admins only
  * **What:** In-app and email notifications

Visit [Account setup](/healthcare/account-settings) for details about managing account members and upgrading your account.

### Exports [#exports]

Stedi sends notifications when your claims list or Electronic Remittance Advice (ERA) list exports are ready to download.

* **Who:** The user who requested the export
* **What:** In-app notifications when the export file is ready. Export files are available for 30 days.

### Billing and payments [#billing-and-payments]

For pay-as-you-go accounts, Stedi sends notifications when automatic recharge payments fail or when your account is suspended due to insufficient funds.

* **Who:** Billing email address and account admins
* **What:** In-app and email notifications at the following points:
  * **Payment failure:** When an auto-recharge payment fails.
  * **Access suspended:** When your balance reaches $0 and account access is suspended. You'll also receive reminder emails after 16 days and 25 days of suspension about potential account closure if you don't resolve the issue.
  * **Access restored:** When your balance returns to positive and access is restored.

Visit [Billing](/healthcare/billing#failed-payments) for details about failed payments and account suspension.

## Manage notification preferences [#manage-notification-preferences]

You can control which notifications you receive from the [Notifications page](https://portal.stedi.com/app/settings/notifications) in your account settings. Check or uncheck the boxes to opt in or opt out for each notification category.

* **Default is opt-in:** All notifications are enabled by default.
* **Preferences are per user:** Your notification preferences apply across all Stedi accounts you can access. They're tied to your signed-in user, not to a specific account.
* **Independent channels:** Turning off email delivery for a notification type doesn't affect in-app delivery, and vice versa.

# Get, correlate, and interpret 277CAs and ERAs
Source: https://www.stedi.com/docs/healthcare/receive-claim-responses


After you submit a professional, dental, or institutional claim, you may receive asynchronous [277CA claim acknowledgment](/healthcare/claim-responses-overview#277ca-claim-acknowledgment) and [835 Electronic Remittance Advice (ERA)](/healthcare/claim-responses-overview#835-electronic-remittance-advice-era) responses.

If you submitted the claims through the API or UI, there are two steps to retrieve claim responses from Stedi:

1. Discover responses by polling for processed transactions or listening for event-driven webhooks.
2. Call Stedi APIs to retrieve processed responses from Stedi.

Once you have the responses, you can correlate them with the original claim and specific service lines.

<Tip>
  If you're using a [Stedi SFTP connection](/healthcare/submit-claims-sftp-connection), you don't need to poll or call Stedi APIs to retrieve responses. Instead, you can download them from the `from-stedi` directory.
</Tip>

## Generate test responses [#generate-test-responses]

You can send test claims that generate test 277CA and 835 ERA responses. This approach helps you validate your integration and ensure your claims workflow is working smoothly from end to end. Visit [Test claims workflow](/healthcare/test-claims-workflow) for instructions.

## 277CAs in API responses [#277cas-in-api-responses]

Our claim submission APIs return an initial 277CA in the `x12` property of the response body that indicates whether the claim has passed Stedi's claim edits. This 277CA is in X12 EDI format.

When the claim fails one or more edits, the 277CA contains information about each error. These are the same error codes that appear in the `errors` array.

Note that this initial 277CA only indicates whether Stedi has accepted or rejected the claim submission. You may receive additional 277CA acceptances or rejections as the claim is routed to the payer. You'll need to monitor for and retrieve those additional 277CAs through webhooks or polling.

<Accordion title="Example response with 277CA acceptance" id="example-response-with-277ca-acceptance">
  ```json
  {
    "status": "SUCCESS",
    "controlNumber": "1",
    "tradingPartnerServiceId": "6400",
    "claimReference": {
      "correlationId": "01KHC8Y4HNP0GVQ5NSVTPZBC0F",
      "patientControlNumber": "111222333",
      "timeOfResponse": "2026-02-13T19:51:51.496Z",
      "payerId": "6400",
      "formatVersion": "5010",
      "rhclaimNumber": "01KHC8Y4HNP0GVQ5NSVTPZBC0F",
      "serviceLines": [
        {
          "lineItemControlNumber": "111222333"
        }
      ]
    },
    "meta": {
      "traceId": "d61ca4bc-e9e7-4d0f-93d0-6f7ff810b0e6"
    },
    "payer": {
      "payerName": "Cigna",
      "payerId": "6400"
    },
    "x12": "ISA*00*          *00*          *ZZ*STEDITEST      *ZZ*574183004559   *260213*1951*^*00501*980180479*0*T*`~GS*HN*STEDITEST*574183004559*20260213*195151*1*X*005010X214~ST*277*0001*005010X214~BHT*0085*08*01KHC8YJE8EY6A5HFR00Z5H305*20260213*195151*TH~HL*1**20*1~NM1*AY*2*STEDI INC*****46*117151744~TRN*1*01KHC8YJE8EY6A5HFR00Z5H305~DTP*050*D8*20260213~DTP*009*D8*20260213~HL*2*1*21*1~NM1*41*2*Test Data Health Services, Inc.*****46*123456~TRN*2*01KHC8Y4HNP0GVQ5NSVTPZBC0F~STC*A0`17`AY*20260213*WQ*109.2~QTY*90*1~AMT*YU*109.2~HL*3*2*19*1~NM1*85*2*Therapy Associates*****XX*1234567890~TRN*1*0~REF*TJ*123456789~QTY*QA*1~AMT*YU*109.2~HL*4*3*PT*0~NM1*QC*1*Anon*John****MI*U7777788888~TRN*2*111222333~STC*A1`20*20260213*WQ*109.2~DTP*472*RD8*20240101-20240101~SE*25*0001~GE*1*1~IEA*1*980180479~",
    "httpStatusCode": "200 OK"
  }
  ```
</Accordion>

## Discover processed responses [#discover-processed-responses]

When submitting claims through Stedi's APIs or UI, you can discover processed responses programmatically by either listening for webhooks or polling for transactions. All claim responses are also available in the Stedi portal.

### Listen for webhooks [#listen-for-webhooks]

Instead of polling for transactions, you can set up [webhooks](/healthcare/configure-webhooks) that automatically send events for processed 277CAs and 835 ERAs to your endpoint. You can either create a single webhook for all inbound transactions or create a separate webhook for each transaction type.

These webhooks are triggered by the processing events Stedi emits after it successfully receives and processes a response from the payer or intermediary clearinghouse.

<Accordion title="Example transaction processed event" id="example-transaction-processed-event">
    <CodeBlockTabs defaultValue="processed 999">
      <CodeBlockTabsList>
        <CodeBlockTabsTrigger value="processed 999">
          processed 999
        </CodeBlockTabsTrigger>

        <CodeBlockTabsTrigger value="processed 277CA">
          processed 277CA
        </CodeBlockTabsTrigger>

        <CodeBlockTabsTrigger value="processed 835 ERA">
          processed 835 ERA
        </CodeBlockTabsTrigger>
      </CodeBlockTabsList>

      <CodeBlockTab value="processed 999">
        ```json
        {
          "event": {
            "version": "0",
            "id": "a3c7d891-2b4f-1a55-9e72-f8d3c5a9b1e6",
            "detail-type": "transaction.processed.v2",
            "source": "stedi.core",
            "account": "<ACCOUNT_ID>",
            "time": "2025-07-14T20:15:32Z",
            "region": "us-east-1",
            "resources": [
              "https://core.us.stedi.com/2023-08-01/transactions/7a2f8c9d-1e3b-4a5c-8d7f-9b6e4c2a1f8d"
            ],
            "detail": {
              "transactionId": "7a2f8c9d-1e3b-4a5c-8d7f-9b6e4c2a1f8d",
              "direction": "INBOUND",
              "mode": "test",
              "fileExecutionId": "3d8f7a5b-9c2e-4f1a-b8d6-e4c9a7f2b1d3",
              "processedAt": "2025-07-14T20:15:32.421Z",
              "fragments": null,
              "artifacts": [
                {
                  "artifactType": "application/edi-x12",
                  "usage": "input",
                  "url": "https://core.us.stedi.com/2023-08-01/transactions/7a2f8c9d-1e3b-4a5c-8d7f-9b6e4c2a1f8d/input",
                  "sizeBytes": 542,
                  "model": "transaction"
                },
                {
                  "artifactType": "application/json",
                  "usage": "output",
                  "url": "https://core.us.stedi.com/2023-08-01/transactions/7a2f8c9d-1e3b-4a5c-8d7f-9b6e4c2a1f8d/output",
                  "sizeBytes": 1823,
                  "model": "transaction"
                }
              ],
              "partnership": {
                "partnershipId": "local-clearinghouse-test",
                "partnershipType": "x12",
                "sender": {
                  "profileId": "clearinghouse-test"
                },
                "receiver": {
                  "profileId": "local"
                }
              },
              "x12": {
                "transactionSetting": {
                  "guideId": "01HMR0V8N2PHGA8M4ZG1CRHH0",
                  "transactionSettingId": "01HMR1P4N6QJHB9N5AH2DSKKJ1"
                },
                "metadata": {
                  "interchange": {
                    "acknowledgmentRequestedCode": "0",
                    "controlNumber": 123
                  },
                  "functionalGroup": {
                    "controlNumber": 456,
                    "release": "005010X231A1",
                    "date": "2025-07-14",
                    "time": "20:15:15",
                    "functionalIdentifierCode": "FA"
                  },
                  "transaction": {
                    "controlNumber": "0001",
                    "transactionSetIdentifier": "999"
                  },
                  "receiver": {
                    "applicationCode": "401576130024",
                    "isa": {
                      "qualifier": "ZZ",
                      "id": "401576130024"
                    }
                  },
                  "sender": {
                    "applicationCode": "STEDITEST",
                    "isa": {
                      "qualifier": "ZZ",
                      "id": "STEDITEST"
                    }
                  }
                }
              },
              "connectionId": "01J1M5124B2HWMNN91Q3Z6AM61"
            }
          }
        }
        ```
      </CodeBlockTab>

      <CodeBlockTab value="processed 277CA">
        ```json
        {
          "event": {
            "version": "0",
            "id": "f972fb53-653a-1747-ce30-bed15fc04f5c",
            "detail-type": "transaction.processed.v2",
            "source": "stedi.core",
            "account": "<ACCOUNT_ID>",
            "time": "2024-07-18T16:21:24Z",
            "region": "us-east-1",
            "resources": [
              "https://core.us.stedi.com/2023-08-01/transactions/f0d3f790-0bc9-432b-93kd-e4b7ece67946"
            ],
            "detail": {
              "transactionId": "f0d4f780-0ec9-432b-93gd-e4b7ece93946",
              "direction": "INBOUND",
              "mode": "test",
              "fileExecutionId": "9f76b485-6hca-43bf-917e-d5b54bec6234",
              "processedAt": "2024-07-18T16:21:24.658Z",
              "fragments": null,
              "artifacts": [
                {
                  "artifactType": "application/edi-x12",
                  "usage": "input",
                  "url": "https://core.us.stedi.com/2023-08-01/transactions/f0d9f790-0ec9-431b-93fd-e4h7ece63946/input",
                  "sizeBytes": 1313,
                  "model": "transaction"
                },
                {
                  "artifactType": "application/json",
                  "usage": "output",
                  "url": "https://core.us.stedi.com/2023-08-01/transactions/f0d3f740-0ec9-432b-98fd-e4b7ece63946/output",
                  "sizeBytes": 5602,
                  "model": "transaction"
                }
              ],
              "partnership": {
                "partnershipId": "local-clearinghouse-test",
                "partnershipType": "x12",
                "sender": {
                  "profileId": "clearinghouse-test"
                },
                "receiver": {
                  "profileId": "local"
                }
              },
              "x12": {
                "transactionSetting": {
                  "guideId": "01J1M50C1Q44KYDZY8V7R1TPBW",
                  "transactionSettingId": "01J1M50P9623BFE0FFT5Q2BR49"
                },
                "metadata": {
                  "interchange": {
                    "acknowledgmentRequestedCode": "0",
                    "controlNumber": 11
                  },
                  "functionalGroup": {
                    "controlNumber": 11,
                    "release": "005010X214",
                    "date": "2024-07-18",
                    "time": "16:20:47",
                    "functionalIdentifierCode": "HN"
                  },
                  "transaction": {
                    "controlNumber": "1001",
                    "transactionSetIdentifier": "277"
                  },
                  "receiver": {
                    "applicationCode": "001690149382",
                    "isa": {
                      "qualifier": "ZZ",
                      "id": "001690149382"
                    }
                  },
                  "sender": {
                    "applicationCode": "STEDITEST",
                    "isa": {
                      "qualifier": "ZZ",
                      "id": "STEDITEST"
                    }
                  }
                }
              },
              "connectionId": "01J1M5124B2HWMNN91Q3Z6AM61"
            }
          }
        }
        ```
      </CodeBlockTab>

      <CodeBlockTab value="processed 835 ERA">
        ```json
        {
          "event": {
            "version": "0",
            "id": "5d1bcb90-cb0b-1844-5b93-86d5e5b9c4a8",
            "detail-type": "transaction.processed.v2",
            "source": "stedi.core",
            "account": "<ACCOUNT_ID>",
            "time": "2025-07-14T20:43:39Z",
            "region": "us-east-1",
            "resources": [
              "https://core.us.stedi.com/2023-08-01/transactions/95e7786c-7066-4494-b83a-b1f300624902"
            ],
            "detail": {
              "transactionId": "95e7786c-7066-4494-b83a-b1f300624902",
              "direction": "INBOUND",
              "mode": "test",
              "fileExecutionId": "5d30f0a0-63af-4aeb-b96c-353b4b25c99a",
              "processedAt": "2025-07-14T20:43:39.808Z",
              "fragments": null,
              "artifacts": [
                {
                  "artifactType": "application/edi-x12",
                  "usage": "input",
                  "url": "https://core.us.stedi.com/2023-08-01/transactions/95e7786c-7066-4494-b83a-b1f300624902/input",
                  "sizeBytes": 2016,
                  "model": "transaction"
                },
                {
                  "artifactType": "application/json",
                  "usage": "output",
                  "url": "https://core.us.stedi.com/2023-08-01/transactions/95e7786c-7066-4494-b83a-b1f300624902/output",
                  "sizeBytes": 13864,
                  "model": "transaction"
                }
              ],
              "partnership": {
                "partnershipId": "local-clearinghouse-test",
                "partnershipType": "x12",
                "sender": {
                  "profileId": "clearinghouse-test"
                },
                "receiver": {
                  "profileId": "local"
                }
              },
              "x12": {
                "transactionSetting": {
                  "guideId": "01J8JH1SGTB2FYKN2PG4MH84RP",
                  "transactionSettingId": "01J8JH23VA3G2X8GENVVE6XZB9"
                },
                "metadata": {
                  "interchange": {
                    "acknowledgmentRequestedCode": "0",
                    "controlNumber": 1
                  },
                  "functionalGroup": {
                    "controlNumber": 1,
                    "release": "005010X221A1",
                    "date": "2025-07-14",
                    "time": "20:43:21",
                    "functionalIdentifierCode": "HP"
                  },
                  "transaction": {
                    "controlNumber": "0001",
                    "transactionSetIdentifier": "835"
                  },
                  "receiver": {
                    "applicationCode": "599264680681",
                    "isa": {
                      "qualifier": "ZZ",
                      "id": "599264680681"
                    }
                  },
                  "sender": {
                    "applicationCode": "STEDITEST",
                    "isa": {
                      "qualifier": "ZZ",
                      "id": "STEDITEST"
                    }
                  }
                }
              },
              "connectionId": "01JE9257XJ4G4YFMXCHJPFR434"
            }
          }
        }
        ```
      </CodeBlockTab>
    </CodeBlockTabs>
</Accordion>

As these events are emitted, you can:

* Determine the transaction type from the `x12.transactionSetIdentifier` property: `277` (277CA) or `835` (ERA).
* Use either the `transactionId` to retrieve the transaction in JSON format or the `fileExecutionId` to retrieve the transaction in X12 EDI format. Visit [Retrieve responses from Stedi](#retrieve-responses-from-stedi) for more information.

<Warning>
  If your webhook doesn't respond within 5 seconds, Stedi marks that as a
  failure and then automatically retries up to 5 times. This can result in
  duplicate deliveries, so we strongly recommend implementing ways to manage
  duplicates delivered through webhooks.
</Warning>

### Poll for transactions [#poll-for-transactions]

Call the [Poll Transactions](/healthcare/api-reference/get-poll-transactions) endpoint to return a list of transactions in your Stedi account.

<Tip>
  We recommend starting your polling window at least one day before your last known processed transaction. You'll need to filter out duplicates, but this approach ensures you don't miss transactions due to boundary cases or late arrivals. Visit [Overlap your polling window](/healthcare/api-reference/get-poll-transactions#overlap-your-polling-window) for details.
</Tip>

You must include the following information in the request:

* Your Stedi API key as the `Authorization` header.
* Either the `startDateTime` or `pageToken` query parameters. To retrieve a list of transactions after a specific date, use `startDateTime`. To retrieve the next page of transactions, use `pageToken` (you can find this value in the `nextPageToken` field in the response).

The following example shows an API call to retrieve transactions after a specific date:

```bash
  curl --request GET -L \
    --url https://core.us.stedi.com/2023-08-01/polling/transactions?startDateTime=2023-08-28T00:00:00Z \
    --header "Authorization: ${STEDI_API_KEY}"
```

**Filter for 277CA and 835 ERA transactions**

The response includes all transactions that have been sent or received, including all 837 claims you have submitted and all 277CA and 835 ERA responses you have received from payers. You must filter for transactions that match the following criteria:

* `direction`: `INBOUND` - This indicates that the transaction came from the payer or intermediary clearinghouse.
* `x12.transactionSetIdentifier`: `277` or `835`

The following example shows a response containing a processed 277CA transaction:

<Accordion title="Sample Poll Transactions response" id="sample-poll-transactions-response">
  ```json
  {
    "items": [
      {
        "direction": "INBOUND",
        "mode": "production",
        "fileExecutionId": "f75168e4-e682-4410-bfec-b5b1541c7f21",
        "transactionId": "a15b68ca-fae0-42de-b8a3-f436668b8604",
        "processedAt": "2023-08-28T09:00:28.354Z",
        "artifacts": [
          {
            "artifactType": "application/edi-x12",
            "sizeBytes": 490,
            "usage": "input",
            "url": "https://core.us.stedi.com/2023-08-01/transactions/a15b68ca-fae0-42de-b8a3-f436668b8604/input"
          },
          {
            "artifactType": "application/json",
            "sizeBytes": 51,
            "usage": "output",
            "url": "https://core.us.stedi.com/2023-08-01/transactions/a15b68ca-fae0-42de-b8a3-f436668b8604/output"
          }
        ],
        "partnership": {
          "partnershipId": "customer_availity",
          "partnershipType": "x12",
          "sender": {
            "profileId": "availity_sender"
          },
          "receiver": {
            "profileId": "availity_receiver"
          }
        },
        "x12": {
          "metadata": {
            "interchange": {
              "acknowledgmentRequestedCode": "0",
              "controlNumber": 2
            },
            "functionalGroup": {
              "controlNumber": 2,
              "release": "008010",
              "date": "2023-08-28",
              "time": "09:00:20",
              "functionalIdentifierCode": "HN"
            },
            "transaction": {
              "controlNumber": "1",
              "transactionSetIdentifier": "277"
            },
            "receiver": {
              "applicationCode": "AV01101957",
              "isa": {
                "qualifier": "ZZ",
                "id": "AV01101957"
              }
            },
            "sender": {
              "applicationCode": "030240928",
              "isa": {
                "qualifier": "01",
                "id": "030240928"
              }
            }
          },
          "transactionSetting": {
            "guideId": "01H8PSWG4ZD6QPKC9VSD42PQX3",
            "transactionSettingId": "01H8PSWG4ZD6QPKC9VSD42PQX3"
          }
        }
      }
    ],
    "nextPageToken": "945ff6de213d3ef481d028065d4c12fb996a166a3a90ef98564318decfae50ce4b36d74b7e9d9bafa6e1d169"
  }
  ```
</Accordion>

For each matching transaction, extract the `x12.transactionSetIdentifier` type and either the `transactionId` or the `fileExecutionId` to use when mapping the data. You'll use the `transactionId` to retrieve the transaction in JSON format or the `fileExecutionId` to retrieve the transaction in X12 EDI format. Visit [Retrieve responses from Stedi](#retrieve-responses-from-stedi) for more information.

<Warning>
  Stedi does not allow you to delete transactions, so make sure you track which
  transaction and/or file execution IDs you've already processed.
</Warning>

### Stedi portal [#stedi-portal]

You can review 277CAs and 835 ERAs from the [claims view](https://portal.stedi.com/app/healthcare/claims).

#### 277CAs [#277cas]

Click **All claims** at the top of the page to view all claims in your account.

1. Click a claim to view a timeline of its processing activity.
2. Click an **Acknowledgment** (277CA) to review its details page.

Stedi displays key information about the 277CA, including the billing provider's information and status codes.

#### 835 ERAs [#835-eras]

Click **835 ERAs** at the top of the page to review all ERAs in your account.

1. Filter by processed date, trace number, total paid, payment date, payment method, payer, payee (billing provider), payee NPI, payee Tax ID, or PCN (Patient Control Number).
2. Click an ERA to review its details.

You can also find ERAs for a specific claim from the claim's timeline:

1. Click **All claims** at the top of the page.
2. Click a claim to view its timeline.
3. Click **Find matching ERAs** in the side panel under the **PCN** to search for ERAs that match the claim's Patient Control Number (PCN). If no ERAs match, the ERA list will be empty.
4. Click an ERA to review its details.

## Retrieve responses from Stedi [#retrieve-responses-from-stedi]

You can retrieve the 277CA and 835 ERA responses from Stedi in either JSON format or X12 EDI format.

### JSON format [#json-format]

Follow these steps to retrieve responses in JSON format:

1. Either [set up webhooks](/healthcare/receive-claim-responses#listen-for-webhooks) to listen for transaction processed events or [poll for transactions](/healthcare/receive-claim-responses#poll-for-transactions). This step allows you to discover when a new 277CA or 835 ERA is ready for retrieval.
2. Retrieve the transaction ID from the configured webhook or the Poll Transactions response. This value is in the `transactionId` property.
3. Call the following endpoints to retrieve 277CA and 835 ERA responses from Stedi. In each request, you must include your Stedi API key in the `Authorization` header and the `transactionId` query parameter containing the ID of the transaction you want to retrieve.
   * [Get 277CA Report](/healthcare/api-reference/get-healthcare-reports-277): Retrieve 277CA responses
   * [Get 835 ERA Report](/healthcare/api-reference/get-healthcare-reports-835): Retrieve 835 ERA responses

### X12 EDI format [#x12-edi-format]

Follow these steps to retrieve the responses in X12 EDI format:

1. Either [set up webhooks](/healthcare/receive-claim-responses#listen-for-webhooks) to listen for transaction processed events or [poll for transactions](/healthcare/receive-claim-responses#poll-for-transactions). This step allows you to discover when a new 277CA or 835 ERA is ready for retrieval.
2. Retrieve the file execution ID from the configured webhook or the Poll Transactions response. This value is in the `fileExecutionId` property.
3. Call the [Retrieve File Execution Input](/healthcare/api-reference/get-execution-input) endpoint to retrieve the 277CA or 835 ERA in X12 EDI format. In the request, you must include your Stedi API key in the `Authorization` header and the `executionId` query parameter containing the file execution ID for the response you want to retrieve. You can find this value on the file's details page in the Stedi portal.

### 835 ERA PDF [#835-era-pdf]

Stedi autogenerates a PDF version of each processed 835 ERA.

To retrieve the PDF programmatically, call the [835 ERA PDF](/healthcare/api-reference/get-era-pdf) endpoint.

<Accordion title="Example API request" id="example-api-request">
  ```bash
  curl --request GET \
    --url "https://healthcare.us.stedi.com/2024-04-01/electronic-remittance-advice/{transactionId}/pdf" \
    --header "Authorization: Key <YOUR-API-KEY>" \
    --header "Accept: application/pdf"
  ```

  Replace `{transactionId}` with the 835 ERA's transaction ID. This ID is included in the transaction processed event for the ERA, which you can receive automatically through Stedi [webhooks](/healthcare/configure-webhooks). You can also retrieve this ID through the [Poll Transactions](/healthcare/api-reference/get-poll-transactions) endpoint.

  By default, the endpoint returns the PDF as a base64-encoded string. To receive the unencoded PDF data, include the `Accept: application/pdf` request header as shown in the example.
</Accordion>

To download the PDF from the Stedi portal:

1. Go to the [claims view](https://portal.stedi.com/app/healthcare/claims) and click **835 ERAs**.
2. Click the ERA to open its details page.
3. Click **Download PDF** at the top right.
4. In the download menu, select your preferences:
   * **Include Stedi logo in 835 ERA PDF**: Adds the Stedi logo to the PDF.
   * **Download each claim as a separate PDF**: Downloads one PDF for each claim included in the ERA. When the ERA contains multiple claims, the PDFs will be provided as a zip file. For example, if the ERA contains 5 claims, you'll download a zip file containing 5 separate PDFs.
5. Click **Confirm PDF download**.

You can also download a PDF for each claim individually. Click the three dots to the right of a claim in the **Claims** section and select **Download 835 ERA PDF for this claim**.

#### Format [#format]

The PDF contains a human-readable version of the ERA, including payment details, adjustments, and explanations for each service line. It resembles the Standard Paper Remittance (SPR) format that the Centers for Medicare and Medicaid Services (CMS) uses for ERA PDFs, regardless of which payer sent the ERA.

This is a PDF representation of the 835 ERA - it's not the same as an Explanation of Benefits (EOB) that you may receive from the payer.

* **EOB:** A statement from a payer explaining how a medical claim was processed, including what was covered, denied, and the remaining patient responsibility. The patient receives an EOB after a claim has been adjudicated.
* **EOP:** A version of the EOB for the provider. It contains more information related to how the payer has adjudicated the claim. The provider receives the EOP after claim adjudication and payment are sent.
* **ERA:** An electronic file that details payment and claim adjustment information. The provider receives the ERA after the payer has adjudicated the claim and issued payment, typically at the same time the funds are deposited electronically.

### Delimiter normalization [#delimiter-normalization]

Stedi reserves certain characters for delimiters in X12 EDI transactions. When these delimiter characters appear within data values - meaning they're used as content and not as actual delimiters, such as within a subscriber's name - Stedi replaces them to prevent parsing issues. Stedi normalizes delimiters within transaction data as follows:

| Character found in data | Replacement | Stedi's reserved delimiter type it conflicts with |
| ----------------------- | ----------- | ------------------------------------------------- |
| `*`                     | `\|`        | Element separator                                 |
| `^`                     | `\|`        | Repetition separator                              |
| `` ` ``                 | `'`         | Component element separator                       |
| `~`                     | `\|`        | Segment terminator                                |

**Examples:**

* `O*CONNOR` becomes `O|CONNOR`
* `CODE^01` becomes `CODE|01`
* ``O`CONNOR`` becomes `O'CONNOR`
* `MSG~HELLO` becomes `MSG|HELLO`

If you parse raw X12 EDI responses, ensure your parser reads delimiters from the `ISA` segment instead of assuming fixed delimiters.

## Determine 277CA sender [#determine-277ca-sender]

To determine whether a 277CA is from a clearinghouse or the payer:

* **JSON:** Check the [`transactions[].payers` array](https://www.stedi.com/docs/healthcare/api-reference/get-healthcare-reports-277#response.transactions.payers) in the report (`Loop 2100A`). The `organizationName` property contains the name of the sender (for example, CIGNA or STEDI).
* **X12 EDI:** Check `Loop 2100A NM103` (Information Source Name).

You can also find this information in the Stedi portal:

1. Go to the [claims view](https://portal.stedi.com/app/healthcare/claims).
2. Find the associated claim and click it to view the claim timeline.
3. Find the 277CA in the timeline view. The **From** field indicates whether the acknowledgment is from Stedi or the payer.

<img alt="277CA claim timeline" src="__img0" />

## Correlate 277CA [#correlate-277ca]

Use the following identifiers to correlate the 277CA with the original claim.

### Entire Claim [#entire-claim]

#### Option 1: Patient Control Number [#option-1-patient-control-number]

Use the Patient Control Number from the original claim, if you provided one in the claim submission.

**Original claim:**

* **X12:** `Loop 2300 CLM01` (Patient Control Number)

  <Note>
    **Providers:** Don't use `Loop 2300 REF02` when `REF01` = `D9` (Claim Identifier for Transmission Intermediaries). This segment is reserved for clearinghouses and intermediaries.
  </Note>

* **JSON:** `claimInformation.patientControlNumber`

**In 277CA:**

* **X12:** `Loop 2200D TRN02` (Patient Control Number)
* **JSON:** `transactions[].payers[].claimStatusTransactions[].claimStatusDetails[].patientClaimStatusDetails.claims[]` - either `claimStatus.patientAccountNumber` or `referencedTransactionTraceNumber`

We recommend using the `referencedTransactionTraceNumber`. When matching:

* Treat the patient control number as case-insensitive, even if the submitted value included both lower and uppercase characters.
* Some payers truncate patient control numbers greater than 30 characters in 277CAs. If you're not getting a match, try matching against the first 30 characters of the value you submitted.
* Some payers batch acknowledgments for multiple claims into a single 277CA. In these cases, the 277CA will contain multiple `patientClaimStatusDetails` objects (or multiple iterations of `Loop 2200D` in X12 EDI), each with its own `referencedTransactionTraceNumber` (`TRN02`).

#### Option 2: Stedi's Correlation ID [#option-2-stedis-correlation-id]

If you didn't supply a patient control number, you can use the tracking number Stedi assigns to the claim when it's submitted.

**In the API response:**

For both the JSON and raw X12 API endpoints: `claimReference.correlationId`

**In 277CA:**

* **X12:** `Loop 2200B TRN02` (Claim Transaction Batch Number)
* **JSON:** `transactions[].payers[].claimStatusTransactions[].claimTransactionBatchNumber`

### Service line [#service-line]

Different claim types use different names for the same identifier.

**Original claim:**

* **X12:** `Loop 2400 REF02` (Line Item Control Number)
* **JSON professional and dental claims:** `claimInformation.serviceLines.providerControlNumber`
* **JSON institutional claims:** `claimInformation.serviceLines.lineItemControlNumber`

**In 277CA:**

* **X12:** `Loop 2220D REF02` (Line Item Control Number)
* **JSON:** `transactions[].payers[].claimStatusTransactions[].claimStatusDetails[].patientClaimStatusDetails.claims[].serviceLines[].lineItemControlNumber`

This identifier is **sometimes** returned in the 277CA. It's not always present because a 277CA only contains service line information (`serviceLines` object or `Loop 2220D` in X12 EDI) when the claim was rejected because of issues with the information provided for the service line. If the `lineItemControlNumber` isn't present, you can only correlate the 277CA at the claim level.

The following example shows:

* A `serviceLines` object with `lineItemControlNumber`
* The `REF` segment in `Loop 2220D` containing the line item control number in `REFO2`

Both indicate that the claim was rejected.

<Tabs items="[&#x22;JSON&#x22;, &#x22;X12 EDI&#x22;]">
  <Tab value="JSON">
    {/* schema:ClaimAcknowledgmentServiceLines:unwrapArray */}

    ```json
    "serviceLines": [
      {
        "beginServiceLineDate": "20250101",
        "lineItemControlNumber": "ABCD1234",
        "service": {
          "chargeAmount": "379.39",
          "procedureCode": "97153",
          "serviceIdQualifierCode": "HC",
          "serviceIdQualifierCodeValue": "Health Care Financing Administration Common Procedural Coding System (HCPCS) Codes",
          "submittedUnits": "11"
        },
        "serviceClaimStatuses": [
          {
            "serviceStatuses": [
              {
                "entityIdentifierCode": "IL",
                "entityIdentifierCodeValue": "Insured or Subscriber",
                "healthCareClaimStatusCategoryCode": "A3",
                "healthCareClaimStatusCategoryCodeValue": "Acknowledgement/Returned as unprocessable claim - The claim/encounter has been rejected and has not been entered into the adjudication system.",
                "statusCode": "164",
                "statusCodeValue": "Entity's contract/member number."
              }
            ]
          }
        ]
      }
    ]
    ```
  </Tab>

  <Tab value="X12 EDI">
    ```
    SVC*HC:97153*379.39*****11~ // procedure code, charge amount, units
    STC*A3:164:QD**U~           // status codes
    REF*FJ*ABCD1234~            // line item control number
    DTP*472*D8*20250101~        // date of service
    ```
  </Tab>
</Tabs>

## Interpret 277CA claim status [#interpret-277ca-claim-status]

The 277CA response helps you understand whether a claim was accepted or rejected. These statuses don't indicate whether the claim was or will be approved or denied, only whether it was accepted or rejected for processing.

### Status overview [#status-overview]

For a high-level overview of the claim's acceptance/rejection status, examine the following location:

* **X12:** `Loop 2200C` (Provider of Service Information)
* **JSON:** [`transactions[].payers[].claimStatusTransactions[].claimStatusDetails[].serviceProviderClaimStatuses`](/healthcare/api-reference/get-healthcare-reports-277#response.transactions.payers.claimStatusTransactions.claimStatusDetails.serviceProviderClaimStatuses)

This typically only includes basic status information like "accepted for processing" or "denied". It's helpful for quickly determining the overall status of the claim. The following example shows

* A `providerClaimStatuses` object
* `STC` (Billing Provider Status Information) from `Loop 2200C` (Provider or Service Information).

Both indicate that the claim was accepted for processing.

<Tabs items="[&#x22;JSON&#x22;, &#x22;X12 EDI&#x22;]">
  <Tab value="JSON">
    ```json
    "providerClaimStatuses": [
      {
        "providerStatuses": [
          {
            "healthCareClaimStatusCategoryCode": "A1",
            "healthCareClaimStatusCategoryCodeValue": "Acknowledgement/Receipt - The claim/encounter has been received. This does not mean that the claim has been accepted for adjudication.",
            "statusCode": "20",
            "statusCodeValue": "Accepted for processing."
          }
        ],
        "statusInformationEffectiveDate": "20240702"
      }
    ]
    ```
  </Tab>

  <Tab value="X12 EDI">
    ```
    STC*A1:20:36**WQ*11~ // code 20 means "Accepted for processing"
    ```
  </Tab>
</Tabs>

### Status details [#status-details]

For more detailed acceptance and rejection information for the entire claim, examine the following location:

* **X12:** `Loop 2200D` (Claim Status Tracking Number)
* **JSON:** [`transactions[].payers[].claimStatusTransactions[].claimStatusDetails[].patientClaimStatusDetails[].claims[].claimStatus`](/healthcare/api-reference/get-healthcare-reports-277#response.transactions.payers.claimStatusTransactions.claimStatusDetails.patientClaimStatusDetails.claims.claimStatus)

This contains more detailed information about acceptance or rejection, including:

* Payer-specific rejection reasons
* Claim charge amount details
* The `patientControlNumber` from the claim (returned as `patientAccountNumber` in JSON or `TRN02` in X12)

The following example shows:

* A `claimStatus` object (JSON)
* The `TRN` (Claim Status Tracing Number) and `STC` (Claim Level Status Information) segments from `Loop 2200D` (Claim Status Tracking Number)

Both indicate that the claim was rejected as unprocessable due to missing or invalid information.

<Tabs items="[&#x22;JSON&#x22;, &#x22;X12 EDI&#x22;]">
  <Tab value="JSON">
    ```json
    "claimStatus": {
      "claimServiceBeginDate": "20250101",
      "claimServiceEndDate": "20250109",
      "clearinghouseTraceNumber": "NA",
      "informationClaimStatuses": [
        {
          "informationStatuses": [
            {
              "healthCareClaimStatusCategoryCode": "A3",
              "healthCareClaimStatusCategoryCodeValue": "Acknowledgement/Returned as unprocessable claim - The claim/encounter has been rejected and has not been entered into the adjudication system.",
              "statusCode": "21",
              "statusCodeValue": "Missing or invalid information."
            }
          ],
          "statusInformationEffectiveDate": "20250201",
          "totalClaimChargeAmount": "3459.3"
        }
      ],
      "patientAccountNumber": "AAA11111",
      "referencedTransactionTraceNumber": "AAA11111"
    }
    ```
  </Tab>

  <Tab value="X12 EDI">
    ```
    TRN*2*AAA11111~                 // patient control number
    STC*A3:21:1P*20250201*U*3459.3~ // status codes
    ```
  </Tab>
</Tabs>

Not all payers send detailed accepted and rejection data for individual service lines. When available, this information will be in the following location:

* **X12:** `Loop 2220D` (Service Line Information)
* **JSON:** [`transactions[].payers[].claimStatusTransactions[].claimStatusDetails[].patientClaimStatusDetails[].claims[].serviceLines[].serviceClaimStatuses`](/healthcare/api-reference/get-healthcare-reports-277#response.transactions.payers.claimStatusTransactions.claimStatusDetails.patientClaimStatusDetails.claims.serviceLines.serviceClaimStatuses)

This can help you better identify the errors that caused the rejection.

The following example shows:

* A `serviceClaimStatuses` object
* `STC` (Service Line Level Status Information) from `Loop 2220D` (Service Line Information)

Both indicate that the service line was rejected as unprocessable and highlights the subscriber's member ID. Combined with the previous example, this indicates that the claim was rejected due to a missing or invalid member ID.

<Tabs items="[&#x22;JSON&#x22;, &#x22;X12 EDI&#x22;]">
  <Tab value="JSON">
    ```json
    "serviceClaimStatuses": [
      {
        "serviceStatuses": [
          {
            "entityIdentifierCode": "IL",
            "entityIdentifierCodeValue": "Insured or Subscriber",
            "healthCareClaimStatusCategoryCode": "A3",
            "healthCareClaimStatusCategoryCodeValue": "Acknowledgement/Returned as unprocessable claim - The claim/encounter has been rejected and has not been entered into the adjudication system.",
            "statusCode": "164",
            "statusCodeValue": "Entity's contract/member number."
          }
        ]
      }
    ]
    ```
  </Tab>

  <Tab value="X12 EDI">
    ```
    STC*A3:164:IL**U~ // Code U is reject
    ```
  </Tab>
</Tabs>

## Correlate 835 ERA [#correlate-835-era]

Use the following identifiers to correlate the 835 ERA with the original claim.

<Tip>
  Sometimes, payers send [duplicate ERAs](#duplicate-eras) for the same claim.
  You should have logic in place to identify and manage these duplicates.
</Tip>

### Entire claim [#entire-claim-1]

Use the Patient Control Number from the original claim.

**Original claim:**

* **X12:** `Loop 2300 CLM01` (Patient Control Number)
* **JSON:** `claimInformation.patientControlNumber`

**In 835 ERA:**

* **X12:** `Loop 2100 CLP01` (Patient Control Number)
* **JSON:** `transactions[].detailInfo[].paymentInfo[].claimPaymentInfo.patientControlNumber`

When matching transactions, treat the patient control number as case-insensitive, even if the submitted value included both lower and uppercase characters.

### Service line [#service-line-1]

Different claim types use different names for the same identifier.

**Original claim:**

* **X12:** `Loop 2400 REF02` (Line Item Control Number)
* **JSON professional and dental claims:** `claimInformation.serviceLines[].providerControlNumber`
* **JSON institutional claims:** `claimInformation.serviceLines[].lineItemControlNumber`

**In 835 ERA:**

* **X12:** `Loop 2110 REF02` (Line Item Control Number)
* **JSON:** `transactions[].detailInfo[].paymentInfo[].serviceLines[].lineItemControlNumber`

<Accordion title="Example service line from 835 ERA" id="example-service-line-from-835-era">
  <Tabs items="[&#x22;JSON&#x22;, &#x22;X12 EDI&#x22;]">
    <Tab value="JSON">
      {/* schema:ClaimPaymentAdviceServiceLines:unwrapArray */}

      ```json
      "serviceLines": [
        {
          "lineItemControlNumber": "111222333",
          "serviceAdjustments": [
            {
              "adjustmentAmount1": "300",
              "adjustmentReasonCode1": "1",
              "claimAdjustmentGroupCode": "PR",
              "claimAdjustmentGroupCodeValue": "Patient Responsibility"
            }
          ],
          "serviceDate": "20190301",
          "servicePaymentInformation": {
            "adjudicatedProcedureCode": "99211",
            "lineItemChargeAmount": "800",
            "lineItemProviderPaymentAmount": "500",
            "productOrServiceIDQualifier": "HC",
            "productOrServiceIDQualifierValue": "Health Care Financing Administration Common Procedural Coding System (HCPCS) Codes"
          },
          "serviceSupplementalAmounts": {
            "allowedActual": "800"
          }
        }
      ]
      ```
    </Tab>

    <Tab value="X12 EDI">
      ```
      SVC*HC>99211*800*500~ // procedure code and payment info
      DTM*472*20190301~     // service date
      CAS*PR*1*300~         // adjustment 
      REF*6R*111222333~     // line item control number
      AMT*B6*800~           // actual allowed amount
      ```
    </Tab>
  </Tabs>
</Accordion>

### Duplicate ERAs [#duplicate-eras]

Payers typically only send one ERA per claim. However, they may occasionally retransmit another identical 835 ERA, so you should have logic in place to handle these duplicates.

You can assume an ERA is a duplicate if the Check or EFT Trace Number is the same:

* **X12:** `TRN02` (Check or EFT Trace Number) in the `TRN` (Reassociation Trace Number) segment
* **JSON:** `transactions[].paymentAndRemitReassociationDetails.checkOrEFTTraceNumber`

## Crossover claims [#crossover-claims]

A claim is called a crossover claim when it is adjudicated by one payer and then forwarded to another payer for additional processing. This is common in coordination of benefits (COB) situations, where a patient has multiple insurance policies. For example, a patient may have coverage through both Medicare and private supplemental insurance. Once Medicare adjudicates the claim, it "crosses over" electronically to the secondary payer. This process helps reduce paperwork for providers and ensures the patient is billed correctly for any remaining balance.

You'll know a claim has been sent to a crossover payer when you receive an 835 ERA with the Claim Status Code set to either `19`, `20`, or `21`:

* **X12:** `Loop 2100 CLP02` (Claim Status Code)
* **JSON:** [`transactions[].detailInfo[].paymentInfo[].claimPaymentInfo.claimStatusCode`](/healthcare/api-reference/get-healthcare-reports-835#response.transactions.detailInfo.paymentInfo.claimPaymentInfo.claimStatusCode)

The ERA should also include information about the crossover payer:

* **X12:** `Loop 2100` (Crossover Carrier Name)
* **JSON:** [`transactions[].detailInfo[].paymentInfo[].crossoverCarrier`](/healthcare/api-reference/get-healthcare-reports-835#response.transactions.detailInfo.paymentInfo.crossoverCarrier)

Sometimes, the different payers are separate legal entities within the same parent corporation. If not, you'll need to [enroll](/healthcare/transaction-enrollment) the provider separately with the crossover payer before they can process the claim. The payer may pause claim processing until the enrollment is complete or reject the claim. If the claim is rejected, you'll need to manually resubmit it once the enrollment is live. [Stedi support](https://www.stedi.com/contact) can help you determine when you need to enroll with a crossover payer and determine the status of crossover claims while the enrollment is in progress.

You may receive an additional 835 ERA and/or 277CAs from the crossover payer. You may also be able to use the information from any 277CAs to submit real-time claim status requests for the crossover claim.

# Resubmit or cancel claims
Source: https://www.stedi.com/docs/healthcare/resubmit-cancel-claims


You'll need to resubmit claims when they're rejected due to correctable errors, such as:

* Invalid or missing data.
* Incorrect patient or provider details.
* Incorrect billing codes or modifiers.
* Missing documentation or attachments the payer requires.

You may also need to cancel duplicate claims or claims that were submitted in error, such as accidentally billing for the wrong provider or patient.

## Pre-adjudication vs. adjudication [#pre-adjudication-vs-adjudication]

When resubmitting claims, you need to know whether your claim is pre-adjudication or in adjudication.

| Stage            | Definition                                                                                                                                                                                                                                           | How you'll know                                                                                                                                                                                                                                                                                                                                                                                      |
| ---------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Pre-adjudication | The claim hasn't entered the payer's adjudication system. This includes claims the payer has received and then rejected based on front-end edits.                                                                                                    | <ul><li>You received a 277CA claim acknowledgment from Stedi or the payer. Payer rejections may include a message, such as "returned as unprocessable" or "not entered into processing system."</li><li>The payer's 277CA doesn't contain a [Payer Claim Control Number (PCCN)](#payer-claim-control-number-pccn).</li></ul>                                                                         |
| Adjudication     | The claim has entered the payer's adjudication system. This includes claims that were rejected during adjudication, claims still in progress (for example, in **Pending** status), and claims that completed adjudication (resulting in an 835 ERA). | <ul><li>The payer's 277CA contains a [Payer Claim Control Number (PCCN)](#payer-claim-control-number-pccn), indicating it has entered the payer's system. OR</li><li>You ran a real-time claim status check that included a PCCN in the response. OR</li><li>You received an 835 Electronic Remittance Advice (ERA) from the payer with adjudication details. All 835 ERAs include a PCCN.</li></ul> |

The following diagram illustrates the claim submission lifecycle and the responses you can expect to receive at each stage.

<img alt="Claim response lifecycle" src="__img0" />

## Preparing claim resubmissions or cancellations [#preparing-claim-resubmissions-or-cancellations]

Stedi's guidance for resubmissions varies depending on three factors:

* **Whether the claim has entered the payer's adjudication system** - Visit [Pre-adjudication vs. adjudication](#pre-adjudication-vs-adjudication) to determine where your claim is in the lifecycle.
* **Whether you're resubmitting to Medicare** - Medicare Part A and Part B (processed through MACs) have different requirements than other payers. Visit [Medicare resubmission](#medicare-resubmission) for details.
* **Claim type** - Institutional claims have different requirements than professional or dental claims. Visit [Institutional claims](#institutional-claims) for details.

These factors determine which codes and identifiers to include in the resubmission:

* The proper [Claim Frequency Code (CFC)](#claim-frequency-code-cfc) - indicates the type of submission
* The [Payer Claim Control Number (PCCN)](#payer-claim-control-number-pccn), if appropriate - the payer's unique identifier for your claim
* The appropriate [Patient Control Number (PCN)](#patient-control-number-pcn) - your unique identifier for the claim

You'll also need to include any necessary corrections to the claim data.

### Claim Frequency Code (CFC) [#claim-frequency-code-cfc]

The Claim Frequency Code (CFC) indicates the type of claim submission. It's what tells the payer the claim is an original, a replacement, or a cancellation.

| Scenario                      | CFC Guidance                                                                                                                                                                                                                    |
| ----------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Pre-adjudication (all payers) | <ul><li>**Professional/Dental:** `1` (Admit thru Discharge Claim)</li><li>**Institutional:** CFC from original submission</li></ul>                                                                                             |
| Adjudication, non-Medicare    | <ul><li>**All claim types:** `7` (Replacement of Prior Claim) or `8` (Void/Cancel of Prior Claim)</li><li>Resubmission requirements can vary by payer. Always confirm this guidance with the payer's companion guide.</li></ul> |
| Adjudication, Medicare        | <ul><li>**Professional/Dental:** `1` (Admit thru Discharge Claim)</li><li>**Institutional:** CFC from original submission</li></ul>                                                                                             |

#### Set the CFC [#set-the-cfc]

You can set the Claim Frequency Code (CFC) in the following locations:

* **JSON:** `claimInformation.claimFrequencyCode` property
* **X12 EDI:** `Loop 2300 CLM05-03` (Claim Frequency Code) component
* **CMS-1500 claim form UI:** Set the **Qualifier** in **Box 22** (Resubmission code)

#### Institutional claims [#institutional-claims]

Institutional claims support a broader set of Claim Frequency Code (CFC) values than professional or dental claims.

For example, in long term care settings, facilities commonly submit interim claims every 30 days to receive partial payments while the patient is still admitted, rather than waiting until the end of the patient's stay. The CFC codes for these interim claims are `2` (Interim - First Claim), `3` (Interim - Continuing Claims), or `4` (Interim - Last Claim).

Therefore, the guidance for institutional claim CFCs is different from professional and dental claims. Specifically, for claims in pre-adjudication or Medicare claims in adjudication, you should resubmit with the same CFC you used in the original submission.

### Payer Claim Control Number (PCCN) [#payer-claim-control-number-pccn]

The Payer Claim Control Number (PCCN) is the unique identifier the payer assigns when your claim enters their adjudication system. It's different from the [Patient Control Number](#patient-control-number-pcn) you sent in the original claim and the Stedi-generated `controlNumber` returned in the API response.

| Scenario                      | PCCN Guidance                                                                                                                                                                       |
| ----------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Pre-adjudication (all payers) | Don't include a PCCN. The claim hasn't entered the payer's adjudication system yet, so no PCCN exists.                                                                              |
| Adjudication, non-Medicare    | Include the PCCN the payer returned in [one or more responses](#find-existing-pccn) to the original claim. Without the PCCN, the payer won't know which claim to replace or cancel. |
| Adjudication, Medicare        | Don't include the PCCN. Medicare explicitly instructs providers to omit it when resubmitting claims. Visit [Medicare resubmission](#medicare-resubmission) for details.             |

#### Set the PCCN [#set-the-pccn]

You can supply the Payer Claim Control Number (PCCN) in the following locations:

* **JSON:** `claimInformation.claimSupplementalInformation.claimControlNumber`
* **X12 EDI:** `Loop 2300 REF02`, where `REF01` = `F8` (Original Reference Number)
* **CMS-1500 claim form UI:** Set the **Original reference number** in **Box 22** (Resubmission code)

#### Find existing PCCN [#find-existing-pccn]

You can retrieve the Payer Claim Control Number (PCCN) from the following transactions.

**277CA claim acknowledgment from the payer**

* **JSON:** [`transactions[].payers[].claimStatusTransactions[].claimStatusDetails[].patientClaimStatusDetails[].claims[].claimStatus.tradingPartnerClaimNumber`](https://www.stedi.com/docs/healthcare/api-reference/get-healthcare-reports-277#response.transactions.payers\[].claimStatusTransactions\[].claimStatusDetails\[].patientClaimStatusDetails\[].claims\[].claimStatus.tradingPartnerClaimNumber)
* **X12 EDI:** `Loop 2200D REF02`, where `REF01` = `1K` (Payor's Claim Number)
* **Stedi portal:** Go to the [claims view](https://portal.stedi.com/app/healthcare/claims), click the claim to open its timeline, and click **See more detail** on the 277CA. The PCCN is listed under **Payer claim control number** if available.

**277 real-time claim status response**

* **JSON:** [`claims[].claimStatus.tradingPartnerClaimNumber`](https://www.stedi.com/docs/healthcare/api-reference/post-healthcare-claim-status#response.claims.claimStatus.tradingPartnerClaimNumber)
* **X12 EDI:** `Loop 2200D` or `Loop 2200E` in `REF02`, where `REF01` = `1K` (Payor's Claim Number)

**835 Electronic Remittance Advice (ERA)**

* **JSON:** [`transactions[].detailInfo[].paymentInfo[].claimPaymentInfo.payerClaimControlNumber`](https://www.stedi.com/docs/healthcare/api-reference/get-healthcare-reports-835#response.transactions.detailInfo\[].paymentInfo\[].claimPaymentInfo.payerClaimControlNumber)
* **X12 EDI:** `Loop 2100 CLP07` (Payer Claim Control Number)
* **Stedi portal:** Go to the [claims view](https://portal.stedi.com/app/healthcare/claims), click **835 ERAs**, and click the ERA to open it. On the **Overview** tab, the PCCN is in the **Claims** section in the **Payer Claim Control Number** column for each claim.

### Patient Control Number (PCN) [#patient-control-number-pcn]

The Patient Control Number (PCN) is a unique identifier you assign to the claim. The payer returns this value in related transactions, such as the 277CA claim acknowledgment and 835 Electronic Remittance Advice (ERA), so you can correlate responses with the original claim.

| Scenario                      | PCN Guidance                    |
| ----------------------------- | ------------------------------- |
| Pre-adjudication (all payers) | Same PCN as original submission |
| Adjudication, Medicare        | Same PCN as original submission |
| Adjudication, non-Medicare    | New, unique PCN                 |

Reuse the same PCN from the original submission for pre-adjudication resubmissions and adjudication Medicare resubmissions. Stedi uses the PCN to match claims and resubmissions in the claims view, so reusing the PCN allows Stedi to show the original claim and resubmissions within a unified claim timeline. Reusing the PCN also helps you track the claim throughout the resubmission process.

Use a new, unique PCN for adjudication non-Medicare resubmissions. In this scenario, a new PCN helps you avoid potential duplicate claim errors from the payer. A new PCN also helps you differentiate between the 835 Electronic Remittance Advice (ERAs) for the original submission and the resubmission.

#### Set the PCN [#set-the-pcn]

You can set the PCN in the following locations:

* **JSON:** `claimInformation.patientControlNumber`
* **X12 EDI:** `Loop 2300 CLM01` (Patient Control Number)
* **CMS-1500 claim form UI:** Set **Box 26** (Patient account number)

#### PCN format [#pcn-format]

When assigning a PCN, follow these best practices:

* Use a unique PCN for each claim. The identifier should be more complex than a simple sequential number and should be hard to guess.
* Use random strings. Formats with patient initials or the date of service in them can create duplicates. We recommend using [nanoid](https://www.npmjs.com/package/nanoid) or a similar library configured with the characters available in the [basic character set](#character-set) to create a strong, unique 17-character PCN for each claim.
* Keep it 17 characters or less. Some payers cut off values longer than 17 characters in ERAs and claim acknowledgments, which makes it hard to match them with the original claim.
* Use only characters available in the [basic character set](#character-restrictions), and avoid special characters that are only available in the extended character set. Payers are permitted to return data using the basic character set. Using other characters may result in data loss or mismatches when correlating claims with responses.
* Treat PCN values as case-insensitive when matching transactions, even if the submitted value included both lower and uppercase characters.

## Resubmit or cancel claims [#resubmit-or-cancel-claims]

Ensure that the updated claim includes:

* [Claim Frequency Code](#claim-frequency-code-cfc) according to the claim's processing status and your use case
* [Payer Claim Control Number (PCCN)](#payer-claim-control-number-pccn), if applicable
* [Patient Control Number](#patient-control-number-pcn) (recommended)
* Any other necessary corrections to the claim

Once you've prepared the updated claim, you can resubmit it through the Stedi API, an SFTP connection, or the Stedi portal. The resubmission process is the same for both corrections and cancellations - the Claim Frequency Code indicates which action you want to take.

### API resubmission [#api-resubmission]

Resubmit through one of Stedi's claim submission endpoints:

* [Professional Claims JSON](/healthcare/api-reference/post-healthcare-claims)
* [Professional Claims Raw X12](/healthcare/api-reference/post-healthcare-claims-raw-x12)
* [Institutional Claims JSON](/healthcare/api-reference/post-healthcare-institutional-claims)
* [Institutional Claims Raw X12](/healthcare/api-reference/post-healthcare-institutional-claims-raw-x12)
* [Dental Claims JSON](/healthcare/api-reference/post-healthcare-institutional-claims-raw-x12)
* [Dental Claims Raw X12](/healthcare/api-reference/post-healthcare-dental-claims-raw-x12)

### SFTP resubmission [#sftp-resubmission]

Visit [SFTP submission](/healthcare/submit-claims-sftp-connection) for details on how to format and submit X12 EDI claims through SFTP.

### CMS-1500 form (professional) [#cms-1500-form-professional]

<Warning>
  Stedi's CMS-1500 claim form UI is mostly limited to the CMS-1500 form fields. It may not be able to successfully resubmit complex claims originally submitted through our APIs or SFTP.
</Warning>

To resubmit a professional claim through Stedi's interactive CMS-1500 form:

1. Go to the [claims view](https://portal.stedi.com/app/healthcare/claims) and click the claim you want to resubmit to open its timeline.

2. Hover over the claim submission and do one of the following:
   * Click **Edit and resubmit**. This option appears when the last claim submission was rejected by either Stedi or the payer.
   * Click **See more detail** to review the claim's details page, then click **Edit and resubmit**.

3. Select **CMS-1500 resubmission**. Stedi opens the interactive CMS-1500 form prepopulated with the claim's information.

   <img alt="Claim resubmission CMS-1500 form" src="__img1" />

4. Make any necessary changes to the claim.
   * Make sure to update the Claim Frequency Code, the Payer Claim Control Number, and the Patient Control Number according to best practices.
   * Click **Claims timeline** to open a side panel with the claim's activity. You can review related 277CA claim acknowledgments containing the errors you need to address before resubmitting. Hover over a transaction and click **See more detail** to review its details.

5. Click **Submit claim** to resubmit the updated claim to the payer.

The updated claim will appear on the [claims view](https://portal.stedi.com/app/healthcare/claims) within a few minutes. The claim timeline will reflect that this claim is a resubmission along with the original claim and any associated responses.

You'll receive new 277CA claim acknowledgments indicating whether the resubmitted claim was accepted or rejected.

### X12 EDI editor [#x12-edi-editor]

To resubmit a professional, dental, or institutional claim through Stedi's X12 EDI editor:

1. Go to the [claims view](https://portal.stedi.com/app/healthcare/claims) and click the claim you want to resubmit to open its timeline.

2. Hover over the claim submission and do one of the following:
   * Click **Edit and resubmit**. This option appears when the last claim submission was rejected by either Stedi or the payer.
   * Click **See more detail** to review the claim's details page, then click **Edit and resubmit**.

3. Select **X12 transaction resubmission**. Stedi opens the claim in an interactive editor with the X12 EDI on the left and the EDI specification on the right.

   As you hover over different parts of the EDI, Stedi highlights the corresponding part of the specification on the right to help you understand what each part of the EDI means and how to edit it correctly.
   <img alt="X12 EDI editor" src="__img2" />

4. Make changes to the claim EDI.
   * You can type directly in the EDI editor or copy and paste updated EDI from another source.
   * Make sure to update the Claim Frequency Code, the Payer Claim Control Number, and the Patient Control Number according to best practices.
   * Click **Claims timeline** to open a side panel with the claim's activity. You can review related 277CA claim acknowledgments containing the errors you need to address before resubmitting. Hover over a transaction and click **See more detail** to review its details.

5. Click **Review and submit**. Stedi shows a comparison of the original claim and the new claim containing your changes.

6. Click **Resubmit claim** to send the updated claim to the payer.

The updated claim will appear on the [claims view](https://portal.stedi.com/app/healthcare/claims) within a few minutes. The claim timeline will reflect that this claim is a resubmission along with the original claim and any associated responses.

You'll receive new 277CA claim acknowledgments indicating whether the resubmitted claim was accepted or rejected.

## Medicare resubmission [#medicare-resubmission]

Medicare Part A and Part B (processed through MACs) have different requirements for resubmissions and cancellations than non-Medicare payers. Non-Medicare includes all other payers, such as commercial insurance and Medicaid.

* Medicare does not accept Claim Frequency Codes `7` or `8` for resubmissions. For professional and dental claims, resubmit with Claim Frequency Code `1`. For institutional claims, resubmit with the same Claim Frequency Code as the original submission.
* Don't include the original claim's Payer Claim Control Number (PCCN) when resubmitting, even if one is available.

## Determine 277CA sender [#determine-277ca-sender]

To determine whether a 277CA is from a clearinghouse or the payer:

* **JSON:** Check the [`transactions[].payers` array](https://www.stedi.com/docs/healthcare/api-reference/get-healthcare-reports-277#response.transactions.payers) in the report (`Loop 2100A`). The `organizationName` property contains the name of the sender (for example, CIGNA or STEDI).
* **X12 EDI:** Check `Loop 2100A NM103` (Information Source Name).

You can also find this information in the Stedi portal:

1. Go to the [claims view](https://portal.stedi.com/app/healthcare/claims).
2. Find the associated claim and click it to view the claim timeline.
3. Find the 277CA in the timeline view. The **From** field indicates whether the acknowledgment is from Stedi or the payer.

<img alt="277CA claim timeline" src="__img3" />

## Character restrictions [#character-restrictions]

Only use the X12 Basic and Extended character sets in request data. Using characters outside these sets may cause errors.

<Accordion title="Basic character set" id="basic-character-set">
  The X12 Basic character set includes uppercase letters, digits, space, and some special characters. Lowercase letters and special language characters like `ñ` are not included.

  The following special characters are included:

    <img alt="Basic special characters" src="__img4" />
</Accordion>

<Accordion title="Extended character set" id="extended-character-set">
  The Extended character set includes the characters listed in Basic, plus lowercase letters and additional special characters, such as `@`.

  The following additional special characters are included:
    <img alt="Extended special characters" src="__img5" />
</Accordion>

In addition, the following characters are reserved for delimiters in the final X12 EDI transaction to the payer: `~`, `*`, `:`, `^`, and `>`. X12 doesn't support using escape sequences to represent delimiters or special characters. Stedi returns a `400` error if you use these restricted characters improperly.

* **JSON and CMS-1500 form:** Don't include delimiter characters anywhere in your request data.
* **Raw X12:** You can use these characters as delimiters, but not in the body of the request data.

# Submit eligibility checks - Manual
Source: https://www.stedi.com/docs/healthcare/send-eligibility-checks-ui


You can submit real-time eligibility checks manually through the Stedi portal. Manual eligibility checks are useful for testing and for situations when you need to do a one-time eligibility check.

<Tip>
  Eligibility checks verify coverage with a specific payer. If you don't know
  the payer, you can perform an [insurance discovery
  check](/healthcare/insurance-discovery) instead to find a patient's coverage
  using their demographic data.
</Tip>

In the portal, you can:

* Run eligibility checks.
* Edit and retry failed eligibility checks and review the details of each attempt. With the [Stedi Agent](#retry-with-the-stedi-agent), you can resolve common recoverable errors automatically with the same best practices our Support team uses for troubleshooting.
* Use the Debug view to systematically troubleshoot failed eligibility checks until you receive a successful response from the payer.

## Transaction enrollment [#transaction-enrollment]

[Transaction enrollment](/healthcare/transaction-enrollment) is the process of registering a provider to exchange specific healthcare transactions with a payer.

Most payers don't require transaction enrollment for eligibility checks. Those that do, such as the Centers for Medicare & Medicaid Services (CMS), typically allow multiple enrollments with different clearinghouses. That means enrolling through Stedi shouldn't cancel or interfere with any existing enrollments you have through other clearinghouses.

Enrolling through Stedi for real-time eligibility checks also doesn't affect your existing enrollments for other transaction types. For example, enrolling with Stedi won't unenroll the provider from receiving transactions like Electronic Remittance Advices (ERAs) through other clearinghouses.

You can check whether a specific payer requires enrollment for eligibility checks in the [Payer Network](https://www.stedi.com/healthcare/network) or through the [Payers API](/healthcare/api-reference/get-payer).

To enroll, complete the following steps:

1. Create a provider record with the information required for enrollment. If you already have a record for the provider, you can skip this step. [Stedi portal](https://portal.stedi.com/app/healthcare/providers) | [API endpoint](/healthcare/api-reference/post-enrollment-create-provider)
2. Submit an enrollment request for real-time eligibility checks. [Stedi portal](https://portal.stedi.com/app/healthcare/enrollments) | [API endpoint](/healthcare/api-reference/post-enrollment-create-enrollment)

## Testing [#testing]

The best way to test real-time eligibility checks is through mock requests. When you submit specific mock requests in test mode, Stedi returns mock benefits data from the specified payer.

To submit mock requests through the Stedi portal:

1. Click your account name in the side navigation and toggle **Test mode** to **ON**.
2. Go to the [eligibility check form](https://portal.stedi.com/app/healthcare/checks/create).
3. Choose from predefined mock requests for well-known payers, including Aetna, Cigna, UnitedHealthcare, and the Centers for Medicare & Medicaid Services (CMS).

For each mock request, Stedi returns a realistic mock benefits response for that payer so you can get a sense for the kinds of data you'll receive in production. The benefits responses include examples of copays, deductibles, and other patient payment responsibilities, as well as active coverage.

Visit [Test mode](/healthcare/test-mode) to learn more about testing in the Stedi portal.

<Tip>
  Mock transactions you send in test mode are free for testing purposes and won't incur any charges from Stedi.
</Tip>

### Don't send fake data [#dont-send-fake-data]

Some payers, particularly CMS (HETS), prohibit sending test eligibility checks for fake patients or providers to their production systems. Payers may block your access if you send these types of test transactions.

You can send as many [mock requests](/healthcare/api-reference/mock-requests-eligibility-checks) to Stedi as you need, but if you need to send test data to payers in production, you must contact [Stedi support](https://www.stedi.com/contact) to coordinate with the payer and obtain approval. For example, some payers require that you use specific test credentials.

## Run eligibility checks [#run-eligibility-checks]

Real-time eligibility checks provide a response in seconds. They're ideal for in-person patient visits, telehealth appointments, and other scenarios where you need immediate information about a patient's coverage.

To run a new eligibility check:

1. Go to the [checks view](https://portal.stedi.com/app/healthcare/eligibility/checks) or [searches view](https://portal.stedi.com/app/healthcare/eligibility/searches).

2. Click **+ New eligibility check**. Stedi opens the simplified eligibility check form, which we recommend for most use cases.

   <img alt="Simplified eligibility check form" src="__img0" />

   If you need to submit a check with additional information, click **Swap to advanced form**. On the advanced form, click **Select fields** on the top right of the window. The **Select fields** modal opens, where you can add additional form fields, such as the provider's Social Security Number (SSN) or procedure codes.

   Check the boxes next to the fields you want to add to each section and click **Save selection**.

   <img alt="Select fields modal" src="__img1" />

3. Complete the form. Review [eligibility request fields](#eligibility-request-fields) for detailed instructions and tips for required fields. We especially recommend reviewing how to choose the right service type code (STC) or procedure code. This is **very** important for getting the best results from the payer.

4. Click **Submit**.

Stedi opens the **Overview** page for the eligibility check. If the check was successful, you can click **Benefits** to review the patient's benefits information.

### Eligibility request fields [#eligibility-request-fields]

For the best chance of success, start by sending the smallest possible set of fields in your eligibility checks. Adding extra data can lead to unnecessary rejections.

We recommend starting with the following information. Only include more if the payer requires it.

{/* prettier-ignore-start */}

| Form section                              | Instructions                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              |   |                                |                                                                                                                                                                                                             |
| ----------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | - | ------------------------------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Payer**, or trading partner service ID  | Select your payer from the provided list. Hover over **view details** to review a summary of the payer's various identifiers and open the full payer record in Stedi's [Payer Network](https://www.stedi.com/healthcare/network).                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         |   |                                |                                                                                                                                                                                                             |
| **Provider**                              | Most eligibility requests require the provider's name - either their first and last name (individual) or business name (organization) - and their National Provider Identifier (NPI). If you need to provide additional information, such as the provider's Social Security Number (SSN), click **Swap to advanced form** and then click **Select fields** to add additional fields to the request form.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  |   |                                |                                                                                                                                                                                                             |
| **Subscriber**                            | <ul><li>At a minimum, you must supply at least the subscriber's **Member ID**, **Date of birth**, or **Last name**. However, each payer has different requirements, so you should supply the fields necessary for each payer to identify the subscriber in their system. </li><li>When you supply the subscriber's member ID, first name, last name, and date of birth, payers are required to return a response if the member is in their database. That's why these are the default form fields.</li><li>If you need to run an MBI lookup with the subscriber's Social Security Number (SSN), click **Select fields** and check the box next to &#x2A;*Social Security Number (SSN)** under the **Subscriber** section. This adds the SSN field to the form.</li></ul>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  |   |                                |                                                                                                                                                                                                             |
| **Dependent**                             | A patient qualifies as a dependent for eligibility checks when they are listed as a dependent on the subscriber's insurance plan and the payer cannot uniquely identify the patient through information outside the subscriber's policy. If the patient has their own member ID (even if it only differs by a suffix like `0`), you must identify them in the **Subscriber** section instead. <ul><li>To add a dependent to the real-time eligibility check form, click **Select fields** and select **Dependents**.</li><li>You can only submit one dependent per eligibility check.</li><li> Most Medicaid plans don't support dependents - you'll almost always need to submit the child as a subscriber in the **Subscriber** section. Sending dependent information here for payers that don't support dependents will either cause an error, or the payer may return results for the subscriber instead.</li><li>We strongly recommend including the dependent's date of birth in the request when available because many payers return errors without it.</li><li>Enter the dependent's name exactly as written on their insurance card, if available, including any special or punctuation characters such as apostrophes, hyphens (dashes), or spaces.</li></ul> |   | **Trading partner service ID** | You must specify the payer.<ul><li>For real-time eligibility checks, select the payer from the dropdown list.</li><li>For MBI lookups, you must select **CMS MBI Lookup** from the dropdown list.</li></ul> |
| **Encounter**, service or procedure codes | You must include either a service type code (STC) or a procedure code and qualifier. This tells the payer what kinds of benefits information you're requesting. Most medical payers don't support procedure codes. Some dental payers do, but we recommend trying an STC first.<ul><li>We recommend STC `30` (Health Benefit Plan Coverage) to retrieve a patient's general medical benefits and `35` to retrieve a patient's general dental benefits.</li><li>We recommend submitting one STC per request, unless you've tested and are certain that the payer supports multiple.</li><li>When requesting benefits for specific services, you should test the STCs that seem most appropriate to determine which ones yield the most benefits information. Our STCs and procedure codes docs explain how.</li><li>By default, the real-time eligibility check form allows you to choose a **Service type code**. If you want to include a procedure code instead, click **Swap to advanced form** and then click **Select fields**. Select the boxes for the **Procedure code** and **Product or service ID qualifier** to add them to the form. Note that you can submit either an STC or a procedure code and qualifier - not both.</li></ul>                          |   |                                |                                                                                                                                                                                                             |
| **Encounter**, service dates              | Stedi populates today's date as the date of service by default.<ul><li>To add a date range, click **Swap to advanced form** and click **Select fields**. Under **Encounter**, select both the **Beginning date of service** and **End date of service** (date range).</li><li> We recommend submitting dates up to 12 months in the past or up to the end of the current month. Payers aren't required to support dates outside these ranges. However, some payers such as the Centers for Medicare and Medicaid Services (CMS) do support requests for dates further in the future - especially the next calendar month. Check the payer's documentation to determine their specific behavior.</li></ul>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |   |                                |                                                                                                                                                                                                             |

{/* prettier-ignore-end */}

## Patient information [#patient-information]

Follow this guidance to help payers find the patient in their system.

### Payer search requirements [#payer-search-requirements]

All payers are required to be able to search for patients using the following "bare minimum" subsets of information. They will return benefits information as long as they can find a unique match for the patient within their system.

For a subscriber:

* Member ID, first name, last name, date of birth
* Member ID, last name, date of birth
* Member ID, first name, last name

For a dependent:

* Subscriber member ID, first name, last name, date of birth
* Subscriber member ID, last name, date of birth
* Subscriber member ID, first name, last name

Of course, not all of this patient information is always available. For example, a patient may forget their ID card. In these instances, some payers may still be able to search with even less information, such as the patient's first name, last name, and date of birth. Contact us if you have questions about alternative search options for a particular payer.

### Dependents [#dependents]

The patient qualifies as a dependent for eligibility checks when:

1. The patient is listed as a dependent on the subscriber's insurance plan.
2. The payer cannot uniquely identify the patient through information outside the subscriber's policy.

When the patient meets these criteria, you should submit their information in the **Dependent** section of the form. Otherwise, you must submit their information in the **Subscriber** section instead.

For example, if the dependent has their own member ID number in the payer's database, you must identify them as a subscriber. This includes member IDs that differ only by a suffix, such as `01`, because the patient can still be uniquely identified.

#### Medicaid dependents [#medicaid-dependents]

Most Medicaid plans don't support dependents. However, some state Medicaid plans support eligibility inquiries for newborn children under 12 months old.

Children typically must be enrolled in Medicaid as a separate subscriber with their own unique member ID, even if they are legally the dependent of a parent who is a Medicaid plan member. Therefore, you'll almost always need to submit the child as a subscriber in the **Subscriber** section.

Sending dependent information to payers that don't support dependents will either cause an error, or the payer may ignore the information and return results for the subscriber instead.

### Patient names [#patient-names]

Note the following information and best practices when entering patient names:

* Enter the name exactly as written on the patient's insurance ID card (if available), including any special or punctuation characters such as apostrophes, hyphens (dashes), or spaces. If the patient's insurance ID card isn't available, enter the name exactly as written on a government-issued ID card. If a government ID card isn't available, enter the name exactly as given by the patient.
* Don't include a name prefix, title, rank, honorific, or academic degree in any field. These include Mrs., Dr., Hon., and PhD.
* Don't include a suffix or generation such as Jr. or III in the **First name** or **Last name** field. Put it in the separate **Suffix** field instead. Payers are supposed to automatically parse suffixes out of the last name, but Stedi can't guarantee that all payers will do this correctly.
* You can populate a middle name (or names) or initial in the **Middle name** field, but most payers ignore it when searching for the patient.
* Case doesn't matter. For example, JANE is equivalent to Jane.

The following are supported for patient names:

* Compound last and first names separated by spaces or hyphens such as Jean‐Claude or Smith Jones
* Apostrophized or elided names such as O'Connor or D'Amore
* Numbers like 3, however this typically indicates a data entry error

Some payers may have more specific requirements or restrictions that we don't cover in our docs. If you're receiving errors for a specific payer, we recommend consulting that payer's documentation for eligibility checks for additional guidance.

## Retry failed eligibility checks [#retry-failed-eligibility-checks]

When an eligibility check fails, you can edit the request details in the portal and resubmit it until you get a successful response. There are three ways to retry a failed eligibility check: using the [Stedi Agent](#retry-with-the-stedi-agent), [manually resubmitting](#manually-edit-and-retry) the request, or using [Debug view](#iterate-in-debug-view).

<Tip>
  For information about common eligibility check errors and recommended resolutions, visit the [troubleshooting guide](/healthcare/eligibility-troubleshooting).
</Tip>

### Retry with the Stedi Agent [#retry-with-the-stedi-agent]

You can use the Stedi Agent to troubleshoot and resolve common recoverable eligibility check errors automatically. To use it, you must be at least an [Operator](/healthcare/account-settings#members) role within your Stedi account.

To resolve an eligibility check failure with the Stedi Agent:

1. Go to the [checks view](https://portal.stedi.com/app/healthcare/eligibility/checks) or [searches view](https://portal.stedi.com/app/healthcare/eligibility/searches).
2. Hover over a failed check or search to reveal the **Resolve with Stedi Agent** button. This button is only available for checks and searches with common recoverable errors.
3. Click **Resolve with Stedi Agent**. The Stedi Agent opens a side panel in Debug view.
4. The Stedi Agent analyzes the eligibility request and works through best practice recovery strategies based on the error type. For example, if the payer returned an error code `75` (Subscriber/Insured Not Found), the agent may try different combinations of patient data or adjust the name format to find a match in the payer's system.

Each time the agent retries the eligibility check, it stores the new request in the same eligibility search record and it shows up in Debug view in real time. This allows you to see the history of attempts and the progression of the agent's troubleshooting efforts.

The agent only accesses data from the eligibility search it's working on. It can't access data from other searches, customers, or systems.

You can review past recovery attempts with Stedi Agent from the [Chats page](https://portal.stedi.com/app/healthcare/chats). These attempts are read only - you won't be able to send chat messages to the agent.

### Manually edit and retry [#manually-edit-and-retry]

To manually resubmit an eligibility check:

1. From the [checks view](https://portal.stedi.com/app/healthcare/eligibility/checks) or [searches view](https://portal.stedi.com/app/healthcare/eligibility/searches), click the eligibility check or search you want to troubleshoot to view its details.
2. Click **Actions > Edit and retry**.
3. Update the request details as needed, and click **Submit**.

You'll know the retry was successful when the status is either `Active` or `Inactive`. If the status is still `Failed`, you may want to try resolving in [Debug view](#iterate-in-debug-view) or using the [Stedi Agent](#retry-with-the-stedi-agent), if available.

### Iterate in Debug view [#iterate-in-debug-view]

Debug view is a workspace where you can systematically troubleshoot failed eligibility checks until you receive a successful response from the payer. For example, first you might try swapping the patient's nickname (Dave) for their full name (David) to see if that returns benefits information. In the next iteration, you might try submitting the request with a different service type code or dropping the date of birth.

Debug view shows all past iterations of the eligibility check and highlights the differences between each new version of the request. You can also draft and submit new requests directly from this page. This format helps you understand what you've already tried and quickly iterate on failed requests.

<img alt="debug view" src="__img2" />

To troubleshoot eligibility checks in Debug view:

1. From the [checks view](https://portal.stedi.com/app/healthcare/eligibility/checks) or [searches view](https://portal.stedi.com/app/healthcare/eligibility/searches), click the eligibility check or search you want to troubleshoot to view its details.
2. Click **Actions > Debug** to enter Debug view.
3. Click **+ Add draft** to create a new draft request. Stedi pre-populates the draft with the details from the most recent eligibility check.
4. Update the draft request as needed. Use the **Edit columns** list to show or hide specific fields in the request.
5. Click the green arrow when you're ready to submit the updated eligibility check draft.

Stedi runs the check and moves it to the list of **Past checks**. Stedi highlights the differences between it and other past checks so you can see a clear record of your troubleshooting efforts. You can repeat this process as many times as needed to get a successful response.

## CMS HETS Rules of Behavior [#cms-hets-rules-of-behavior]

All parties involved in eligibility transactions sent to the Centers for Medicare & Medicaid Services (CMS) eligibility system, called HETS, must comply with the [HETS Rules of Behavior](https://www.cms.gov/research-statistics-data-and-systems/cms-information-technology/hetshelp/downloads/eligibilitytransactionsysteminquiriesrulesofbehavior.pdf). Compliance is also required under our terms.

Review the Rules of Behavior before sending eligibility checks to CMS.

# Submit eligibility checks - API
Source: https://www.stedi.com/docs/healthcare/send-eligibility-checks


You can send real-time eligibility checks programmatically through the API. API submission is ideal for integrating eligibility checks into your application workflows and automating patient coverage verification.

The synchronous response includes the patient's complete benefits information, such as coverage status, co-pays, and deductibles.

<Tip>
  Eligibility checks verify coverage with a specific payer. If you don't know
  the payer, you can perform an [insurance discovery
  check](/healthcare/insurance-discovery) instead to find a patient's coverage
  using their demographic data.
</Tip>

## Transaction enrollment [#transaction-enrollment]

[Transaction enrollment](/healthcare/transaction-enrollment) is the process of registering a provider to exchange specific healthcare transactions with a payer.

Most payers don't require transaction enrollment for eligibility checks. Those that do, such as the Centers for Medicare & Medicaid Services (CMS), typically allow multiple enrollments with different clearinghouses. That means enrolling through Stedi shouldn't cancel or interfere with any existing enrollments you have through other clearinghouses.

Enrolling through Stedi for real-time eligibility checks also doesn't affect your existing enrollments for other transaction types. For example, enrolling with Stedi won't unenroll the provider from receiving transactions like Electronic Remittance Advices (ERAs) through other clearinghouses.

You can check whether a specific payer requires enrollment for eligibility checks in the [Payer Network](https://www.stedi.com/healthcare/network) or through the [Payers API](/healthcare/api-reference/get-payer).

To enroll, complete the following steps:

1. Create a provider record with the information required for enrollment. If you already have a record for the provider, you can skip this step. [Stedi portal](https://portal.stedi.com/app/healthcare/providers) | [API endpoint](/healthcare/api-reference/post-enrollment-create-provider)
2. Submit an enrollment request for real-time eligibility checks. [Stedi portal](https://portal.stedi.com/app/healthcare/enrollments) | [API endpoint](/healthcare/api-reference/post-enrollment-create-enrollment)

## Testing [#testing]

The best way to test real-time eligibility checks is through mock requests. When you submit specific mock requests, Stedi returns mock benefits data from the specified payer. You can submit mock requests through the:

* **API endpoints:** Visit [Eligibility mock requests](/healthcare/api-reference/mock-requests-eligibility-checks) for a complete list. All mock requests work with Stedi's JSON, Raw X12, and SOAP endpoints.
* **Stedi portal:** Visit [Test mode](/healthcare/test-mode) to learn how to enable **Test mode** in your account and manually submit mock requests.

### Don't send fake data [#dont-send-fake-data]

Some payers, particularly CMS (HETS), prohibit sending test eligibility checks for fake patients or providers to their production systems. Payers may block your access if you send these types of test transactions.

You can send as many [mock requests](/healthcare/api-reference/mock-requests-eligibility-checks) to Stedi as you need, but if you need to send test data to payers in production, you must contact [Stedi support](https://www.stedi.com/contact) to coordinate with the payer and obtain approval. For example, some payers require that you use specific test credentials.

## Submit eligibility checks [#submit-eligibility-checks]

Call one of the following endpoints to send real-time 270/271 eligibility checks to payers:

* [Eligibility Check](/healthcare/api-reference/post-healthcare-eligibility) to send requests in JSON
* [Eligibility Check Raw X12](/healthcare/api-reference/post-healthcare-eligibility-raw-x12) to send requests in X12 EDI
* [Eligibility Check SOAP](/healthcare/api-reference/post-healthcare-eligibility-soap) to send SOAP requests using the CAQH CORE vC2.2.0 XML Schema. The XML document contains an eligibility check in X12 EDI format.

Stedi automatically applies various repairs to help your requests meet X12 HIPAA specifications, resulting in fewer payer rejections.

### Headers - required [#headers---required]

JSON and Raw X12 endpoints:

* **`Authorization`:** [Generate an API key](/healthcare/api-reference#authentication) to use for authentication.
* **`Content-Type`:** Set to `application/json`.

SOAP endpoint:

* **`Content-Type`:** Set to `application/soap+xml`. You'll include authentication details in the XML document, so you don't need to set the `Authorization` header.

### Headers - situational [#headers---situational]

JSON, Raw X12, and SOAP endpoints:

* When sending eligibility checks to the Centers for Medicare & Medicaid Services (CMS), you may need to include the `X-Forwarded-For` header set to a comma-separated list of any upstream IP addresses. Visit [CMS traceability requirements](#cms-traceability-requirements) for details and examples.

### Body - JSON [#body---json]

The information you provide to the payer in an eligibility check can vary, depending on the circumstances. We recommend starting with a basic eligibility request.

#### Basic eligibility request [#basic-eligibility-request]

Each eligibility check must include at least the following information in the request body:

| Information                                    | Description                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  |
| ---------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `tradingPartnerServiceId`                      | <ul><li>This is the payer ID. You can send requests using the primary payer ID, the Stedi payer ID, or any alias listed in the payer record. If you don't already have payer IDs you use today, we recommend using the primary Payer ID. Visit the [Payer Network](https://www.stedi.com/healthcare/network) for a complete list.</li><li>You must include leading `0` characters in payer IDs. For example, use `00540` for SISCO, not `540`.</li><li> If you don't know the payer, try submitting an [insurance discovery check](/healthcare/insurance-discovery) instead.</li></ul>                                                                                                                                                                                                                                                                                                                                       |
| `provider` object, name and identifier         | <ul><li>You must include the provider's name - either the `firstName` and `lastName` of a specific provider within a practice or the `organizationName`.</li><li>You must include an identifier - this is typically the provider's [National Provider Identifier](https://www.stedi.com/docs/healthcare/national-provider-identifier) (`npi`). If the provider doesn't have an NPI, you can supply an alternative, such as their `taxId` or `ssn`.</li></ul>                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |
| `subscriber` and/or `dependents` objects       | <ul><li>The `dependents` object is optional - refer to the scenarios when the [patient qualifies as a dependent](/healthcare/send-eligibility-checks#dependents).</li><li>At a minimum, our API requires that you supply at least one of these fields in the request: `memberId`, `dateOfBirth`, or `lastName`. However, each payer has different requirements, so you should supply the fields necessary for each payer to identify the subscriber in their system.</li><li> When all four of `memberId`, `dateOfBirth`, `firstName`, and `lastName` are provided, payers are required to return a response if the member is in their database. Some payers may be able to search with less information, but this varies by payer.</li><li> We recommend always including the patient's member ID when possible. Learn more about [patient information](/healthcare/send-eligibility-checks#patient-information).</li></ul> |
| `encounter` object, service dates              | <ul><li>You can specify either a single `dateOfService` or a `beginningDateOfService` and `endDateOfService`. The payer defaults to using the current date in their timezone if you don't include one.</li><li>When checking eligibility for today, omit the `dateOfService` property to ensure consistent behavior across payers.</li><li> We recommend submitting dates up to 12 months in the past or up to the end of the current month. Payers aren't required to support dates outside these ranges. However, some payers such as the Centers for Medicare and Medicaid Services (CMS) do support requests for dates further in the future - especially the next calendar month. Check the payer's documentation to determine their specific behavior.</li></ul>                                                                                                                                                       |
| `encounter` object, service or procedure codes | <ul><li>Specify `serviceTypeCodes` and/or a `procedureCode` and `productOrServiceIDQualifier` to request specific types of benefits information.</li><li>We recommend including no more than one service type code in each request.</li><li> If you don't include any service type code or procedure code information, Stedi defaults to using `30` (Plan coverage and general benefits) as the only `serviceTypeCodes` value.</li><li> Learn more about [STCs and procedure codes](/healthcare/eligibility-stc-procedure-codes).</li></ul>                                                                                                                                                                                                                                                                                                                                                                                  |

The following example shows the bare minimum request body for an eligibility check. Because the `dateOfService` is not specified, the payer will use the current date in their timezone (default) to retrieve benefits information.

{/* schema:EligibilityCheckRequestContent */}

```json
{
  "tradingPartnerServiceId": "87726",
  "encounter": {
    "serviceTypeCodes": ["30"]
  },
  "provider": {
    "organizationName": "Provider Name",
    "npi": "1999999984"
  },
  "subscriber": {
    "firstName": "John",
    "lastName": "Doe",
    "memberId": "UHC202649"
  },
  "dependents": [
    {
      "firstName": "Jane",
      "lastName": "Doe",
      "dateOfBirth": "19521121"
    }
  ]
}
```

#### Conditional requirements [#conditional-requirements]

Note that objects marked as **required** are required for all requests, while others are conditionally required depending on the circumstances. When you include a conditionally required object, you must include all of its required properties.

For example, you must always include the `provider` object in your request, but you only need to include the `dependents` object when you need to request benefits information for a dependent on the subscriber's insurance plan.

### Body - X12 EDI [#body---x12-edi]

When sending real-time eligibility checks through the Raw X12 or SOAP endpoints, you must send the eligibility check [270 X12 EDI format](https://portal.stedi.com/app/guides/view/hipaa/health-care-eligibility-benefit-inquiry-x279a1/01GRYB6GTDJ4MEP5Z16CGMQWT6?__hstc=181257784.360aac417a3f93a63ca63bf29197fe1f.1727971380232.1752174670420.1752250096430.449&__hssc=181257784.244.1752250096430&__hsfp=1923652471). The information you send can vary, depending on the circumstances. We recommend starting with a basic eligibility request.

#### Basic eligibility request [#basic-eligibility-request-1]

Each eligibility check must also include at least the following information:

| Information                                                      | Description                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         |
| ---------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `BHT03` (Submitter Transaction Identifier)                       | <ul><li>This identifier must be 1-50 characters long and different from the value you choose for `ST02`.</li><li> We also strongly recommend using a unique value. [Learn more](/healthcare/send-eligibility-checks#submitter-transaction-identifier)</li></ul>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     |
| `Loop 2100A` (Information Source)                                | <ul><li>This loop contains the payer's information. Notably, you must include the payer's name (`NM103`) and identifier (`NM109`).</li><li>The payer's identifier **must** be a payer ID or payer ID alias listed in the [Payer Network](https://www.stedi.com/healthcare/network). For example, you could use `60054`, `HPQRS`, `AETNA`, or any other listed payer ID alias for Aetna.</li><li>You must include leading `0` characters in payer IDs. For example, use `00540` for SISCO, not `540`.</li></ul>                                                                                                                                                                                                                                                                                                                                                                                                                                      |
| `Loop 2000B` (Information Receiver)                              | <ul><li>This loop contains information about the provider requesting the benefits information.</li><li> You must include the provider's name (`NM103`) and an identifier (`NM109`). Most often this is the [National Provider Identifier (NPI)](/healthcare/national-provider-identifier).</li></ul>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                |
| `Loop 2000C` (Subscriber) and `Loop 2000D` (Dependent)           | <ul><li>`Loop 2000D` is optional - refer to the scenarios when the [patient qualifies as a dependent](/healthcare/send-eligibility-checks#dependents). </li><li>At a minimum, you must supply at least one of these fields in the appropriate loop to identify the patient: `NM109` (member ID), `DMG02` (birth date), or `NM103` (last name). However, each payer has different requirements, so you should supply the fields necessary for each payer to identify the patient in their system.</li><li>When all four of member ID, first name, last name, and date of birth are provided, payers are required to return a response if the member is in their database. Some payers may be able to search with less information, but this varies by payer.</li><li>We recommend always including the patient's member ID when possible. Learn more about [patient information](/healthcare/send-eligibility-checks#patient-information).</li></ul> |
| `Loop 2110C` or `Loop 2100D DTP` (Eligibility/Benefit Date)      | <ul><li>You can specify either a single date of service or a range of service dates. The payer defaults to using the current date in their timezone if you don't include one.</li><li>When checking eligibility for today, omit the service date from the request to ensure consistent behavior across payers.</li><li> We recommend submitting dates up to 12 months in the past or up to the end of the current month. Payers aren't required to support dates outside these ranges. However, some payers such as the Centers for Medicare and Medicaid Services (CMS) do support requests for dates further in the future - especially the next calendar month. Check the payer's documentation to determine their specific behavior.</li></ul>                                                                                                                                                                                                  |
| `Loop 2110C` or `Loop 2100D EQ` (Eligibility or Benefit Inquiry) | <ul><li>You must specify a service type code and/or a procedure code and qualifier to request specific types of benefits information.</li><li>We recommend including no more than one service type code in each request. Learn more about [STCs and procedure codes](/healthcare/eligibility-stc-procedure-codes).</li></ul>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        |

#### Envelope and header [#envelope-and-header]

Stedi generates its own `ISA` and `GS` headers and `IEA` and `GE` trailers before sending your eligibility check to the payer. You can submit your check to Stedi with any values in these segments, as long as they conform to the X12 EDI specification.

However, you must set `ST03` (Implementation Convention Reference) to `005010X279A1`.

#### Submitter Transaction Identifier [#submitter-transaction-identifier]

The `BHT03` (Submitter Transaction Identifier) element is **required** when submitting real-time eligibility checks in X12 EDI. The identifier you choose must be:

* An alphanumeric string from 1-50 characters long.
* Different from the value you choose for `ST02` (Transaction Set Control Number).

We also **strongly recommend** using a unique value. This approach makes it easier for Stedi to troubleshoot eligibility checks in your account.

The payer returns the identifier in the `BHT03` element of the 271 eligibility response, and Stedi returns it in the `meta.traceId` JSON property.

If you don't include `BHT03` in the request, Stedi returns a `200` with the `status` property set to `ERROR` and the `implementationTransactionSetSyntaxError` property set to `5`. The response also includes a negative [999 Implementation Acknowledgment](https://www.stedi.com/edi/x12/transaction-set/999) in the `x12` property.

<Accordion title="Example error response due to missing BHT03" id="example-error-response-due-to-missing-bht03">
  {/* schema:EligibilityCheckResponseContent */}

  ```json
  {
    "controlNumber": "138549672",
    "tradingPartnerServiceId": "STEDI",
    "errors": [
      {
        "description": "The payer or clearinghouse rejected the request with validation errors. The original edi response is returned in the x12 field, please contact Stedi Support if you need further help."
      }
    ],
    "status": "ERROR",
    "transactionSetAcknowledgement": "R",
    "implementationTransactionSetSyntaxError": "5",
    "x12": "ISA*00*          *00*          *ZZ*STEDI          *01*117151744      *250523*1304*^*00501*000000000*0*P*:~GS*FA*STEDI*117151744*20250523*1304*000000000*X*005010X231A1~ST*999*0001*005010X231A1~AK1*HS*9872*005010X279A1~AK2*270*0001*005010X279A1~IK3*BHT*2**8~IK4*3*127*2~CTX*SITUATIONAL TRIGGER*BHT*2**3~IK5*R*5~AK9*R*1*1*0~SE*9*0001~GE*1*000000000~IEA*1*000000000~"
  }
  ```
</Accordion>

#### Trace Number [#trace-number]

You may want to include a trace number in your request to help you track eligibility checks. Stedi always generates a trace number for internal tracking, and you can optionally supply your own trace number of up to 50 characters in a `TRN` segment.

You can send the trace number in **one** of the following locations (not both):

* If the subscriber is the patient, send it in `Loop 2000C TRN02` (Trace Number).
* If the dependent is the patient, send it in `Loop 2000D TRN02` (Dependent Trace Number).

Stedi returns both its internal trace number and your trace number (if provided) in the [`subscriberTraceNumbers` array](/healthcare/api-reference/post-healthcare-eligibility-raw-x12#response.subscriberTraceNumbers).

### Character restrictions [#character-restrictions]

Only use the X12 Basic and Extended character sets in request data. Using characters outside these sets may cause errors.

<Accordion title="Basic character set" id="basic-character-set">
  The X12 Basic character set includes uppercase letters, digits, space, and some special characters. Lowercase letters and special language characters like `ñ` are not included.

  The following special characters are included:

    <img alt="Basic special characters" src="__img0" />
</Accordion>

<Accordion title="Extended character set" id="extended-character-set">
  The Extended character set includes the characters listed in Basic, plus lowercase letters and additional special characters, such as `@`.

  The following additional special characters are included:
    <img alt="Extended special characters" src="__img1" />
</Accordion>

In addition, the following characters are reserved for delimiters in the final X12 EDI transaction to the payer: `~`, `*`, `:`, `^`, and `>`. X12 doesn't support using escape sequences to represent delimiters or special characters. Stedi returns a `400` error if you use these restricted characters improperly.

* **JSON endpoint:** Don't include delimiter characters anywhere in your request data.
* **Raw X12 endpoint:** You can use these characters as delimiters, but not in the body of the request data.

#### Autocorrection for backticks [#autocorrection-for-backticks]

Stedi automatically replaces backticks (`` ` ``), also known as backquotes or grave accents, with an apostrophe (`'`) in `subscriber` and `dependents` first and last names. These corrections prevent errors when submitting your request. Stedi returns a message in the response's `warnings` array when it makes this replacement.

### Sample request and response [#sample-request-and-response]

The following request and response examples show a basic eligibility check for a subscriber named John Doe and a dependent Jane Doe. The request uses the `30` service type code to check for health benefit plan coverage.

The response contains the patient's benefits information. Visit [Determine patient benefits](/healthcare/eligibility-active-coverage-benefits) for detailed explanations of how to determine the patient's active coverage, financial responsibility, whether referrals and authorizations are required, and more.

#### JSON endpoint [#json-endpoint]

<Tabs items="[&#x22;Request - JSON&#x22;, &#x22;Response&#x22;]">
  <Tab value="Request - JSON">
    {/* schema:EligibilityCheckRequestContent */}

    ```bash
    curl --request POST \
      --url https://healthcare.us.stedi.com/2024-04-01/change/medicalnetwork/eligibility/v3 \
      --header 'Authorization: <api-key>' \
      --header 'Content-Type: application/json' \
      --data '{
          "tradingPartnerServiceId": "87726",
          "encounter": {
            "serviceTypeCodes": ["30"]
          },
          "provider": {
            "organizationName": "Provider Name",
            "npi": "1999999984"
          },
          "subscriber": {
            "firstName": "John",
            "lastName": "Doe",
            "memberId": "UHC202649"
          },
          "dependents": [
            {
              "firstName": "Jane",
              "lastName": "Doe",
              "dateOfBirth": "19521121"
            }
          ]
       }'
    ```
  </Tab>

  <Tab value="Response">
    {/* schema:EligibilityCheckResponseContent */}

    ```json
    {
      "meta": {
        "senderId": "STEDI",
        "submitterId": "117151744",
        "applicationMode": "test",
        "traceId": "01JDQV00485EPP4D6BD8GM1SWM",
        "outboundTraceId": "01KX42KZPCP7W5HHVSEY1Z8TEW"
      },
      "controlNumber": "345459952",
      "reassociationKey": "345459952",
      "tradingPartnerServiceId": "87726",
      "provider": {
        "providerName": "Jerde - Sauer",
        "entityIdentifier": "Provider",
        "entityType": "Non-Person Entity",
        "npi": "1999999984"
      },
      "subscriber": {
        "memberId": "UHC202649",
        "firstName": "John",
        "lastName": "Doe",
        "middleName": "A",
        "gender": "M",
        "entityIdentifier": "Insured or Subscriber",
        "entityType": "Person",
        "dateOfBirth": "19760214",
        "groupNumber": "186084",
        "planNumber": "UVdQAC5j6f",
        "address": {
          "address1": "123 Sunnyvale Lane",
          "city": "Fosterburgh",
          "state": "TX",
          "postalCode": "91016"
        }
      },
      "dependents": [
        {
          "firstName": "Jane",
          "lastName": "Doe",
          "middleName": "Alex",
          "gender": "F",
          "entityType": "Person",
          "dateOfBirth": "19521121",
          "planNumber": "UVdQAC5j6f",
          "relationToSubscriber": "Spouse",
          "relationToSubscriberCode": "01",
          "insuredIndicator": "N",
          "maintenanceTypeCode": "001",
          "maintenanceReasonCode": "25"
        }
      ],
      "payer": {
        "entityIdentifier": "Payer",
        "entityType": "Non-Person Entity",
        "name": "UNITEDHEALTHCARE",
        "payorIdentification": "87726",
        "contactInformation": {
          "contacts": [
            {
              "communicationMode": "Uniform Resource Locator (URL)",
              "communicationNumber": "WWW.UHCPROVIDER.COM"
            }
          ]
        }
      },
      "planInformation": {
        "planNumber": "UVdQAC5j6f",
        "groupNumber": "186084"
      },
      "planDateInformation": {
        "plan": "20240101-20241231"
      },
      "planStatus": [
        {
          "statusCode": "1",
          "status": "Active Coverage",
          "planDetails": "CHOICE PLUS",
          "serviceTypeCodes": [
            "30"
          ]
        },
        {
          "statusCode": "1",
          "status": "Active Coverage",
          "serviceTypeCodes": [
            "A6"
          ]
        },
        {
          "statusCode": "1",
          "status": "Active Coverage",
          "serviceTypeCodes": [
            "A6"
          ]
        },
        {
          "statusCode": "1",
          "status": "Active Coverage",
          "serviceTypeCodes": [
            "A6"
          ]
        },
        {
          "statusCode": "1",
          "status": "Active Coverage",
          "serviceTypeCodes": [
            "A6"
          ]
        }
      ],
      "benefitsInformation": [
        {
          "code": "1",
          "name": "Active Coverage",
          "serviceTypeCodes": [
            "30"
          ],
          "serviceTypes": [
            "Health Benefit Plan Coverage"
          ],
          "insuranceTypeCode": "C1",
          "insuranceType": "Commercial",
          "planCoverage": "CHOICE PLUS",
          "inPlanNetworkIndicatorCode": "W",
          "inPlanNetworkIndicator": "Not Applicable",
          "benefitsDateInformation": {
            "dateOfLastUpdate": "20240731"
          },
          "benefitsRelatedEntity": {
            "entityIdentifier": "Payer",
            "entityType": "Non-Person Entity",
            "entityName": "UNITEDHEALTHCARE",
            "entityIdentification": "PI",
            "entityIdentificationValue": "87726",
            "address": {
              "address1": "P.O. BOX 30555",
              "city": "SALT LAKE CITY",
              "state": "UT",
              "postalCode": "841300555"
            },
            "contactInformation": {
              "contacts": [
                {
                  "communicationMode": "Uniform Resource Locator (URL)",
                  "communicationNumber": "WWW.UHCPROVIDER.COM"
                }
              ]
            }
          },
          "benefitsRelatedEntities": [
            {
              "entityIdentifier": "Payer",
              "entityType": "Non-Person Entity",
              "entityName": "UNITEDHEALTHCARE",
              "entityIdentification": "PI",
              "entityIdentificationValue": "87726",
              "address": {
                "address1": "P.O. BOX 30555",
                "city": "SALT LAKE CITY",
                "state": "UT",
                "postalCode": "841300555"
              },
              "contactInformation": {
                "contacts": [
                  {
                    "communicationMode": "Uniform Resource Locator (URL)",
                    "communicationNumber": "WWW.UHCPROVIDER.COM"
                  }
                ]
              }
            }
          ],
          "additionalInformation": [
            {
              "description": "PROVIDER IS OUT NETWORK FOR MEMBER"
            },
            {
              "description": "FUNDING TYPE = SELF INSURED - LARGE GROUP"
            }
          ]
        },
        {
          "code": "C",
          "name": "Deductible",
          "coverageLevelCode": "FAM",
          "coverageLevel": "Family",
          "serviceTypeCodes": [
            "30"
          ],
          "serviceTypes": [
            "Health Benefit Plan Coverage"
          ],
          "timeQualifierCode": "23",
          "timeQualifier": "Calendar Year",
          "benefitAmount": "0",
          "inPlanNetworkIndicatorCode": "Y",
          "inPlanNetworkIndicator": "Yes",
          "additionalInformation": [
            {
              "description": "HIGHEST BENEFIT"
            },
            {
              "description": "DEDUCTIBLE IS MET WHEN FAMILY AMOUNT IS SATISFIED"
            }
          ]
        },
        {
          "code": "G",
          "name": "Out of Pocket (Stop Loss)",
          "coverageLevelCode": "FAM",
          "coverageLevel": "Family",
          "serviceTypeCodes": [
            "30"
          ],
          "serviceTypes": [
            "Health Benefit Plan Coverage"
          ],
          "insuranceTypeCode": "C1",
          "insuranceType": "Commercial",
          "timeQualifierCode": "23",
          "timeQualifier": "Calendar Year",
          "benefitAmount": "0",
          "inPlanNetworkIndicatorCode": "Y",
          "inPlanNetworkIndicator": "Yes",
          "additionalInformation": [
            {
              "description": "HIGHEST BENEFIT"
            },
            {
              "description": "OOP MAXIMUM IS MET WHEN FAMILY AMOUNT IS SATISFIED"
            }
          ]
        },
        {
          "code": "C",
          "name": "Deductible",
          "coverageLevelCode": "FAM",
          "coverageLevel": "Family",
          "serviceTypeCodes": [
            "30"
          ],
          "serviceTypes": [
            "Health Benefit Plan Coverage"
          ],
          "timeQualifierCode": "24",
          "timeQualifier": "Year to Date",
          "benefitAmount": "0",
          "inPlanNetworkIndicatorCode": "Y",
          "inPlanNetworkIndicator": "Yes",
          "additionalInformation": [
            {
              "description": "HIGHEST BENEFIT"
            },
            {
              "description": "DEDUCTIBLE IS MET WHEN FAMILY AMOUNT IS SATISFIED"
            }
          ]
        },
        {
          "code": "C",
          "name": "Deductible",
          "coverageLevelCode": "FAM",
          "coverageLevel": "Family",
          "serviceTypeCodes": [
            "30"
          ],
          "serviceTypes": [
            "Health Benefit Plan Coverage"
          ],
          "timeQualifierCode": "29",
          "timeQualifier": "Remaining",
          "benefitAmount": "0",
          "inPlanNetworkIndicatorCode": "Y",
          "inPlanNetworkIndicator": "Yes",
          "additionalInformation": [
            {
              "description": "HIGHEST BENEFIT"
            },
            {
              "description": "DEDUCTIBLE IS MET WHEN FAMILY AMOUNT IS SATISFIED"
            }
          ]
        },
        {
          "code": "G",
          "name": "Out of Pocket (Stop Loss)",
          "coverageLevelCode": "FAM",
          "coverageLevel": "Family",
          "serviceTypeCodes": [
            "30"
          ],
          "serviceTypes": [
            "Health Benefit Plan Coverage"
          ],
          "insuranceTypeCode": "C1",
          "insuranceType": "Commercial",
          "timeQualifierCode": "24",
          "timeQualifier": "Year to Date",
          "benefitAmount": "0",
          "inPlanNetworkIndicatorCode": "Y",
          "inPlanNetworkIndicator": "Yes",
          "additionalInformation": [
            {
              "description": "HIGHEST BENEFIT"
            },
            {
              "description": "OOP MAXIMUM IS MET WHEN FAMILY AMOUNT IS SATISFIED"
            }
          ]
        },
        {
          "code": "G",
          "name": "Out of Pocket (Stop Loss)",
          "coverageLevelCode": "FAM",
          "coverageLevel": "Family",
          "serviceTypeCodes": [
            "30"
          ],
          "serviceTypes": [
            "Health Benefit Plan Coverage"
          ],
          "insuranceTypeCode": "C1",
          "insuranceType": "Commercial",
          "timeQualifierCode": "29",
          "timeQualifier": "Remaining",
          "benefitAmount": "0",
          "inPlanNetworkIndicatorCode": "Y",
          "inPlanNetworkIndicator": "Yes",
          "additionalInformation": [
            {
              "description": "HIGHEST BENEFIT"
            },
            {
              "description": "OOP MAXIMUM IS MET WHEN FAMILY AMOUNT IS SATISFIED"
            }
          ]
        },
        {
          "code": "C",
          "name": "Deductible",
          "coverageLevelCode": "FAM",
          "coverageLevel": "Family",
          "serviceTypeCodes": [
            "30"
          ],
          "serviceTypes": [
            "Health Benefit Plan Coverage"
          ],
          "timeQualifierCode": "24",
          "timeQualifier": "Year to Date",
          "benefitAmount": "3200",
          "inPlanNetworkIndicatorCode": "W",
          "inPlanNetworkIndicator": "Not Applicable",
          "additionalInformation": [
            {
              "description": "DEDUCTIBLE IS MET WHEN FAMILY AMOUNT IS SATISFIED"
            }
          ]
        },
        {
          "code": "G",
          "name": "Out of Pocket (Stop Loss)",
          "coverageLevelCode": "FAM",
          "coverageLevel": "Family",
          "serviceTypeCodes": [
            "30"
          ],
          "serviceTypes": [
            "Health Benefit Plan Coverage"
          ],
          "insuranceTypeCode": "C1",
          "insuranceType": "Commercial",
          "timeQualifierCode": "24",
          "timeQualifier": "Year to Date",
          "benefitAmount": "5555.16",
          "inPlanNetworkIndicatorCode": "W",
          "inPlanNetworkIndicator": "Not Applicable",
          "additionalInformation": [
            {
              "description": "OOP MAXIMUM IS MET WHEN FAMILY AMOUNT IS SATISFIED"
            }
          ]
        },
        {
          "code": "G",
          "name": "Out of Pocket (Stop Loss)",
          "coverageLevelCode": "FAM",
          "coverageLevel": "Family",
          "serviceTypeCodes": [
            "30"
          ],
          "serviceTypes": [
            "Health Benefit Plan Coverage"
          ],
          "insuranceTypeCode": "C1",
          "insuranceType": "Commercial",
          "timeQualifierCode": "23",
          "timeQualifier": "Calendar Year",
          "benefitAmount": "15500",
          "inPlanNetworkIndicatorCode": "N",
          "inPlanNetworkIndicator": "No",
          "additionalInformation": [
            {
              "description": "OOP MAXIMUM IS MET WHEN FAMILY AMOUNT IS SATISFIED"
            }
          ]
        },
        {
          "code": "G",
          "name": "Out of Pocket (Stop Loss)",
          "coverageLevelCode": "FAM",
          "coverageLevel": "Family",
          "serviceTypeCodes": [
            "30"
          ],
          "serviceTypes": [
            "Health Benefit Plan Coverage"
          ],
          "insuranceTypeCode": "C1",
          "insuranceType": "Commercial",
          "timeQualifierCode": "23",
          "timeQualifier": "Calendar Year",
          "benefitAmount": "6850",
          "inPlanNetworkIndicatorCode": "Y",
          "inPlanNetworkIndicator": "Yes",
          "additionalInformation": [
            {
              "description": "OOP MAXIMUM IS MET WHEN FAMILY AMOUNT IS SATISFIED"
            }
          ]
        },
        {
          "code": "C",
          "name": "Deductible",
          "coverageLevelCode": "FAM",
          "coverageLevel": "Family",
          "serviceTypeCodes": [
            "30"
          ],
          "serviceTypes": [
            "Health Benefit Plan Coverage"
          ],
          "timeQualifierCode": "23",
          "timeQualifier": "Calendar Year",
          "benefitAmount": "3200",
          "inPlanNetworkIndicatorCode": "Y",
          "inPlanNetworkIndicator": "Yes",
          "additionalInformation": [
            {
              "description": "DEDUCTIBLE IS MET WHEN FAMILY AMOUNT IS SATISFIED"
            }
          ]
        },
        {
          "code": "C",
          "name": "Deductible",
          "coverageLevelCode": "FAM",
          "coverageLevel": "Family",
          "serviceTypeCodes": [
            "30"
          ],
          "serviceTypes": [
            "Health Benefit Plan Coverage"
          ],
          "timeQualifierCode": "29",
          "timeQualifier": "Remaining",
          "benefitAmount": "0",
          "inPlanNetworkIndicatorCode": "Y",
          "inPlanNetworkIndicator": "Yes",
          "additionalInformation": [
            {
              "description": "DEDUCTIBLE IS MET WHEN FAMILY AMOUNT IS SATISFIED"
            }
          ]
        },
        {
          "code": "C",
          "name": "Deductible",
          "coverageLevelCode": "FAM",
          "coverageLevel": "Family",
          "serviceTypeCodes": [
            "30"
          ],
          "serviceTypes": [
            "Health Benefit Plan Coverage"
          ],
          "timeQualifierCode": "23",
          "timeQualifier": "Calendar Year",
          "benefitAmount": "5000",
          "inPlanNetworkIndicatorCode": "N",
          "inPlanNetworkIndicator": "No",
          "additionalInformation": [
            {
              "description": "DEDUCTIBLE IS MET WHEN FAMILY AMOUNT IS SATISFIED"
            }
          ]
        },
        {
          "code": "G",
          "name": "Out of Pocket (Stop Loss)",
          "coverageLevelCode": "FAM",
          "coverageLevel": "Family",
          "serviceTypeCodes": [
            "30"
          ],
          "serviceTypes": [
            "Health Benefit Plan Coverage"
          ],
          "insuranceTypeCode": "C1",
          "insuranceType": "Commercial",
          "timeQualifierCode": "29",
          "timeQualifier": "Remaining",
          "benefitAmount": "1294.84",
          "inPlanNetworkIndicatorCode": "Y",
          "inPlanNetworkIndicator": "Yes",
          "additionalInformation": [
            {
              "description": "OOP MAXIMUM IS MET WHEN FAMILY AMOUNT IS SATISFIED"
            }
          ]
        },
        {
          "code": "G",
          "name": "Out of Pocket (Stop Loss)",
          "coverageLevelCode": "FAM",
          "coverageLevel": "Family",
          "serviceTypeCodes": [
            "30"
          ],
          "serviceTypes": [
            "Health Benefit Plan Coverage"
          ],
          "insuranceTypeCode": "C1",
          "insuranceType": "Commercial",
          "timeQualifierCode": "29",
          "timeQualifier": "Remaining",
          "benefitAmount": "9944.84",
          "inPlanNetworkIndicatorCode": "N",
          "inPlanNetworkIndicator": "No",
          "additionalInformation": [
            {
              "description": "OOP MAXIMUM IS MET WHEN FAMILY AMOUNT IS SATISFIED"
            }
          ]
        },
        {
          "code": "C",
          "name": "Deductible",
          "coverageLevelCode": "FAM",
          "coverageLevel": "Family",
          "serviceTypeCodes": [
            "30"
          ],
          "serviceTypes": [
            "Health Benefit Plan Coverage"
          ],
          "timeQualifierCode": "29",
          "timeQualifier": "Remaining",
          "benefitAmount": "1800",
          "inPlanNetworkIndicatorCode": "N",
          "inPlanNetworkIndicator": "No",
          "additionalInformation": [
            {
              "description": "DEDUCTIBLE IS MET WHEN FAMILY AMOUNT IS SATISFIED"
            }
          ]
        },
        {
          "code": "1",
          "name": "Active Coverage",
          "serviceTypeCodes": [
            "A6"
          ],
          "serviceTypes": [
            "Psychotherapy"
          ],
          "inPlanNetworkIndicatorCode": "Y",
          "inPlanNetworkIndicator": "Yes",
          "additionalInformation": [
            {
              "description": "HIGHEST BENEFIT"
            }
          ]
        },
        {
          "code": "1",
          "name": "Active Coverage",
          "serviceTypeCodes": [
            "A6"
          ],
          "serviceTypes": [
            "Psychotherapy"
          ],
          "inPlanNetworkIndicatorCode": "Y",
          "inPlanNetworkIndicator": "Yes",
          "additionalInformation": [
            {
              "description": "ABLETO FULLY FUNDED"
            }
          ]
        },
        {
          "code": "1",
          "name": "Active Coverage",
          "serviceTypeCodes": [
            "A6"
          ],
          "serviceTypes": [
            "Psychotherapy"
          ],
          "inPlanNetworkIndicatorCode": "Y",
          "inPlanNetworkIndicator": "Yes",
          "additionalInformation": [
            {
              "description": "ABLETO PARTIALLY FUNDED"
            }
          ]
        },
        {
          "code": "1",
          "name": "Active Coverage",
          "serviceTypeCodes": [
            "A6"
          ],
          "serviceTypes": [
            "Psychotherapy"
          ],
          "inPlanNetworkIndicatorCode": "W",
          "inPlanNetworkIndicator": "Not Applicable"
        },
        {
          "code": "A",
          "name": "Co-Insurance",
          "coverageLevelCode": "IND",
          "coverageLevel": "Individual",
          "serviceTypeCodes": [
            "A6"
          ],
          "serviceTypes": [
            "Psychotherapy"
          ],
          "timeQualifierCode": "27",
          "timeQualifier": "Visit",
          "benefitPercent": "0.4",
          "inPlanNetworkIndicatorCode": "N",
          "inPlanNetworkIndicator": "No",
          "eligibilityAdditionalInformation": {
            "codeListQualifierCode": "ZZ",
            "codeListQualifier": "Mutually Defined",
            "industryCode": "11",
            "industry": "Office"
          },
          "eligibilityAdditionalInformationList": [
            {
              "codeListQualifierCode": "ZZ",
              "codeListQualifier": "Mutually Defined",
              "industryCode": "11",
              "industry": "Office"
            }
          ]
        },
        {
          "code": "A",
          "name": "Co-Insurance",
          "coverageLevelCode": "IND",
          "coverageLevel": "Individual",
          "serviceTypeCodes": [
            "A6"
          ],
          "serviceTypes": [
            "Psychotherapy"
          ],
          "timeQualifierCode": "27",
          "timeQualifier": "Visit",
          "benefitPercent": "0.2",
          "inPlanNetworkIndicatorCode": "Y",
          "inPlanNetworkIndicator": "Yes",
          "eligibilityAdditionalInformation": {
            "codeListQualifierCode": "ZZ",
            "codeListQualifier": "Mutually Defined",
            "industryCode": "11",
            "industry": "Office"
          },
          "eligibilityAdditionalInformationList": [
            {
              "codeListQualifierCode": "ZZ",
              "codeListQualifier": "Mutually Defined",
              "industryCode": "11",
              "industry": "Office"
            }
          ]
        },
        {
          "code": "A",
          "name": "Co-Insurance",
          "coverageLevelCode": "IND",
          "coverageLevel": "Individual",
          "serviceTypeCodes": [
            "A6"
          ],
          "serviceTypes": [
            "Psychotherapy"
          ],
          "timeQualifierCode": "27",
          "timeQualifier": "Visit",
          "benefitPercent": "0.2",
          "inPlanNetworkIndicatorCode": "Y",
          "inPlanNetworkIndicator": "Yes",
          "additionalInformation": [
            {
              "description": "HIGHEST BENEFIT"
            }
          ],
          "eligibilityAdditionalInformation": {
            "codeListQualifierCode": "ZZ",
            "codeListQualifier": "Mutually Defined",
            "industryCode": "11",
            "industry": "Office"
          },
          "eligibilityAdditionalInformationList": [
            {
              "codeListQualifierCode": "ZZ",
              "codeListQualifier": "Mutually Defined",
              "industryCode": "11",
              "industry": "Office"
            }
          ]
        },
        {
          "code": "A",
          "name": "Co-Insurance",
          "coverageLevelCode": "IND",
          "coverageLevel": "Individual",
          "serviceTypeCodes": [
            "A6"
          ],
          "serviceTypes": [
            "Psychotherapy"
          ],
          "timeQualifierCode": "27",
          "timeQualifier": "Visit",
          "benefitPercent": "0.2",
          "inPlanNetworkIndicatorCode": "Y",
          "inPlanNetworkIndicator": "Yes",
          "additionalInformation": [
            {
              "description": "ABLETO PARTIALLY FUNDED"
            }
          ],
          "eligibilityAdditionalInformation": {
            "codeListQualifierCode": "ZZ",
            "codeListQualifier": "Mutually Defined",
            "industryCode": "11",
            "industry": "Office"
          },
          "eligibilityAdditionalInformationList": [
            {
              "codeListQualifierCode": "ZZ",
              "codeListQualifier": "Mutually Defined",
              "industryCode": "11",
              "industry": "Office"
            }
          ]
        },
        {
          "code": "A",
          "name": "Co-Insurance",
          "coverageLevelCode": "IND",
          "coverageLevel": "Individual",
          "serviceTypeCodes": [
            "A6"
          ],
          "serviceTypes": [
            "Psychotherapy"
          ],
          "timeQualifierCode": "27",
          "timeQualifier": "Visit",
          "benefitPercent": "0",
          "inPlanNetworkIndicatorCode": "Y",
          "inPlanNetworkIndicator": "Yes",
          "additionalInformation": [
            {
              "description": "ABLETO FULLY FUNDED"
            }
          ],
          "eligibilityAdditionalInformation": {
            "codeListQualifierCode": "ZZ",
            "codeListQualifier": "Mutually Defined",
            "industryCode": "11",
            "industry": "Office"
          },
          "eligibilityAdditionalInformationList": [
            {
              "codeListQualifierCode": "ZZ",
              "codeListQualifier": "Mutually Defined",
              "industryCode": "11",
              "industry": "Office"
            }
          ]
        },
        {
          "code": "B",
          "name": "Co-Payment",
          "coverageLevelCode": "IND",
          "coverageLevel": "Individual",
          "serviceTypeCodes": [
            "A6"
          ],
          "serviceTypes": [
            "Psychotherapy"
          ],
          "timeQualifierCode": "27",
          "timeQualifier": "Visit",
          "benefitAmount": "0",
          "inPlanNetworkIndicatorCode": "Y",
          "inPlanNetworkIndicator": "Yes",
          "additionalInformation": [
            {
              "description": "HIGHEST BENEFIT"
            }
          ],
          "eligibilityAdditionalInformation": {
            "codeListQualifierCode": "ZZ",
            "codeListQualifier": "Mutually Defined",
            "industryCode": "11",
            "industry": "Office"
          },
          "eligibilityAdditionalInformationList": [
            {
              "codeListQualifierCode": "ZZ",
              "codeListQualifier": "Mutually Defined",
              "industryCode": "11",
              "industry": "Office"
            }
          ]
        },
        {
          "code": "B",
          "name": "Co-Payment",
          "coverageLevelCode": "IND",
          "coverageLevel": "Individual",
          "serviceTypeCodes": [
            "A6"
          ],
          "serviceTypes": [
            "Psychotherapy"
          ],
          "timeQualifierCode": "27",
          "timeQualifier": "Visit",
          "benefitAmount": "0",
          "inPlanNetworkIndicatorCode": "Y",
          "inPlanNetworkIndicator": "Yes",
          "additionalInformation": [
            {
              "description": "ABLETO PARTIALLY FUNDED"
            }
          ],
          "eligibilityAdditionalInformation": {
            "codeListQualifierCode": "ZZ",
            "codeListQualifier": "Mutually Defined",
            "industryCode": "11",
            "industry": "Office"
          },
          "eligibilityAdditionalInformationList": [
            {
              "codeListQualifierCode": "ZZ",
              "codeListQualifier": "Mutually Defined",
              "industryCode": "11",
              "industry": "Office"
            }
          ]
        },
        {
          "code": "B",
          "name": "Co-Payment",
          "coverageLevelCode": "IND",
          "coverageLevel": "Individual",
          "serviceTypeCodes": [
            "A6"
          ],
          "serviceTypes": [
            "Psychotherapy"
          ],
          "timeQualifierCode": "27",
          "timeQualifier": "Visit",
          "benefitAmount": "0",
          "inPlanNetworkIndicatorCode": "W",
          "inPlanNetworkIndicator": "Not Applicable",
          "eligibilityAdditionalInformation": {
            "codeListQualifierCode": "ZZ",
            "codeListQualifier": "Mutually Defined",
            "industryCode": "11",
            "industry": "Office"
          },
          "eligibilityAdditionalInformationList": [
            {
              "codeListQualifierCode": "ZZ",
              "codeListQualifier": "Mutually Defined",
              "industryCode": "11",
              "industry": "Office"
            }
          ]
        },
        {
          "code": "B",
          "name": "Co-Payment",
          "coverageLevelCode": "IND",
          "coverageLevel": "Individual",
          "serviceTypeCodes": [
            "A6"
          ],
          "serviceTypes": [
            "Psychotherapy"
          ],
          "timeQualifierCode": "27",
          "timeQualifier": "Visit",
          "benefitAmount": "0",
          "inPlanNetworkIndicatorCode": "Y",
          "inPlanNetworkIndicator": "Yes",
          "additionalInformation": [
            {
              "description": "ABLETO FULLY FUNDED"
            }
          ],
          "eligibilityAdditionalInformation": {
            "codeListQualifierCode": "ZZ",
            "codeListQualifier": "Mutually Defined",
            "industryCode": "11",
            "industry": "Office"
          },
          "eligibilityAdditionalInformationList": [
            {
              "codeListQualifierCode": "ZZ",
              "codeListQualifier": "Mutually Defined",
              "industryCode": "11",
              "industry": "Office"
            }
          ]
        },
        {
          "code": "C",
          "name": "Deductible",
          "serviceTypeCodes": [
            "A6"
          ],
          "serviceTypes": [
            "Psychotherapy"
          ],
          "timeQualifierCode": "27",
          "timeQualifier": "Visit",
          "benefitAmount": "0",
          "inPlanNetworkIndicatorCode": "Y",
          "inPlanNetworkIndicator": "Yes"
        },
        {
          "code": "C",
          "name": "Deductible",
          "coverageLevelCode": "FAM",
          "coverageLevel": "Family",
          "serviceTypeCodes": [
            "A6"
          ],
          "serviceTypes": [
            "Psychotherapy"
          ],
          "timeQualifierCode": "23",
          "timeQualifier": "Calendar Year",
          "benefitAmount": "0",
          "inPlanNetworkIndicatorCode": "Y",
          "inPlanNetworkIndicator": "Yes",
          "additionalInformation": [
            {
              "description": "ABLETO FULLY FUNDED"
            }
          ]
        },
        {
          "code": "F",
          "name": "Limitations",
          "coverageLevelCode": "IND",
          "coverageLevel": "Individual",
          "serviceTypeCodes": [
            "A6"
          ],
          "serviceTypes": [
            "Psychotherapy"
          ],
          "timeQualifierCode": "27",
          "timeQualifier": "Visit",
          "benefitAmount": "0",
          "inPlanNetworkIndicatorCode": "Y",
          "inPlanNetworkIndicator": "Yes",
          "additionalInformation": [
            {
              "description": "ABLETO PARTIALLY FUNDED"
            }
          ]
        },
        {
          "code": "F",
          "name": "Limitations",
          "coverageLevelCode": "IND",
          "coverageLevel": "Individual",
          "serviceTypeCodes": [
            "A6"
          ],
          "serviceTypes": [
            "Psychotherapy"
          ],
          "timeQualifierCode": "27",
          "timeQualifier": "Visit",
          "benefitAmount": "0",
          "inPlanNetworkIndicatorCode": "Y",
          "inPlanNetworkIndicator": "Yes",
          "additionalInformation": [
            {
              "description": "HIGHEST BENEFIT"
            }
          ]
        },
        {
          "code": "F",
          "name": "Limitations",
          "coverageLevelCode": "IND",
          "coverageLevel": "Individual",
          "serviceTypeCodes": [
            "A6"
          ],
          "serviceTypes": [
            "Psychotherapy"
          ],
          "timeQualifierCode": "27",
          "timeQualifier": "Visit",
          "benefitAmount": "0",
          "inPlanNetworkIndicatorCode": "Y",
          "inPlanNetworkIndicator": "Yes",
          "additionalInformation": [
            {
              "description": "ABLETO FULLY FUNDED"
            }
          ]
        },
        {
          "code": "F",
          "name": "Limitations",
          "coverageLevelCode": "IND",
          "coverageLevel": "Individual",
          "serviceTypeCodes": [
            "A6"
          ],
          "serviceTypes": [
            "Psychotherapy"
          ],
          "timeQualifierCode": "27",
          "timeQualifier": "Visit",
          "benefitAmount": "0",
          "inPlanNetworkIndicatorCode": "Y",
          "inPlanNetworkIndicator": "Yes"
        },
        {
          "code": "F",
          "name": "Limitations",
          "coverageLevelCode": "IND",
          "coverageLevel": "Individual",
          "serviceTypeCodes": [
            "A6"
          ],
          "serviceTypes": [
            "Psychotherapy"
          ],
          "timeQualifierCode": "27",
          "timeQualifier": "Visit",
          "benefitAmount": "0",
          "inPlanNetworkIndicatorCode": "Y",
          "inPlanNetworkIndicator": "Yes",
          "additionalInformation": [
            {
              "description": "ADDITIONAL COVERED PER OCCURRENCE"
            },
            {
              "description": "ABLETO PARTIALLY FUNDED"
            }
          ]
        },
        {
          "code": "F",
          "name": "Limitations",
          "coverageLevelCode": "IND",
          "coverageLevel": "Individual",
          "serviceTypeCodes": [
            "A6"
          ],
          "serviceTypes": [
            "Psychotherapy"
          ],
          "timeQualifierCode": "27",
          "timeQualifier": "Visit",
          "benefitAmount": "0",
          "inPlanNetworkIndicatorCode": "Y",
          "inPlanNetworkIndicator": "Yes",
          "additionalInformation": [
            {
              "description": "ADDITIONAL COVERED PER OCCURRENCE"
            }
          ]
        },
        {
          "code": "F",
          "name": "Limitations",
          "coverageLevelCode": "IND",
          "coverageLevel": "Individual",
          "serviceTypeCodes": [
            "A6"
          ],
          "serviceTypes": [
            "Psychotherapy"
          ],
          "timeQualifierCode": "27",
          "timeQualifier": "Visit",
          "benefitAmount": "0",
          "inPlanNetworkIndicatorCode": "Y",
          "inPlanNetworkIndicator": "Yes",
          "additionalInformation": [
            {
              "description": "ADDITIONAL COVERED PER OCCURRENCE"
            },
            {
              "description": "HIGHEST BENEFIT"
            }
          ]
        },
        {
          "code": "F",
          "name": "Limitations",
          "coverageLevelCode": "IND",
          "coverageLevel": "Individual",
          "serviceTypeCodes": [
            "A6"
          ],
          "serviceTypes": [
            "Psychotherapy"
          ],
          "timeQualifierCode": "27",
          "timeQualifier": "Visit",
          "benefitAmount": "0",
          "inPlanNetworkIndicatorCode": "Y",
          "inPlanNetworkIndicator": "Yes",
          "additionalInformation": [
            {
              "description": "ADDITIONAL COVERED PER OCCURRENCE"
            },
            {
              "description": "ABLETO FULLY FUNDED"
            }
          ]
        },
        {
          "code": "X",
          "name": "Health Care Facility",
          "inPlanNetworkIndicatorCode": "W",
          "inPlanNetworkIndicator": "Not Applicable",
          "benefitsRelatedEntity": {
            "entityIdentifier": "Provider",
            "entityType": "Non-Person Entity",
            "entityName": "NEW YORK MEDICAL BEHAVIORAL HEALTH SERVICES",
            "entityIdentification": "XX",
            "entityIdentificationValue": "1235600834"
          },
          "benefitsRelatedEntities": [
            {
              "entityIdentifier": "Provider",
              "entityType": "Non-Person Entity",
              "entityName": "NEW YORK MEDICAL BEHAVIORAL HEALTH SERVICES",
              "entityIdentification": "XX",
              "entityIdentificationValue": "1235600834"
            }
          ]
        }
      ],
      "errors": [],
      "x12": "ISA*00*          *00*          *ZZ*STEDI          *01*117151744      *260709*1835*^*00501*345459952*0*T*`~GS*HB*STEDI*117151744*20260709*183539*1*X*005010X279A1~ST*271*0001*005010X279A1~BHT*0022*11*01JDQV00485EPP4D6BD8GM1SWM*20260325*0901~HL*1**20*1~NM1*PR*2*UNITEDHEALTHCARE*****PI*87726~PER*IC**UR*WWW.UHCPROVIDER.COM~HL*2*1*21*1~NM1*1P*2*Jerde - Sauer*****XX*1999999984~HL*3*2*22*1~NM1*IL*1*Doe*John*A***MI*UHC202649~REF*6P*186084~REF*18*UVdQAC5j6f~N3*123 Sunnyvale Lane~N4*Fosterburgh*TX*91016~DMG*D8*19760214*M~DTP*291*RD8*20240101-20241231~HL*4*3*23*0~NM1*03*1*Doe*Jane*Alex~REF*18*UVdQAC5j6f~DMG*D8*19521121*F~INS*N*01*001*25~EB*1**30*C1*CHOICE PLUS*******W~DTP*636*D8*20240731~MSG*PROVIDER IS OUT NETWORK FOR MEMBER~MSG*FUNDING TYPE = SELF INSURED - LARGE GROUP~LS*2120~NM1*PR*2*UNITEDHEALTHCARE*****PI*87726~N3*P.O. BOX 30555~N4*SALT LAKE CITY*UT*841300555~PER*IC**UR*WWW.UHCPROVIDER.COM~LE*2120~EB*C*FAM*30***23*0*****Y~MSG*HIGHEST BENEFIT~MSG*DEDUCTIBLE IS MET WHEN FAMILY AMOUNT IS SATISFIED~EB*G*FAM*30*C1**23*0*****Y~MSG*HIGHEST BENEFIT~MSG*OOP MAXIMUM IS MET WHEN FAMILY AMOUNT IS SATISFIED~EB*C*FAM*30***24*0*****Y~MSG*HIGHEST BENEFIT~MSG*DEDUCTIBLE IS MET WHEN FAMILY AMOUNT IS SATISFIED~EB*C*FAM*30***29*0*****Y~MSG*HIGHEST BENEFIT~MSG*DEDUCTIBLE IS MET WHEN FAMILY AMOUNT IS SATISFIED~EB*G*FAM*30*C1**24*0*****Y~MSG*HIGHEST BENEFIT~MSG*OOP MAXIMUM IS MET WHEN FAMILY AMOUNT IS SATISFIED~EB*G*FAM*30*C1**29*0*****Y~MSG*HIGHEST BENEFIT~MSG*OOP MAXIMUM IS MET WHEN FAMILY AMOUNT IS SATISFIED~EB*C*FAM*30***24*3200*****W~MSG*DEDUCTIBLE IS MET WHEN FAMILY AMOUNT IS SATISFIED~EB*G*FAM*30*C1**24*5555.16*****W~MSG*OOP MAXIMUM IS MET WHEN FAMILY AMOUNT IS SATISFIED~EB*G*FAM*30*C1**23*15500*****N~MSG*OOP MAXIMUM IS MET WHEN FAMILY AMOUNT IS SATISFIED~EB*G*FAM*30*C1**23*6850*****Y~MSG*OOP MAXIMUM IS MET WHEN FAMILY AMOUNT IS SATISFIED~EB*C*FAM*30***23*3200*****Y~MSG*DEDUCTIBLE IS MET WHEN FAMILY AMOUNT IS SATISFIED~EB*C*FAM*30***29*0*****Y~MSG*DEDUCTIBLE IS MET WHEN FAMILY AMOUNT IS SATISFIED~EB*C*FAM*30***23*5000*****N~MSG*DEDUCTIBLE IS MET WHEN FAMILY AMOUNT IS SATISFIED~EB*G*FAM*30*C1**29*1294.84*****Y~MSG*OOP MAXIMUM IS MET WHEN FAMILY AMOUNT IS SATISFIED~EB*G*FAM*30*C1**29*9944.84*****N~MSG*OOP MAXIMUM IS MET WHEN FAMILY AMOUNT IS SATISFIED~EB*C*FAM*30***29*1800*****N~MSG*DEDUCTIBLE IS MET WHEN FAMILY AMOUNT IS SATISFIED~EB*1**A6*********Y~MSG*HIGHEST BENEFIT~EB*1**A6*********Y~MSG*ABLETO FULLY FUNDED~EB*1**A6*********Y~MSG*ABLETO PARTIALLY FUNDED~EB*1**A6*********W~EB*A*IND*A6***27**.4****N~III*ZZ*11~EB*A*IND*A6***27**.2****Y~III*ZZ*11~EB*A*IND*A6***27**.2****Y~MSG*HIGHEST BENEFIT~III*ZZ*11~EB*A*IND*A6***27**.2****Y~MSG*ABLETO PARTIALLY FUNDED~III*ZZ*11~EB*A*IND*A6***27**0****Y~MSG*ABLETO FULLY FUNDED~III*ZZ*11~EB*B*IND*A6***27*0*****Y~MSG*HIGHEST BENEFIT~III*ZZ*11~EB*B*IND*A6***27*0*****Y~MSG*ABLETO PARTIALLY FUNDED~III*ZZ*11~EB*B*IND*A6***27*0*****W~III*ZZ*11~EB*B*IND*A6***27*0*****Y~MSG*ABLETO FULLY FUNDED~III*ZZ*11~EB*C**A6***27*0*****Y~EB*C*FAM*A6***23*0*****Y~MSG*ABLETO FULLY FUNDED~EB*F*IND*A6***27*0*****Y~MSG*ABLETO PARTIALLY FUNDED~EB*F*IND*A6***27*0*****Y~MSG*HIGHEST BENEFIT~EB*F*IND*A6***27*0*****Y~MSG*ABLETO FULLY FUNDED~EB*F*IND*A6***27*0*****Y~EB*F*IND*A6***27*0*****Y~MSG*ADDITIONAL COVERED PER OCCURRENCE~MSG*ABLETO PARTIALLY FUNDED~EB*F*IND*A6***27*0*****Y~MSG*ADDITIONAL COVERED PER OCCURRENCE~EB*F*IND*A6***27*0*****Y~MSG*ADDITIONAL COVERED PER OCCURRENCE~MSG*HIGHEST BENEFIT~EB*F*IND*A6***27*0*****Y~MSG*ADDITIONAL COVERED PER OCCURRENCE~MSG*ABLETO FULLY FUNDED~EB*X***********W~LS*2120~NM1*1P*2*NEW YORK MEDICAL BEHAVIORAL HEALTH SERVICES*****XX*1235600834~LE*2120~SE*125*0001~GE*1*1~IEA*1*345459952~",
      "eligibilitySearchId": "019f4829-fecb-7b60-86a9-6ca38f7d1db7",
      "id": "ec_019f4829-fecb-7b60-86a9-6c900ad94bfb"
    }
    ```
  </Tab>
</Tabs>

#### Raw X12 endpoint [#raw-x12-endpoint]

<Tabs items="[&#x22;Request - X12 EDI&#x22;, &#x22;Response&#x22;]">
  <Tab value="Request - X12 EDI">
    ```bash
    curl --request POST \
      --url https://healthcare.us.stedi.com/2024-04-01/change/medicalnetwork/eligibility/v3/raw-x12 \
      --header 'Authorization: <api-key>' \
      --header 'Content-Type: application/json' \
      --data '{
      "x12": "ISA*00*          *00*          *ZZ*AV09311993     *01*030240928      *210101*1200*^*00501*000000001*0*P*>~GS*HS*1510848*030240928*20210101*120000*1*X*005010X279A1~ST*270*0001*005010X279A1~BHT*0022*13*00000000000000000000000000*20210101*1200~HL*1**20*1~NM1*PR*2*UnitedHealthcare*****PI*87726~HL*2*1*21*1~NM1*1P*2*Provider Name*****XX*1999999984~HL*3*2*22*1~NM1*IL*1*Doe*John****MI*UHC202649~HL*4*3*23*0~TRN*1*00000000000000000000000000*3117151744~NM1*03*1*Doe*Jane~DMG*D8*19521121~EQ*30~SE*14*0001~GE*1*1~IEA*1*000000001~"
    }'
    ```
  </Tab>

  <Tab value="Response">
    {/* schema:EligibilityCheckResponseContent */}

    ```json
    {
      "meta": {
        "senderId": "STEDI",
        "submitterId": "117151744",
        "applicationMode": "test",
        "traceId": "01JDQV00485EPP4D6BD8GM1SWM",
        "outboundTraceId": "01KX42KZPCP7W5HHVSEY1Z8TEW"
      },
      "controlNumber": "345459952",
      "reassociationKey": "345459952",
      "tradingPartnerServiceId": "87726",
      "provider": {
        "providerName": "Jerde - Sauer",
        "entityIdentifier": "Provider",
        "entityType": "Non-Person Entity",
        "npi": "1999999984"
      },
      "subscriber": {
        "memberId": "UHC202649",
        "firstName": "John",
        "lastName": "Doe",
        "middleName": "A",
        "gender": "M",
        "entityIdentifier": "Insured or Subscriber",
        "entityType": "Person",
        "dateOfBirth": "19760214",
        "groupNumber": "186084",
        "planNumber": "UVdQAC5j6f",
        "address": {
          "address1": "123 Sunnyvale Lane",
          "city": "Fosterburgh",
          "state": "TX",
          "postalCode": "91016"
        }
      },
      "dependents": [
        {
          "firstName": "Jane",
          "lastName": "Doe",
          "middleName": "Alex",
          "gender": "F",
          "entityType": "Person",
          "dateOfBirth": "19521121",
          "planNumber": "UVdQAC5j6f",
          "relationToSubscriber": "Spouse",
          "relationToSubscriberCode": "01",
          "insuredIndicator": "N",
          "maintenanceTypeCode": "001",
          "maintenanceReasonCode": "25"
        }
      ],
      "payer": {
        "entityIdentifier": "Payer",
        "entityType": "Non-Person Entity",
        "name": "UNITEDHEALTHCARE",
        "payorIdentification": "87726",
        "contactInformation": {
          "contacts": [
            {
              "communicationMode": "Uniform Resource Locator (URL)",
              "communicationNumber": "WWW.UHCPROVIDER.COM"
            }
          ]
        }
      },
      "planInformation": {
        "planNumber": "UVdQAC5j6f",
        "groupNumber": "186084"
      },
      "planDateInformation": {
        "plan": "20240101-20241231"
      },
      "planStatus": [
        {
          "statusCode": "1",
          "status": "Active Coverage",
          "planDetails": "CHOICE PLUS",
          "serviceTypeCodes": [
            "30"
          ]
        },
        {
          "statusCode": "1",
          "status": "Active Coverage",
          "serviceTypeCodes": [
            "A6"
          ]
        },
        {
          "statusCode": "1",
          "status": "Active Coverage",
          "serviceTypeCodes": [
            "A6"
          ]
        },
        {
          "statusCode": "1",
          "status": "Active Coverage",
          "serviceTypeCodes": [
            "A6"
          ]
        },
        {
          "statusCode": "1",
          "status": "Active Coverage",
          "serviceTypeCodes": [
            "A6"
          ]
        }
      ],
      "benefitsInformation": [
        {
          "code": "1",
          "name": "Active Coverage",
          "serviceTypeCodes": [
            "30"
          ],
          "serviceTypes": [
            "Health Benefit Plan Coverage"
          ],
          "insuranceTypeCode": "C1",
          "insuranceType": "Commercial",
          "planCoverage": "CHOICE PLUS",
          "inPlanNetworkIndicatorCode": "W",
          "inPlanNetworkIndicator": "Not Applicable",
          "benefitsDateInformation": {
            "dateOfLastUpdate": "20240731"
          },
          "benefitsRelatedEntity": {
            "entityIdentifier": "Payer",
            "entityType": "Non-Person Entity",
            "entityName": "UNITEDHEALTHCARE",
            "entityIdentification": "PI",
            "entityIdentificationValue": "87726",
            "address": {
              "address1": "P.O. BOX 30555",
              "city": "SALT LAKE CITY",
              "state": "UT",
              "postalCode": "841300555"
            },
            "contactInformation": {
              "contacts": [
                {
                  "communicationMode": "Uniform Resource Locator (URL)",
                  "communicationNumber": "WWW.UHCPROVIDER.COM"
                }
              ]
            }
          },
          "benefitsRelatedEntities": [
            {
              "entityIdentifier": "Payer",
              "entityType": "Non-Person Entity",
              "entityName": "UNITEDHEALTHCARE",
              "entityIdentification": "PI",
              "entityIdentificationValue": "87726",
              "address": {
                "address1": "P.O. BOX 30555",
                "city": "SALT LAKE CITY",
                "state": "UT",
                "postalCode": "841300555"
              },
              "contactInformation": {
                "contacts": [
                  {
                    "communicationMode": "Uniform Resource Locator (URL)",
                    "communicationNumber": "WWW.UHCPROVIDER.COM"
                  }
                ]
              }
            }
          ],
          "additionalInformation": [
            {
              "description": "PROVIDER IS OUT NETWORK FOR MEMBER"
            },
            {
              "description": "FUNDING TYPE = SELF INSURED - LARGE GROUP"
            }
          ]
        },
        {
          "code": "C",
          "name": "Deductible",
          "coverageLevelCode": "FAM",
          "coverageLevel": "Family",
          "serviceTypeCodes": [
            "30"
          ],
          "serviceTypes": [
            "Health Benefit Plan Coverage"
          ],
          "timeQualifierCode": "23",
          "timeQualifier": "Calendar Year",
          "benefitAmount": "0",
          "inPlanNetworkIndicatorCode": "Y",
          "inPlanNetworkIndicator": "Yes",
          "additionalInformation": [
            {
              "description": "HIGHEST BENEFIT"
            },
            {
              "description": "DEDUCTIBLE IS MET WHEN FAMILY AMOUNT IS SATISFIED"
            }
          ]
        },
        {
          "code": "G",
          "name": "Out of Pocket (Stop Loss)",
          "coverageLevelCode": "FAM",
          "coverageLevel": "Family",
          "serviceTypeCodes": [
            "30"
          ],
          "serviceTypes": [
            "Health Benefit Plan Coverage"
          ],
          "insuranceTypeCode": "C1",
          "insuranceType": "Commercial",
          "timeQualifierCode": "23",
          "timeQualifier": "Calendar Year",
          "benefitAmount": "0",
          "inPlanNetworkIndicatorCode": "Y",
          "inPlanNetworkIndicator": "Yes",
          "additionalInformation": [
            {
              "description": "HIGHEST BENEFIT"
            },
            {
              "description": "OOP MAXIMUM IS MET WHEN FAMILY AMOUNT IS SATISFIED"
            }
          ]
        },
        {
          "code": "C",
          "name": "Deductible",
          "coverageLevelCode": "FAM",
          "coverageLevel": "Family",
          "serviceTypeCodes": [
            "30"
          ],
          "serviceTypes": [
            "Health Benefit Plan Coverage"
          ],
          "timeQualifierCode": "24",
          "timeQualifier": "Year to Date",
          "benefitAmount": "0",
          "inPlanNetworkIndicatorCode": "Y",
          "inPlanNetworkIndicator": "Yes",
          "additionalInformation": [
            {
              "description": "HIGHEST BENEFIT"
            },
            {
              "description": "DEDUCTIBLE IS MET WHEN FAMILY AMOUNT IS SATISFIED"
            }
          ]
        },
        {
          "code": "C",
          "name": "Deductible",
          "coverageLevelCode": "FAM",
          "coverageLevel": "Family",
          "serviceTypeCodes": [
            "30"
          ],
          "serviceTypes": [
            "Health Benefit Plan Coverage"
          ],
          "timeQualifierCode": "29",
          "timeQualifier": "Remaining",
          "benefitAmount": "0",
          "inPlanNetworkIndicatorCode": "Y",
          "inPlanNetworkIndicator": "Yes",
          "additionalInformation": [
            {
              "description": "HIGHEST BENEFIT"
            },
            {
              "description": "DEDUCTIBLE IS MET WHEN FAMILY AMOUNT IS SATISFIED"
            }
          ]
        },
        {
          "code": "G",
          "name": "Out of Pocket (Stop Loss)",
          "coverageLevelCode": "FAM",
          "coverageLevel": "Family",
          "serviceTypeCodes": [
            "30"
          ],
          "serviceTypes": [
            "Health Benefit Plan Coverage"
          ],
          "insuranceTypeCode": "C1",
          "insuranceType": "Commercial",
          "timeQualifierCode": "24",
          "timeQualifier": "Year to Date",
          "benefitAmount": "0",
          "inPlanNetworkIndicatorCode": "Y",
          "inPlanNetworkIndicator": "Yes",
          "additionalInformation": [
            {
              "description": "HIGHEST BENEFIT"
            },
            {
              "description": "OOP MAXIMUM IS MET WHEN FAMILY AMOUNT IS SATISFIED"
            }
          ]
        },
        {
          "code": "G",
          "name": "Out of Pocket (Stop Loss)",
          "coverageLevelCode": "FAM",
          "coverageLevel": "Family",
          "serviceTypeCodes": [
            "30"
          ],
          "serviceTypes": [
            "Health Benefit Plan Coverage"
          ],
          "insuranceTypeCode": "C1",
          "insuranceType": "Commercial",
          "timeQualifierCode": "29",
          "timeQualifier": "Remaining",
          "benefitAmount": "0",
          "inPlanNetworkIndicatorCode": "Y",
          "inPlanNetworkIndicator": "Yes",
          "additionalInformation": [
            {
              "description": "HIGHEST BENEFIT"
            },
            {
              "description": "OOP MAXIMUM IS MET WHEN FAMILY AMOUNT IS SATISFIED"
            }
          ]
        },
        {
          "code": "C",
          "name": "Deductible",
          "coverageLevelCode": "FAM",
          "coverageLevel": "Family",
          "serviceTypeCodes": [
            "30"
          ],
          "serviceTypes": [
            "Health Benefit Plan Coverage"
          ],
          "timeQualifierCode": "24",
          "timeQualifier": "Year to Date",
          "benefitAmount": "3200",
          "inPlanNetworkIndicatorCode": "W",
          "inPlanNetworkIndicator": "Not Applicable",
          "additionalInformation": [
            {
              "description": "DEDUCTIBLE IS MET WHEN FAMILY AMOUNT IS SATISFIED"
            }
          ]
        },
        {
          "code": "G",
          "name": "Out of Pocket (Stop Loss)",
          "coverageLevelCode": "FAM",
          "coverageLevel": "Family",
          "serviceTypeCodes": [
            "30"
          ],
          "serviceTypes": [
            "Health Benefit Plan Coverage"
          ],
          "insuranceTypeCode": "C1",
          "insuranceType": "Commercial",
          "timeQualifierCode": "24",
          "timeQualifier": "Year to Date",
          "benefitAmount": "5555.16",
          "inPlanNetworkIndicatorCode": "W",
          "inPlanNetworkIndicator": "Not Applicable",
          "additionalInformation": [
            {
              "description": "OOP MAXIMUM IS MET WHEN FAMILY AMOUNT IS SATISFIED"
            }
          ]
        },
        {
          "code": "G",
          "name": "Out of Pocket (Stop Loss)",
          "coverageLevelCode": "FAM",
          "coverageLevel": "Family",
          "serviceTypeCodes": [
            "30"
          ],
          "serviceTypes": [
            "Health Benefit Plan Coverage"
          ],
          "insuranceTypeCode": "C1",
          "insuranceType": "Commercial",
          "timeQualifierCode": "23",
          "timeQualifier": "Calendar Year",
          "benefitAmount": "15500",
          "inPlanNetworkIndicatorCode": "N",
          "inPlanNetworkIndicator": "No",
          "additionalInformation": [
            {
              "description": "OOP MAXIMUM IS MET WHEN FAMILY AMOUNT IS SATISFIED"
            }
          ]
        },
        {
          "code": "G",
          "name": "Out of Pocket (Stop Loss)",
          "coverageLevelCode": "FAM",
          "coverageLevel": "Family",
          "serviceTypeCodes": [
            "30"
          ],
          "serviceTypes": [
            "Health Benefit Plan Coverage"
          ],
          "insuranceTypeCode": "C1",
          "insuranceType": "Commercial",
          "timeQualifierCode": "23",
          "timeQualifier": "Calendar Year",
          "benefitAmount": "6850",
          "inPlanNetworkIndicatorCode": "Y",
          "inPlanNetworkIndicator": "Yes",
          "additionalInformation": [
            {
              "description": "OOP MAXIMUM IS MET WHEN FAMILY AMOUNT IS SATISFIED"
            }
          ]
        },
        {
          "code": "C",
          "name": "Deductible",
          "coverageLevelCode": "FAM",
          "coverageLevel": "Family",
          "serviceTypeCodes": [
            "30"
          ],
          "serviceTypes": [
            "Health Benefit Plan Coverage"
          ],
          "timeQualifierCode": "23",
          "timeQualifier": "Calendar Year",
          "benefitAmount": "3200",
          "inPlanNetworkIndicatorCode": "Y",
          "inPlanNetworkIndicator": "Yes",
          "additionalInformation": [
            {
              "description": "DEDUCTIBLE IS MET WHEN FAMILY AMOUNT IS SATISFIED"
            }
          ]
        },
        {
          "code": "C",
          "name": "Deductible",
          "coverageLevelCode": "FAM",
          "coverageLevel": "Family",
          "serviceTypeCodes": [
            "30"
          ],
          "serviceTypes": [
            "Health Benefit Plan Coverage"
          ],
          "timeQualifierCode": "29",
          "timeQualifier": "Remaining",
          "benefitAmount": "0",
          "inPlanNetworkIndicatorCode": "Y",
          "inPlanNetworkIndicator": "Yes",
          "additionalInformation": [
            {
              "description": "DEDUCTIBLE IS MET WHEN FAMILY AMOUNT IS SATISFIED"
            }
          ]
        },
        {
          "code": "C",
          "name": "Deductible",
          "coverageLevelCode": "FAM",
          "coverageLevel": "Family",
          "serviceTypeCodes": [
            "30"
          ],
          "serviceTypes": [
            "Health Benefit Plan Coverage"
          ],
          "timeQualifierCode": "23",
          "timeQualifier": "Calendar Year",
          "benefitAmount": "5000",
          "inPlanNetworkIndicatorCode": "N",
          "inPlanNetworkIndicator": "No",
          "additionalInformation": [
            {
              "description": "DEDUCTIBLE IS MET WHEN FAMILY AMOUNT IS SATISFIED"
            }
          ]
        },
        {
          "code": "G",
          "name": "Out of Pocket (Stop Loss)",
          "coverageLevelCode": "FAM",
          "coverageLevel": "Family",
          "serviceTypeCodes": [
            "30"
          ],
          "serviceTypes": [
            "Health Benefit Plan Coverage"
          ],
          "insuranceTypeCode": "C1",
          "insuranceType": "Commercial",
          "timeQualifierCode": "29",
          "timeQualifier": "Remaining",
          "benefitAmount": "1294.84",
          "inPlanNetworkIndicatorCode": "Y",
          "inPlanNetworkIndicator": "Yes",
          "additionalInformation": [
            {
              "description": "OOP MAXIMUM IS MET WHEN FAMILY AMOUNT IS SATISFIED"
            }
          ]
        },
        {
          "code": "G",
          "name": "Out of Pocket (Stop Loss)",
          "coverageLevelCode": "FAM",
          "coverageLevel": "Family",
          "serviceTypeCodes": [
            "30"
          ],
          "serviceTypes": [
            "Health Benefit Plan Coverage"
          ],
          "insuranceTypeCode": "C1",
          "insuranceType": "Commercial",
          "timeQualifierCode": "29",
          "timeQualifier": "Remaining",
          "benefitAmount": "9944.84",
          "inPlanNetworkIndicatorCode": "N",
          "inPlanNetworkIndicator": "No",
          "additionalInformation": [
            {
              "description": "OOP MAXIMUM IS MET WHEN FAMILY AMOUNT IS SATISFIED"
            }
          ]
        },
        {
          "code": "C",
          "name": "Deductible",
          "coverageLevelCode": "FAM",
          "coverageLevel": "Family",
          "serviceTypeCodes": [
            "30"
          ],
          "serviceTypes": [
            "Health Benefit Plan Coverage"
          ],
          "timeQualifierCode": "29",
          "timeQualifier": "Remaining",
          "benefitAmount": "1800",
          "inPlanNetworkIndicatorCode": "N",
          "inPlanNetworkIndicator": "No",
          "additionalInformation": [
            {
              "description": "DEDUCTIBLE IS MET WHEN FAMILY AMOUNT IS SATISFIED"
            }
          ]
        },
        {
          "code": "1",
          "name": "Active Coverage",
          "serviceTypeCodes": [
            "A6"
          ],
          "serviceTypes": [
            "Psychotherapy"
          ],
          "inPlanNetworkIndicatorCode": "Y",
          "inPlanNetworkIndicator": "Yes",
          "additionalInformation": [
            {
              "description": "HIGHEST BENEFIT"
            }
          ]
        },
        {
          "code": "1",
          "name": "Active Coverage",
          "serviceTypeCodes": [
            "A6"
          ],
          "serviceTypes": [
            "Psychotherapy"
          ],
          "inPlanNetworkIndicatorCode": "Y",
          "inPlanNetworkIndicator": "Yes",
          "additionalInformation": [
            {
              "description": "ABLETO FULLY FUNDED"
            }
          ]
        },
        {
          "code": "1",
          "name": "Active Coverage",
          "serviceTypeCodes": [
            "A6"
          ],
          "serviceTypes": [
            "Psychotherapy"
          ],
          "inPlanNetworkIndicatorCode": "Y",
          "inPlanNetworkIndicator": "Yes",
          "additionalInformation": [
            {
              "description": "ABLETO PARTIALLY FUNDED"
            }
          ]
        },
        {
          "code": "1",
          "name": "Active Coverage",
          "serviceTypeCodes": [
            "A6"
          ],
          "serviceTypes": [
            "Psychotherapy"
          ],
          "inPlanNetworkIndicatorCode": "W",
          "inPlanNetworkIndicator": "Not Applicable"
        },
        {
          "code": "A",
          "name": "Co-Insurance",
          "coverageLevelCode": "IND",
          "coverageLevel": "Individual",
          "serviceTypeCodes": [
            "A6"
          ],
          "serviceTypes": [
            "Psychotherapy"
          ],
          "timeQualifierCode": "27",
          "timeQualifier": "Visit",
          "benefitPercent": "0.4",
          "inPlanNetworkIndicatorCode": "N",
          "inPlanNetworkIndicator": "No",
          "eligibilityAdditionalInformation": {
            "codeListQualifierCode": "ZZ",
            "codeListQualifier": "Mutually Defined",
            "industryCode": "11",
            "industry": "Office"
          },
          "eligibilityAdditionalInformationList": [
            {
              "codeListQualifierCode": "ZZ",
              "codeListQualifier": "Mutually Defined",
              "industryCode": "11",
              "industry": "Office"
            }
          ]
        },
        {
          "code": "A",
          "name": "Co-Insurance",
          "coverageLevelCode": "IND",
          "coverageLevel": "Individual",
          "serviceTypeCodes": [
            "A6"
          ],
          "serviceTypes": [
            "Psychotherapy"
          ],
          "timeQualifierCode": "27",
          "timeQualifier": "Visit",
          "benefitPercent": "0.2",
          "inPlanNetworkIndicatorCode": "Y",
          "inPlanNetworkIndicator": "Yes",
          "eligibilityAdditionalInformation": {
            "codeListQualifierCode": "ZZ",
            "codeListQualifier": "Mutually Defined",
            "industryCode": "11",
            "industry": "Office"
          },
          "eligibilityAdditionalInformationList": [
            {
              "codeListQualifierCode": "ZZ",
              "codeListQualifier": "Mutually Defined",
              "industryCode": "11",
              "industry": "Office"
            }
          ]
        },
        {
          "code": "A",
          "name": "Co-Insurance",
          "coverageLevelCode": "IND",
          "coverageLevel": "Individual",
          "serviceTypeCodes": [
            "A6"
          ],
          "serviceTypes": [
            "Psychotherapy"
          ],
          "timeQualifierCode": "27",
          "timeQualifier": "Visit",
          "benefitPercent": "0.2",
          "inPlanNetworkIndicatorCode": "Y",
          "inPlanNetworkIndicator": "Yes",
          "additionalInformation": [
            {
              "description": "HIGHEST BENEFIT"
            }
          ],
          "eligibilityAdditionalInformation": {
            "codeListQualifierCode": "ZZ",
            "codeListQualifier": "Mutually Defined",
            "industryCode": "11",
            "industry": "Office"
          },
          "eligibilityAdditionalInformationList": [
            {
              "codeListQualifierCode": "ZZ",
              "codeListQualifier": "Mutually Defined",
              "industryCode": "11",
              "industry": "Office"
            }
          ]
        },
        {
          "code": "A",
          "name": "Co-Insurance",
          "coverageLevelCode": "IND",
          "coverageLevel": "Individual",
          "serviceTypeCodes": [
            "A6"
          ],
          "serviceTypes": [
            "Psychotherapy"
          ],
          "timeQualifierCode": "27",
          "timeQualifier": "Visit",
          "benefitPercent": "0.2",
          "inPlanNetworkIndicatorCode": "Y",
          "inPlanNetworkIndicator": "Yes",
          "additionalInformation": [
            {
              "description": "ABLETO PARTIALLY FUNDED"
            }
          ],
          "eligibilityAdditionalInformation": {
            "codeListQualifierCode": "ZZ",
            "codeListQualifier": "Mutually Defined",
            "industryCode": "11",
            "industry": "Office"
          },
          "eligibilityAdditionalInformationList": [
            {
              "codeListQualifierCode": "ZZ",
              "codeListQualifier": "Mutually Defined",
              "industryCode": "11",
              "industry": "Office"
            }
          ]
        },
        {
          "code": "A",
          "name": "Co-Insurance",
          "coverageLevelCode": "IND",
          "coverageLevel": "Individual",
          "serviceTypeCodes": [
            "A6"
          ],
          "serviceTypes": [
            "Psychotherapy"
          ],
          "timeQualifierCode": "27",
          "timeQualifier": "Visit",
          "benefitPercent": "0",
          "inPlanNetworkIndicatorCode": "Y",
          "inPlanNetworkIndicator": "Yes",
          "additionalInformation": [
            {
              "description": "ABLETO FULLY FUNDED"
            }
          ],
          "eligibilityAdditionalInformation": {
            "codeListQualifierCode": "ZZ",
            "codeListQualifier": "Mutually Defined",
            "industryCode": "11",
            "industry": "Office"
          },
          "eligibilityAdditionalInformationList": [
            {
              "codeListQualifierCode": "ZZ",
              "codeListQualifier": "Mutually Defined",
              "industryCode": "11",
              "industry": "Office"
            }
          ]
        },
        {
          "code": "B",
          "name": "Co-Payment",
          "coverageLevelCode": "IND",
          "coverageLevel": "Individual",
          "serviceTypeCodes": [
            "A6"
          ],
          "serviceTypes": [
            "Psychotherapy"
          ],
          "timeQualifierCode": "27",
          "timeQualifier": "Visit",
          "benefitAmount": "0",
          "inPlanNetworkIndicatorCode": "Y",
          "inPlanNetworkIndicator": "Yes",
          "additionalInformation": [
            {
              "description": "HIGHEST BENEFIT"
            }
          ],
          "eligibilityAdditionalInformation": {
            "codeListQualifierCode": "ZZ",
            "codeListQualifier": "Mutually Defined",
            "industryCode": "11",
            "industry": "Office"
          },
          "eligibilityAdditionalInformationList": [
            {
              "codeListQualifierCode": "ZZ",
              "codeListQualifier": "Mutually Defined",
              "industryCode": "11",
              "industry": "Office"
            }
          ]
        },
        {
          "code": "B",
          "name": "Co-Payment",
          "coverageLevelCode": "IND",
          "coverageLevel": "Individual",
          "serviceTypeCodes": [
            "A6"
          ],
          "serviceTypes": [
            "Psychotherapy"
          ],
          "timeQualifierCode": "27",
          "timeQualifier": "Visit",
          "benefitAmount": "0",
          "inPlanNetworkIndicatorCode": "Y",
          "inPlanNetworkIndicator": "Yes",
          "additionalInformation": [
            {
              "description": "ABLETO PARTIALLY FUNDED"
            }
          ],
          "eligibilityAdditionalInformation": {
            "codeListQualifierCode": "ZZ",
            "codeListQualifier": "Mutually Defined",
            "industryCode": "11",
            "industry": "Office"
          },
          "eligibilityAdditionalInformationList": [
            {
              "codeListQualifierCode": "ZZ",
              "codeListQualifier": "Mutually Defined",
              "industryCode": "11",
              "industry": "Office"
            }
          ]
        },
        {
          "code": "B",
          "name": "Co-Payment",
          "coverageLevelCode": "IND",
          "coverageLevel": "Individual",
          "serviceTypeCodes": [
            "A6"
          ],
          "serviceTypes": [
            "Psychotherapy"
          ],
          "timeQualifierCode": "27",
          "timeQualifier": "Visit",
          "benefitAmount": "0",
          "inPlanNetworkIndicatorCode": "W",
          "inPlanNetworkIndicator": "Not Applicable",
          "eligibilityAdditionalInformation": {
            "codeListQualifierCode": "ZZ",
            "codeListQualifier": "Mutually Defined",
            "industryCode": "11",
            "industry": "Office"
          },
          "eligibilityAdditionalInformationList": [
            {
              "codeListQualifierCode": "ZZ",
              "codeListQualifier": "Mutually Defined",
              "industryCode": "11",
              "industry": "Office"
            }
          ]
        },
        {
          "code": "B",
          "name": "Co-Payment",
          "coverageLevelCode": "IND",
          "coverageLevel": "Individual",
          "serviceTypeCodes": [
            "A6"
          ],
          "serviceTypes": [
            "Psychotherapy"
          ],
          "timeQualifierCode": "27",
          "timeQualifier": "Visit",
          "benefitAmount": "0",
          "inPlanNetworkIndicatorCode": "Y",
          "inPlanNetworkIndicator": "Yes",
          "additionalInformation": [
            {
              "description": "ABLETO FULLY FUNDED"
            }
          ],
          "eligibilityAdditionalInformation": {
            "codeListQualifierCode": "ZZ",
            "codeListQualifier": "Mutually Defined",
            "industryCode": "11",
            "industry": "Office"
          },
          "eligibilityAdditionalInformationList": [
            {
              "codeListQualifierCode": "ZZ",
              "codeListQualifier": "Mutually Defined",
              "industryCode": "11",
              "industry": "Office"
            }
          ]
        },
        {
          "code": "C",
          "name": "Deductible",
          "serviceTypeCodes": [
            "A6"
          ],
          "serviceTypes": [
            "Psychotherapy"
          ],
          "timeQualifierCode": "27",
          "timeQualifier": "Visit",
          "benefitAmount": "0",
          "inPlanNetworkIndicatorCode": "Y",
          "inPlanNetworkIndicator": "Yes"
        },
        {
          "code": "C",
          "name": "Deductible",
          "coverageLevelCode": "FAM",
          "coverageLevel": "Family",
          "serviceTypeCodes": [
            "A6"
          ],
          "serviceTypes": [
            "Psychotherapy"
          ],
          "timeQualifierCode": "23",
          "timeQualifier": "Calendar Year",
          "benefitAmount": "0",
          "inPlanNetworkIndicatorCode": "Y",
          "inPlanNetworkIndicator": "Yes",
          "additionalInformation": [
            {
              "description": "ABLETO FULLY FUNDED"
            }
          ]
        },
        {
          "code": "F",
          "name": "Limitations",
          "coverageLevelCode": "IND",
          "coverageLevel": "Individual",
          "serviceTypeCodes": [
            "A6"
          ],
          "serviceTypes": [
            "Psychotherapy"
          ],
          "timeQualifierCode": "27",
          "timeQualifier": "Visit",
          "benefitAmount": "0",
          "inPlanNetworkIndicatorCode": "Y",
          "inPlanNetworkIndicator": "Yes",
          "additionalInformation": [
            {
              "description": "ABLETO PARTIALLY FUNDED"
            }
          ]
        },
        {
          "code": "F",
          "name": "Limitations",
          "coverageLevelCode": "IND",
          "coverageLevel": "Individual",
          "serviceTypeCodes": [
            "A6"
          ],
          "serviceTypes": [
            "Psychotherapy"
          ],
          "timeQualifierCode": "27",
          "timeQualifier": "Visit",
          "benefitAmount": "0",
          "inPlanNetworkIndicatorCode": "Y",
          "inPlanNetworkIndicator": "Yes",
          "additionalInformation": [
            {
              "description": "HIGHEST BENEFIT"
            }
          ]
        },
        {
          "code": "F",
          "name": "Limitations",
          "coverageLevelCode": "IND",
          "coverageLevel": "Individual",
          "serviceTypeCodes": [
            "A6"
          ],
          "serviceTypes": [
            "Psychotherapy"
          ],
          "timeQualifierCode": "27",
          "timeQualifier": "Visit",
          "benefitAmount": "0",
          "inPlanNetworkIndicatorCode": "Y",
          "inPlanNetworkIndicator": "Yes",
          "additionalInformation": [
            {
              "description": "ABLETO FULLY FUNDED"
            }
          ]
        },
        {
          "code": "F",
          "name": "Limitations",
          "coverageLevelCode": "IND",
          "coverageLevel": "Individual",
          "serviceTypeCodes": [
            "A6"
          ],
          "serviceTypes": [
            "Psychotherapy"
          ],
          "timeQualifierCode": "27",
          "timeQualifier": "Visit",
          "benefitAmount": "0",
          "inPlanNetworkIndicatorCode": "Y",
          "inPlanNetworkIndicator": "Yes"
        },
        {
          "code": "F",
          "name": "Limitations",
          "coverageLevelCode": "IND",
          "coverageLevel": "Individual",
          "serviceTypeCodes": [
            "A6"
          ],
          "serviceTypes": [
            "Psychotherapy"
          ],
          "timeQualifierCode": "27",
          "timeQualifier": "Visit",
          "benefitAmount": "0",
          "inPlanNetworkIndicatorCode": "Y",
          "inPlanNetworkIndicator": "Yes",
          "additionalInformation": [
            {
              "description": "ADDITIONAL COVERED PER OCCURRENCE"
            },
            {
              "description": "ABLETO PARTIALLY FUNDED"
            }
          ]
        },
        {
          "code": "F",
          "name": "Limitations",
          "coverageLevelCode": "IND",
          "coverageLevel": "Individual",
          "serviceTypeCodes": [
            "A6"
          ],
          "serviceTypes": [
            "Psychotherapy"
          ],
          "timeQualifierCode": "27",
          "timeQualifier": "Visit",
          "benefitAmount": "0",
          "inPlanNetworkIndicatorCode": "Y",
          "inPlanNetworkIndicator": "Yes",
          "additionalInformation": [
            {
              "description": "ADDITIONAL COVERED PER OCCURRENCE"
            }
          ]
        },
        {
          "code": "F",
          "name": "Limitations",
          "coverageLevelCode": "IND",
          "coverageLevel": "Individual",
          "serviceTypeCodes": [
            "A6"
          ],
          "serviceTypes": [
            "Psychotherapy"
          ],
          "timeQualifierCode": "27",
          "timeQualifier": "Visit",
          "benefitAmount": "0",
          "inPlanNetworkIndicatorCode": "Y",
          "inPlanNetworkIndicator": "Yes",
          "additionalInformation": [
            {
              "description": "ADDITIONAL COVERED PER OCCURRENCE"
            },
            {
              "description": "HIGHEST BENEFIT"
            }
          ]
        },
        {
          "code": "F",
          "name": "Limitations",
          "coverageLevelCode": "IND",
          "coverageLevel": "Individual",
          "serviceTypeCodes": [
            "A6"
          ],
          "serviceTypes": [
            "Psychotherapy"
          ],
          "timeQualifierCode": "27",
          "timeQualifier": "Visit",
          "benefitAmount": "0",
          "inPlanNetworkIndicatorCode": "Y",
          "inPlanNetworkIndicator": "Yes",
          "additionalInformation": [
            {
              "description": "ADDITIONAL COVERED PER OCCURRENCE"
            },
            {
              "description": "ABLETO FULLY FUNDED"
            }
          ]
        },
        {
          "code": "X",
          "name": "Health Care Facility",
          "inPlanNetworkIndicatorCode": "W",
          "inPlanNetworkIndicator": "Not Applicable",
          "benefitsRelatedEntity": {
            "entityIdentifier": "Provider",
            "entityType": "Non-Person Entity",
            "entityName": "NEW YORK MEDICAL BEHAVIORAL HEALTH SERVICES",
            "entityIdentification": "XX",
            "entityIdentificationValue": "1235600834"
          },
          "benefitsRelatedEntities": [
            {
              "entityIdentifier": "Provider",
              "entityType": "Non-Person Entity",
              "entityName": "NEW YORK MEDICAL BEHAVIORAL HEALTH SERVICES",
              "entityIdentification": "XX",
              "entityIdentificationValue": "1235600834"
            }
          ]
        }
      ],
      "errors": [],
      "x12": "ISA*00*          *00*          *ZZ*STEDI          *01*117151744      *260709*1835*^*00501*345459952*0*T*`~GS*HB*STEDI*117151744*20260709*183539*1*X*005010X279A1~ST*271*0001*005010X279A1~BHT*0022*11*01JDQV00485EPP4D6BD8GM1SWM*20260325*0901~HL*1**20*1~NM1*PR*2*UNITEDHEALTHCARE*****PI*87726~PER*IC**UR*WWW.UHCPROVIDER.COM~HL*2*1*21*1~NM1*1P*2*Jerde - Sauer*****XX*1999999984~HL*3*2*22*1~NM1*IL*1*Doe*John*A***MI*UHC202649~REF*6P*186084~REF*18*UVdQAC5j6f~N3*123 Sunnyvale Lane~N4*Fosterburgh*TX*91016~DMG*D8*19760214*M~DTP*291*RD8*20240101-20241231~HL*4*3*23*0~NM1*03*1*Doe*Jane*Alex~REF*18*UVdQAC5j6f~DMG*D8*19521121*F~INS*N*01*001*25~EB*1**30*C1*CHOICE PLUS*******W~DTP*636*D8*20240731~MSG*PROVIDER IS OUT NETWORK FOR MEMBER~MSG*FUNDING TYPE = SELF INSURED - LARGE GROUP~LS*2120~NM1*PR*2*UNITEDHEALTHCARE*****PI*87726~N3*P.O. BOX 30555~N4*SALT LAKE CITY*UT*841300555~PER*IC**UR*WWW.UHCPROVIDER.COM~LE*2120~EB*C*FAM*30***23*0*****Y~MSG*HIGHEST BENEFIT~MSG*DEDUCTIBLE IS MET WHEN FAMILY AMOUNT IS SATISFIED~EB*G*FAM*30*C1**23*0*****Y~MSG*HIGHEST BENEFIT~MSG*OOP MAXIMUM IS MET WHEN FAMILY AMOUNT IS SATISFIED~EB*C*FAM*30***24*0*****Y~MSG*HIGHEST BENEFIT~MSG*DEDUCTIBLE IS MET WHEN FAMILY AMOUNT IS SATISFIED~EB*C*FAM*30***29*0*****Y~MSG*HIGHEST BENEFIT~MSG*DEDUCTIBLE IS MET WHEN FAMILY AMOUNT IS SATISFIED~EB*G*FAM*30*C1**24*0*****Y~MSG*HIGHEST BENEFIT~MSG*OOP MAXIMUM IS MET WHEN FAMILY AMOUNT IS SATISFIED~EB*G*FAM*30*C1**29*0*****Y~MSG*HIGHEST BENEFIT~MSG*OOP MAXIMUM IS MET WHEN FAMILY AMOUNT IS SATISFIED~EB*C*FAM*30***24*3200*****W~MSG*DEDUCTIBLE IS MET WHEN FAMILY AMOUNT IS SATISFIED~EB*G*FAM*30*C1**24*5555.16*****W~MSG*OOP MAXIMUM IS MET WHEN FAMILY AMOUNT IS SATISFIED~EB*G*FAM*30*C1**23*15500*****N~MSG*OOP MAXIMUM IS MET WHEN FAMILY AMOUNT IS SATISFIED~EB*G*FAM*30*C1**23*6850*****Y~MSG*OOP MAXIMUM IS MET WHEN FAMILY AMOUNT IS SATISFIED~EB*C*FAM*30***23*3200*****Y~MSG*DEDUCTIBLE IS MET WHEN FAMILY AMOUNT IS SATISFIED~EB*C*FAM*30***29*0*****Y~MSG*DEDUCTIBLE IS MET WHEN FAMILY AMOUNT IS SATISFIED~EB*C*FAM*30***23*5000*****N~MSG*DEDUCTIBLE IS MET WHEN FAMILY AMOUNT IS SATISFIED~EB*G*FAM*30*C1**29*1294.84*****Y~MSG*OOP MAXIMUM IS MET WHEN FAMILY AMOUNT IS SATISFIED~EB*G*FAM*30*C1**29*9944.84*****N~MSG*OOP MAXIMUM IS MET WHEN FAMILY AMOUNT IS SATISFIED~EB*C*FAM*30***29*1800*****N~MSG*DEDUCTIBLE IS MET WHEN FAMILY AMOUNT IS SATISFIED~EB*1**A6*********Y~MSG*HIGHEST BENEFIT~EB*1**A6*********Y~MSG*ABLETO FULLY FUNDED~EB*1**A6*********Y~MSG*ABLETO PARTIALLY FUNDED~EB*1**A6*********W~EB*A*IND*A6***27**.4****N~III*ZZ*11~EB*A*IND*A6***27**.2****Y~III*ZZ*11~EB*A*IND*A6***27**.2****Y~MSG*HIGHEST BENEFIT~III*ZZ*11~EB*A*IND*A6***27**.2****Y~MSG*ABLETO PARTIALLY FUNDED~III*ZZ*11~EB*A*IND*A6***27**0****Y~MSG*ABLETO FULLY FUNDED~III*ZZ*11~EB*B*IND*A6***27*0*****Y~MSG*HIGHEST BENEFIT~III*ZZ*11~EB*B*IND*A6***27*0*****Y~MSG*ABLETO PARTIALLY FUNDED~III*ZZ*11~EB*B*IND*A6***27*0*****W~III*ZZ*11~EB*B*IND*A6***27*0*****Y~MSG*ABLETO FULLY FUNDED~III*ZZ*11~EB*C**A6***27*0*****Y~EB*C*FAM*A6***23*0*****Y~MSG*ABLETO FULLY FUNDED~EB*F*IND*A6***27*0*****Y~MSG*ABLETO PARTIALLY FUNDED~EB*F*IND*A6***27*0*****Y~MSG*HIGHEST BENEFIT~EB*F*IND*A6***27*0*****Y~MSG*ABLETO FULLY FUNDED~EB*F*IND*A6***27*0*****Y~EB*F*IND*A6***27*0*****Y~MSG*ADDITIONAL COVERED PER OCCURRENCE~MSG*ABLETO PARTIALLY FUNDED~EB*F*IND*A6***27*0*****Y~MSG*ADDITIONAL COVERED PER OCCURRENCE~EB*F*IND*A6***27*0*****Y~MSG*ADDITIONAL COVERED PER OCCURRENCE~MSG*HIGHEST BENEFIT~EB*F*IND*A6***27*0*****Y~MSG*ADDITIONAL COVERED PER OCCURRENCE~MSG*ABLETO FULLY FUNDED~EB*X***********W~LS*2120~NM1*1P*2*NEW YORK MEDICAL BEHAVIORAL HEALTH SERVICES*****XX*1235600834~LE*2120~SE*125*0001~GE*1*1~IEA*1*345459952~",
      "eligibilitySearchId": "019f4829-fecb-7b60-86a9-6ca38f7d1db7",
      "id": "ec_019f4829-fecb-7b60-86a9-6c900ad94bfb"
    }
    ```
  </Tab>
</Tabs>

#### SOAP endpoint [#soap-endpoint]

Note that the HTTP response must also include two additional headers:

* `stedi-id`: The Stedi-assigned unique identifier for the eligibility check, formatted as `ec_<UUID>`. For example: `id: ec_f81d4fae-7dec-11d0-a765-00a0c91e6b12`.
* `stedi-eligibility-search-id`: A Stedi-assigned identifier that allows Stedi to group eligibility checks for the same patient into a unified record in the Stedi portal called an [eligibility search](/healthcare/eligibility-views#searches-view). For example: `stedi-eligibility-search-id: 01997873-bebb-7b33-81ef-f408866dfb2cb`.

The response body is a SOAP message, and its structure is similar to the request.

<Tabs items="[&#x22;Request - SOAP&#x22;, &#x22;Response&#x22;]">
  <Tab value="Request - SOAP">
    ```bash
    curl --request POST \
    --url 'https://healthcare.us.stedi.com/2025-06-01/protocols/caqh-core' \
    --header 'Content-Type: application/soap+xml' \
    --data '<soapenv:Envelope xmlns:soapenv="http://www.w3.org/2003/05/soap-envelope" xmlns:cor="http://www.caqh.org/SOAP/WSDL/CORERule2.2.0.xsd">
    <soapenv:Header>
      <wsse:Security soapenv:mustUnderstand="true" xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">
        <wsse:UsernameToken>
          <wsse:Username>STEDI-ACCOUNT-ID</wsse:Username>
          <wsse:Password>STEDI-API-KEY</wsse:Password>
        </wsse:UsernameToken>
      </wsse:Security>
    </soapenv:Header>
    <soapenv:Body>
        <cor:COREEnvelopeRealTimeRequest>
          <PayloadType>X12_270_Request_005010X279A1</PayloadType>
          <ProcessingMode>RealTime</ProcessingMode>
          <PayloadID>f81d4fae-7dec-11d0-a765-00a0c91e6b12</PayloadID>
          <TimeStamp>2007-08-30T10:20:34.000Z</TimeStamp>
          <SenderID>STEDI</SenderID>
          <ReceiverID>STEDI</ReceiverID>
          <CORERuleVersion>2.2.0</CORERuleVersion>
          <Payload><![CDATA[ISA*00*          *00*          *ZZ*AV09311993     *01*030240928      *210101*1200*^*00501*000000001*0*P*>~GS*HS*1510848*030240928*20210101*120000*1*X*005010X279A1~ST*270*0001*005010X279A1~BHT*0022*13*00000000000000000000000000*20210101*1200~HL*1**20*1~NM1*PR*2*UnitedHealthcare*****PI*87726~HL*2*1*21*1~NM1*1P*2*Provider Name*****XX*1999999984~HL*3*2*22*1~NM1*IL*1*Doe*John****MI*UHC202649~HL*4*3*23*0~TRN*1*00000000000000000000000000*3117151744~NM1*03*1*Doe*Jane~DMG*D8*19521121~EQ*30~SE*14*0001~GE*1*1~IEA*1*000000001~]]></Payload>
        </cor:COREEnvelopeRealTimeRequest>
    </soapenv:Body>
    </soapenv:Envelope>'
    ```
  </Tab>

  <Tab value="Response">
    ```xml
    <soapenv:Envelope xmlns:soapenv="http://www.w3.org/2003/05/soap-envelope">
    <soapenv:Body>
      <COREEnvelopeRealTimeResponse>
        <PayloadType>X12_271_Response_005010X279A1</PayloadType>
        <ProcessingMode>RealTime</ProcessingMode>
        <PayloadID>019f48e6-8ec3-7110-a477-ed6d8731bbdb</PayloadID>
        <TimeStamp>2026-07-09T22:01:37Z</TimeStamp>
        <SenderID>STEDI</SenderID>
        <ReceiverID>STEDI</ReceiverID>
        <CORERuleVersion>2.2.0</CORERuleVersion>
        <Payload><![CDATA[ISA*00*          *00*          *ZZ*STEDI          *01*117151744      *260709*2201*^*00501*545482648*0*T*`~GS*HB*STEDI*117151744*20260709*220136*1*X*005010X279A1~ST*271*0001*005010X279A1~BHT*0022*11*01JDQV00485EPP4D6BD8GM1SWM*20260325*0901~HL*1**20*1~NM1*PR*2*UNITEDHEALTHCARE*****PI*87726~PER*IC**UR*WWW.UHCPROVIDER.COM~HL*2*1*21*1~NM1*1P*2*Jerde - Sauer*****XX*1999999984~HL*3*2*22*1~NM1*IL*1*Doe*John*A***MI*UHC202649~REF*6P*186084~REF*18*UVdQAC5j6f~N3*123 Sunnyvale Lane~N4*Fosterburgh*TX*91016~DMG*D8*19760214*M~DTP*291*RD8*20240101-20241231~HL*4*3*23*0~NM1*03*1*Doe*Jane*Alex~REF*18*UVdQAC5j6f~DMG*D8*19521121*F~INS*N*01*001*25~EB*1**30*C1*CHOICE PLUS*******W~DTP*636*D8*20240731~MSG*PROVIDER IS OUT NETWORK FOR MEMBER~MSG*FUNDING TYPE = SELF INSURED - LARGE GROUP~LS*2120~NM1*PR*2*UNITEDHEALTHCARE*****PI*87726~N3*P.O. BOX 30555~N4*SALT LAKE CITY*UT*841300555~PER*IC**UR*WWW.UHCPROVIDER.COM~LE*2120~EB*C*FAM*30***23*0*****Y~MSG*HIGHEST BENEFIT~MSG*DEDUCTIBLE IS MET WHEN FAMILY AMOUNT IS SATISFIED~EB*G*FAM*30*C1**23*0*****Y~MSG*HIGHEST BENEFIT~MSG*OOP MAXIMUM IS MET WHEN FAMILY AMOUNT IS SATISFIED~EB*C*FAM*30***24*0*****Y~MSG*HIGHEST BENEFIT~MSG*DEDUCTIBLE IS MET WHEN FAMILY AMOUNT IS SATISFIED~EB*C*FAM*30***29*0*****Y~MSG*HIGHEST BENEFIT~MSG*DEDUCTIBLE IS MET WHEN FAMILY AMOUNT IS SATISFIED~EB*G*FAM*30*C1**24*0*****Y~MSG*HIGHEST BENEFIT~MSG*OOP MAXIMUM IS MET WHEN FAMILY AMOUNT IS SATISFIED~EB*G*FAM*30*C1**29*0*****Y~MSG*HIGHEST BENEFIT~MSG*OOP MAXIMUM IS MET WHEN FAMILY AMOUNT IS SATISFIED~EB*C*FAM*30***24*3200*****W~MSG*DEDUCTIBLE IS MET WHEN FAMILY AMOUNT IS SATISFIED~EB*G*FAM*30*C1**24*5555.16*****W~MSG*OOP MAXIMUM IS MET WHEN FAMILY AMOUNT IS SATISFIED~EB*G*FAM*30*C1**23*15500*****N~MSG*OOP MAXIMUM IS MET WHEN FAMILY AMOUNT IS SATISFIED~EB*G*FAM*30*C1**23*6850*****Y~MSG*OOP MAXIMUM IS MET WHEN FAMILY AMOUNT IS SATISFIED~EB*C*FAM*30***23*3200*****Y~MSG*DEDUCTIBLE IS MET WHEN FAMILY AMOUNT IS SATISFIED~EB*C*FAM*30***29*0*****Y~MSG*DEDUCTIBLE IS MET WHEN FAMILY AMOUNT IS SATISFIED~EB*C*FAM*30***23*5000*****N~MSG*DEDUCTIBLE IS MET WHEN FAMILY AMOUNT IS SATISFIED~EB*G*FAM*30*C1**29*1294.84*****Y~MSG*OOP MAXIMUM IS MET WHEN FAMILY AMOUNT IS SATISFIED~EB*G*FAM*30*C1**29*9944.84*****N~MSG*OOP MAXIMUM IS MET WHEN FAMILY AMOUNT IS SATISFIED~EB*C*FAM*30***29*1800*****N~MSG*DEDUCTIBLE IS MET WHEN FAMILY AMOUNT IS SATISFIED~EB*1**A6*********Y~MSG*HIGHEST BENEFIT~EB*1**A6*********Y~MSG*ABLETO FULLY FUNDED~EB*1**A6*********Y~MSG*ABLETO PARTIALLY FUNDED~EB*1**A6*********W~EB*A*IND*A6***27**.4****N~III*ZZ*11~EB*A*IND*A6***27**.2****Y~III*ZZ*11~EB*A*IND*A6***27**.2****Y~MSG*HIGHEST BENEFIT~III*ZZ*11~EB*A*IND*A6***27**.2****Y~MSG*ABLETO PARTIALLY FUNDED~III*ZZ*11~EB*A*IND*A6***27**0****Y~MSG*ABLETO FULLY FUNDED~III*ZZ*11~EB*B*IND*A6***27*0*****Y~MSG*HIGHEST BENEFIT~III*ZZ*11~EB*B*IND*A6***27*0*****Y~MSG*ABLETO PARTIALLY FUNDED~III*ZZ*11~EB*B*IND*A6***27*0*****W~III*ZZ*11~EB*B*IND*A6***27*0*****Y~MSG*ABLETO FULLY FUNDED~III*ZZ*11~EB*C**A6***27*0*****Y~EB*C*FAM*A6***23*0*****Y~MSG*ABLETO FULLY FUNDED~EB*F*IND*A6***27*0*****Y~MSG*ABLETO PARTIALLY FUNDED~EB*F*IND*A6***27*0*****Y~MSG*HIGHEST BENEFIT~EB*F*IND*A6***27*0*****Y~MSG*ABLETO FULLY FUNDED~EB*F*IND*A6***27*0*****Y~EB*F*IND*A6***27*0*****Y~MSG*ADDITIONAL COVERED PER OCCURRENCE~MSG*ABLETO PARTIALLY FUNDED~EB*F*IND*A6***27*0*****Y~MSG*ADDITIONAL COVERED PER OCCURRENCE~EB*F*IND*A6***27*0*****Y~MSG*ADDITIONAL COVERED PER OCCURRENCE~MSG*HIGHEST BENEFIT~EB*F*IND*A6***27*0*****Y~MSG*ADDITIONAL COVERED PER OCCURRENCE~MSG*ABLETO FULLY FUNDED~EB*X***********W~LS*2120~NM1*1P*2*NEW YORK MEDICAL BEHAVIORAL HEALTH SERVICES*****XX*1235600834~LE*2120~SE*125*0001~GE*1*1~IEA*1*545482648~]]></Payload>
        <ErrorCode>Success</ErrorCode>
        <ErrorMessage></ErrorMessage>
      </cor:COREEnvelopeRealTimeResponse>
    </soapenv:Body>
    </soapenv:Envelope>
    ```
  </Tab>
</Tabs>

### Delimiter normalization [#delimiter-normalization]

Stedi reserves certain characters for delimiters in X12 EDI transactions. When these delimiter characters appear within data values - meaning they're used as content and not as actual delimiters, such as within a subscriber's name - Stedi replaces them to prevent parsing issues. Stedi normalizes delimiters within transaction data as follows:

| Character found in data | Replacement | Stedi's reserved delimiter type it conflicts with |
| ----------------------- | ----------- | ------------------------------------------------- |
| `*`                     | `\|`        | Element separator                                 |
| `^`                     | `\|`        | Repetition separator                              |
| `` ` ``                 | `'`         | Component element separator                       |
| `~`                     | `\|`        | Segment terminator                                |

**Examples:**

* `O*CONNOR` becomes `O|CONNOR`
* `CODE^01` becomes `CODE|01`
* ``O`CONNOR`` becomes `O'CONNOR`
* `MSG~HELLO` becomes `MSG|HELLO`

If you parse raw X12 EDI responses, ensure your parser reads delimiters from the `ISA` segment instead of assuming fixed delimiters.

### Retries [#retries]

Implementing the right retry strategy for eligibility check failures saves a lot of time and money.

At a minimum, we **strongly recommend** automatically retrying every request that fails due to payer connectivity issues. Automatic retries resolve a significant portion of these types of failures without manual intervention. Visit [Retry strategy](/healthcare/eligibility-troubleshooting#retry-strategy) for details.

### Timeout [#timeout]

Insurance payers may take up to 60 seconds to respond to a request, but Stedi holds real-time eligibility check requests open for up to 120 seconds before timing out. During this period, Stedi attempts multiple retries to payers in an effort to complete your request.

Canceling and retrying requests before Stedi's automatic retry period ends may create multiple ongoing requests to payers and increase your concurrency usage.

#### Request hedging [#request-hedging]

When eligibility responses are taking too long, you can use request hedging to try to get results faster. To implement request hedging, send a second request at some internal duration cutoff (for example, 30 seconds) without cancelling the first request. Then, you can use whichever result comes back first. If one of the requests fails, you can wait for the second request to see if it's successful.

### Concurrency limit [#concurrency-limit]

Our real-time eligibility check endpoints share a concurrency pool with other real-time healthcare APIs. For more information, visit [Concurrency Limits](/healthcare/api-reference#concurrency-limits).

### Recommended API clients [#recommended-api-clients]

You may want to use an API client to make testing and debugging easier.

We **don't recommend** using Postman for requests containing Protected Health Information (PHI) because Postman defaults to storing request history - including full request payloads - on its cloud servers. You can't turn this feature off without impractical workarounds.

Visit [API clients](/healthcare/api-reference#api-clients) for a list of recommended clients you can use instead.

## Eligibility check ID [#eligibility-check-id]

Stedi assigns a globally unique identifier to each eligibility check, formatted as `ec_<UUID>`. For example: `ec_f81d4fae-7dec-11d0-a765-00a0c91e6b12`.

Stedi returns the unique eligibility check ID in the following locations:

* **SOAP:** `stedi-id` header in the HTTP response
* **JSON and Raw X12:** `id` property in the JSON response

You can use this eligibility check ID to debug failures, correlate retries, and link directly to an eligibility check's results in the Stedi portal. The format for direct portal links is: `https://portal.stedi.com/app/healthcare/eligibility/{search-id}/inspect/{check-id}`, where `{search-id}` is the [eligibility search ID](/healthcare/api-reference/post-healthcare-eligibility#response.eligibilitySearchId) and `{check-id}` is the unique Stedi-assigned eligibility check ID.

You can find the eligibility search ID at the top of an eligibility search's details page in the portal. Visit [Eligibility searches](https://portal.stedi.com/app/healthcare/eligibility) to review a list of your eligibility searches.

## Patient information [#patient-information]

Follow this guidance to help payers find the patient in their system.

### Payer search requirements [#payer-search-requirements]

All payers are required to be able to search for patients using the following "bare minimum" subsets of information. They will return benefits information as long as they can find a unique match for the patient within their system.

For a subscriber:

* Member ID, first name, last name, date of birth
* Member ID, last name, date of birth
* Member ID, first name, last name

For a dependent:

* Subscriber member ID (in the `subscriber` object), first name, last name, date of birth
* Subscriber member ID, last name, date of birth
* Subscriber member ID, first name, last name

Of course, not all of this patient information is always available. For example, a patient may forget their ID card. In these instances, some payers may still be able to search with even less information, such as the patient's first name, last name, and date of birth. Contact us if you have questions about alternative search options for a particular payer.

### Dependents [#dependents]

The patient qualifies as a dependent for eligibility checks when:

1. The patient is listed as a dependent on the subscriber's insurance plan.
2. The payer cannot uniquely identify the patient through information outside the subscriber's policy.

When the patient meets these criteria, you should submit their information in the `dependents` array (JSON) or `Loop 2000D` (X12 EDI). Otherwise, you must submit their information in the `subscriber` object (JSON) or `Loop 2000C` (X12 EDI) instead.

For example, if the dependent has their own member ID number in the payer's database, you must identify them as a subscriber. This includes member IDs that differ only by a suffix, such as `01`, because the patient can still be uniquely identified.

#### Medicaid dependents [#medicaid-dependents]

Most Medicaid plans don't support dependents. However, some state Medicaid plans support eligibility inquiries for newborn children under 12 months old.

Children typically must be enrolled in Medicaid as a separate subscriber with their own unique member ID, even if they are legally the dependent of a parent who is a Medicaid plan member. Therefore, you'll almost always need to submit the child as a subscriber in the `subscriber` object (JSON) or `Loop 2000C` (X12 EDI).

Sending the `dependents` array (JSON) or `Loop 2000D` (X12 EDI) to payers that don't support dependents will either cause an error, or the payer may ignore the information and return results for the subscriber instead.

### Patient names [#patient-names]

Note the following information and best practices when entering patient names:

* Enter the name exactly as written on the patient's insurance ID card (if available), including any special or punctuation characters such as apostrophes, hyphens (dashes), or spaces. If the patient's insurance ID card isn't available, enter the name exactly as written on a government-issued ID card. If a government ID card isn't available, enter the name exactly as given by the patient.
* Don't include a name prefix, title, rank, honorific, or academic degree in any property. These include Mrs., Dr., Hon., and PhD.
* Don't include a suffix or generation such as Jr. or III in the `firstName` or `lastName` property. Put it in the separate `suffix` property instead. Payers are supposed to automatically parse suffixes out of the last name, but Stedi can't guarantee that all payers will do this correctly.
* You can populate a middle name (or names) or initial in the `middleName` property, but most payers ignore it when searching for the patient.
* Case doesn't matter. For example, JANE is equivalent to Jane.

You can use the following for patient names:

* Compound last and first names separated by spaces or hyphens such as Jean‐Claude or Smith Jones
* Apostrophized or elided names such as O'Connor or D'Amore
* Numbers like 3, however this typically indicates a data entry error

Some payers may have more specific requirements or restrictions that we don't cover in our docs. If you're receiving errors for a specific payer, we recommend consulting that payer's documentation for eligibility checks for additional guidance.

### MBI for CMS checks [#mbi-for-cms-checks]

A Medicare Beneficiary Identifier (MBI) is a unique, randomly-generated identifier assigned to individuals enrolled in Medicare. You must include the patient's MBI in every eligibility check to the Centers for Medicare and Medicaid Services (payer ID: CMS).

Some payers return the patient's MBI in one of the following properties of the standard eligibility response:

* [`benefitsInformation[].benefitsAdditionalInformation.hicNumber`](/healthcare/api-reference/post-healthcare-eligibility#response.benefitsInformation.benefitsAdditionalInformation.hicNumber)
* [`planInformation.hicNumber`](/healthcare/api-reference/post-healthcare-eligibility#response.planInformation.hicNumber)

If the value in either of these properties matches the format specified in the [Medicare Beneficiary Identifier documentation](https://www.cms.gov/training-education/partner-outreach-resources/new-medicare-card/medical-beneficiary-identifiers-mbis), the number is likely an MBI, and we recommend sending a follow-up eligibility check to CMS for additional benefits data. You're most likely to receive an MBI in eligibility check responses from commercial Medicare Advantage plans, but they can also be present in responses from Medicaid plans for dual-eligible patients.

When you don't know a patient's MBI, you can use Stedi's eligibility check APIs to perform an MBI lookup instead of a standard eligibility check. Stedi returns a complete benefits response from CMS with the patient's MBI in the `subscriber` object for future reference. Visit [Medicare Beneficiary Identifier (MBI) lookup](/healthcare/mbi-lookup) for complete details.

<Tip>
  **Don't** submit eligibility checks for Medicare Advantage plans to CMS (HETS)
  – you should submit them to the actual Medicare Advantage plan payer
  instead.
</Tip>

## CMS traceability requirements [#cms-traceability-requirements]

<Note>
  All parties involved in HETS eligibility transactions must comply with the [HETS Rules of Behavior](https://www.cms.gov/research-statistics-data-and-systems/cms-information-technology/hetshelp/downloads/eligibilitytransactionsysteminquiriesrulesofbehavior.pdf). Compliance is also required under our terms. Review the Rules of Behavior before sending eligibility checks to CMS.
</Note>

Starting November 8, 2025, the Centers for Medicare & Medicaid Services (CMS) requires submitters to include the entire chain of network hops for every eligibility request sent to CMS's eligibility system, HETS.

Specifically, requests must include an `X-Forwarded-For` HTTP header containing the network IP addresses from the point of origin through receipt by the HETS system. CMS expects `X-Forwarded-For` to list each IP, comma-separated, starting with the originating system and continuing through every intermediary.

To comply with this requirement:

* You must collect all IP addresses for upstream requests and pass them in the standard `X-Forwarded-For` header when calling Stedi's API. If you are yourself an intermediary – for example, an RCM, EHR, or PMS system – you'll need to coordinate with your providers and any third-party organizations to ensure they include the Network IP details as part of the `X-Forwarded-For` header. This enables CMS to receive a complete list of all IPs, including the original initiator of the request (typically, the provider).
* Stedi records the IP address you use when you call our API, as well as all the IP addresses listed in the `X-Forwarded-For` header. We include these IP addresses in the list submitted to CMS.

You only need to include the `X-Forwarded-For` header in eligibility requests when there are upstream IP addresses.

The following examples illustrate when and how to include the header:

| Scenario                                                                                                                                                                   | `X-Forwarded-For` required?                                                                                                                      | Result                                                                |
| -------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------ | --------------------------------------------------------------------- |
| A provider (IP `2.2.2.2`) connects directly to Stedi without intermediaries.                                                                                               | No.                                                                                                                                              | CMS ultimately receives `X-Forwarded-For: 2.2.2.2`                    |
| A provider (IP `2.2.2.2`) routes through an RCM platform's transactional system (IP `3.3.3.3`) that calls Stedi's API using a separate integration backend (IP `4.4.4.4`). | Yes. The RCM platform sets `X-Forwarded-For: 2.2.2.2, 3.3.3.3`. Stedi records the IP address of the API caller (`4.4.4.4` ) and sends it to CMS. | CMS ultimately receives `X-Forwarded-For: 2.2.2.2, 3.3.3.3, 4.4.4.4`. |
| A provider network (IP `2.2.2.2`) passes through an office firewall (IP `4.4.4.4`) and then an RCM platform (IP `3.3.3.3`), which calls Stedi's API.                       | Yes. The RCM platform sets `X-Forwarded-For: 2.2.2.2, 4.4.4.4`. Stedi records the IP address of the API caller (`3.3.3.3`) and sends it to CMS.  | CMS ultimately receives `X-Forwarded-For: 2.2.2.2, 4.4.4.4, 3.3.3.3`. |

### U.S. IP address requirement [#us-ip-address-requirement]

Stedi blocks eligibility requests to CMS when any IP address in the chain – the originating IP address or any in the X-Forwarded-For header – is located outside the United States.

# Stedi Agent
Source: https://www.stedi.com/docs/healthcare/stedi-agent


The Stedi Agent is an AI assistant that helps you resolve common issues with eligibility checks and answers questions about supported payers.

All plans provide access to the Stedi Agent. To use it, you must be at least an [Operator](/healthcare/account-settings#members) role within your Stedi account.

To go to the Stedi Agent [**Chats** page](https://portal.stedi.com/app/healthcare/chats), click the agent icon at the top of the side navigation.

## Get payer details [#get-payer-details]

The Stedi Agent can answer your questions about supported payers. It can help you:

* Find the payer ID for supported payers.
* Map your internal payer names to Stedi's supported payers.
* Determine which payers require [transaction enrollment](/healthcare/transaction-enrollment).
* Identify which payers support medical, dental, or both use cases.
* Get help with other payer-related questions.

To start chatting with the Stedi Agent:

1. Go to the [Chats page](https://portal.stedi.com/app/healthcare/chats) in the Stedi portal.
2. Click **New chat** and select **Payer Finder**.
3. Type your question in the chat window and press &#x2A;*Enter.** For example, you could ask "What is the payer ID for Aetna?" or "Does Cigna support dental eligibility checks?" You can also ask more complex questions, like "Which payers support dental eligibility checks and require transaction enrollment?" Talk to Stedi Agent like you would a human support agent.
4. Ask follow-up questions as needed. You can ask multiple questions about different payers in the same chat.

The Stedi Agent will respond to your questions and display its answers in the chat window.

## Identify payer from member card [#identify-payer-from-member-card]

When you're unsure which payer ID to use based on the insurance information on the patient's card, you can upload the member card to the Stedi Agent. The agent analyzes the card and works to identify the correct payer ID, helping you avoid failed eligibility checks due to incorrect payer information.

This is particularly useful when:

* You have the patient's insurance card in front of you or have a scanned copy available
* The payer name on the card doesn't clearly match a payer in the [Payer Network](https://www.stedi.com/healthcare/network)
* You want to verify the correct payer before submitting an eligibility check

To identify a payer from a member card:

1. Go to the Stedi Agent [**Chats** page](https://portal.stedi.com/app/healthcare/chats) in the Stedi portal.
2. Click **New chat** and select the **Upload member ID card** option.
3. Upload a photo or scan of the front of the patient's insurance member card.
4. Review the results. The agent analyzes the card and either:
   * Successfully maps the information on the insurance card to a payer in Stedi's [Payer Network](https://www.stedi.com/healthcare/network). In this case, the agent returns information about the matching payer, including the payer's primary payer ID, Stedi payer ID, operating states, and supported transactions.
   * Indicates that it cannot read the information from the card. Try taking a clearer picture and resubmitting.
   * Indicates that it cannot determine the payer ID. Contact Stedi support.

## Resolve failed eligibility checks [#resolve-failed-eligibility-checks]

You can use the Stedi Agent to troubleshoot and resolve common recoverable eligibility check errors automatically.

To resolve an eligibility check failure with the Stedi Agent:

1. Go to the [checks view](https://portal.stedi.com/app/healthcare/eligibility/checks) or [searches view](https://portal.stedi.com/app/healthcare/eligibility/searches).
2. Hover over a failed check or search to reveal the **Resolve with Stedi Agent** button. This button is only available for checks and searches with common recoverable errors.
3. Click **Resolve with Stedi Agent**. The Stedi Agent opens a side panel in Debug view.
4. The Stedi Agent analyzes the eligibility request and works through best practice recovery strategies based on the error type. For example, if the payer returned an error code `75` (Subscriber/Insured Not Found), the agent may try different combinations of patient data or adjust the name format to find a match in the payer's system.

Each time the agent retries the eligibility check, it stores the new request in the same eligibility search record and it shows up in Debug view in real time. This allows you to see the history of attempts and the progression of the agent's troubleshooting efforts.

The agent only accesses data from the eligibility search it's working on. It can't access data from other searches, customers, or systems.

## Review chat history [#review-chat-history]

You can review a list of all past chats with the Stedi Agent on the [Chats page](https://portal.stedi.com/app/healthcare/chats) in the Stedi portal. Click any chat to open it and review the conversation history. You can restart any previous chat by sending a new message.

The chat history contains both your conversations about payer details and any recovery attempts the agent made while troubleshooting eligibility check failures.

## Usage notes [#usage-notes]

Please note:

* The Stedi Agent is available on all paid Stedi plans at no additional cost beyond those for related API calls.
* The agent is assistive. Outputs can be incorrect or incomplete. Verify all responses before taking any action based on them.
* You are responsible for any actions you instruct or authorize the AI service to take, including generating billable requests on your behalf.
* Your chats with the Stedi Agent aren't private - they're visible to anyone with access to your Stedi account.

## Stedi Agent vs. MCP server [#stedi-agent-vs-mcp-server]

The Stedi Agent and the Model Context Protocol (MCP) server can both help you resolve failed eligibility checks and find payer information, but they serve different use cases.

* The [Stedi Agent](/healthcare/stedi-agent) is a Stedi-controlled, AI assistant within the Stedi portal. It's ready to use whenever you need it. Unlike the MCP server, you can't manage or invoke the Stedi Agent programmatically - you can only use it within the Stedi portal. The Stedi Agent is built on top of the MCP server, meaning it uses the MCP server's exposed tools to perform actions.
* The [MCP Server](/healthcare/mcp-server) provides a set of tools, which are a wrapper around Stedi's APIs, that AI agents can use to find payer information and perform and troubleshoot eligibility checks. The MCP server includes the same retry logic (in a prompt) that the Stedi Agent uses to automatically resolve eligibility check failures.

  You can use the MCP server to build your own AI agents tailored to your use case. Unlike the Stedi Agent, you'll need to install and configure the MCP server for your preferred AI agent.

# Claim attachments
Source: https://www.stedi.com/docs/healthcare/submit-claim-attachments


Claim attachments are additional documents that help justify or validate a claim. They're typically required when the claim alone doesn't provide enough information for the payer to make a decision, such as when a procedure is unusual, high-cost, or uses an unlisted code.

Attachments can include medical records, treatment plans, radiographs, photographs, itemized bills, and letters from providers - the type required for each claim depends on the services listed and the payer's rules. For example, a claim for a dental crown may require X-rays, while a claim for a surgery may require an operative report.

You can submit [unsolicited 275 claim attachments](#solicited-vs-unsolicited-attachments) for professional, dental, and institutional claims in either JSON or X12 EDI format. For professional claims you can also submit attachments through the Stedi portal.

## Supported payers [#supported-payers]

You can check which payers support 275 claim attachments using the [Payer Network](https://www.stedi.com/healthcare/network) or the [Payers API](/healthcare/api-reference/get-payer). If you try to submit claim attachments to a payer that doesn't support them, Stedi blocks the submission before it reaches the payer:

* **APIs:** When you submit a claim with attachments to an unsupported payer, Stedi returns a `400` HTTP error with an explanatory error message. For example:

  ```json
  {
    "code": "TRANSACTION_TYPE_NOT_SUPPORTED",
    "message": "Payer 62308 (Stedi Payer ID HGJLR) is not configured for Unsolicited Claim Attachment (275). Please check our published payer list or contact Stedi support to resolve."
  }
  ```

* **SFTP:** When you submit a claim with attachments to an unsupported payer, Stedi rejects it with a [277CA claim acknowledgment](/healthcare/claim-responses-overview#277ca-claim-acknowledgment) explaining the issue. For example:

  ```
  STC*A7:N21*[DATE]*PR*[AMOUNT]********Payer 62308 (Stedi Payer ID HGJLR) is not configured for Unsolicited Claim Attachment (275). Please check our published payer list or contact Stedi support to resolve.~
  ```

When Stedi doesn't support attachments, you can submit them outside of Stedi - for example, directly to the payer's portal. Then, you can reference them in the claims you submit through Stedi. Contact [Stedi Support](https://www.stedi.com/contact) with questions about supported payers or for help optimizing your attachments workflow.

## Transaction enrollment [#transaction-enrollment]

[Transaction enrollment](/healthcare/transaction-enrollment) is the process of registering a provider to exchange specific healthcare transactions with a payer. Some payers require enrollment before allowing providers to submit 275 claim attachments. When required, this enrollment process is separate from the transaction enrollment process for 837 claims.

You can check whether a specific payer requires transaction enrollment for 275 attachments in the [Payer Network](https://www.stedi.com/healthcare/network) or through the [Payers API](/healthcare/api-reference/get-payer).

To enroll, complete the following steps:

1. Create a provider record with the information required for enrollment. If you already have a record for the provider, you can skip this step. [Stedi portal](https://portal.stedi.com/app/healthcare/providers) | [API endpoint](/healthcare/api-reference/post-enrollment-create-provider)
2. Submit an enrollment request for the type of claim attachments you plan to send (solicited or unsolicited). [Stedi portal](https://portal.stedi.com/app/healthcare/enrollments) | [API endpoint](/healthcare/api-reference/post-enrollment-create-enrollment)

## Submit claim attachments [#submit-claim-attachments]

Unsolicited 275 claim attachments are a separate transaction type from 837 claims. They're linked to the claim through [specific identifiers](#reference-attachments-in-a-claim) that indicate an attachment will follow the claim submission.

The submission methods available for 275 claim attachments depend on the claim type:

* **Professional claim attachments:** [claim form UI](#claim-form-ui), [JSON APIs](#json-apis), [X12 EDI APIs](#x12-edi-apis), and [SFTP](#sftp)
* **Dental claim attachments:** [JSON APIs](#json-apis), [X12 EDI APIs](#x12-edi-apis), and [SFTP](#sftp)
* **Institutional claim attachments:** [JSON APIs](#json-apis), [X12 EDI APIs](#x12-edi-apis), and [SFTP](#sftp)

### Claim form UI [#claim-form-ui]

You can submit attachments through the Stedi portal at the same time you are manually submitting a professional claim. The claim submission UI is based on the CMS-1500 Claim Form. Visit [Submit professional claims](/healthcare/submit-professional-claims#ui-submission) for instructions.

<Note>
  UI attachment submission isn't supported for dental or institutional claims.
</Note>

### JSON APIs [#json-apis]

You can submit [unsolicited claim attachments](#solicited-vs-unsolicited-attachments) through Stedi JSON APIs for all claim types. Submitting claim attachments in JSON requires three steps:

<Steps>
  <Step title="Create the claim attachment.">
    Call the [Create Claim Attachment (275) JSON](/healthcare/api-reference/post-healthcare-create-claim-attachment) endpoint to receive a pre-signed URL that you can use to upload the attachment file to Stedi.

    The response also contains an `attachmentId` that you'll include in the claim submission.
  </Step>

  <Step title="Upload the attachment file.">
    Use a `PUT` request to upload the attachment file to the pre-signed URL (`uploadUrl`) in the response. The request must include a `Content-Type` header that matches the MIME type you specified for the attachment file.

    The following example shows how to upload a JPEG attachment:

    ```bash
    curl --request PUT \
      --url "<uploadUrl>" \
      --header "Content-Type: image/jpeg" \
      --upload-file /path/to/file.jpeg
    ```

    We recommend limiting attachments to 64MB each, but some payers may have different size requirements. When in doubt, check the payer's documentation to determine their specific limits. Stedi stores uploaded files for 45 days. After that, you must reupload the attachment file before you can submit it to the payer.
  </Step>

  <Step title="Submit the claim and attachment information.">
    Call one of the following claim submission endpoints:

    * [Professional Claims JSON](/healthcare/api-reference/post-healthcare-claims)
    * [Dental Claims JSON](/healthcare/api-reference/post-healthcare-dental-claims)
    * [Institutional Claims JSON](/healthcare/api-reference/post-healthcare-institutional-claims)

    You must include [specific properties](#reference-attachments-in-a-claim) in your request to identify the attachment and tell Stedi which attachment file to use. These properties are `attachmentReportTypeCode`, `attachmentTransmissionCode`, and `attachmentId`.

    Stedi sends the claim and the claim attachment to the payer and then returns summary information about the claim submission.
  </Step>
</Steps>

The payer processes the claim and attachment together, and sends back [277CA and 835 ERA responses](/healthcare/submit-claim-attachments#payer-responses).

### X12 EDI APIs [#x12-edi-apis]

You can submit [unsolicited claim attachments](#solicited-vs-unsolicited-attachments) through Stedi X12 EDI APIs for all claim types. This approach is useful when you have an existing system that generates X12 EDI files and you want to send them through Stedi.

With X12 EDI submissions, you don't need to upload the attachment file to Stedi first - you can send the entire 275 transaction directly to the payer. Submitting claim attachments through our X12 EDI APIs requires two steps:

<Steps>
  <Step title="Submit the claim.">
    Call one of the following endpoints:

    * [Professional Claims Raw X12](/healthcare/api-reference/post-healthcare-claims-raw-x12)
    * [Dental Claims Raw X12](/healthcare/api-reference/post-healthcare-dental-claims-raw-x12)
    * [Institutional Claims Raw X12](/healthcare/api-reference/post-healthcare-institutional-claims-raw-x12)

    In addition to the claim information, you must include [specific elements](#reference-attachments-in-a-claim) in either `Loop 2300` or `Loop 2400` (professional claims only) to identify the attachment. These elements are `PWK01`, `PWK02`, and `PWK06`.

    Only include attachment details when you plan to submit an attachment. Some payers stall claim processing indefinitely if you include a `PWK` segment without sending an associated attachment.
  </Step>

  <Step title="Submit the attachment.">
    Call the [Submit Claim Attachment (275) X12 EDI](/healthcare/api-reference/post-healthcare-submit-claim-attachment-raw-x12) endpoint. Stedi sends the 275 transaction to the payer and returns summary information about the submission.

    * **Payer ID:** You must submit a payer identifier in `Loop 1000A NM109` so Stedi can route the attachment to the correct payer. This identifier **must** be a payer ID or payer ID alias listed in the [Payer Network](https://www.stedi.com/healthcare/network). For example, you could use `60054`, `HPQRS`, `AETNA`, or any other listed payer ID alias for Aetna.
    * **Attachment Control Number:** You must also submit the attachment control number in `Loop 2000A TRN02` (Attachment Control Number). It should match the value you submitted in the claim's `Loop 2300` or `Loop 2400` `PWK06` element. This is how Stedi and the payer match the attachment with the claim.

    The size limit for attachments submitted in a single API request is 6MB. If you need to submit larger attachment files, you must submit them through Stedi SFTP or the JSON endpoints.
  </Step>
</Steps>

Once received, the payer processes the claim and attachment together and sends back [277CA and 835 ERA responses](/healthcare/submit-claim-attachments#payer-responses).

### SFTP [#sftp]

You can submit [unsolicited claim attachments](#solicited-vs-unsolicited-attachments) in X12 EDI format through SFTP for all claim types.

SFTP submission is ideal if you have attachments that are larger than 6MB.

Submitting claim attachments through SFTP requires sending two transactions to the payer. You can send these transactions as separate files or together in the same file as long as the claim and the attachment are within the same interchange (`ISA`/`IEA`) envelope:

<Steps>
  <Step title="837 claim.">
    Submit an 837 professional, dental, or institutional claim to the payer through [Stedi SFTP](/healthcare/submit-claims-sftp-connection#837-claims).

    You must include specific elements in either `Loop 2300` or `Loop 2400` (professional claims only) to identify the attachment. These elements are `PWK01`, `PWK02`, and `PWK06`.

    Only include attachment details when you plan to submit an attachment. Some payers stall claim processing indefinitely if you include a `PWK` segment without sending an associated attachment.
  </Step>

  <Step title="275 claim attachment.">
    Submit a 275 claim attachment to the payer through [Stedi SFTP](/healthcare/submit-claims-sftp-connection#275-claim-attachments).

    * **Payer ID:** You must submit a payer identifier in `Loop 1000A NM109` so Stedi can route the attachment to the correct payer. This identifier **must** be a payer ID or payer ID alias listed in the [Payer Network](https://www.stedi.com/healthcare/network). For example, you could use `60054`, `HPQRS`, `AETNA`, or any other listed payer ID alias for Aetna.
    * **Attachment Control Number:** You must also submit the attachment control number in `Loop 2000A TRN02` (Attachment Control Number). It should match the value you submitted in the claim's `Loop 2300` or `Loop 2400` `PWK06` element. This is how Stedi and the payer match the attachment with the claim.

    We recommend limiting attachments to 64MB each, but some payers may have different size requirements. When in doubt, check the payer's documentation to determine their specific limits.
  </Step>
</Steps>

Once received, the payer processes the claim and attachment together and sends back [277CA and 835 ERA responses](/healthcare/submit-claim-attachments#payer-responses).

## Reference attachments in a claim [#reference-attachments-in-a-claim]

To submit an unsolicited claim attachment, you must submit a claim that references the attachment(s) in the appropriate location. When submitting claims through Stedi APIs or SFTP, include the following properties or elements to identify the attachment(s).

<Note>
  If you're submitting claims manually, visit [Submit professional claims](/healthcare/submit-professional-claims#ui-submission) for instructions.
</Note>

### Attachment level [#attachment-level]

You can specify attachments that relate to the entire claim or to a specific service line.

#### Entire claim [#entire-claim]

For professional, dental, and institutional claims, you can specify claim-level attachments in the `claimInformation.claimSupplementalInformation.reportInformation` object or the `claimInformation.claimSupplementalInformation.reportInformations` array (for multiple attachments). These structures correspond to segment `PWK` in `Loop 2300`.

API reference docs: [professional](/healthcare/api-reference/post-healthcare-claims#body.claimInformation.claimSupplementalInformation.reportInformation) | [dental](/healthcare/api-reference/post-healthcare-dental-claims#body.claimInformation.claimSupplementalInformation.reportInformation) | [institutional](/healthcare/api-reference/post-healthcare-institutional-claims#body.claimInformation.claimSupplementalInformation.reportInformation)

#### Service line [#service-line]

* **Professional claim attachments:** Specify service line attachments in the `claimInformation.serviceLines[].serviceLineSupplementalInformation` array. This array corresponds to segment `PWK` in `Loop 2400`.

  API reference docs: [professional](/healthcare/api-reference/post-healthcare-claims#body.claimInformation.serviceLines.serviceLineSupplementalInformation)

* **Institutional claim attachments:** For institutional claims, you can specify service line attachments in the `claimInformation.serviceLines[].serviceLineSupplementalInformation` object or the `claimInformation.serviceLines[].serviceLineSupplementalInformations` array (for multiple attachments). These structures correspond to segment `PWK` in `Loop 2400`.

  API reference docs: [institutional](/healthcare/api-reference/post-healthcare-institutional-claims#body.claimInformation.serviceLines.serviceLineSupplementalInformation)

### Required properties [#required-properties]

Both claim and service line attachments require the following properties to inform the payer that an attachment will follow the claim submission.

<Warning>
  Only include attachment details when you plan to submit an attachment. Some payers stall claim processing indefinitely if you include attachment details but don't send an associated attachment.
</Warning>

{/* prettier-ignore-start */}

| JSON property                | X12 EDI | Description                                                                                                                                                                                                 |
| ---------------------------- | ------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `attachmentReportTypeCode`   | `PWK01` | This code identifies the type of report or document you plan to submit as an attachment. Visit [Code lists](/healthcare/claims-code-lists#attachment-report-type-codes) for a complete list of valid codes. |
| `attachmentTransmissionCode` | `PWK02` | Set to `EL` when submitting attachments through Stedi. This property indicates the attachment will be sent in a separate, electronic 275 transaction.                                                       |

{/* prettier-ignore-end */}

You must also include **one** of the following properties, depending on your use case. Specifically, you should only include the attachment control number when you're not submitting the attachment file through Stedi (for example, you submitted the attachment directly through a payer's portal). Otherwise, include the attachment ID.

{/* prettier-ignore-start */}

| JSON property             | X12 EDI | Description                                                                                                                                                                                                                                                                                                                                                                                                                                  |
| ------------------------- | ------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `attachmentControlNumber` | `PWK06` | A unique identifier for the attachment. The payer uses this value to match the attachment to the claim. We recommend using a ULID or UUID of up to 50 characters.<ul><li>X12 EDI submissions: This property is **required**.</li><li>JSON submissions: Only include this property when you aren't submitting the attachment file through Stedi's API. For example, you submitted the attachment directly through a payer's portal.</li></ul> |
| `attachmentId`            | -       | The attachment ID you received in the [Create Claim Attachment (275) JSON](/healthcare/api-reference/post-healthcare-create-claim-attachment) response. It tells Stedi which file to use when generating the 275 transaction for the payer. This property is **required** if you're submitting attachments through a JSON endpoint.                                                                                                          |

{/* prettier-ignore-end */}

## Reference the claim in attachments [#reference-the-claim-in-attachments]

275 attachment transactions must include an identifier that allows the payer to match it with the associated 837 claim.

{/* prettier-ignore-start */}

| Submission method | Identifier                                     | Description                                                                                                                                                                                                                            |
| ----------------- | ---------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| JSON APIs         | -                                              | You don't need to supply your own identifier. The [Create Claim Attachment (275) JSON](/healthcare/api-reference/post-healthcare-create-claim-attachment) endpoint returns an `attachmentId` that you include in the claim submission. |
| X12 EDI and SFTP  | `Loop 2000A TRN02` (Attachment Control Number) | The `TRN02` value must match the `PWK06` (Attachment Control Number) in the claim.                                                                                                                                                     |

{/* prettier-ignore-end */}

## Solicited vs. unsolicited attachments [#solicited-vs-unsolicited-attachments]

There are two types of claim attachments:

* **Solicited:** The payer requests attachments for a submitted claim in a Request for Additional Information (277 RFA) transaction. In these cases, you must submit the attachment(s) in a separate 275 transaction that references the 277 RFA.
* **Unsolicited:** The provider proactively sends attachments at their discretion without a prior request from the payer. In these cases, you must [reference the attachment(s) in the claim submission](/healthcare/submit-claim-attachments#reference-attachments-in-a-claim).

You can only submit unsolicited claim attachments through Stedi APIs and SFTP. Check the [Payer Network](https://www.stedi.com/healthcare/network?query=eyIyNzAiOnt9LCIyNzYiOnt9LCI4MzUiOnt9LCI4MzdQIjp7fSwiODM3SSI6e30sIjgzN0QiOnt9LCJDT0IiOnt9LCIyNzVTIjp7ImlzU3VwcG9ydGVkIjp0cnVlfSwiMjc1VSI6eyJpc1N1cHBvcnRlZCI6dHJ1ZX19\&page=0) to determine which payers support attachments.

## Payer responses [#payer-responses]

The payer processes claims and claim attachments together. When you submit a claim attachment, you'll receive the same [277CA and 835 ERA responses](/healthcare/receive-claim-responses#retrieve-responses-from-stedi) for the claim as you would for a regular claim submission.

If a claim is rejected, pended, or denied due to issues with attachments, you'll likely receive error codes in the 277CA response that indicate the issue. However, the exact error codes used depend on the payer's system and how they handle attachments.

## Concurrency limit [#concurrency-limit]

Claim attachment endpoints share a concurrency pool with other claim endpoints. For more information, visit [Concurrency limits](/healthcare/api-reference#concurrency-limits).

# Format and submit claims
Source: https://www.stedi.com/docs/healthcare/submit-claims-sftp-connection


After [setting up SFTP](/healthcare/submit-claims-sftp-setup) and submitting [test claims](/healthcare/submit-claims-sftp-setup#submit-test-claims), you're ready to start submitting production 837 claims and unsolicited 275 claim attachments.

## Before sending claims [#before-sending-claims]

You may need to complete the following steps before sending claims.

### Transaction enrollment [#transaction-enrollment]

[Transaction enrollment](/healthcare/transaction-enrollment) is the process of registering a provider to exchange specific healthcare transactions with a payer. Some payers require enrollment before allowing providers to submit 837 claims through a new clearinghouse.

You can check whether a specific payer requires transaction enrollment for 837 claims in the [Payer Network](https://www.stedi.com/healthcare/network) or through the [Payers API](/healthcare/api-reference/get-payer).

To enroll, complete the following steps:

1. Create a provider record with the information required for enrollment. If you already have a record for the provider, you can skip this step. [Stedi portal](https://portal.stedi.com/app/healthcare/providers) | [API endpoint](/healthcare/api-reference/post-enrollment-create-provider)
2. Submit an enrollment request for the claim type. [Stedi portal](https://portal.stedi.com/app/healthcare/enrollments) | [API endpoint](/healthcare/api-reference/post-enrollment-create-enrollment)

<Note>
  For most payers that require enrollment for claim submission, enrolling through Stedi won't impact your ability to send transactions to your original clearinghouse. Only a few payers require the 837 claim to be sent to the same clearinghouse as the 835 ERA enrollment. For any questions on payer nuances, contact Stedi's support team.
</Note>

#### Best practices [#best-practices]

* Leverage [batch enrollments](/healthcare/create-manage-transaction-enrollments#bulk-csv-import) when onboarding new provider groups or many providers at a time.
* For ERAs, you can only be enrolled through one clearinghouse at a time per payer per provider. When your ERA enrollment is accepted through Stedi, you'll stop receiving ERAs through the previous clearinghouse. Every other transaction type accepts enrollment through more than one clearinghouse.

### Coordination of benefits check [#coordination-of-benefits-check]

We recommend running a coordination of benefits (COB) check to ensure you submit claims to the correct payer. COB checks can help you determine:

* If a patient is covered by more than one health plan
* Whether coverage overlap requires coordination of benefits
* Each payer's responsibility for payment (primacy) in coordination of benefits scenarios

Visit [Coordination of benefits (COB) checks](/healthcare/coordination-of-benefits) for more information.

## Format X12 EDI files [#format-x12-edi-files]

You must drop claims and claim attachments into the `to-stedi` directory in X12 EDI format. Stedi validates the claims and routes them to the appropriate clearinghouse based on the `ISA15` Interchange Usage Indicator element and the SFTP user type.

### 837 claims [#837-claims]

Claims must adhere to the following X12 HIPAA claim specifications:

* [837 Claim: Professional (X222A1)](https://portal.stedi.com/app/guides/view/hipaa/health-care-claim-professional-x222a1/01HR60MDFAGCSEJNKY8J38867Y)
* [837 Claim: Institutional (X223A2)](https://portal.stedi.com/app/guides/view/hipaa/health-care-claim-institutional-x223a2/01JBHW2YXMN2F9KXK2PS0BFP9F)
* [837 Claim: Dental (X224A2)](https://portal.stedi.com/app/guides/view/hipaa/health-care-claim-dental-x224a2/01JCJZ46AEK835RYV1BXQNBPK8)

We recommend submitting one claim per file to make troubleshooting easier. However, an EDI Interchange can contain multiple transactions, so you can submit multiple claims within a single file if needed. Regardless of how many claims you submit in a file, Stedi processes each claim individually and returns each claim response as a separate file.

#### Required elements [#required-elements]

You must populate all required claim information according to the X12 HIPAA specification. You can submit any valid values in the `ISA` and `GS` envelope with a few exceptions listed in the following table.

You must set the following elements to specific values:

{/* prettier-ignore-start */}

| Data                              | Location            | Instructions                                                                                                                                                                                                                                                                                        |
| --------------------------------- | ------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Interchange Usage Indicator       | `ISA15`             | Set to `T` for test claims or `P` for production claims. You must use a test SFTP user to submit test claims and a production SFTP user to submit production claims.                                                                                                                                |
| Group Control Number              | `GS06`              | Include a unique value for each claim so you can correlate [error 999 Implementation Acknowledgments](#monitor-for-999-rejections-strongly-recommended) with the original claim submission. Without a unique `GS06`, you won't be able to determine which claim was rejected.                       |
| Implementation Guide Version Name | `ST03`              | Set to the appropriate value for the claim type:<br />• Professional: `005010X222A1`<br />• Institutional: `005010X223A2`<br />• Dental: `005010X224A2`                                                                                                                                             |
| Payer ID                          | `Loop 2010BB NM109` | Submit a payer identifier listed in the [Payer Network](https://www.stedi.com/healthcare/network) so Stedi can route the claim to the correct payer. This identifier must be a payer ID or payer ID alias. You must include leading `0` characters - for example, use `00540` for SISCO, not `540`. |
| Patient Control Number            | `CLM01`             | We recommend including a unique value for each claim. This value is returned in both the 277CA and 835 ERA responses, so you can use it to correlate responses with the original claim.                                                                                                             |

{/* prettier-ignore-end */}

<Tip>
  If your system requires you to send unique values in the `ISA` and `GS`
  envelope, you can find suggested configurations for each transaction type on
  the [SFTP setup page](https://portal.stedi.com/app/settings/developer/sftp)
  under **ISA settings**.
</Tip>

The following example shows a professional claim in X12 EDI format. `ISA15` is set to `P`, as this is a production claim.

```
ISA*00*          *00*          *ZZ*401576130024   *ZZ*STEDI          *260213*2039*^*00501*000000123*0*P*>~
GS*HC*574183004559*STEDI*20260213*203918*39*X*005010X222A1~
ST*837*0001*005010X222A1~
BHT*0019*00*01KHCBK84E40QQYJVXA5VVXG54*20260213*2038*CH~
NM1*41*2*Data Health Services*****46*123435~
PER*IC**TE*5552223333~
NM1*40*2*AETNA*****46*60054~
HL*1**20*1~
PRV*BI*PXC*2084P0800X~
NM1*85*2*Billing Provider Name*****XX*1999999984~
N3*123 Some St*Floor 1~
N4*A City*NY*123450000~
REF*EI*123456789~
PER*IC*Data Health Services*TE*5553334444~
HL*2*1*22*0~
SBR*P*18*3335555******CI~
NM1*IL*1*Doe*John****MI*123456789~
N3*123 Some St~
N4*Somewhere*VA*123450000~
DMG*D8*20000101*M~
NM1*PR*2*AETNA*****PI*60054~
CLM*123456789*109.2***02>B>1*Y*A*Y*Y~
HI*ABK>F1111~
NM1*77*2*Service Facility Name~
N3*1234 Other St~
N4*A City*NY*123450000~
LX*1~
SV1*HC>90837>95*109.2*UN*1***1~
DTP*472*D8*20240101~
REF*6R*111222333~
SE*29*0001~
GE*1*39~
IEA*1*000000123~
```

#### Claim identifier [#claim-identifier]

`Loop 2300 REF02` (Claim Identifier for Transmission Intermediaries) has different usage rules depending on your role:

* **Providers:** Don't include `Loop 2300 REF02` when `REF01` = `D9` in your claim submission. It's reserved for clearinghouses and intermediaries. You can use `Loop 2300 CLM01` (Patient Control Number) to correlate claims with responses instead.
* **Clearinghouses and intermediaries:** You can optionally include `REF*D9` in your 837 submissions. Stedi always returns this value in `Loop 2200D REF*D9` of 277CA claim acknowledgments, allowing you to match these responses to the claim.

#### Bulk claims [#bulk-claims]

You can submit multiple claims in the same 837 transaction by including multiple instances of the following loops:

* `Loop 2000A` (Billing Provider)
* `Loop 2000B` (Subscriber)
* `Loop 2300` (Claim Information) - You can submit up to 1,000 claim loops in each 837 transaction

After submission, Stedi separates your bulk 837 transaction into individual claims and sends each claim separately to the payer. This includes multiple claims going to the same payer - Stedi sends all claims within a bulk submission individually to maintain consistency.

The following example would produce 12 separate claims (2 x 3 x 2 = 12):

* 837 transaction contains information for two billing providers (2x `Loop 2000A`)
* Each billing provider has three subscribers (3x `Loop 2000B`)
* Each subscriber has two claims (2x `Loop 2300`)

By default, Stedi returns one 999 Implementation Acknowledgment when one or more transactions in the bulk 837 fail validation. 999s for fully accepted bulk transactions are opt-in only - visit [Monitor for 999 rejections](#monitor-for-999-rejections-strongly-recommended) for details.

Then, you'll typically receive separate 277CA claim acknowledgments *for each claim*. Note that Stedi sends accepted claims to the payer, even if other claims within the batch fail our validation. You should monitor for [277CA rejections](/healthcare/submit-claims-sftp-retrieve-responses#277ca-claim-acknowledgment) and resubmit those claims accordingly.

Each claim will also receive its own test ERA from Stedi's test clearinghouse if the payer was `STEDITEST`. Visit [Test claims workflow](/healthcare/test-claims-workflow#generate-test-eras) for details.

<Note>
  You'll be billed per claim submitted, not per bulk 837 transaction. For
  example, if you submit a bulk 837 transaction with 10 claims, you'll be billed
  for 10 claims.
</Note>

### 275 claim attachments [#275-claim-attachments]

You can submit unsolicited claim attachments through SFTP. Unsolicited attachments are sent proactively with the claim without a prior payer request. If a payer sends a Request for Additional Information (277 RFA), you cannot submit the requested attachments through Stedi.

Before you can submit an attachment, you must first submit a claim that references the attachment(s) in the appropriate location. Visit [Claim attachments](/healthcare/submit-claim-attachments) for complete instructions.

Claim attachments must adhere to the [275 Patient Information (X210)](https://portal.stedi.com/app/guides/view/hipaa/patient-information-x210/01HQ4HZ8ZBY2CZGPCVVM8JTK22) X12 HIPAA specification.

#### Required elements [#required-elements-1]

You must set the following elements to specific values:

{/* prettier-ignore-start */}

| Data                              | Location           | Instructions                                                                                                                                                                                                                                                                                             |
| --------------------------------- | ------------------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Interchange Usage Indicator       | `ISA15`            | Set to `T` for test attachments or `P` for production attachments. You must use a test SFTP user to submit test attachments and a production SFTP user to submit production attachments.                                                                                                                 |
| Implementation Guide Version Name | `ST03`             | Set to `005010X210` for all 275 claim attachments.                                                                                                                                                                                                                                                       |
| Payer ID                          | `Loop 1000A NM109` | Submit a payer identifier listed in the [Payer Network](https://www.stedi.com/healthcare/network) so Stedi can route the attachment to the correct payer. This identifier must be a payer ID or payer ID alias. You must include leading `0` characters - for example, use `00540` for SISCO, not `540`. |
| Attachment Control Number         | `Loop 2000A TRN02` | This value must match the value you submitted in the claim's `PWK06` element. This is how Stedi and the payer match the attachment with the claim.                                                                                                                                                       |

{/* prettier-ignore-end */}

The following example shows a 275 claim attachment in X12 EDI format. `ISA15` is set to `T`, as this is a test attachment.

```
ISA*00*          *00*          *ZZ*STEDI          *ZZ*CIGNA          *250227*2140*^*00501*000000001*0*T*>~
GS*PI*STEDI*CIGNA*20250227*214016*1*X*005010X210~
ST*275*1001*005010X210~
BGN*11*0001*20060915~
NM1*PR*2*CIGNA*****XV*62308~
NM1*41*2*XYZ SERVICES*****46*1999999976~
NM1*1P*2*THE HOSPITAL*****XX*3999000B01~
NX1*1P~
N3*123 Main~
N4*Miami*FL*11111~
NM1*QC*1*DOE*JOHN*J***MI*987654320~
REF*EJ*DOE123~
REF*EA*AAAAA12345~
DTP*472*D8*20060812~
LX*1~
TRN*2*11122233344~
STC*R4>18626-2>>LOI~
DTP*368*D8*20060915~
CAT*AE*TX~
EFI*05~
BIN*8*U3RlZGk=~
SE*20*1001~
GE*1*1~
IEA*1*000000001~
```

#### Size limits [#size-limits]

We recommend limiting attachments to 64MB each, but some payers may have different size requirements. When in doubt, check the payer's documentation to determine their specific limits. This limit is per attachment file - you can submit multiple attachment files in each 275 transaction.

## Send claims and attachments [#send-claims-and-attachments]

You can drop claim and attachment files into the `to-stedi` directory. Stedi automatically validates the data and then routes each transaction to the appropriate clearinghouse (test or production).

Stedi deletes files from the `to-stedi` directory after processing them to avoid duplicate submissions.

## Monitor for 999 rejections (strongly recommended) [#monitor-for-999-rejections-strongly-recommended]

When claim or attachment transactions fail Stedi's validation, Stedi returns a [999 Implementation Acknowledgment](https://portal.stedi.com/app/guides/view/hipaa/implementation-acknowledgment-x231a1/01HMRQV0N8SPHG58M4ZG1CRHH0) within minutes of the file submission. The 999 indicates that at least one transaction in the file was rejected for processing. Other transactions in the same file may still be accepted and sent to the payer.

We strongly recommend monitoring the `from-stedi` directory for these error 999s that indicate rejections. Otherwise, your claim and attachment submissions may silently fail because Stedi doesn't send rejected transactions to the payer.

By default, you'll only receive 999s when Stedi rejects one or more transactions in a functional group. You can opt in to receive 999s for fully accepted functional groups as well. To update your 999 settings in the Stedi portal:

1. Go to the [SFTP setup page](https://portal.stedi.com/app/settings/developer/sftp) in your account settings.
2. Under **999 settings**, select **All 999s**.

<Tip>
  A 999 doesn't indicate whether the payer accepted or rejected your claim. For that information, check the [277CA claim acknowledgment](/healthcare/submit-claims-sftp-retrieve-responses#277ca-claim-acknowledgment) response from the payer.
</Tip>

#### Interpret 999s [#interpret-999s]

Check `AK901` (Functional Group Acknowledge Code). The 999 will contain one `AK901` element for each functional group in the file.

* **Receipt acknowledgment 999:** `AK901` is set to `A` for Accepted. Stedi accepted all transactions in the functional group for processing and sent them to the payer.
* **Error 999:** `AK901` is set to either `R` for Rejected or `P` for Partially Accepted. Stedi rejected at least one transaction in the functional group due to X12 EDI validation errors. For each transaction, the 999 will include `Loop 2000` (Transaction Set Response Header). Within that loop, check `IK501` (Transaction Set Acknowledgment Code).
  * Accepted transactions have `IK501` set to `A`. Stedi sends accepted transactions to the payer, so you only need to correct and resubmit the rejected ones.
  * Rejected transactions have `IK501` set to `R`. For rejected transactions, Stedi lists the validation errors in `Loop 2100` (Error Identification). You must correct the errors and resubmit.

**Examples**

`AK901` (Functional Group Acknowledge Code) is set to `R` if all transactions were rejected, or `P` if the group was partially accepted:

```
AK9*P*3*3*1~    ← Partially accepted: 3 transactions submitted, 3 received, 1 accepted (2 rejected)
```

For each rejected transaction, `IK501` (Transaction Set Acknowledgment Code) is set to `R`. The `IK3` (Error Identification) and `IK4` (Implementation Data Element Note) segments identify where the error occurred. For example:

```
AK2*837*0002~      ← Responding to transaction 0002
IK3*CLM*22**8~     ← CLM segment at position 22 has element errors
IK4*2*782*1~       ← Element 2 is missing a mandatory value
IK5*R*5~           ← Transaction rejected
```

#### Correlate 999s with claim [#correlate-999s-with-claim]

Use `AK102` (Group Control Number) to correlate the 999 with the original claim. It contains the same value you supplied in the claim's `GS06` (Group Control Number). For this reason, you should always use a unique value in `GS06` for each claim.

# Submit claims through SFTP
Source: https://www.stedi.com/docs/healthcare/submit-claims-sftp-overview


You can use Stedi's fully-managed SFTP server to submit 837 claims and unsolicited 275 claim attachments to payers and retrieve responses without calling Stedi APIs.

You must submit claims and attachments in X12 EDI format, and Stedi returns claim responses through the SFTP connection in X12 EDI format. This makes Stedi SFTP a good option if you have an existing system that generates X12 EDI files and you want to send them through Stedi without completing an API integration.

## How SFTP connections work [#how-sftp-connections-work]

Use the following process to submit claims to Stedi:

1. Create SFTP users through the [SFTP setup](https://portal.stedi.com/app/settings/developer/sftp) page in your account. You'll use these credentials to connect to Stedi's SFTP server.
2. Connect to Stedi's server and drop X12 EDI files into the `to-stedi` directory.
3. Stedi automatically validates the data and determines whether each file contains a test or a production transaction. If there are no validation errors, Stedi routes your transactions to the test or production clearinghouse accordingly.
4. Stedi places responses into the `from-stedi` directory in X12 EDI format. You can retrieve these responses from the directory at your preferred cadence without calling Stedi APIs.

Stedi shows all claims and claim responses sent through the SFTP connection on the [claims view](/healthcare/claims-view) in the Stedi portal. This allows you to review your claim submissions, quickly find related responses, and download transaction data.

## Next steps [#next-steps]

Visit [SFTP setup](/healthcare/submit-claims-sftp-setup) to create SFTP users and connect to Stedi's server.

# Retrieve claim responses
Source: https://www.stedi.com/docs/healthcare/submit-claims-sftp-retrieve-responses


After submitting claims through SFTP, you can retrieve claim responses at your preferred cadence from the `from-stedi` directory. You can optionally set up webhooks to get real-time notifications when new responses are available.

## Set up webhooks (optional) [#set-up-webhooks-optional]

Webhooks send real-time notifications to your endpoint when Stedi processes claims, attachments, and responses. You can [configure webhooks](/healthcare/configure-webhooks) to help you monitor your claims pipeline and receive instant alerts when issues occur.

### Recommended event bindings [#recommended-event-bindings]

When configuring webhooks for SFTP submission, consider the following [event bindings](/healthcare/configure-webhooks#event-bindings):

{/* prettier-ignore-start */}

| Event type                                                | Description                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |
| --------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Transaction processed** (strongly recommended for 999s) | Emitted when Stedi processes any transaction, including 999 Implementation Acknowledgments, 277CA claim acknowledgments, and 835 Electronic Remittance Advice (ERA).<ul><li>Set up event bindings filtered to 999s so you receive instant notifications when Stedi rejects one or more transactions. Learn more about [monitoring for 999 rejections](/healthcare/submit-claims-sftp-connection#monitor-for-999-rejections-strongly-recommended).</li><li>You can also configure event bindings for 277CAs and ERAs to receive real-time notifications when payer responses are available.</li></ul> |
| **File failed** (recommended)                             | Emitted when Stedi fails to process a response from a payer or cannot deliver a submitted claim. We recommend monitoring these events because they include errors that are only available through this event type, such as an invalid envelope or other issues that prevent Stedi from parsing the file.                                                                                                                                                                                                                                                                                             |
| **File delivered** (optional)                             | Emitted when Stedi successfully delivers your claim or attachment to our connection with the payer.<ul><li>Configuring event bindings for claims and attachments gives you real-time notifications when Stedi delivers your transactions to the payer.</li><li>This only confirms Stedi delivered the file - it doesn't indicate whether the payer accepted or rejected the claim.</li></ul>                                                                                                                                                                                                         |

{/* prettier-ignore-end */}

The following examples show transaction processed events for a 999, 277CA, and 835 ERA. The `x12.metadata.transaction.transactionSetIdentifier` property identifies the transaction type (999, 277, or 835).

<Accordion title="Example transaction processed events" id="example-transaction-processed-events">
    <CodeBlockTabs defaultValue="processed 999">
      <CodeBlockTabsList>
        <CodeBlockTabsTrigger value="processed 999">
          processed 999
        </CodeBlockTabsTrigger>

        <CodeBlockTabsTrigger value="processed 277CA">
          processed 277CA
        </CodeBlockTabsTrigger>

        <CodeBlockTabsTrigger value="processed 835 ERA">
          processed 835 ERA
        </CodeBlockTabsTrigger>
      </CodeBlockTabsList>

      <CodeBlockTab value="processed 999">
        ```json
        {
          "event": {
            "version": "0",
            "id": "a3c7d891-2b4f-1a55-9e72-f8d3c5a9b1e6",
            "detail-type": "transaction.processed.v2",
            "source": "stedi.core",
            "account": "<ACCOUNT_ID>",
            "time": "2025-07-14T20:15:32Z",
            "region": "us-east-1",
            "resources": [
              "https://core.us.stedi.com/2023-08-01/transactions/7a2f8c9d-1e3b-4a5c-8d7f-9b6e4c2a1f8d"
            ],
            "detail": {
              "transactionId": "7a2f8c9d-1e3b-4a5c-8d7f-9b6e4c2a1f8d",
              "direction": "INBOUND",
              "mode": "test",
              "fileExecutionId": "3d8f7a5b-9c2e-4f1a-b8d6-e4c9a7f2b1d3",
              "processedAt": "2025-07-14T20:15:32.421Z",
              "fragments": null,
              "artifacts": [
                {
                  "artifactType": "application/edi-x12",
                  "usage": "input",
                  "url": "https://core.us.stedi.com/2023-08-01/transactions/7a2f8c9d-1e3b-4a5c-8d7f-9b6e4c2a1f8d/input",
                  "sizeBytes": 542,
                  "model": "transaction"
                },
                {
                  "artifactType": "application/json",
                  "usage": "output",
                  "url": "https://core.us.stedi.com/2023-08-01/transactions/7a2f8c9d-1e3b-4a5c-8d7f-9b6e4c2a1f8d/output",
                  "sizeBytes": 1823,
                  "model": "transaction"
                }
              ],
              "partnership": {
                "partnershipId": "local-clearinghouse-test",
                "partnershipType": "x12",
                "sender": {
                  "profileId": "clearinghouse-test"
                },
                "receiver": {
                  "profileId": "local"
                }
              },
              "x12": {
                "transactionSetting": {
                  "guideId": "01HMR0V8N2PHGA8M4ZG1CRHH0",
                  "transactionSettingId": "01HMR1P4N6QJHB9N5AH2DSKKJ1"
                },
                "metadata": {
                  "interchange": {
                    "acknowledgmentRequestedCode": "0",
                    "controlNumber": 123
                  },
                  "functionalGroup": {
                    "controlNumber": 456,
                    "release": "005010X231A1",
                    "date": "2025-07-14",
                    "time": "20:15:15",
                    "functionalIdentifierCode": "FA"
                  },
                  "transaction": {
                    "controlNumber": "0001",
                    "transactionSetIdentifier": "999"
                  },
                  "receiver": {
                    "applicationCode": "401576130024",
                    "isa": {
                      "qualifier": "ZZ",
                      "id": "401576130024"
                    }
                  },
                  "sender": {
                    "applicationCode": "STEDITEST",
                    "isa": {
                      "qualifier": "ZZ",
                      "id": "STEDITEST"
                    }
                  }
                }
              },
              "connectionId": "01J1M5124B2HWMNN91Q3Z6AM61"
            }
          }
        }
        ```
      </CodeBlockTab>

      <CodeBlockTab value="processed 277CA">
        ```json
        {
          "event": {
            "version": "0",
            "id": "f972fb53-653a-1747-ce30-bed15fc04f5c",
            "detail-type": "transaction.processed.v2",
            "source": "stedi.core",
            "account": "<ACCOUNT_ID>",
            "time": "2024-07-18T16:21:24Z",
            "region": "us-east-1",
            "resources": [
              "https://core.us.stedi.com/2023-08-01/transactions/f0d3f790-0bc9-432b-93kd-e4b7ece67946"
            ],
            "detail": {
              "transactionId": "f0d4f780-0ec9-432b-93gd-e4b7ece93946",
              "direction": "INBOUND",
              "mode": "test",
              "fileExecutionId": "9f76b485-6hca-43bf-917e-d5b54bec6234",
              "processedAt": "2024-07-18T16:21:24.658Z",
              "fragments": null,
              "artifacts": [
                {
                  "artifactType": "application/edi-x12",
                  "usage": "input",
                  "url": "https://core.us.stedi.com/2023-08-01/transactions/f0d9f790-0ec9-431b-93fd-e4h7ece63946/input",
                  "sizeBytes": 1313,
                  "model": "transaction"
                },
                {
                  "artifactType": "application/json",
                  "usage": "output",
                  "url": "https://core.us.stedi.com/2023-08-01/transactions/f0d3f740-0ec9-432b-98fd-e4b7ece63946/output",
                  "sizeBytes": 5602,
                  "model": "transaction"
                }
              ],
              "partnership": {
                "partnershipId": "local-clearinghouse-test",
                "partnershipType": "x12",
                "sender": {
                  "profileId": "clearinghouse-test"
                },
                "receiver": {
                  "profileId": "local"
                }
              },
              "x12": {
                "transactionSetting": {
                  "guideId": "01J1M50C1Q44KYDZY8V7R1TPBW",
                  "transactionSettingId": "01J1M50P9623BFE0FFT5Q2BR49"
                },
                "metadata": {
                  "interchange": {
                    "acknowledgmentRequestedCode": "0",
                    "controlNumber": 11
                  },
                  "functionalGroup": {
                    "controlNumber": 11,
                    "release": "005010X214",
                    "date": "2024-07-18",
                    "time": "16:20:47",
                    "functionalIdentifierCode": "HN"
                  },
                  "transaction": {
                    "controlNumber": "1001",
                    "transactionSetIdentifier": "277"
                  },
                  "receiver": {
                    "applicationCode": "001690149382",
                    "isa": {
                      "qualifier": "ZZ",
                      "id": "001690149382"
                    }
                  },
                  "sender": {
                    "applicationCode": "STEDITEST",
                    "isa": {
                      "qualifier": "ZZ",
                      "id": "STEDITEST"
                    }
                  }
                }
              },
              "connectionId": "01J1M5124B2HWMNN91Q3Z6AM61"
            }
          }
        }
        ```
      </CodeBlockTab>

      <CodeBlockTab value="processed 835 ERA">
        ```json
        {
          "event": {
            "version": "0",
            "id": "5d1bcb90-cb0b-1844-5b93-86d5e5b9c4a8",
            "detail-type": "transaction.processed.v2",
            "source": "stedi.core",
            "account": "<ACCOUNT_ID>",
            "time": "2025-07-14T20:43:39Z",
            "region": "us-east-1",
            "resources": [
              "https://core.us.stedi.com/2023-08-01/transactions/95e7786c-7066-4494-b83a-b1f300624902"
            ],
            "detail": {
              "transactionId": "95e7786c-7066-4494-b83a-b1f300624902",
              "direction": "INBOUND",
              "mode": "test",
              "fileExecutionId": "5d30f0a0-63af-4aeb-b96c-353b4b25c99a",
              "processedAt": "2025-07-14T20:43:39.808Z",
              "fragments": null,
              "artifacts": [
                {
                  "artifactType": "application/edi-x12",
                  "usage": "input",
                  "url": "https://core.us.stedi.com/2023-08-01/transactions/95e7786c-7066-4494-b83a-b1f300624902/input",
                  "sizeBytes": 2016,
                  "model": "transaction"
                },
                {
                  "artifactType": "application/json",
                  "usage": "output",
                  "url": "https://core.us.stedi.com/2023-08-01/transactions/95e7786c-7066-4494-b83a-b1f300624902/output",
                  "sizeBytes": 13864,
                  "model": "transaction"
                }
              ],
              "partnership": {
                "partnershipId": "local-clearinghouse-test",
                "partnershipType": "x12",
                "sender": {
                  "profileId": "clearinghouse-test"
                },
                "receiver": {
                  "profileId": "local"
                }
              },
              "x12": {
                "transactionSetting": {
                  "guideId": "01J8JH1SGTB2FYKN2PG4MH84RP",
                  "transactionSettingId": "01J8JH23VA3G2X8GENVVE6XZB9"
                },
                "metadata": {
                  "interchange": {
                    "acknowledgmentRequestedCode": "0",
                    "controlNumber": 1
                  },
                  "functionalGroup": {
                    "controlNumber": 1,
                    "release": "005010X221A1",
                    "date": "2025-07-14",
                    "time": "20:43:21",
                    "functionalIdentifierCode": "HP"
                  },
                  "transaction": {
                    "controlNumber": "0001",
                    "transactionSetIdentifier": "835"
                  },
                  "receiver": {
                    "applicationCode": "599264680681",
                    "isa": {
                      "qualifier": "ZZ",
                      "id": "599264680681"
                    }
                  },
                  "sender": {
                    "applicationCode": "STEDITEST",
                    "isa": {
                      "qualifier": "ZZ",
                      "id": "STEDITEST"
                    }
                  }
                }
              },
              "connectionId": "01JE9257XJ4G4YFMXCHJPFR434"
            }
          }
        }
        ```
      </CodeBlockTab>
    </CodeBlockTabs>
</Accordion>

The following example shows a file failed event. The `errors` array contains details about the failure.

<Accordion title="Example file failed event" id="example-file-failed-event">
  ```json file failed event
  {
    "event": {
      "version": "0",
      "id": "cef43062-0258-cbac-b06d-ec6a21f03c69",
      "detail-type": "file.failed.v2",
      "source": "stedi.core",
      "account": "<ACCOUNT_ID>",
      "time": "2025-06-05T11:26:16Z",
      "region": "us-east-1",
      "resources": [
        "https://core.us.stedi.com/2023-08-01/executions/7590afcd-26d7-4182-a8fc-1d1051e2815c"
      ],
      "detail": {
        "fileExecutionId": "7590afcd-26d7-4182-a8fc-1d1051e2815c",
        "direction": "INBOUND",
        "processedAt": "2025-06-05T11:26:16.354Z",
        "source": {
          "dirname": "remote-ftp/test/01JJYJ0GGVZD5GR230YP6G3MEA/fromPartner",
          "name": "Test_Dental.1234567.835"
        },
        "artifacts": [
          {
            "artifactType": "application/edi-x12",
            "url": "https://core.us.stedi.com/2023-08-01/executions/7590afcd-26d7-4182-a8fc-1d1051e2815c/input",
            "usage": "input",
            "model": "execution"
          }
        ],
        "connectionId": "01JJYJ0GGVZD5GR230YP6G3MEA",
        "partnership": {
          "partnershipId": "stedi-test_dentalpartner",
          "partnershipType": "x12",
          "receiver": {
            "profileId": "stedi-test"
          },
          "sender": {
            "profileId": "dentalpartner"
          }
        },
        "errors": [
          {
            "message": "String element BPR-10 must have a length of 10, actual length is 5\nElement PER-02 is not used by this guide",
            "faultCode": "FAILED_TO_TRANSLATE"
          }
        ],
        "x12": {
          "metadata": {
            "interchange": {
              "acknowledgmentRequestedCode": "1",
              "controlNumber": 56199839
            }
          },
          "receiver": {
            "isa": {
              "qualifier": "30",
              "id": "117151744"
            }
          },
          "sender": {
            "isa": {
              "qualifier": "ZZ",
              "id": "900117186"
            }
          }
        }
      }
    }
  }
  ```
</Accordion>

## Retrieve claim responses [#retrieve-claim-responses]

You can retrieve claim responses at your preferred cadence from the `from-stedi` directory. These responses are in X12 EDI format.

* You'll first receive a 999 Implementation Acknowledgment from Stedi if any transaction in your submission was rejected (including partial rejections). We emit 999s for both claim and claim attachment submissions. We strongly recommend [monitoring 999s for rejections](/healthcare/submit-claims-sftp-connection#monitor-for-999-rejections-strongly-recommended).
* Once Stedi accepts your claim, you may receive 277CA claim acknowledgment and 835 Electronic Remittance Advice (ERA) responses.

X12 EDI specifications: [999](https://portal.stedi.com/app/guides/view/hipaa/implementation-acknowledgment-x231a1/01HMRQV0N8SPHG58M4ZG1CRHH0) | [277](https://portal.stedi.com/app/guides/view/hipaa/claim-acknowledgment-x214/01HACJ4MNFWR3GV3BCVAMG04PK) | [835](https://portal.stedi.com/app/guides/view/hipaa/health-care-claim-paymentadvice-x221a1/01GRYB6DS30MGXWBPFZCM3695E)

### Configure file names [#configure-file-names]

You can configure how Stedi names the files you receive in the `from-stedi` directory. Go to the [SFTP setup page](https://portal.stedi.com/app/settings/developer/sftp) in your account settings and select your preferred **File naming** option: Semantic or UUID only.

#### Semantic [#semantic]

Semantic filenames include a timestamp, a UUID, and a semantic identifier in the format `{TIMESTAMP}_{UUID}_{SEMANTIC_IDENTIFIER}.x12`. For example: `20260416124500_f9591145-8343-4bd8-a338-5bcca8ac3baf_999.x12`.

* **Timestamp:** The UTC timestamp when Stedi processed the file, in YYYYMMDDHHMMSS format. For example: `20260416124500`.
* **UUID:** Stedi's internally generated 36-character identifier for the file. For example: `f9591145-8343-4bd8-a338-5bcca8ac3baf`.
* **Semantic identifier:** Stedi's standardized transaction identifier.

  | X12 Transaction Set               | Semantic Identifier |
  | --------------------------------- | ------------------- |
  | TA1 Interchange Acknowledgement   | TA1                 |
  | 999 Implementation Acknowledgment | 999                 |
  | 277CA claim acknowledgment        | 277CA               |
  | 835 Electronic Remittance Advice  | 835                 |

#### UUID only (legacy) [#uuid-only-legacy]

Filenames only include a unique identifier in the format `{UUID}.x12`. For example: `f9591145-8343-4bd8-a338-5bcca8ac3baf.x12`.

### 277CA claim acknowledgment [#277ca-claim-acknowledgment]

The 277CA indicates whether a claim was accepted for processing or rejected due to correctable errors, such as invalid data, missing information, or failure to comply with payer-specific rules.

A rejection is different from a denial. Claims are denied during adjudication, so you'll only see denial statuses in the 835 Electronic Remittance Advice (ERA). A 277CA rejection indicates that the claim never made it to the adjudication step. In these cases, the 277CA will include error codes and descriptions to help you correct the issues before resubmitting the claim.

You may receive multiple 277CAs for each claim you submit. You should monitor these 277CAs to track the claim's status as it moves through Stedi and the payer's systems:

* **Clearinghouse:** You'll receive the first 277CA from Stedi within about 30 minutes of submitting the claim to indicate whether we have accepted or rejected it. You may receive additional 277CAs as we route the claim to the payer.
* **Payer:** You may receive one or more 277CAs from the payer. Typically, there is one 277CA that indicates receipt of the claim and a second 277CA that contains summary counts of transactions received, information about accepted transactions, and details for rejected transactions.

Each 277CA typically correlates to one 837 claim. However:

* Some payers may send a single 277CA that [references multiple claims](/healthcare/receive-claim-responses#correlate-277ca).
* Payers sometimes split a single claim into multiple claims during processing. In these cases, you may receive multiple 277CAs from the payer for the original claim you submitted.
* Payers may send another 277CA when they forward a claim to a secondary payer in a coordination of benefits scenario.
* (SFTP only) When you submit a [bulk claim](/healthcare/submit-claims-sftp-connection#bulk-claims), you'll typically receive one 277CA per claim. For example, if you submit a bulk transaction containing information for 10 claims, you'll typically receive 10 separate 277CAs.

#### Determine sender [#determine-sender]

To determine whether a 277CA is from a clearinghouse or the payer, check `Loop 2100A NM103` (Information Source Name).

You can also find this information in the Stedi portal:

1. Go to the [claims view](https://portal.stedi.com/app/healthcare/claims).
2. Find the associated claim and click it to view the claim timeline.
3. Find the 277CA in the timeline view. The **From** field indicates whether the acknowledgment is from Stedi or the payer.

<img alt="277CA claim timeline" src="__img0" />

#### 277CA vs. claim status check [#277ca-vs-claim-status-check]

The 277CA contains different information than a real-time claim status check. Specifically:

* **277CAs**: Tell you whether the payer has received a claim and accepted it for processing. If the claim was rejected, 277CAs tell you why so you can resubmit. They don't indicate whether the claim has been adjudicated or paid.
* **Real-time claim status checks**: Tell you the status of a claim that's already been accepted into the payer's system. They provide information about whether the claim has been adjudicated, paid, denied, or is pending further review.

  That's why claim status checks can return more [Claim Status Category Codes](https://x12.org/codes/claim-status-category-codes) than a 277CA. Specifically, they can return codes in the `P` range for pending claims and codes in the `F` range for final claim statuses.

If you're waiting for an ERA, you should first check the related 277CA to confirm that the claim was accepted for processing. If the claim was rejected, you won't receive an ERA because the payer didn't adjudicate the claim.

Then, you can run a real-time claim status check to get updates about the claim's adjudication and payment status.

### 835 Electronic Remittance Advice (ERA) [#835-electronic-remittance-advice-era]

<Tip>
  Processing ERAs always requires [transaction
  enrollment](/healthcare/transaction-enrollment) with the payer.
</Tip>

The ERA contains details about payments for specific services and explanations for any adjustments or denials. The payer only sends ERAs for claims they have accepted for adjudication. If a claim is rejected in a 277CA, there's no adjudication or payment information to report.

#### Duplicate ERAs [#duplicate-eras]

Payers typically send one ERA per claim. However, they may occasionally retransmit identical 835 ERAs. In rare cases, payers may also send multiple different ERAs for the same claim. You should have logic in place to handle both scenarios.

You can identify identical ERAs by comparing the Check or EFT Trace Number. Check `TRN02` (Check or EFT Trace Number) in the `TRN` (Reassociation Trace Number) segment.

### Delimiter normalization [#delimiter-normalization]

Stedi reserves certain characters for delimiters in X12 EDI transactions. When these delimiter characters appear within data values - meaning they're used as content and not as actual delimiters, such as within a subscriber's name - Stedi replaces them to prevent parsing issues. Stedi normalizes delimiters within transaction data as follows:

| Character found in data | Replacement | Stedi's reserved delimiter type it conflicts with |
| ----------------------- | ----------- | ------------------------------------------------- |
| `*`                     | `\|`        | Element separator                                 |
| `^`                     | `\|`        | Repetition separator                              |
| `` ` ``                 | `'`         | Component element separator                       |
| `~`                     | `\|`        | Segment terminator                                |

**Examples:**

* `O*CONNOR` becomes `O|CONNOR`
* `CODE^01` becomes `CODE|01`
* ``O`CONNOR`` becomes `O'CONNOR`
* `MSG~HELLO` becomes `MSG|HELLO`

If you parse raw X12 EDI responses, ensure your parser reads delimiters from the `ISA` segment instead of assuming fixed delimiters.

## Correlate responses with claim [#correlate-responses-with-claim]

You can use the following identifiers from the original claim to correlate the 277CA and 835 ERA responses.

### Entire claim [#entire-claim]

Use `Loop 2300 CLM01` (Patient Control Number) from the original claim, if provided.

* In the 277CA, this number is returned as `Loop 2200D TRN02` (Patient Control Number).

Some payers batch acknowledgments for multiple claims into a single 277CA. This is more likely if you submitted multiple claims within a single 837 claim envelope. In these cases, the 277CA will contain multiple iterations of `Loop 2200D` (Claim Status Tracking Number). You can use each `TRN02` (Patient Control Number) value in the 277CA to correlate it with the original claim.

* In the 835 ERA, this number is returned as `Loop 2100 CLP01` (Patient Control Number).

### Specific service lines [#specific-service-lines]

Use `Loop 2400 REF02` (Line Item Control Number) from the original claim, if provided.

Location in responses:

* In the 277CA, this number is sometimes returned as `Loop 2220D REF02` (Line Item Control Number), but not always. This is because a 277CA only contains `Loop 2220D` (Service Line Information) when the claim was rejected because of issues with the information provided for the service line.
* In the 835 ERA this number is returned as `Loop 2110 REF02` (Line Item Control Number).

# SFTP setup
Source: https://www.stedi.com/docs/healthcare/submit-claims-sftp-setup


Before you can submit claims and unsolicited attachments through SFTP, you need to create SFTP users and connect to Stedi's server.

## Create SFTP users [#create-sftp-users]

Go to the [SFTP setup](https://portal.stedi.com/app/settings/developer/sftp) page in your account settings to create SFTP users.

You can create either test or production users.

* Test users can only send claims with the Usage Indicator Code set to `T` (test). They're a great way to safely send test claims without worrying about sending real claim data to payers.
* Production users can only send claims with the Usage Indicator Code set to `P` (production). Stedi sends these claims to the payer through our production clearinghouse.

### ISA validation [#isa-validation]

Stedi validates the `ISA` envelope to ensure `ISA08` (Interchange Receiver ID) and `ISA15` (Interchange Usage Indicator Code) match your SFTP user type and the intended clearinghouse. If the values don't match, Stedi rejects the interchange with a TA1 Interchange Acknowledgment.

In the TA1 rejection, `TA105` (Interchange Note Code) can be set to:

* `008` (Invalid Interchange Receiver ID) when `ISA08` doesn't match the intended clearinghouse
* `020` (Invalid Test Indicator Value) when `ISA15` doesn't match the SFTP user type

The following table shows which combinations are permitted:

{/* prettier-ignore-start */}

| SFTP user type | ISA15 | ISA08       | Behavior                      |
| -------------- | ----- | ----------- | ----------------------------- |
| Test           | `T`   | `STEDITEST` | Accept                        |
| Prod           | `P`   | `STEDI`     | Accept                        |
| Test           | `T`   | `STEDI`     | Reject - `TA105` set to `008` |
| Test           | `P`   | `STEDI`     | Reject - `TA105` set to `020` |
| Test           | `P`   | `STEDITEST` | Reject - `TA105` set to `020` |
| Prod           | `P`   | `STEDITEST` | Reject - `TA105` set to `008` |
| Prod           | `T`   | `STEDI`     | Reject - `TA105` set to `020` |
| Prod           | `T`   | `STEDITEST` | Reject - `TA105` set to `020` |

{/* prettier-ignore-end */}

The following example shows a TA1 rejection that resulted from sending a test claim through a production SFTP user.

```
ISA*00*          *00*          *ZZ*STEDI          *ZZ*111222333444   *260602*2054*^*00501*000000050*0*T*`~
TA1*000000135*260527*1518*R*020~
IEA*0*000000050~
```

## Connect to Stedi's server [#connect-to-stedis-server]

Use your user credentials to connect to Stedi's SFTP server at `transfer.us.stedi.com` using Port 22.

### Static IPs [#static-ips]

You can use these static IP addresses to allowlist Stedi's server:
`18.119.51.218` and `18.206.132.233`

## Submit test claims [#submit-test-claims]

You can submit test claims through SFTP to validate your integration without sending claims to payers.

To submit test claims:

1. Create an SFTP test user from the [SFTP setup page](https://portal.stedi.com/app/settings/developer/sftp) in your developer settings. You must use a test SFTP user to submit test claims.
2. Set the Interchange Usage Indicator (`ISA15`) to `T` (Test Data). You can use any envelope values, as long as they are valid X12 EDI. However, you can also review our suggested configuration in the **ISA settings** section of the [SFTP setup page](https://portal.stedi.com/app/settings/developer/sftp).

   <Accordion title="Example X12 EDI test claim" id="example-x12-edi-test-claim">
     ```
     ISA*00*          *00*          *ZZ*401576130024   *ZZ*STEDITEST      *260213*2039*^*00501*000000123*0*T*>~
     GS*HC*574183004559*STEDITEST*20260213*203918*39*X*005010X222A1~
     ST*837*0001*005010X222A1~
     BHT*0019*00*01KHCBK84E40QQYJVXA5VVXG54*20260213*2038*CH~
     NM1*41*2*Test Data Health Services, Inc.*****46*123435~
     PER*IC**TE*5552223333~
     NM1*40*2*Cigna*****46*6400~
     HL*1**20*1~
     PRV*BI*PXC*2084P0800X~
     NM1*85*2*Therapy Associates*****XX*1999999984~
     N3*123 Some St*Floor 1~
     N4*A City*NY*123450000~
     REF*EI*123456789~
     PER*IC*Test Data Health Services, Inc.*TE*5553334444~
     HL*2*1*22*0~
     SBR*P*18*3335555******CI~
     NM1*IL*1*Doe*Jane****MI*U7777788888~
     N3*123 Some St~
     N4*Somewhere*VA*123450000~
     DMG*D8*20000101*M~
     NM1*PR*2*Cigna*****PI*6400~
     CLM*123456789*190.5***02>B>1*Y*A*Y*Y~
     HI*ABK>F1111~
     NM1*77*2*Test Provider~
     N3*1234 Other St~
     N4*A City*NY*123450000~
     LX*1~
     SV1*HC>90837>95*190.5*UN*1***1~
     DTP*472*D8*20240101~
     REF*6R*111222333~
     SE*29*0001~
     GE*1*39~
     IEA*1*000000123~
     ```
   </Accordion>

Stedi processes the claim and applies our entire catalog of [edits and repairs](/healthcare/claim-edits-and-repairs).

### Generate test 277CAs [#generate-test-277cas]

When you submit a test claim to any payer, Stedi returns a test 277CA claim acknowledgment within minutes indicating whether the claim was successfully processed. You can retrieve it from the `from-stedi` directory.

### Generate Test ERAs [#generate-test-eras]

When you submit test claims to the [Stedi Test Payer](https://www.stedi.com/healthcare/network?search=StediTest\&entry=FRCPB), Stedi also returns a test 835 Electronic Remittance Advice (ERA) based on the original claim. Only test claims you send to the Stedi Test Payer will generate a test 835 ERA.

You'll need to:

1. Enroll with the Stedi Test Payer. If you submit test claims to the Stedi Test Payer without enrolling, you won't receive a test 835 ERA. Visit [Test claims workflow](/healthcare/test-claims-workflow) for complete instructions.
2. Submit a test claim with the Interchange Usage Indicator (`ISA15`) to `T` (Test Data) and `Loop 2010BB` (Payer Name) `NM109` set to `STEDITEST`.

   <Accordion title="Example X12 EDI test claim to the Stedi Test Payer" id="example-x12-edi-test-claim-to-the-stedi-test-payer">
     ```
     ISA*00*          *00*          *ZZ*401576130024   *ZZ*STEDITEST      *260213*2039*^*00501*000000123*0*T*>~
     GS*HC*574183004559*STEDITEST*20260213*203918*39*X*005010X222A1~
     ST*837*0001*005010X222A1~
     BHT*0019*00*01KHCBK84E40QQYJVXA5VVXG54*20260213*2038*CH~
     NM1*41*2*Test Data Health Services, Inc.*****46*123435~
     PER*IC**TE*5552223333~
     NM1*40*2*STEDITEST*****46*6400~
     HL*1**20*1~
     PRV*BI*PXC*2084P0800X~
     NM1*85*2*Therapy Associates*****XX*1999999984~
     N3*123 Some St*Floor 1~
     N4*A City*NY*123450000~
     REF*EI*123456789~
     PER*IC*Test Data Health Services, Inc.*TE*5553334444~
     HL*2*1*22*0~
     SBR*P*18*3335555******CI~
     NM1*IL*1*Doe*Jane****MI*U7777788888~
     N3*123 Some St~
     N4*Somewhere*VA*123450000~
     DMG*D8*20000101*M~
     NM1*PR*2*STEDITEST*****PI*6400~
     CLM*123456789*190.5***02>B>1*Y*A*Y*Y~
     HI*ABK>F1111~
     NM1*77*2*Test Provider~
     N3*1234 Other St~
     N4*A City*NY*123450000~
     LX*1~
     SV1*HC>90837>95*190.5*UN*1***1~
     DTP*472*D8*20240101~
     REF*6R*111222333~
     SE*29*0001~
     GE*1*39~
     IEA*1*000000123~
     ```
   </Accordion>

   Stedi processes the claim and applies our entire catalog of [edits and repairs](/healthcare/claim-edits-and-repairs).

Stedi returns the following responses in the `from-stedi` directory:

* A test 277CA claim acknowledgment within minutes indicating whether the claim was successfully processed. Note that if Stedi rejects the claim in the 277CA, you won't receive a test 835 ERA.
* A test 835 Electronic Remittance Advice (ERA) containing information from the original claim, including the same provider information, patient information, service line details, and charges. It will indicate that all service lines are paid, with the same charge amounts you submitted in the test claim. In production, payers may send ERAs with different outcomes, such as denied or partially paid.

# Submit dental claims - API and UI
Source: https://www.stedi.com/docs/healthcare/submit-dental-claims


You can submit 837D dental claims through Stedi in JSON or X12 EDI.

Once you send a claim, Stedi automatically receives and processes 277CA claim acknowledgment and 835 Electronic Remittance Advice (ERA) responses.

<Note>
  Dental payers typically require attachments to support most claims. Stedi's support for unsolicited 275 claim attachments is currently limited to a subset of available dental payers. [Learn more](#275-claim-attachments).
</Note>

## Submission methods [#submission-methods]

You can submit dental claims to payers through the following methods:

{/* prettier-ignore-start */}

| Method | Description                                                                                                                             |
| ------ | --------------------------------------------------------------------------------------------------------------------------------------- |
| API    | Submit claims programmatically using the [Dental Claims JSON](#api-submission) or [Dental Claims Raw X12](#api-submission) endpoints.   |
| UI     | Submit claims by [uploading X12 EDI files](#ui-submission) in the Stedi portal.                                                         |
| SFTP   | Upload X12 EDI files to Stedi's SFTP server. Visit [SFTP submission](/healthcare/submit-claims-sftp-connection) for connection details. |
| Paper  | Not supported.                                                                                                                          |

{/* prettier-ignore-end */}

This page focuses on API and UI submission.

## Before sending claims [#before-sending-claims]

You may need to complete the following steps before sending claims.

### Transaction enrollment [#transaction-enrollment]

[Transaction enrollment](/healthcare/transaction-enrollment) is the process of registering a provider to exchange specific healthcare transactions with a payer. Some payers require enrollment before allowing providers to submit 837 claims through a new clearinghouse.

You can check whether a specific payer requires transaction enrollment for 837 claims in the [Payer Network](https://www.stedi.com/healthcare/network) or through the [Payers API](/healthcare/api-reference/get-payer).

To enroll, complete the following steps:

1. Create a provider record with the information required for enrollment. If you already have a record for the provider, you can skip this step. [Stedi portal](https://portal.stedi.com/app/healthcare/providers) | [API endpoint](/healthcare/api-reference/post-enrollment-create-provider)
2. Submit an enrollment request for the claim type. [Stedi portal](https://portal.stedi.com/app/healthcare/enrollments) | [API endpoint](/healthcare/api-reference/post-enrollment-create-enrollment)

<Note>
  For most payers that require enrollment for claim submission, enrolling through Stedi won't impact your ability to send transactions to your original clearinghouse. Only a few payers require the 837 claim to be sent to the same clearinghouse as the 835 ERA enrollment. For any questions on payer nuances, contact Stedi's support team.
</Note>

#### Best practices [#best-practices]

* Leverage [batch enrollments](/healthcare/create-manage-transaction-enrollments#bulk-csv-import) when onboarding new provider groups or many providers at a time.
* For ERAs, you can only be enrolled through one clearinghouse at a time per payer per provider. When your ERA enrollment is accepted through Stedi, you'll stop receiving ERAs through the previous clearinghouse. Every other transaction type accepts enrollment through more than one clearinghouse.

### Coordination of benefits check [#coordination-of-benefits-check]

We recommend running a coordination of benefits (COB) check to ensure you submit claims to the correct payer. COB checks can help you determine:

* If a patient is covered by more than one health plan
* Whether coverage overlap requires coordination of benefits
* Each payer's responsibility for payment (primacy) in coordination of benefits scenarios

Visit [Coordination of benefits (COB) checks](/healthcare/coordination-of-benefits) for more information.

## Test claims [#test-claims]

All claims you submit through the API are sent to the payer as production claims unless you explicitly designate them as test data.

To send test claims:

* **JSON endpoint:** Set the `usageIndicator` property in the test claim body to `T`.
* **X12 EDI endpoint:** Set `ISA15` (Interchange Usage Indicator) to `T` (Test Data) instead of `P` (Production Data).

When you send a test claim, Stedi doesn't send it to the payer. Instead, it processes the claim as if it were sent to the payer and returns a 277CA claim acknowledgment indicating whether the claim was successfully processed.

You'll receive a 277CA claim acknowledgment in response to test claims, but you won't receive a test 835 Electronic Remittance Advice (ERA) response unless you send the claim to the [Stedi Test Payer](https://www.stedi.com/healthcare/network?search=StediTest\&entry=FRCPB). Visit [Test claims workflow](/healthcare/test-claims-workflow) to learn how generate test ERAs.

## API submission [#api-submission]

Call one of the following endpoints to submit 837D dental claims:

* [Dental Claims](/healthcare/api-reference/post-healthcare-dental-claims) to send requests in JSON
* [Dental Claims Raw X12](/healthcare/api-reference/post-healthcare-dental-claims-raw-x12) to send requests in X12 EDI

Both endpoints return a synchronous response from Stedi in JSON format. Later, the payer will respond with a 277CA claim acknowledgment.

### Headers [#headers]

When constructing the request, you must include the following information in HTTP headers:

* **`Authorization`:** [Generate an API key](https://portal.stedi.com/app/settings/developer/api-keys) to use for authentication.
* **`Content-Type`:** Set to `application/json`.

#### Idempotency key [#idempotency-key]

We **strongly recommend** including an [idempotency key](/healthcare/api-reference#idempotency-keys) in the `Idempotency-Key` header to prevent sending duplicate claims to payers in the case of network errors or other intermittent failures. You can safely retry requests with the same idempotency key as many times as necessary within 24 hours after making the first request.

### Body - JSON [#body---json]

The information you submit for a claim depends on your use case. Refer to the [Dental Claims](/healthcare/api-reference/post-healthcare-dental-claims) endpoint for a complete list of properties. However, all claims require the following high-level information:

{/* prettier-ignore-start */}

| Information                             | Description                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  |
| --------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `tradingPartnerServiceId`               | This is the payer ID. You can send requests using the primary payer ID, the Stedi payer ID, or any alias listed in the payer record. If you don't already have payer IDs you use today, we recommend using the primary Payer ID. Visit the [Payer Network](https://www.stedi.com/healthcare/network) for a complete list.                                                                                                                                                                                                                    |
| `tradingPartnerName`                    | This is the payer's business name, like Cigna or Aetna.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      |
| `submitter` object                      | Information about the entity submitting the claim. This can be either an individual or an organization, such as a doctor, hospital, or insurance company.                                                                                                                                                                                                                                                                                                                                                                                    |
| `receiver` object                       | Information about the payer, such as an insurance company or government agency.                                                                                                                                                                                                                                                                                                                                                                                                                                                              |
| `subscriber` and/or `dependent` objects | Information about the patient who received the medical services. Note that if a dependent has their own, unique member ID for their health plan, you should submit their information in the `subscriber` object and omit the `dependent` object from the request. You can check whether the dependent has a unique member ID by submitting an [Eligibility Check](/healthcare/api-reference/post-healthcare-eligibility) to the payer for the dependent. The payer will return the member ID in the `dependents.memberId` field, if present. |
| `claimInformation` object               | Information about the claim, such as the [patient control number](#patient-control-number-pcn), claim charge amount, and place of service code. It also includes information about each individual service line included in the claim.                                                                                                                                                                                                                                                                                                       |
| `billing` object                        | Information about the billing provider, such as the [NPI](/healthcare/national-provider-identifier), taxonomy code, and organization name.                                                                                                                                                                                                                                                                                                                                                                                                   |

{/* prettier-ignore-end */}

#### Patient Control Number [#patient-control-number]

You must submit a Patient Control Number (PCN) with each claim in [`claimInformation.patientControlNumber`](/healthcare/api-reference/post-healthcare-dental-claims#body.claimInformation.patientControlNumber). The payer returns this value in related transactions, such as the 277CA claim acknowledgment and 835 Electronic Remittance Advice (ERA), so you can correlate responses and real-time claim status checks with the original claim.

When assigning a PCN, follow these best practices:

* Use a unique PCN for each claim. The identifier should be more complex than a simple sequential number and should be hard to guess.
* Use random strings. Formats with patient initials or the date of service in them can create duplicates. We recommend using [nanoid](https://www.npmjs.com/package/nanoid) or a similar library configured with the characters available in the [basic character set](#character-set) to create a strong, unique 17-character PCN for each claim.
* Keep it 17 characters or less. Some payers cut off values longer than 17 characters in ERAs and claim acknowledgments, which makes it hard to match them with the original claim.
* Use only characters available in the [basic character set](#character-restrictions), and avoid special characters that are only available in the extended character set. Payers are permitted to return data using the basic character set. Using other characters may result in data loss or mismatches when correlating claims with responses.
* Treat PCN values as case-insensitive when matching transactions, even if the submitted value included both lower and uppercase characters.

#### Service line identification [#service-line-identification]

A claim can contain multiple service lines. Since the payer may accept, reject, or pay a subset of those lines, you can receive an 835 ERA that references a `patientControlNumber`, but only pertains to some of the service lines.

However, the `claimInformation.serviceLines[].providerControlNumber` serves as a unique identifier for each service line in your claim submission. This value appears in the 277CA claim acknowledgment and 835 ERA as the `lineItemControlNumber`, allowing you to correlate these responses to specific service lines from the original claim. If you don't set the `providerControlNumber` for a service line, Stedi uses a random UUID.

Stedi returns service line identifiers in the `claimReference.serviceLines` array of the synchronous API response.

#### Conditional requirements [#conditional-requirements]

Note that objects marked as **required** are required for all requests, while others are conditionally required depending on the circumstances. When you include a conditionally required object, you must include all of its required properties.

For example, you must always include the `subscriber` object in your request, but you only need to include the `supervising` object when the rendering provider is supervised by a physician.

### Body - X12 EDI [#body---x12-edi]

You must send a payload in [837 X12 EDI format](https://portal.stedi.com/app/guides/view/hipaa/health-care-claim-dental-x224a3/01GRYB6G91ZX6R1XAFGBMRTBBW).

Note the following requirements and behavior when sending dental claims through the raw X12 endpoint.

#### Envelope and header [#envelope-and-header]

Stedi generates its own `ISA` and `GS` headers and `IEA` and `GE` trailers before sending your claim to the payer. You can submit your claim to Stedi with any values in these segments, as long as they conform to the X12 EDI specification.

However, you must set `ST03` (Implementation Guide Version Name) to `005010X224A2`.

#### Payer ID [#payer-id]

You must submit a payer identifier in `Loop 2010BB` (Payer Name) `NM109` so Stedi can route your claim to the correct payer. This identifier **must** be a payer ID or payer ID alias listed in the [Payer Network](https://www.stedi.com/healthcare/network). If you don't already have payer IDs you use today, we recommend using the primary Payer ID.

You must include leading `0` characters in payer IDs. For example, use `00540` for SISCO, not `540`.

#### `CLM01` (Patient Control Number) [#clm01-patient-control-number]

We **strongly recommend** submitting a unique value for `Loop 2300` (Claim Information) `CLM01` (Patient Control Number). The payer returns this value in related transactions, such as the 277CA claim acknowledgment and 835 Electronic Remittance Advice (ERA), so you can correlate responses and real-time claim status checks with the original claim.

When assigning a PCN, follow these best practices:

* Use a unique PCN for each claim. The identifier should be more complex than a simple sequential number and should be hard to guess.
* Use random strings. Formats with patient initials or the date of service in them can create duplicates. We recommend using [nanoid](https://www.npmjs.com/package/nanoid) or a similar library configured with the characters available in the [basic character set](#character-set) to create a strong, unique 17-character PCN for each claim.
* Keep it 17 characters or less. Some payers cut off values longer than 17 characters in ERAs and claim acknowledgments, which makes it hard to match them with the original claim.
* Use only characters available in the [basic character set](#character-restrictions), and avoid special characters that are only available in the extended character set. Payers are permitted to return data using the basic character set. Using other characters may result in data loss or mismatches when correlating claims with responses.
* Treat PCN values as case-insensitive when matching transactions, even if the submitted value included both lower and uppercase characters.

#### Claim identifier [#claim-identifier]

`Loop 2300 REF02` (Claim Identifier for Transmission Intermediaries) has different usage rules depending on your role:

* **Providers:** Don't include `Loop 2300 REF02` when `REF01` = `D9` in your claim submission. It's reserved for clearinghouses and intermediaries. You can use `Loop 2300 CLM01` (Patient Control Number) to correlate claims with responses instead.
* **Clearinghouses and intermediaries:** You can optionally include `REF*D9` in your 837 submissions. Stedi always returns this value in `Loop 2200D REF*D9` of 277CA claim acknowledgments, allowing you to match these responses to the claim.

#### Service line identification [#service-line-identification-1]

A claim can contain multiple service lines. Since the payer may accept, reject, or pay a subset of those lines, you can receive an 835 response that references a patient control number, but only pertains to some of the service lines.

However, the line item control number serves as a unique identifier for each service line in your claim submission.

* You can set the line item control number in `Loop 2400 REF02`, when `REF01` = `6R`. The line item control number appears in the 277CA and 835 ERA responses as the `lineItemControlNumber`, allowing you to correlate these responses to specific service lines from the original claim.
* If you don't set the line item control number for a service line, Stedi uses a ULID.

### Character restrictions [#character-restrictions]

Only use the X12 Basic and Extended character sets in request data. Using characters outside these sets may cause errors.

<Accordion title="Basic character set" id="basic-character-set">
  The X12 Basic character set includes uppercase letters, digits, space, and some special characters. Lowercase letters and special language characters like `ñ` are not included.

  The following special characters are included:

    <img alt="Basic special characters" src="__img0" />
</Accordion>

<Accordion title="Extended character set" id="extended-character-set">
  The Extended character set includes the characters listed in Basic, plus lowercase letters and additional special characters, such as `@`.

  The following additional special characters are included:
    <img alt="Extended special characters" src="__img1" />
</Accordion>

In addition, the following characters are reserved for delimiters in the final X12 EDI transaction to the payer: `~`, `*`, `:`, `^`, and `>`. X12 doesn't support using escape sequences to represent delimiters or special characters. Stedi returns a `400` error if you use these restricted characters improperly.

* **JSON endpoint:** Don't include delimiter characters anywhere in your request data.
* **Raw X12 endpoint:** You can use these characters as delimiters, but not in the body of the request data.

### Sample request and response [#sample-request-and-response]

The following examples send a dental claim. The response shape is the same for both the JSON and X12 EDI endpoints. It contains summary information from Stedi about the claim submission and whether it was successful.

The response also includes an initial [277CA claim acknowledgment](/healthcare/claim-responses-overview#277ca-claim-acknowledgment) from Stedi in the `x12` property, which indicates whether the claim passed Stedi's claim edits.

<Tabs items="[&#x22;Request - JSON&#x22;, &#x22;Request - X12 EDI&#x22;, &#x22;Response&#x22;]">
  <Tab value="Request - JSON">
    {/* schema:DentalClaimsSubmissionRequestContent */}

    ```bash
    curl --request POST \
      --url https://healthcare.us.stedi.com/2024-04-01/dental-claims/submission \
      --header 'Authorization: <api-key>' \
      --header 'Content-Type: application/json' \
      --header 'Idempotency-Key: <idempotency-key>' \
      --data '{
      "usageIndicator": "T",
      "tradingPartnerServiceId": "52133",
      "tradingPartnerName": "United HealthCare Dental",
      "subscriber": {
        "paymentResponsibilityLevelCode": "P",
        "memberId": "123412345",
        "firstName": "John",
        "lastName": "Doe",
        "groupNumber": "1234567890",
        "gender": "F",
        "address": {
          "address1": "1234 Some St",
          "city": "Buckeye",
          "state": "AZ",
          "postalCode": "85326"
        },
        "dateOfBirth": "20180615"
      },
      "submitter": {
        "organizationName": "ABA Inc",
        "submitterIdentification": "<YOUR-SUBMITTER-ID>",
        "contactInformation": {
          "phoneNumber": "3131234567",
          "name": "BILLING DEPARTMENT"
        }
      },
      "rendering": {
        "npi": "1999999992",
        "taxonomyCode": "106S00000X",
        "providerType": "RenderingProvider",
        "lastName": "Doe",
        "firstName": "Jane"
      },
      "receiver": {
        "organizationName": "United HealthCare Dental"
      },
      "payerAddress": {
        "address1": "PO Box 7000",
        "city": "Camden",
        "state": "SC",
        "postalCode": "29000"
      },
      "claimInformation": {
        "signatureIndicator": "Y",
        "toothStatus": [
          {
            "toothNumber": "3",
            "toothStatusCode": "E"
          }
        ],
        "serviceLines": [
          {
            "serviceDate": "20230428",
            "renderingProvider": {
              "npi": "1999999992",
              "taxonomyCode": "122300000X",
              "lastName": "Doe",
              "firstName": "Jane"
            },
            "providerControlNumber": "a0UDo000000dd2dMAA",
            "dentalService": {
              "procedureCode": "D7140",
              "lineItemChargeAmount": "832.00",
              "placeOfServiceCode": "12",
              "oralCavityDesignation": [
                "1",
                "2"
              ],
              "prosthesisCrownOrInlayCode": "I",
              "procedureCount": 2,
              "compositeDiagnosisCodePointers": {
                "diagnosisCodePointers": [
                  "1"
                ]
              }
            },
            "teethInformation": [
              {
                "toothCode": "3",
                "toothSurfaceCodes": [
                  "M",
                  "O"
                ]
              }
            ]
          }
        ],
        "serviceFacilityLocation": {
          "phoneNumber": "3131234567",
          "organizationName": "ABA Inc",
          "npi": "1999999992",
          "address": {
            "address1": "ABA Inc 123 Some St",
            "city": "Denver",
            "state": "CO",
            "postalCode": "802383100"
          }
        },
        "releaseInformationCode": "Y",
        "planParticipationCode": "A",
        "placeOfServiceCode": "12",
        "patientControlNumber": "<YOUR-CLAIM-ID>",
        "healthCareCodeInformation": [
          {
            "diagnosisTypeCode": "ABK",
            "diagnosisCode": "K081"
          }
        ],
        "claimSupplementalInformation": {
          "priorAuthorizationNumber": "20231010012345678"
        },
        "claimFrequencyCode": "1",
        "claimFilingCode": "FI",
        "claimChargeAmount": "832.00",
        "benefitsAssignmentCertificationIndicator": "Y"
      },
      "billing": {
        "taxonomyCode": "106S00000X",
        "providerType": "BillingProvider",
        "organizationName": "ABA Inc",
        "npi": "1999999992",
        "employerId": "123456789",
        "contactInformation": {
          "phoneNumber": "3134893157",
          "name": "ABA Inc"
        },
        "address": {
          "address1": "ABA Inc 123 Some St",
          "city": "Denver",
          "state": "CO",
          "postalCode": "802383000"
        }
      }
    }'
    ```
  </Tab>

  <Tab value="Request - X12 EDI">
    ```bash
    curl --request POST \
      --url https://healthcare.us.stedi.com/2024-04-01/dental-claims/raw-x12-submission \
      --header 'Authorization: <api-key>' \
      --header 'Content-Type: application/json' \
      --header 'Idempotency-Key: <idempotency-key>' \
      --data '{
      "x12": "ISA*00*          *00*          *ZZ*574183004559   *ZZ*STEDITEST      *260213*2050*^*00501*000000042*0*T*`~GS*HC*574183004559*STEDITEST*20260213*205048*42*X*005010X224A2~ST*837*0001*005010X224A2~BHT*0019*00*01KHCCA4V6K00NFPX588G859SJ*20260213*2050*CH~NM1*41*2*ABA Inc*****46*1234567~PER*IC*BILLING DEPARTMENT*TE*3131234567~NM1*40*2*United HealthCare Dental*****46*52133~HL*1**20*1~PRV*BI*PXC*106S00000X~NM1*85*2*ABA Inc*****XX*1999999992~N3*ABA Inc 123 Some St~N4*Denver*CO*802383000~REF*EI*123456789~PER*IC*ABA Inc*TE*3134893157~HL*2*1*22*0~SBR*P*18*1234567890******FI~NM1*IL*1*Doe*John****MI*123412345~N3*1234 Some St~N4*Buckeye*AZ*85326~DMG*D8*20180615*F~NM1*PR*2*United HealthCare Dental*****PI*52133~N3*PO Box 7000~N4*Camden*SC*29000~CLM*12345*832***12`B`1*Y*A*Y*Y~DN2*3*E****JP~REF*G1*20231010012345678~HI*ABK`K081~NM1*82*1*Doe*Jane****XX*1999999992~PRV*PE*PXC*106S00000X~LX*1~SV3*AD`D7140*832**1`2*I*2*****1~TOO*JP*3*M`O~DTP*472*D8*20230428~REF*6R*a0UDo000000dd2dMAA~NM1*82*1*Doe*Jane****XX*1999999992~PRV*PE*PXC*122300000X~SE*35*0001~GE*1*42~IEA*1*000000042~"
    }'
    ```
  </Tab>

  <Tab value="Response">
    {/* schema:DentalClaimsSubmissionResponseContent */}

    ```json
    {
      "status": "SUCCESS",
      "controlNumber": "1",
      "tradingPartnerServiceId": "52133",
      "claimReference": {
        "correlationId": "01KHC96GBNYA14YRBRJGFR13P7",
        "patientControlNumber": "12345",
        "timeOfResponse": "2026-02-13T19:56:13.575Z",
        "payerId": "52133",
        "formatVersion": "5010",
        "rhclaimNumber": "01KHC96GBNYA14YRBRJGFR13P7",
        "serviceLines": [
          {
            "lineItemControlNumber": "a0UDo000000dd2dMAA"
          }
        ]
      },
      "meta": {
        "traceId": "4564629a-930d-4287-aceb-ca9a1f1a2d7d"
      },
      "payer": {
        "payerName": "United HealthCare Dental",
        "payerId": "52133"
      },
      "x12": "ISA*00*          *00*          *ZZ*574183004559   *ZZ*STEDITEST      *260213*2045*^*00501*000000033*0*T*`~GS*HC*574183004559*STEDITEST*20260213*204524*33*X*005010X224A2~ST*837*0001*005010X224A2~BHT*0019*00*01KHC96GBNYA14YRBRJGFR13P7*20260213*1956*CH~NM1*41*2*ABA Inc*****46*123456789~PER*IC*BILLING DEPARTMENT*TE*3131234567~NM1*40*2*United HealthCare Dental*****46*52133~HL*1**20*1~PRV*BI*PXC*106S00000X~NM1*85*2*ABA Inc*****XX*1999999992~N3*ABA Inc 123 Some St~N4*Denver*CO*802383000~REF*EI*123456789~PER*IC*ABA Inc*TE*3134893157~HL*2*1*22*0~SBR*P*18*1234567890******FI~NM1*IL*1*Doe*John****MI*123412345~N3*1234 Some St~N4*Buckeye*AZ*85326~DMG*D8*20180615*F~NM1*PR*2*United HealthCare Dental*****PI*52133~N3*PO Box 7000~N4*Camden*SC*29000~CLM*12345*832***12`B`1*Y*A*Y*Y~DN2*3*E****JP~REF*G1*20231010012345678~HI*ABK`K081~NM1*82*1*Doe*Jane****XX*1999999992~PRV*PE*PXC*106S00000X~LX*1~SV3*AD`D7140*832**1`2*I*2*****1~TOO*JP*3*M`O~DTP*472*D8*20230428~REF*6R*a0UDo000000dd2dMAA~NM1*82*1*Doe*Jane****XX*1999999992~PRV*PE*PXC*122300000X~SE*35*0001~GE*1*33~IEA*1*000000033~",
      "httpStatusCode": "200 OK"
    }
    ```
  </Tab>
</Tabs>

### Concurrency limit [#concurrency-limit]

Dental claim submission endpoints share a concurrency pool with other claim endpoints. For more information, visit [Concurrency limits](/healthcare/api-reference#concurrency-limits).

### Recommended API clients [#recommended-api-clients]

You may want to use an API client to make testing and debugging easier.

We **don't recommend** using Postman for requests containing Protected Health Information (PHI) because Postman defaults to storing request history - including full request payloads - on its cloud servers. You can't turn this feature off without impractical workarounds.

Visit [API clients](/healthcare/api-reference#api-clients) for a list of recommended clients you can use instead.

## UI submission [#ui-submission]

You can submit dental claims in X12 EDI format through the Stedi portal. Manual claim submission can be useful for testing, QA, and debugging your pipeline.

Your X12 EDI claim data must adhere to the [837 Claim: Dental (X224A2)](https://portal.stedi.com/app/guides/view/hipaa/health-care-claim-dental-x224a2/01JCJZ46AEK835RYV1BXQNBPK8) specification.

To manually submit an X12 EDI claim:

1. Go to the [claims view](https://portal.stedi.com/app/healthcare/claims).

2. Click **Submit claim** and select **Upload raw X12 file**.

3. Do one of the following:

   * Click **Upload X12 EDI** and select an existing `.edi` file.
   * Select the transaction type and then paste the X12 EDI content into the text area.

   You can submit multiple claims in a single file, as long as all claims are 837s of the same type and X12 version. Visit [Bulk claims](#bulk-claims) for details.

4. Set `ISA15` (Interchange Usage Indicator) to `T` (Test Data) or `P` (Production Data), accordingly. Production claims are sent to payers. Test claims aren't sent to payers - Stedi's test clearinghouse processes them and returns test 277CA acknowledgments so you can evaluate your claim processing pipeline.

5. Fix any X12 EDI validation errors that appear after adding the claim content. Stedi highlights errors in red and displays the specification for the claim type you selected on the right side of the screen to make it easier to identify and fix issues.

   These validations ensure your claim data conforms to the HIPAA specification. Stedi runs additional claim edits on your claim data after submission.

6. Click **Submit claim**.

Stedi processes the claim and runs claim edits to identify errors that could lead to a payer rejection. If a claim fails one of Stedi's edits, you'll receive a 277CA claim acknowledgment from Stedi rejecting the claim immediately after submission. This can happen even when the X12 EDI editor showed no errors before submission.

If the claim passes all of Stedi's edits, Stedi submits it to the payer. It will appear on the [claims view](https://portal.stedi.com/app/healthcare/claims) within a few minutes.

#### Bulk claims [#bulk-claims]

You can submit multiple claims in a single X12 EDI file, as long as they are all the same claim type (professional, institutional, or dental) and X12 version. You can submit multiple claims in the same 837 transaction by including multiple instances of the following loops:

* `Loop 2000A` (Billing provider)
* `Loop 2000B` (Subscriber)
* `Loop 2300` (Claim Information) - You can submit up to 1,000 claim loops in each 837 transaction

After submission, Stedi separates your bulk 837 transaction into individual claims and sends each claim separately to the payer. This includes multiple claims going to the same payer - all claims within a bulk submission are sent individually to maintain consistency.

The following example would produce 12 separate claims (2 x 3 x 2 = 12), each shown individually on the [claims view](https://portal.stedi.com/app/healthcare/claims):

* 837 transaction contains information for two billing providers (2x `Loop 2000A`)
* Each billing provider has three subscribers (3x `Loop 2000B`)
* Each subscriber has two claims (2x `Loop 2300`)

Then, you'll typically receive separate 277CA claim acknowledgments for each claim. Each claim will also receive its own test ERA from Stedi's test clearinghouse if the payer was `STEDITEST`.

## View submitted claims [#view-submitted-claims]

In the [claims view](https://portal.stedi.com/app/healthcare/claims), you can review and filter every claim in your account. Toggle test mode to **ON** to review test claims. Click any claim to review its details.

## 275 claim attachments [#275-claim-attachments]

Dental payers typically require attachments to support most claims, such as X-rays and treatment plans. Stedi's support for unsolicited 275 claim attachments is currently limited to a [subset of available dental payers](https://www.stedi.com/healthcare/network?filter=eyJ0cmFuc2FjdGlvbkZpbHRlcnMiOnsiMjcwIjp7fSwiMjc2Ijp7fSwiODM1Ijp7fSwiODM3UCI6e30sIjgzN0kiOnt9LCI4MzdEIjp7ImlzU3VwcG9ydGVkIjp0cnVlfSwiQ09CIjp7fSwiMjc1VSI6eyJpc1N1cHBvcnRlZCI6dHJ1ZX19LCJjb3ZlcmFnZVR5cGVzIjpbXSwib3BlcmF0aW5nU3RhdGVzIjpbXX0%3D).

When Stedi doesn't support attachments, you can submit them outside of Stedi - for example, directly to the payer's portal. Then, you can reference them in the dental claims you submit through Stedi. Contact [Stedi Support](https://www.stedi.com/contact) with questions about supported payers or for help optimizing your attachments workflow.

When a claim requires attachments, you must must reference them in the [`claimInformation.claimSupplementalInformation.reportInformation`](/healthcare/api-reference/post-healthcare-dental-claims#body.claimInformation.claimSupplementalInformation.reportInformation) object or the [`claimInformation.claimSupplementalInformation.reportInformations`](/healthcare/api-reference/post-healthcare-dental-claims#body.claimInformation.claimSupplementalInformation.reportInformations) array (multiple attachments).

Visit [Claim attachments](/healthcare/submit-claim-attachments) to learn more about submitting attachments through Stedi and referencing attachments in claims.

## Submit claims to a secondary or tertiary payer [#submit-claims-to-a-secondary-or-tertiary-payer]

In [coordination of benefits (COB)](/healthcare/coordination-of-benefits) scenarios, you'll need to submit a claim to multiple payers.

You must set the `subscriber.paymentResponsibilityLevelCode` to either `S` (when submitting to the secondary payer) or `T` (when submitting to the tertiary payer).

You must also include the following information about how prior payers have adjudicated the claim. For example, if a patient's private insurance plan (primary payer) adjusted the requested reimbursement amount and paid for its portion of the services, you must include that information in the claim you submit to Medicare (secondary payer). You can find these details in 835 ERA responses from prior payers.

### Claim information [#claim-information]

You must submit one object in the `claimInformation.otherSubscriberInformation` array for each prior payer. Supply all the required properties in the object plus the following additional information:

* `claimLevelAdjustments`: Provide if the prior payer made adjustments at the claim level. Codes and their associated amounts must come from ERAs sent by the prior payers. You can find these codes in the ERA's [`transactions[].detailInfo[].paymentInfo[].claimAdjustments`](/healthcare/api-reference/get-healthcare-reports-835#response.transactions.detailInfo.paymentInfo.claimAdjustments) array.
* `medicareInpatientAdjudication` (institutional claims only): You must include this if Medicare was one of the prior payers and reported inpatient adjudication information on the ERA.
* `medicareOutpatientAdjudication`: You must include this if Medicare was one of the prior payers and reported outpatient adjudication information on the ERA.
* `otherPayerName.otherPayerAdjudicationOrPaymentDate`: The date the payer adjudicated or paid the claim. You must provide this if you aren't providing a value in the `claimInformation.serviceLines[].lineAdjudicationInformation[].adjudicationOrPaymentDate` property.
* `payerPaidAmount`: This is the total amount in dollars the payer paid on this claim.

### Service line information [#service-line-information]

You must submit `serviceLines[].lineAdjudicationInformation` objects when the prior payers provided line-level adjudication information. Submit one object for each prior payer. For each object, you should include the following properties.

* `adjudicationOrPaymentDate`: The date the payer adjudicated or paid the claim. Don't include this if you're providing a date in the `otherPayerName.otherPayerAdjudicationOrPaymentDate` property.
* `claimAdjustmentInformation`: You can find this information in the ERA's [`transactions[].detailInfo[].paymentInfo[].serviceLines[].serviceAdjustments`](/healthcare/api-reference/get-healthcare-reports-835#response.transactions.detailInfo.paymentInfo.serviceLines.serviceAdjustments) array.
* `otherPayerPrimaryIdentifier`: The identifier for the other payer. This value should match the identifier you supplied for the payer in the `claimInformation.otherSubscriberInformation[].otherPayerName.otherPayerIdentifier` property.
* `procedureCode`: The adjudicated procedure code for the service line.
* `serviceIdQualifier`: A code identify the type of procedure code. Visit [Claims code lists](/healthcare/claims-code-lists#composite-medical-procedure---product-or-service-id-qualifier-codes) for a complete list.
* `serviceLinePaidAmount`: The total amount in dollars the prior payer paid on this service line.
* `paidServiceUnitCount`: The number of paid units for the service line. When paid units are not present on the remittance advice, use the original billed units.
* `remainingPatientLiability`: The amount of the service line the patient is responsible for paying.

## Claim Filing Indicator Code [#claim-filing-indicator-code]

The Claim Filing Indicator Code indicates how a claim was filed with a payer, such as `MC` (Medicaid) or `CI` (Commercial Insurance Co.).

Choosing the correct claim filing indicator code is important for successful claim submission. Visit the [Claims code lists](/healthcare/claims-code-lists#choosing-the-right-code) documentation for best practices for selecting the appropriate code.

# Submit institutional claims - API and UI
Source: https://www.stedi.com/docs/healthcare/submit-institutional-claims


You can submit 837I institutional claims through Stedi in JSON or X12 EDI.

Once you send a claim, Stedi automatically receives and processes 277CA claim acknowledgments and 835 Electronic Remittance Advice (ERA) responses.

## Submission methods [#submission-methods]

You can submit institutional claims to payers through the following methods:

{/* prettier-ignore-start */}

| Method | Description                                                                                                                                                                                        |
| ------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| API    | Submit claims programmatically using the [Institutional Claims JSON](#api-submission) or [Institutional Claims Raw X12](#api-submission) endpoints.                                                |
| UI     | Submit claims by [uploading X12 EDI files](#ui-submission) in the Stedi portal.                                                                                                                    |
| SFTP   | Upload X12 EDI files to Stedi's SFTP server. Visit [SFTP submission](/healthcare/submit-claims-sftp-connection) for connection details.                                                            |
| Paper  | Some payers require claims to be submitted on paper rather than electronically. Visit [Submit paper claims](/healthcare/submit-paper-claims) to learn how to send claims for printing and mailing. |

{/* prettier-ignore-end */}

This page focuses on API and UI submission.

## Before sending claims [#before-sending-claims]

You may need to complete the following steps before sending claims.

### Transaction enrollment [#transaction-enrollment]

[Transaction enrollment](/healthcare/transaction-enrollment) is the process of registering a provider to exchange specific healthcare transactions with a payer. Some payers require enrollment before allowing providers to submit 837 claims through a new clearinghouse.

You can check whether a specific payer requires transaction enrollment for 837 claims in the [Payer Network](https://www.stedi.com/healthcare/network) or through the [Payers API](/healthcare/api-reference/get-payer).

To enroll, complete the following steps:

1. Create a provider record with the information required for enrollment. If you already have a record for the provider, you can skip this step. [Stedi portal](https://portal.stedi.com/app/healthcare/providers) | [API endpoint](/healthcare/api-reference/post-enrollment-create-provider)
2. Submit an enrollment request for the claim type. [Stedi portal](https://portal.stedi.com/app/healthcare/enrollments) | [API endpoint](/healthcare/api-reference/post-enrollment-create-enrollment)

<Note>
  For most payers that require enrollment for claim submission, enrolling through Stedi won't impact your ability to send transactions to your original clearinghouse. Only a few payers require the 837 claim to be sent to the same clearinghouse as the 835 ERA enrollment. For any questions on payer nuances, contact Stedi's support team.
</Note>

#### Best practices [#best-practices]

* Leverage [batch enrollments](/healthcare/create-manage-transaction-enrollments#bulk-csv-import) when onboarding new provider groups or many providers at a time.
* For ERAs, you can only be enrolled through one clearinghouse at a time per payer per provider. When your ERA enrollment is accepted through Stedi, you'll stop receiving ERAs through the previous clearinghouse. Every other transaction type accepts enrollment through more than one clearinghouse.

### Coordination of benefits check [#coordination-of-benefits-check]

We recommend running a coordination of benefits (COB) check to ensure you submit claims to the correct payer. COB checks can help you determine:

* If a patient is covered by more than one health plan
* Whether coverage overlap requires coordination of benefits
* Each payer's responsibility for payment (primacy) in coordination of benefits scenarios

Visit [Coordination of benefits (COB) checks](/healthcare/coordination-of-benefits) for more information.

## Test claims [#test-claims]

All claims you submit through the API are sent to the payer as production claims unless you explicitly designate them as test data.

To send test claims:

* **JSON endpoint:** Set the `usageIndicator` property in the test claim body to `T`.
* **X12 EDI endpoint:** Set `ISA15` (Interchange Usage Indicator) to `T` (Test Data) instead of `P` (Production Data).

When you send a test claim, Stedi doesn't send it to the payer. Instead, it processes the claim as if it were sent to the payer and returns a 277CA claim acknowledgment indicating whether the claim was successfully processed.

You'll receive a 277CA claim acknowledgment in response to test claims, but you won't receive a test 835 Electronic Remittance Advice (ERA) response unless you send the claim to the [Stedi Test Payer](https://www.stedi.com/healthcare/network?search=StediTest\&entry=FRCPB). Visit [Test claims workflow](/healthcare/test-claims-workflow) to learn how generate test ERAs.

## API submission [#api-submission]

Call one of the following endpoints to submit 837I institutional claims:

* [Institutional Claims](/healthcare/api-reference/post-healthcare-institutional-claims) to send requests in JSON
* [Institutional Claims Raw X12](/healthcare/api-reference/post-healthcare-institutional-claims-raw-x12) to send requests in X12 EDI

Both endpoints return a synchronous response from Stedi in JSON format. Later, the payer will respond with a 277CA claim acknowledgment.

### Headers [#headers]

When constructing the request, you must include the following information in HTTP headers:

* **`Authorization`:** [Generate an API key](https://portal.stedi.com/app/settings/developer/api-keys) to use for authentication.
* **`Content-Type`:** Set to `application/json`.

#### Idempotency key [#idempotency-key]

We **strongly recommend** including an [idempotency key](/healthcare/api-reference#idempotency-keys) in the `Idempotency-Key` header to prevent sending duplicate claims to payers in the case of network errors or other intermittent failures. You can safely retry requests with the same idempotency key as many times as necessary within 24 hours after making the first request.

### Body - JSON [#body---json]

The information you submit for a claim depends on your use case. Refer to the [Institutional Claims](/healthcare/api-reference/post-healthcare-institutional-claims) endpoint for a complete list of properties. However, all claims require the following high-level information:

{/* prettier-ignore-start */}

| Information                             | Description                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  |
| --------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `tradingPartnerServiceId`               | This is the payer ID. You can send requests using the primary payer ID, the Stedi payer ID, or any alias listed in the payer record. If you don't already have payer IDs you use today, we recommend using the primary Payer ID. Visit the [Payer Network](https://www.stedi.com/healthcare/network) for a complete list.                                                                                                                                                                                                                    |
| `submitter` object                      | Information about the entity submitting the claim. This is an organization, such as a hospital or other treatment center.                                                                                                                                                                                                                                                                                                                                                                                                                    |
| `receiver` object                       | Information about the entity responsible for the payment of the claim, such as an insurance company or government agency.                                                                                                                                                                                                                                                                                                                                                                                                                    |
| `subscriber` and/or `dependent` objects | Information about the patient who received the medical services. Note that if a dependent has their own, unique member ID for their health plan, you should submit their information in the `subscriber` object and omit the `dependent` object from the request. You can check whether the dependent has a unique member ID by submitting an [Eligibility Check](/healthcare/api-reference/post-healthcare-eligibility) to the payer for the dependent. The payer will return the member ID in the `dependents.memberId` field, if present. |
| `claimInformation` object               | Information about the claim, such as the [Patient Control Number](#patient-control-number-pcn), claim filing code (identifies the type of claim), claim charge amount, and place of service code. It also includes information about each individual service line included in the claim.                                                                                                                                                                                                                                                     |
| Billing provider                        | You **must** supply information about the billing provider in either the `providers` or `billing` object. This includes the provider's [NPI](/healthcare/national-provider-identifier), name, and other information.                                                                                                                                                                                                                                                                                                                         |

{/* prettier-ignore-end */}

#### Patient Control Number [#patient-control-number]

You must submit a Patient Control Number (PCN) with each claim in [`claimInformation.patientControlNumber`](/healthcare/api-reference/post-healthcare-institutional-claims#body.claimInformation.patientControlNumber). The payer returns this value in related transactions, such as the 277CA claim acknowledgment and 835 Electronic Remittance Advice (ERA), so you can correlate responses and real-time claim status checks with the original claim.

When assigning a PCN, follow these best practices:

* Use a unique PCN for each claim. The identifier should be more complex than a simple sequential number and should be hard to guess.
* Use random strings. Formats with patient initials or the date of service in them can create duplicates. We recommend using [nanoid](https://www.npmjs.com/package/nanoid) or a similar library configured with the characters available in the [basic character set](#character-set) to create a strong, unique 17-character PCN for each claim.
* Keep it 17 characters or less. Some payers cut off values longer than 17 characters in ERAs and claim acknowledgments, which makes it hard to match them with the original claim.
* Use only characters available in the [basic character set](#character-restrictions), and avoid special characters that are only available in the extended character set. Payers are permitted to return data using the basic character set. Using other characters may result in data loss or mismatches when correlating claims with responses.
* Treat PCN values as case-insensitive when matching transactions, even if the submitted value included both lower and uppercase characters.

#### Service line identification [#service-line-identification]

A claim can contain multiple service lines. Since the payer may accept, reject, or pay a subset of those lines, you can receive an 835 ERA that references a `patientControlNumber`, but only pertains to some of the service lines.

However, the `claimInformation.serviceLines[].lineItemControlNumber` serves as a unique identifier for each service line in your claim submission. This value appears in the 277CA claim acknowledgment and 835 ERA as the `lineItemControlNumber`, allowing you to correlate these responses to specific service lines from the original claim. We strongly recommend setting the `lineItemControlNumber` to a ULID or other unique identifier for each service line. We recommend using a ULID instead of a UUID because the property has a max of 30 characters.

#### Admission source code [#admission-source-code]

The admission source code tells you where the patient came from, such as the emergency room (ER), a doctor's referral, or another facility. Most institutional claims require the admission source code. The one exception is non-patient lab services, where no patient is present.

You must include the admission source code in the [`claimInformation.claimCodeInformation.admissionSourceCode`](/healthcare/api-reference/post-healthcare-institutional-claims#body.claimInformation.claimCodeInformation.admissionSourceCode) property for all institutional claims **except** when the `claimInformation.placeOfServiceCode` contains `14` (Non-Patient Laboratory).

Stedi rejects claims that don't meet this requirement.

#### Conditional requirements [#conditional-requirements]

Note that objects marked as **required** are required for all requests, while others are conditionally required depending on the circumstances. When you include a conditionally required object, you must include all of its required properties.

For example, you must always include the `subscriber` object in your request, but you only need to include the `supervising` object when the rendering provider is supervised by a physician.

### Body - X12 EDI [#body---x12-edi]

You must send a payload in [837 X12 EDI format](https://portal.stedi.com/app/guides/view/hipaa/health-care-claim-institutional-x223a2/01JBHW2YXMN2F9KXK2PS0BFP9F).

Note the following requirements and behavior when sending institutional claims through the raw X12 endpoint.

#### Envelope and header [#envelope-and-header]

Stedi generates its own `ISA` and `GS` headers and `IEA` and `GE` trailers before sending your claim to the payer. You can submit your claim to Stedi with any values in these segments, as long as they conform to the X12 EDI specification.

However, you must set `ST03` (Version, Release, or Industry Identifier) to `005010X223A2`.

#### Payer ID [#payer-id]

You must submit a payer identifier in `Loop 2010BB` (Payer Name) `NM109` so Stedi can route your claim to the correct payer. This identifier **must** be a payer ID or payer ID alias listed in the [Payer Network](https://www.stedi.com/healthcare/network). If you don't already have payer IDs you use today, we recommend using the primary Payer ID.

You must include leading `0` characters in payer IDs. For example, use `00540` for SISCO, not `540`.

#### `CLM01` (Patient Control Number) [#clm01-patient-control-number]

We **strongly recommend** submitting a unique value for `Loop 2300` (Claim Information) `CLM01` (Patient Control Number). The payer returns this value in related transactions, such as the 277CA claim acknowledgment and 835 Electronic Remittance Advice (ERA), so you can correlate responses and real-time claim status checks with the original claim.

When assigning a PCN, follow these best practices:

* Use a unique PCN for each claim. The identifier should be more complex than a simple sequential number and should be hard to guess.
* Use random strings. Formats with patient initials or the date of service in them can create duplicates. We recommend using [nanoid](https://www.npmjs.com/package/nanoid) or a similar library configured with the characters available in the [basic character set](#character-set) to create a strong, unique 17-character PCN for each claim.
* Keep it 17 characters or less. Some payers cut off values longer than 17 characters in ERAs and claim acknowledgments, which makes it hard to match them with the original claim.
* Use only characters available in the [basic character set](#character-restrictions), and avoid special characters that are only available in the extended character set. Payers are permitted to return data using the basic character set. Using other characters may result in data loss or mismatches when correlating claims with responses.
* Treat PCN values as case-insensitive when matching transactions, even if the submitted value included both lower and uppercase characters.

#### Claim identifier [#claim-identifier]

`Loop 2300 REF02` (Claim Identifier for Transmission Intermediaries) has different usage rules depending on your role:

* **Providers:** Don't include `Loop 2300 REF02` when `REF01` = `D9` in your claim submission. It's reserved for clearinghouses and intermediaries. You can use `Loop 2300 CLM01` (Patient Control Number) to correlate claims with responses instead.
* **Clearinghouses and intermediaries:** You can optionally include `REF*D9` in your 837 submissions. Stedi always returns this value in `Loop 2200D REF*D9` of 277CA claim acknowledgments, allowing you to match these responses to the claim.

#### Service line identification [#service-line-identification-1]

A claim can contain multiple service lines. Since the payer may accept, reject, or pay a subset of those lines, you can receive an 835 response that references a patient control number, but only pertains to some of the service lines.

However, the line item control number serves as a unique identifier for each service line in your claim submission.

* You can set the line item control number in `Loop 2400 REF02`, when `REF01` = `6R`. The line item control number appears in the 277CA and 835 ERA responses as the `lineItemControlNumber`, allowing you to correlate these responses to specific service lines from the original claim.
* If you don't set the line item control number for a service line, Stedi uses a ULID.

#### Admission source code [#admission-source-code-1]

The admission source code tells you where the patient came from, such as the emergency room (ER), a doctor's referral, or another facility. Most institutional claims require the admission source code. The one exception is non-patient lab services, where no patient is present.

You must include the admission source code in `Loop 2300 CLI02` (Admission Source Code) for all institutional claims **except** when `Loop 2300 C02301` (Facility Type Code) is `14` (Non-Patient Laboratory).

Stedi rejects claims that don't meet this requirement.

### Character restrictions [#character-restrictions]

Only use the X12 Basic and Extended character sets in request data. Using characters outside these sets may cause errors.

<Accordion title="Basic character set" id="basic-character-set">
  The X12 Basic character set includes uppercase letters, digits, space, and some special characters. Lowercase letters and special language characters like `ñ` are not included.

  The following special characters are included:

    <img alt="Basic special characters" src="__img0" />
</Accordion>

<Accordion title="Extended character set" id="extended-character-set">
  The Extended character set includes the characters listed in Basic, plus lowercase letters and additional special characters, such as `@`.

  The following additional special characters are included:
    <img alt="Extended special characters" src="__img1" />
</Accordion>

In addition, the following characters are reserved for delimiters in the final X12 EDI transaction to the payer: `~`, `*`, `:`, `^`, and `>`. X12 doesn't support using escape sequences to represent delimiters or special characters. Stedi returns a `400` error if you use these restricted characters improperly.

* **JSON endpoint:** Don't include delimiter characters anywhere in your request data.
* **Raw X12 endpoint:** You can use these characters as delimiters, but not in the body of the request data.

### Sample request and response [#sample-request-and-response]

The following example sends an institutional claim. The response shape contains summary information from Stedi about the claim submission and whether it was successful.

The response also includes an initial [277CA claim acknowledgment](/healthcare/claim-responses-overview#277ca-claim-acknowledgment) from Stedi in the `x12` property, which indicates whether the claim passed Stedi's claim edits.

<Tabs items="[&#x22;Request - JSON&#x22;, &#x22;Request - X12 EDI&#x22;, &#x22;Response&#x22;]">
  <Tab value="Request - JSON">
    {/* schema:InstitutionalClaimsSubmissionRequestContent */}

    ```bash
    curl --request POST \
      --url https://healthcare.us.stedi.com/2024-04-01/change/medicalnetwork/institutionalclaims/v1/submission \
      --header 'Authorization: <api-key>' \
      --header 'Content-Type: application/json' \
      --header 'Idempotency-Key: <idempotency-key>' \
      --data '{
      "usageIndicator": "T",
      "tradingPartnerName": "UnitedHealthcare",
      "tradingPartnerServiceId": "87726",
      "submitter": {
        "organizationName": "Test Facility",
        "contactInformation": {
          "name": "Test Facility",
          "phoneNumber": "2225551234"
        },
        "taxId": "123456789"
      },
      "receiver": {
        "organizationName": "UnitedHealthcare"
      },
      "subscriber": {
        "memberId": "98765",
        "paymentResponsibilityLevelCode": "P",
        "firstName": "JANE",
        "lastName": "DOE",
        "gender": "F",
        "dateOfBirth": "19000101",
        "address": {
          "address1": "1234 Some St",
          "city": "Buckeye",
          "state": "AZ",
          "postalCode": "85326"
        }
      },
      "claimInformation": {
        "claimFilingCode": "ZZ",
        "patientControlNumber": "<YOUR-CLAIM-ID>",
        "claimChargeAmount": "500.00",
        "placeOfServiceCode": "11",
        "claimFrequencyCode": "0",
        "planParticipationCode": "C",
        "benefitsAssignmentCertificationIndicator": "Y",
        "releaseInformationCode": "Y",
        "principalDiagnosis": {
          "qualifierCode": "ABK",
          "principalDiagnosisCode": "R45851"
        },
        "serviceLines": [
          {
            "assignedNumber": "0",
            "serviceDate": "20241015",
            "serviceDateEnd": "20241015",
            "lineItemControlNumber": "111222333",
            "institutionalService": {
              "serviceLineRevenueCode": "0800",
              "lineItemChargeAmount": "500.00",
              "measurementUnit": "UN",
              "serviceUnitCount": "1",
              "procedureIdentifier": "HC",
              "procedureCode": "H0001"
            }
          }
        ],
        "claimCodeInformation": {
          "admissionTypeCode": "3",
          "admissionSourceCode": "9",
          "patientStatusCode": "30"
        },
        "claimDateInformation": {
          "admissionDateAndHour": "202409091000",
          "statementBeginDate": "20241015",
          "statementEndDate": "20241015"
        }
      },
      "providers": [
        {
          "providerType": "BillingProvider",
          "npi": "1999999976",
          "employerId": "123456789",
          "organizationName": "Test Facility",
          "address": {
            "address1": "123 Mulberry Street",
            "city": "Seattle",
            "state": "WA",
            "postalCode": "111135272"
          },
          "contactInformation": {
            "name": "Test Facility",
            "phoneNumber": "2065551234"
          }
        },
        {
          "providerType": "AttendingProvider",
          "npi": "1999999976",
          "firstName": "Doctor",
          "lastName": "Provider",
          "contactInformation": {
            "name": "name"
          }
        }
      ]
    }'
    ```
  </Tab>

  <Tab value="Request - X12 EDI">
    ```bash
    curl --request POST \
      --url "https://healthcare.us.stedi.com/2024-04-01/change/medicalnetwork/institutionalclaims/v1/raw-x12-submission" \
      --header "Authorization: <api-key>" \
      --header "Content-Type: application/json" \
      --header "Idempotency-Key: <idempotency-key>" \
      --data '{
        "x12": "ISA*00*          *00*          *ZZ*574183004559   *ZZ*STEDITEST      *260213*2004*^*00501*000000035*0*T*>~GS*HC*574183004559*STEDITEST*20260213*200422*35*X*005010X223A2~ST*837*0001*005010X223A2~BHT*0019*00*01KHC9KCMYMA7YSW4K1ZM774ZA*20260213*2003*CH~NM1*41*2*Test Facility*****46*123456789~PER*IC**TE*2225551234~NM1*40*2*UnitedHealthcare*****46*87726~HL*1**20*1~NM1*85*2*Test Facility*****XX*1999999976~N3*123 Mulberry Street~N4*Seattle*WA*111135272~REF*EI*123456789~HL*2*1*22*0~SBR*P*18*******ZZ~NM1*IL*1*DOE*JANE****MI*98765~N3*1234 Some St~N4*Buckeye*AZ*85326~DMG*D8*19000101*F~NM1*PR*2*UnitedHealthcare*****PI*87726~CLM*55556666777888*500***11>A>0**C*Y*Y~DTP*434*RD8*20241015-20241015~DTP*435*DT*202409091000~CL1*3*9*30~HI*ABK>R45851~NM1*71*1*Provider*Doctor****XX*1999999976~LX*1~SV2*0800*HC>H0001*500*UN*1~DTP*472*RD8*20241015-20241015~REF*6R*111222333~SE*28*0001~GE*1*35~IEA*1*000000035~"
      }'
    ```
  </Tab>

  <Tab value="Response">
    {/* schema:InstitutionalClaimsSubmissionResponseContent */}

    ```json
    {
      "status": "SUCCESS",
      "controlNumber": "1",
      "tradingPartnerServiceId": "87726",
      "claimReference": {
        "correlationId": "01KHC9G8FMGZ6CA9TQT704RAMB",
        "patientControlNumber": "12345",
        "timeOfResponse": "2026-02-13T20:01:34.919Z",
        "formatVersion": "5010",
        "rhClaimNumber": "01KHC9G8FMGZ6CA9TQT704RAMB",
        "payerId": "87726",
        "serviceLines": [
          {
            "lineItemControlNumber": "111222333"
          }
        ]
      },
      "meta": {
        "traceId": "65602add-af9c-4aec-9b8f-9fed3badab3c"
      },
      "payer": {
        "payerName": "UnitedHealthcare",
        "payerID": "87726"
      },
      "x12": "ISA*00*          *00*          *ZZ*STEDITEST      *ZZ*574183004559   *260213*2001*^*00501*929135779*0*T*`~GS*HN*STEDITEST*574183004559*20260213*200134*1*X*005010X214~ST*277*0001*005010X214~BHT*0085*08*01KHC9GC66KDRVHEJC42Q103EQ*20260213*200134*TH~HL*1**20*1~NM1*AY*2*STEDI INC*****46*117151744~TRN*1*01KHC9GC66KDRVHEJC42Q103EQ~DTP*050*D8*20260213~DTP*009*D8*20260213~HL*2*1*21*1~NM1*41*2*Test Facility*****46*123456789~TRN*2*01KHC9G8FMGZ6CA9TQT704RAMB~STC*A0`17`AY*20260213*WQ*500.0~QTY*90*1~AMT*YU*500.0~HL*3*2*19*1~NM1*85*2*Test Facility*****XX*1999999976~TRN*1*0~REF*TJ*123456789~QTY*QA*1~AMT*YU*500.0~HL*4*3*PT*0~NM1*QC*1*DOE*JANE****MI*98765~TRN*2*12345~STC*A1`20*20260213*WQ*500.0~DTP*472*RD8*20241015-20241015~SE*25*0001~GE*1*1~IEA*1*929135779~",
      "httpStatusCode": "200 OK"
    }
    ```
  </Tab>
</Tabs>

### Concurrency limit [#concurrency-limit]

Institutional claim submission endpoints share a concurrency pool with other claim endpoints. For more information, visit [Concurrency limits](/healthcare/api-reference#concurrency-limits).

### Recommended API clients [#recommended-api-clients]

You may want to use an API client to make testing and debugging easier.

We **don't recommend** using Postman for requests containing Protected Health Information (PHI) because Postman defaults to storing request history - including full request payloads - on its cloud servers. You can't turn this feature off without impractical workarounds.

Visit [API clients](/healthcare/api-reference#api-clients) for a list of recommended clients you can use instead.

## UI submission [#ui-submission]

You can submit institutional claims in X12 EDI format through the Stedi portal. Manual claim submission can be useful for testing, QA, and debugging your pipeline.

You can submit institutional claims in X12 EDI format. Your X12 EDI claim data must adhere to the [837 Claim: Institutional (X223A2)](https://portal.stedi.com/app/guides/view/hipaa/health-care-claim-institutional-x223a2/01JBHW2YXMN2F9KXK2PS0BFP9F) specification.

To manually submit an X12 EDI claim:

1. Go to the [claims view](https://portal.stedi.com/app/healthcare/claims).

2. Click **Submit claim** and select **Upload raw X12 file**.

3. Do one of the following:

   * Click **Upload X12 EDI** and select an existing `.edi` file.
   * Select the transaction type and then paste the X12 EDI content into the text area.

   You can submit multiple claims in a single file, as long as all claims are 837s of the same type and X12 version. Visit [Bulk claims](#bulk-claims) for details.

4. Set `ISA15` (Interchange Usage Indicator) to `T` (Test Data) or `P` (Production Data), accordingly. Production claims are sent to payers. Test claims aren't sent to payers - Stedi's test clearinghouse processes them and returns test 277CA acknowledgments so you can evaluate your claim processing pipeline.

5. Fix any X12 EDI validation errors that appear after adding the claim content. Stedi highlights errors in red and displays the specification for the claim type you selected on the right side of the screen to make it easier to identify and fix issues.

   These validations ensure your claim data conforms to the HIPAA specification. Stedi runs additional claim edits on your claim data after submission.

6. Click **Submit claim**.

Stedi processes the claim and runs claim edits to identify errors that could lead to a payer rejection. If a claim fails one of Stedi's edits, you'll receive a 277CA claim acknowledgment from Stedi rejecting the claim immediately after submission. This can happen even when the X12 EDI editor showed no errors before submission.

If the claim passes all of Stedi's edits, Stedi submits it to the payer. It will appear on the [claims view](https://portal.stedi.com/app/healthcare/claims) within a few minutes.

#### Bulk claims [#bulk-claims]

You can submit multiple claims in a single X12 EDI file, as long as they are all the same claim type (professional, institutional, or dental) and X12 version. You can submit multiple claims in the same 837 transaction by including multiple instances of the following loops:

* `Loop 2000A` (Billing provider)
* `Loop 2000B` (Subscriber)
* `Loop 2300` (Claim Information) - You can submit up to 1,000 claim loops in each 837 transaction

After submission, Stedi separates your bulk 837 transaction into individual claims and sends each claim separately to the payer. This includes multiple claims going to the same payer - all claims within a bulk submission are sent individually to maintain consistency.

The following example would produce 12 separate claims (2 x 3 x 2 = 12), each shown individually on the [claims view](https://portal.stedi.com/app/healthcare/claims):

* 837 transaction contains information for two billing providers (2x `Loop 2000A`)
* Each billing provider has three subscribers (3x `Loop 2000B`)
* Each subscriber has two claims (2x `Loop 2300`)

Then, you'll typically receive separate 277CA claim acknowledgments for each claim. Each claim will also receive its own test ERA from Stedi's test clearinghouse if the payer was `STEDITEST`.

## View submitted claims [#view-submitted-claims]

In the [claims view](https://portal.stedi.com/app/healthcare/claims), you can review and filter every claim in your account. Toggle test mode to **ON** to review test claims. Click any claim to review its details.

## Submit claims to a secondary or tertiary payer [#submit-claims-to-a-secondary-or-tertiary-payer]

In [coordination of benefits (COB)](/healthcare/coordination-of-benefits) scenarios, you'll need to submit a claim to multiple payers.

You must set the `subscriber.paymentResponsibilityLevelCode` to either `S` (when submitting to the secondary payer) or `T` (when submitting to the tertiary payer).

You must also include the following information about how prior payers have adjudicated the claim. For example, if a patient's private insurance plan (primary payer) adjusted the requested reimbursement amount and paid for its portion of the services, you must include that information in the claim you submit to Medicare (secondary payer). You can find these details in 835 ERA responses from prior payers.

### Claim information [#claim-information]

You must submit one object in the `claimInformation.otherSubscriberInformation` array for each prior payer. Supply all the required properties in the object plus the following additional information:

* `claimLevelAdjustments`: Provide if the prior payer made adjustments at the claim level. Codes and their associated amounts must come from ERAs sent by the prior payers. You can find these codes in the ERA's [`transactions[].detailInfo[].paymentInfo[].claimAdjustments`](/healthcare/api-reference/get-healthcare-reports-835#response.transactions.detailInfo.paymentInfo.claimAdjustments) array.
* `medicareInpatientAdjudication` (institutional claims only): You must include this if Medicare was one of the prior payers and reported inpatient adjudication information on the ERA.
* `medicareOutpatientAdjudication`: You must include this if Medicare was one of the prior payers and reported outpatient adjudication information on the ERA.
* `otherPayerName.otherPayerAdjudicationOrPaymentDate`: The date the payer adjudicated or paid the claim. You must provide this if you aren't providing a value in the `claimInformation.serviceLines[].lineAdjudicationInformation[].adjudicationOrPaymentDate` property.
* `payerPaidAmount`: This is the total amount in dollars the payer paid on this claim.

### Service line information [#service-line-information]

You must submit `serviceLines[].lineAdjudicationInformation` objects when the prior payers provided line-level adjudication information. Submit one object for each prior payer. For each object, you should include the following properties.

* `adjudicationOrPaymentDate`: The date the payer adjudicated or paid the claim. Don't include this if you're providing a date in the `otherPayerName.otherPayerAdjudicationOrPaymentDate` property.
* `claimAdjustmentInformation`: You can find this information in the ERA's [`transactions[].detailInfo[].paymentInfo[].serviceLines[].serviceAdjustments`](/healthcare/api-reference/get-healthcare-reports-835#response.transactions.detailInfo.paymentInfo.serviceLines.serviceAdjustments) array.
* `otherPayerPrimaryIdentifier`: The identifier for the other payer. This value should match the identifier you supplied for the payer in the `claimInformation.otherSubscriberInformation[].otherPayerName.otherPayerIdentifier` property.
* `procedureCode`: The adjudicated procedure code for the service line.
* `serviceIdQualifier`: A code identify the type of procedure code. Visit [Claims code lists](/healthcare/claims-code-lists#composite-medical-procedure---product-or-service-id-qualifier-codes) for a complete list.
* `serviceLinePaidAmount`: The total amount in dollars the prior payer paid on this service line.
* `paidServiceUnitCount`: The number of paid units for the service line. When paid units are not present on the remittance advice, use the original billed units.
* `remainingPatientLiability`: The amount of the service line the patient is responsible for paying.

## Claim Filing Indicator Code [#claim-filing-indicator-code]

The Claim Filing Indicator Code indicates how a claim was filed with a payer, such as `MC` (Medicaid) or `CI` (Commercial Insurance Co.).

Choosing the correct claim filing indicator code is important for successful claim submission. Visit the [Claims code lists](/healthcare/claims-code-lists#choosing-the-right-code) documentation for best practices for selecting the appropriate code.

# Submit paper claims
Source: https://www.stedi.com/docs/healthcare/submit-paper-claims


Some payers require claims to be submitted on paper rather than electronically. Instead of mailing these claims yourself, you can send the claim information to Stedi using an electronic submission workflow with the receiver ID set to `PAPER`. Stedi then handles printing and mailing the claim to the designated payer on your behalf.

## Supported claim types [#supported-claim-types]

You can submit the following claim types for printing and mailing:

{/* prettier-ignore-start */}

| Claim Type                   | Submission Methods                                                                                                                                                                                                                              |
| ---------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Professional (CMS-1500 form) | **API:** [Professional Claims JSON](/healthcare/api-reference/post-healthcare-claims) \| [Professional Claims Raw X12](/healthcare/api-reference/post-healthcare-claims-raw-x12)<br />&#x2A;*SFTP:** 837P X12 EDI<br />&#x2A;*UI:** 1500 form   |
| Institutional (UB-04 form)   | **API:** [Institutional Claims JSON](/healthcare/api-reference/post-healthcare-institutional-claims) \| [Institutional Claims Raw X12](/healthcare/api-reference/post-healthcare-institutional-claims-raw-x12)<br />&#x2A;*SFTP:** 837I X12 EDI |

{/* prettier-ignore-end */}

## Limitations [#limitations]

Paper claims currently have the following limitations:

* **No dental claims**: 837D dental claims (ADA form) aren't supported for paper submission.
* **No paper attachments**: You can't submit paper attachments today by setting the receiver ID to `PAPER`.
* **Limited acknowledgments**: You'll receive 277CA claim acknowledgments indicating when Stedi has forwarded the claim for printing. Additional status updates (such as when the claim is printed, mailed, or returned as undeliverable) aren't currently available.
* **ERAs typically unavailable**: Payers that require paper claim submission usually don't support Electronic Remittance Advice (ERAs). Instead, they typically mail an Explanation of Benefits (EOB) back to the provider.

## Transaction enrollment [#transaction-enrollment]

[Transaction enrollment](/healthcare/transaction-enrollment) isn't required for paper claim submission - it's only required for electronic transactions.

You may still need to complete transaction enrollment for Electronic Remittance Advice (ERAs) if the payer supports them. However, payers that require paper claim submission usually *don't* support ERAs:

* HIPAA covered entity health plans are required to send ERAs electronically.
* Other health plans may use different formats and communication channels for both claim submissions and remittances.

## Paper receiver ID [#paper-receiver-id]

Stedi uses a special payer ID to route claim submissions for printing and mailing: `PAPER` (Print and Mail - All Payers). You'll submit this as the **receiver ID** in the claim submission.

For paper claims, it's the receiver ID that determines whether a claim is printed and mailed or sent electronically:

{/* prettier-ignore-start */}

| Name            | Location                                                                                                                                                        | Description                       |
| --------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------- |
| **Receiver ID** | <ul><li>**JSON:** `receiver.receiverId`</li><li>**X12 EDI:** `Loop 1000B` (Receiver Name) `NM109`</li><li>**CMS-1500 UI:** **Send** section</li></ul>           | Controls the delivery method.     |
| **Payer ID**    | <ul><li>**JSON:** `tradingPartnerServiceId`</li><li>**X12 EDI:** `Loop 2010BB` (Payer Name) `NM109`</li><li>**CMS-1500 UI:** **Stedi payer** dropdown</li></ul> | Identifies the destination payer. |

{/* prettier-ignore-end */}

When the receiver ID is set to `PAPER` (or **By mail** is selected in the CMS-1500 form), Stedi bypasses the traditional electronic submission flow and uses the mail-to payer name and mailing address to print and mail a paper claim to the payer.

You'll still set the payer ID to the destination payer's ID or alias, if available in the Stedi [Payer Network](https://www.stedi.com/healthcare/network). However, you can also set the payer ID to `PAPER` when you need to send paper claims to payers outside of the electronic network.

For example, you can set the receiver ID to `PAPER` while keeping the payer ID as `CIGNA`. This tells Stedi to print and mail the claim to Cigna.

## JSON - API submission [#json---api-submission]

You can send paper claims through the following JSON endpoints:

* [Professional Claims JSON](/healthcare/api-reference/post-healthcare-claims)
* [Institutional Claims JSON](/healthcare/api-reference/post-healthcare-institutional-claims)

Construct your claim request as you normally would. Then, add the following information.

{/* prettier-ignore-start */}

| Property                    | Description                                                                                                                                                                                                              |
| --------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| `receiver.organizationName` | The actual payer name, such as Cigna.                                                                                                                                                                                    |
| `receiver.receiverId`       | Set to `PAPER`. This is what tells Stedi to bypass the typical electronic submission flow and instead route this claim to be printed and mailed.                                                                         |
| `tradingPartnerName`        | The mail-to payer name. This is what should be listed on the physical envelope. This information may be different from `receiver.organizationName`.                                                                      |
| `tradingPartnerServiceId`   | Set this to the destination payer's ID or alias, if available in the Stedi [Payer Network](https://www.stedi.com/healthcare/network). If you're sending claims to payers outside the Payer Network, set this to `PAPER`. |
| `payerAddress.address1`     | The first line of the street address. This typically contains the building number and street name.                                                                                                                       |
| `payerAddress.address2`     | The second line of the street address. This is optional, and typically contains the apartment or suite number, if relevant.                                                                                              |
| `payerAddress.city`         | The city name.                                                                                                                                                                                                           |
| `payerAddress.state`        | The state or province code. Only required when the city is in the United States and Canada.                                                                                                                              |
| `payerAddress.postalCode`   | The postal zone or ZIP Code. Exclude punctuation and spaces.                                                                                                                                                             |

{/* prettier-ignore-end */}

After you submit the claim, Stedi will use the paper payer ID and the mailing address you provided to route the claim for printing and mailing.

### Example: Professional paper claim [#example-professional-paper-claim]

The following example sends a professional paper claim to Cigna.

```bash
curl --request POST \
  --url "https://healthcare.us.stedi.com/2024-04-01/change/medicalnetwork/professionalclaims/v3/submission" \
  --header "Authorization: <api_key>" \
  --header "Content-Type: application/json" \
  --data '{
  "receiver": {
    "receiverId": "PAPER",
    "organizationName": "CIGNA"
  },
  "tradingPartnerName": "CIGNA",
  "tradingPartnerServiceId": "62308",
  "payerAddress": {
    "address1": "123 Example Street",
    "address2": "STE 100",
    "city": "Mountain View",
    "state": "CA",
    "postalCode": "940433706"
  }
  ... // remaining claim data
}'
```

### Example: Payer not in Stedi's network [#example-payer-not-in-stedis-network]

The following example sets the `tradingPartnerServiceId` to `PAPER` because this payer is outside the Stedi [Payer Network](https://www.stedi.com/healthcare/network).

```bash
curl --request POST \
  --url "https://healthcare.us.stedi.com/2024-04-01/change/medicalnetwork/professionalclaims/v3/submission" \
  --header "Authorization: <api_key>" \
  --header "Content-Type: application/json" \
  --data '{
  "receiver": {
    "receiverId": "PAPER",
    "organizationName": "ACME Employer LLC"
  },
  "tradingPartnerName": "ACME Employer LLC",
  "tradingPartnerServiceId": "PAPER",
  "payerAddress": {
    "address1": "987 Example Street",
    "address2": "STE 200",
    "city": "Philadelphia",
    "state": "PA",
    "postalCode": "19192"
  },
  ... // remaining claim data
}'
```

## X12 EDI - API and SFTP submission [#x12-edi---api-and-sftp-submission]

You can send X12 EDI claims through the following methods:

* **API endpoints:** [Professional Claims Raw X12](/healthcare/api-reference/post-healthcare-claims-raw-x12) | [Institutional Claims Raw X12](/healthcare/api-reference/post-healthcare-institutional-claims-raw-x12)
* **SFTP:** [SFTP connection guide](/healthcare/submit-claims-sftp-connection)

Construct an X12 EDI claim as you normally would. Then, add the following information.

{/* prettier-ignore-start */}

| Location                     | Elements                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     |
| ---------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `Loop 1000B` (Receiver Name) | Set the following paper-specific elements: <ul><li>`NM103`: The actual payer name, such as Cigna.</li><li>`NM109`: Set to `PAPER`. This is what tells Stedi to bypass the typical electronic submission flow and instead route this claim to be printed and mailed.</li></ul>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                |
| `Loop 2010BB` (Payer Name)   | Set the following paper-specific elements: <ul><li>`NM103`: The mail-to payer name. This is what should be listed on the physical envelope. This information may be different from `1000B NM103`.</li><li>`NM109`: Set this to the destination payer's ID or alias, if available in the Stedi [Payer Network](https://www.stedi.com/healthcare/network). If you're sending claims to payers outside the Payer Network, set this to `PAPER`.</li><li>`N301`: The first line of the street address. This typically contains the building number and street name.</li><li>`N302`: The second line of the street address. This is optional, and typically contains the apartment or suite number, if relevant.</li><li>`N401`: The city name.</li><li>`N402`: The state or province code. Only required when the city is in the United States and Canada.</li><li>`N403`: The postal zone or ZIP Code. Exclude punctuation and spaces.</li></ul> |

{/* prettier-ignore-end */}

After you submit the claim, Stedi will use the paper payer ID and the mailing address you provided to route the claim for printing and mailing.

### Example: Professional paper claim [#example-professional-paper-claim-1]

The following example uses:

* The payer payer ID `PAPER` in `Loop 1000B` (Receiver Name) `NM109`.
* Cigna's payer ID from the Stedi [Payer Network](https://www.stedi.com/healthcare/network) in `Loop 2010BB` (Payer Name) `NM109`.

```
ISA...~
GS...~
ST*837*0001*005010X222A1~
...

NM1*40*2*CIGNA*****46*PAPER~                             // Paper payer ID
NM1*PR*2*CIGNA*****PI*62308~                             // Name and payer ID
N3*123 Example Street*STE 100~                           // Mailing address
N4*Mountain View*CA*940433706~

...
SE...~
GE...~
IEA...~
```

### Example: Payer not in Stedi's network [#example-payer-not-in-stedis-network-1]

The following example uses:

* The payer payer ID `PAPER` in `Loop 1000B` (Receiver Name) `NM109`.
* The paper payer ID `PAPER` in `Loop 2010BB` (Payer Name) `NM109`. This allows you to submit paper claims to payers outside of the Stedi [Payer Network](https://www.stedi.com/healthcare/network).

```
ISA...~
GS...~
ST*837*0001*005010X222A1~
...

NM1*40*2*ACME Employer LLC*****46*PAPER~ // Paper payer ID
NM1*PR*2*ACME Employer LLC*****PI*PAPER~ // Name and paper payer ID
N3*987 Example Street*STE 200~           // Mailing address
N4*Philadelphia*PA*19192~

...
SE...~
GE...~
IEA...~
```

## UI submission (CMS-1500 form) [#ui-submission-cms-1500-form]

You can submit professional paper claims through the [CMS-1500 form UI](https://portal.stedi.com/app/healthcare/claims/create) in the Stedi portal. Within the form, configure these paper-specific settings:

<img alt="CMS-1500 paper claim fields" src="__img0" />

1. In the **Send** section, select **By mail**. This expands the UI to show additional fields for the mail-to payer name and payer address.

2. In the **Stedi payer** dropdown:
   * If the payer exists in Stedi's Payer Network, select it from the dropdown.
   * If the payer is not in the network, check **I'm sending to a payer not found in Stedi's network**. Stedi automatically populates the dropdown with the **Print and Mail - All Payers** option.

3. In the **Postage address** section:
   * Update the **Mail-to payer name** if necessary. This becomes the addressee on the physical envelope.
   * Fill in the **Payer address** fields with the complete mailing address where the claim should be sent.

After you submit the claim, Stedi will use the paper payer ID and the mailing address you provided to route the claim for printing and mailing.

## Paper claim responses [#paper-claim-responses]

When you submit a paper claim, you receive different types of responses than you would for electronic claims. This section explains what acknowledgments and remittances to expect.

### 277CA claim acknowledgments [#277ca-claim-acknowledgments]

After you submit a paper claim, Stedi immediately confirms receipt:

* **API**: Stedi returns an HTTP response with claim submission details.
* **SFTP**: Stedi generates a 999 Functional Acknowledgment confirming receipt of the EDI file.
* **UI**: The portal displays a confirmation message with the submitted claim details.

Then, Stedi returns a 277CA claim acknowledgment with category code `A1` (Acknowledgment/Receipt) and status code `19` (Acknowledged) to indicate that we received the claim and forwarded it to our print-and-mail vendor. This is not confirmation that the claim has been printed or mailed.

<Tabs items="[&#x22;JSON&#x22;, &#x22;X12 EDI&#x22;]">
  <Tab value="JSON">
    ```json
    {
      "providerStatuses": [
        {
          "healthCareClaimStatusCategoryCode": "A1",
          "healthCareClaimStatusCategoryCodeValue": "Acknowledgement/Receipt - The claim/encounter has been received. This does not mean that the claim has been accepted for adjudication.",
          "statusCode": "19",
          "statusCodeValue": "Acknowledged.",
          "entityIdentifierCode": "40",
          "entityIdentifierCodeValue": "Receiver"
        }
      ],
      "statusInformationEffectiveDate": "20260101",
      "totalSubmittedChargeAmount": "100.50"
    }
    ```
  </Tab>

  <Tab value="X12 EDI">
    ```
    STC*A1:19:40*20260101*WQ*100.50~
    ```
  </Tab>
</Tabs>

You won't receive electronic 277CAs from the payer the way you would for an electronic claim submission. Instead, payers may send printed acknowledgments through the mail.

### Explanation of Benefits (EOB) [#explanation-of-benefits-eob]

Payers that require paper claim submission usually don't support Electronic Remittance Advice (ERAs). Instead, they mail an Explanation of Benefits (EOB) back to the provider.

This means you shouldn't expect to receive 835 ERAs through Stedi for paper claims. You'll receive paper EOBs by mail from the payer.

## Claim attachments [#claim-attachments]

Paper claims with attachments aren't supported today. You can't submit claim attachments with paper claims by setting the receiver ID to `PAPER`.

# Submit professional claims - API and UI
Source: https://www.stedi.com/docs/healthcare/submit-professional-claims


You can submit 837P professional claims through Stedi in JSON, X12 EDI, or the CMS-1500 form.

Once you send a claim, Stedi automatically receives and processes 277CA claim acknowledgments and 835 Electronic Remittance Advice (ERA) responses.

## Submission methods [#submission-methods]

You can submit professional claims to payers through the following methods:

{/* prettier-ignore-start */}

| Method | Description                                                                                                                                                                                        |
| ------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| API    | Submit claims programmatically using the [Professional Claims JSON](#api-submission) or [Professional Claims Raw X12](#api-submission) endpoints.                                                  |
| UI     | Submit claims through the [CMS-1500 form](#cms-1500-claim-form) or by [uploading X12 EDI files](#x12-edi-upload) in the Stedi portal.                                                              |
| SFTP   | Upload X12 EDI files to Stedi's SFTP server. Visit [SFTP submission](/healthcare/submit-claims-sftp-connection) for connection details.                                                            |
| Paper  | Some payers require claims to be submitted on paper rather than electronically. Visit [Submit paper claims](/healthcare/submit-paper-claims) to learn how to send claims for printing and mailing. |

{/* prettier-ignore-end */}

This page focuses on API and UI submission.

## Before sending claims [#before-sending-claims]

You may need to complete the following steps before sending claims.

### Transaction enrollment [#transaction-enrollment]

[Transaction enrollment](/healthcare/transaction-enrollment) is the process of registering a provider to exchange specific healthcare transactions with a payer. Some payers require enrollment before allowing providers to submit 837 claims through a new clearinghouse.

You can check whether a specific payer requires transaction enrollment for 837 claims in the [Payer Network](https://www.stedi.com/healthcare/network) or through the [Payers API](/healthcare/api-reference/get-payer).

To enroll, complete the following steps:

1. Create a provider record with the information required for enrollment. If you already have a record for the provider, you can skip this step. [Stedi portal](https://portal.stedi.com/app/healthcare/providers) | [API endpoint](/healthcare/api-reference/post-enrollment-create-provider)
2. Submit an enrollment request for the claim type. [Stedi portal](https://portal.stedi.com/app/healthcare/enrollments) | [API endpoint](/healthcare/api-reference/post-enrollment-create-enrollment)

<Note>
  For most payers that require enrollment for claim submission, enrolling through Stedi won't impact your ability to send transactions to your original clearinghouse. Only a few payers require the 837 claim to be sent to the same clearinghouse as the 835 ERA enrollment. For any questions on payer nuances, contact Stedi's support team.
</Note>

#### Best practices [#best-practices]

* Leverage [batch enrollments](/healthcare/create-manage-transaction-enrollments#bulk-csv-import) when onboarding new provider groups or many providers at a time.
* For ERAs, you can only be enrolled through one clearinghouse at a time per payer per provider. When your ERA enrollment is accepted through Stedi, you'll stop receiving ERAs through the previous clearinghouse. Every other transaction type accepts enrollment through more than one clearinghouse.

### Coordination of benefits check [#coordination-of-benefits-check]

We recommend running a coordination of benefits (COB) check to ensure you submit claims to the correct payer. COB checks can help you determine:

* If a patient is covered by more than one health plan
* Whether coverage overlap requires coordination of benefits
* Each payer's responsibility for payment (primacy) in coordination of benefits scenarios

Visit [Coordination of benefits (COB) checks](/healthcare/coordination-of-benefits) for more information.

## Test claims [#test-claims]

All claims you submit through the API are sent to the payer as production claims unless you explicitly designate them as test data.

To send test claims:

* **JSON endpoint:** Set the `usageIndicator` property in the test claim body to `T`.
* **X12 EDI endpoint:** Set `ISA15` (Interchange Usage Indicator) to `T` (Test Data) instead of `P` (Production Data).

When you send a test claim, Stedi doesn't send it to the payer. Instead, it processes the claim as if it were sent to the payer and returns a 277CA claim acknowledgment indicating whether the claim was successfully processed.

You'll receive a 277CA claim acknowledgment in response to test claims, but you won't receive a test 835 Electronic Remittance Advice (ERA) response unless you send the claim to the [Stedi Test Payer](https://www.stedi.com/healthcare/network?search=StediTest\&entry=FRCPB). Visit [Test claims workflow](/healthcare/test-claims-workflow) to learn how generate test ERAs.

## API submission [#api-submission]

Call one of the following endpoints to submit 837P professional claims:

* [Professional Claims](/healthcare/api-reference/post-healthcare-claims) to send requests in JSON
* [Professional Claims Raw X12](/healthcare/api-reference/post-healthcare-claims-raw-x12) to send requests in X12 EDI

Both endpoints return a synchronous response from Stedi in JSON format. Later, the payer will respond with a 277CA claim acknowledgment.

### Headers [#headers]

When constructing the request, you must include the following information in HTTP headers:

* **`Authorization`:** [Generate an API key](https://portal.stedi.com/app/settings/developer/api-keys) to use for authentication.
* **`Content-Type`:** Set to `application/json`.

#### Idempotency key [#idempotency-key]

We **strongly recommend** including an [idempotency key](/healthcare/api-reference#idempotency-keys) in the `Idempotency-Key` header to prevent sending duplicate claims to payers in the case of network errors or other intermittent failures. You can safely retry requests with the same idempotency key as many times as necessary within 24 hours after making the first request.

### Body - JSON [#body---json]

The information you submit for a claim depends on your use case. Refer to the [Professional Claims](/healthcare/api-reference/post-healthcare-claims) endpoint for a complete list of properties. However, all claims require the following high-level information:

{/* prettier-ignore-start */}

| Information                             | Description                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  |
| --------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `tradingPartnerServiceId`               | This is the payer ID. You can send requests using the primary payer ID, the Stedi payer ID, or any alias listed in the payer record. If you don't already have payer IDs you use today, we recommend using the primary Payer ID. Visit the [Payer Network](https://www.stedi.com/healthcare/network) for a complete list.                                                                                                                                                                                                                    |
| `tradingPartnerName`                    | This is the payer's business name, like Cigna or Aetna.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      |
| `submitter` object                      | Information about the entity submitting the claim. This can be either an individual or an organization, such as a doctor, hospital, or insurance company.                                                                                                                                                                                                                                                                                                                                                                                    |
| `receiver` object                       | Information about the payer, such as an insurance company or government agency.                                                                                                                                                                                                                                                                                                                                                                                                                                                              |
| `subscriber` and/or `dependent` objects | Information about the patient who received the medical services. Note that if a dependent has their own, unique member ID for their health plan, you should submit their information in the `subscriber` object and omit the `dependent` object from the request. You can check whether the dependent has a unique member ID by submitting an [Eligibility Check](/healthcare/api-reference/post-healthcare-eligibility) to the payer for the dependent. The payer will return the member ID in the `dependents.memberId` field, if present. |
| `claimInformation` object               | Information about the claim, such as the [patient control number](#patient-control-number-pcn), claim charge amount, and place of service code. It also includes information about each individual service line included in the claim.                                                                                                                                                                                                                                                                                                       |
| `billing` object                        | Information about the billing provider, such as the [NPI](/healthcare/national-provider-identifier), taxonomy code, and organization name.                                                                                                                                                                                                                                                                                                                                                                                                   |

{/* prettier-ignore-end */}

#### Patient Control Number [#patient-control-number]

You must submit a Patient Control Number (PCN) with each claim in [`claimInformation.patientControlNumber`](/healthcare/api-reference/post-healthcare-claims#body.claimInformation.patientControlNumber). The payer returns this value in related transactions, such as the 277CA claim acknowledgment and 835 Electronic Remittance Advice (ERA), so you can correlate responses and real-time claim status checks with the original claim.

When assigning a PCN, follow these best practices:

* Use a unique PCN for each claim. The identifier should be more complex than a simple sequential number and should be hard to guess.
* Use random strings. Formats with patient initials or the date of service in them can create duplicates. We recommend using [nanoid](https://www.npmjs.com/package/nanoid) or a similar library configured with the characters available in the [basic character set](#character-set) to create a strong, unique 17-character PCN for each claim.
* Keep it 17 characters or less. Some payers cut off values longer than 17 characters in ERAs and claim acknowledgments, which makes it hard to match them with the original claim.
* Use only characters available in the [basic character set](#character-restrictions), and avoid special characters that are only available in the extended character set. Payers are permitted to return data using the basic character set. Using other characters may result in data loss or mismatches when correlating claims with responses.
* Treat PCN values as case-insensitive when matching transactions, even if the submitted value included both lower and uppercase characters.

#### Service line identification [#service-line-identification]

A claim can contain multiple service lines. Since the payer may accept, reject, or pay a subset of those lines, you can receive an 835 ERA that references a `patientControlNumber`, but only pertains to some of the service lines.

However, the `claimInformation.serviceLines[].providerControlNumber` serves as a unique identifier for each service line in your claim submission. This value appears in the 277CA claim acknowledgment and 835 ERA as the `lineItemControlNumber`, allowing you to correlate these responses to specific service lines from the original claim. If you don't set the `providerControlNumber` for a service line, Stedi uses a random UUID.

Stedi returns service line identifiers in the `claimReference.serviceLines` array of the synchronous API response.

#### Conditional requirements [#conditional-requirements]

Note that objects marked as **required** are required for all requests, while others are conditionally required depending on the circumstances. When you include a conditionally required object, you must include all of its required properties.

For example, you must always include the `subscriber` object in your request, but you only need to include the `supervising` object when the rendering provider is supervised by a physician.

### Body - X12 EDI [#body---x12-edi]

You must send a payload in [837 X12 EDI format](https://portal.stedi.com/app/guides/view/hipaa/health-care-claim-professional-x222a1/01HR60MDFAGCSEJNKY8J38867Y).

Note the following requirements and behavior when sending professional claims through the raw X12 endpoint.

#### Envelope and header [#envelope-and-header]

Stedi generates its own `ISA` and `GS` headers and `IEA` and `GE` trailers before sending your claim to the payer. You can submit your claim to Stedi with any values in these segments, as long as they conform to the X12 EDI specification.

However, you must set `ST03` (Implementation Guide Version Name) to `005010X222A1`.

#### Payer ID [#payer-id]

You must submit a payer identifier in `Loop 2010BB` (Payer Name) `NM109` so Stedi can route your claim to the correct payer. This identifier **must** be a payer ID or payer ID alias listed in the [Payer Network](https://www.stedi.com/healthcare/network). If you don't already have payer IDs you use today, we recommend using the primary Payer ID.

You must include leading `0` characters in payer IDs. For example, use `00540` for SISCO, not `540`.

#### `CLM01` (Patient Control Number) [#clm01-patient-control-number]

We **strongly recommend** submitting a unique value for `Loop 2300` (Claim Information) `CLM01` (Patient Control Number). The payer returns this value in related transactions, such as the 277CA claim acknowledgment and 835 Electronic Remittance Advice (ERA), so you can correlate responses and real-time claim status checks with the original claim.

When assigning a PCN, follow these best practices:

* Use a unique PCN for each claim. The identifier should be more complex than a simple sequential number and should be hard to guess.
* Use random strings. Formats with patient initials or the date of service in them can create duplicates. We recommend using [nanoid](https://www.npmjs.com/package/nanoid) or a similar library configured with the characters available in the [basic character set](#character-set) to create a strong, unique 17-character PCN for each claim.
* Keep it 17 characters or less. Some payers cut off values longer than 17 characters in ERAs and claim acknowledgments, which makes it hard to match them with the original claim.
* Use only characters available in the [basic character set](#character-restrictions), and avoid special characters that are only available in the extended character set. Payers are permitted to return data using the basic character set. Using other characters may result in data loss or mismatches when correlating claims with responses.
* Treat PCN values as case-insensitive when matching transactions, even if the submitted value included both lower and uppercase characters.

#### Claim identifier [#claim-identifier]

`Loop 2300 REF02` (Claim Identifier for Transmission Intermediaries) has different usage rules depending on your role:

* **Providers:** Don't include `Loop 2300 REF02` when `REF01` = `D9` in your claim submission. It's reserved for clearinghouses and intermediaries. You can use `Loop 2300 CLM01` (Patient Control Number) to correlate claims with responses instead.
* **Clearinghouses and intermediaries:** You can optionally include `REF*D9` in your 837 submissions. Stedi always returns this value in `Loop 2200D REF*D9` of 277CA claim acknowledgments, allowing you to match these responses to the claim.

#### Service line identification [#service-line-identification-1]

A claim can contain multiple service lines. Since the payer may accept, reject, or pay a subset of those lines, you can receive an 835 response that references a patient control number, but only pertains to some of the service lines.

However, the line item control number serves as a unique identifier for each service line in your claim submission.

* You can set the line item control number in `Loop 2400 REF02`, when `REF01` = `6R`. The line item control number appears in the 277CA and 835 ERA responses as the `lineItemControlNumber`, allowing you to correlate these responses to specific service lines from the original claim.
* If you don't set the line item control number for a service line, Stedi uses a ULID.

### Character restrictions [#character-restrictions]

Only use the X12 Basic and Extended character sets in request data. Using characters outside these sets may cause errors.

<Accordion title="Basic character set" id="basic-character-set">
  The X12 Basic character set includes uppercase letters, digits, space, and some special characters. Lowercase letters and special language characters like `ñ` are not included.

  The following special characters are included:

    <img alt="Basic special characters" src="__img0" />
</Accordion>

<Accordion title="Extended character set" id="extended-character-set">
  The Extended character set includes the characters listed in Basic, plus lowercase letters and additional special characters, such as `@`.

  The following additional special characters are included:
    <img alt="Extended special characters" src="__img1" />
</Accordion>

In addition, the following characters are reserved for delimiters in the final X12 EDI transaction to the payer: `~`, `*`, `:`, `^`, and `>`. X12 doesn't support using escape sequences to represent delimiters or special characters. Stedi returns a `400` error if you use these restricted characters improperly.

* **JSON endpoint:** Don't include delimiter characters anywhere in your request data.
* **Raw X12 endpoint:** You can use these characters as delimiters, but not in the body of the request data.

### Sample request and response [#sample-request-and-response]

The following examples send a professional claim. The response shape is the same for both the JSON and X12 EDI endpoints. It contains summary information from Stedi about the claim submission and whether it was successful.

The response also includes an initial [277CA claim acknowledgment](/healthcare/claim-responses-overview#277ca-claim-acknowledgment) from Stedi in the `x12` property, which indicates whether the claim passed Stedi's claim edits.

<Tabs items="[&#x22;Request - JSON&#x22;, &#x22;Request - X12 EDI&#x22;, &#x22;Response&#x22;]">
  <Tab value="Request - JSON">
    {/* schema:ClaimsSubmissionRequestContent */}

    {/* replace:<YOUR-BILLING-PROVIDER-NPI>:1234567890 */}

    {/* replace:<YOUR-PROVIDER-NPI>:1234567890 */}

    ```bash
    curl --request POST \
      --url https://healthcare.us.stedi.com/2024-04-01/change/medicalnetwork/professionalclaims/v3/submission \
      --header 'Authorization: <api-key>' \
      --header 'Content-Type: application/json' \
      --header 'Idempotency-Key: <idempotency-key>' \
      --data '{
      "usageIndicator": "T",
      "tradingPartnerServiceId": "6400",
      "submitter": {
        "organizationName": "Test Data Health Services, Inc.",
        "submitterIdentification": "<YOUR-SUBMITTER-ID>",
        "contactInformation": {
          "name": "Test Data Health Services, Inc.",
          "phoneNumber": "5552223333"
        }
      },
      "receiver": {
        "organizationName": "Cigna"
      },
      "subscriber": {
        "memberId": "U7777788888",
        "paymentResponsibilityLevelCode": "P",
        "subscriberGroupName": "Cigna",
        "firstName": "John",
        "lastName": "Anon",
        "gender": "M",
        "dateOfBirth": "20000101",
        "groupNumber": "3335555",
        "address": {
          "address1": "2222 Random St",
          "city": "A City",
          "state": "NY",
          "postalCode": "123450000"
        }
      },
      "billing": {
        "providerType": "BillingProvider",
        "npi": "<YOUR-BILLING-PROVIDER-NPI>",
        "employerId": "123456789",
        "taxonomyCode": "2084P0800X",
        "organizationName": "Therapy Associates",
        "address": {
          "address1": "123 Some St",
          "address2": "Floor 1",
          "city": "A City",
          "state": "NY",
          "postalCode": "123450000"
        },
        "contactInformation": {
          "name": "Test Data Health Services, Inc.",
          "phoneNumber": "5553334444"
        }
      },
      "claimInformation": {
        "claimFilingCode": "CI",
        "patientControlNumber": "<YOUR-CLAIM-ID>",
        "claimChargeAmount": "109.20",
        "placeOfServiceCode": "02",
        "claimFrequencyCode": "1",
        "signatureIndicator": "Y",
        "planParticipationCode": "A",
        "benefitsAssignmentCertificationIndicator": "Y",
        "releaseInformationCode": "Y",
        "healthCareCodeInformation": [
          {
            "diagnosisTypeCode": "ABK",
            "diagnosisCode": "F1111"
          }
        ],
        "serviceFacilityLocation": {
          "organizationName": "Smith Associates",
          "address": {
            "address1": "1234 Other St",
            "city": "A City",
            "state": "NY",
            "postalCode": "123450000"
          },
          "npi": "1999999984"
        },
        "serviceLines": [
          {
            "serviceDate": "20240101",
            "professionalService": {
              "procedureIdentifier": "HC",
              "procedureCode": "90837",
              "procedureModifiers": [
                "95"
              ],
              "lineItemChargeAmount": "109.20",
              "measurementUnit": "UN",
              "serviceUnitCount": "1",
              "compositeDiagnosisCodePointers": {
                "diagnosisCodePointers": [
                  "1"
                ]
              }
            },
            "providerControlNumber": "111222333",
            "renderingProvider": {
              "providerType": "RenderingProvider",
              "npi": "<YOUR-PROVIDER-NPI>",
              "taxonomyCode": "111YP2000X",
              "firstName": "Jane",
              "lastName": "Smith"
            }
          }
        ]
      },
      "tradingPartnerName": "Cigna"
    }'
    ```
  </Tab>

  <Tab value="Request - X12 EDI">
    ```bash
    curl --request POST \
      --url https://healthcare.us.stedi.com/2024-04-01/change/medicalnetwork/professionalclaims/v3/raw-x12-submission \
      --header 'Authorization: <api-key>' \
      --header 'Content-Type: application/json' \
      --header 'Idempotency-Key: <idempotency-key>' \
      --data '{
      "x12": "ISA*00*          *00*          *ZZ*574183004559   *ZZ*STEDITEST      *260213*2039*^*00501*000000039*0*T*>~GS*HC*574183004559*STEDITEST*20260213*203918*39*X*005010X222A1~ST*837*0001*005010X222A1~BHT*0019*00*01KHCBK84E40QQYJVXA5VVXG54*20260213*2038*CH~NM1*41*2*Test Data Health Services, Inc.*****46*123435~PER*IC**TE*5552223333~NM1*40*2*Cigna*****46*6400~HL*1**20*1~PRV*BI*PXC*2084P0800X~NM1*85*2*Therapy Associates*****XX*1999999984~N3*123 Some St*Floor 1~N4*A City*NY*123450000~REF*EI*123456789~PER*IC*Test Data Health Services, Inc.*TE*5553334444~HL*2*1*22*0~SBR*P*18*3335555******CI~NM1*IL*1*Anon*John****MI*U7777788888~N3*2222 Random St~N4*A City*NY*123450000~DMG*D8*20000101*M~NM1*PR*2*Cigna*****PI*6400~CLM*123456789*109.2***02>B>1*Y*A*Y*Y~HI*ABK>F1111~NM1*77*2*Smith Associates~N3*1234 Other St~N4*A City*NY*123450000~LX*1~SV1*HC>90837>95*109.2*UN*1***1~DTP*472*D8*20240101~REF*6R*111222333~SE*29*0001~GE*1*39~IEA*1*000000039~"
    }'
    ```
  </Tab>

  <Tab value="Response">
    {/* schema:ClaimsSubmissionResponseContent */}

    ```json
    {
      "status": "SUCCESS",
      "controlNumber": "1",
      "tradingPartnerServiceId": "6400",
      "claimReference": {
        "correlationId": "01KHC8Y4HNP0GVQ5NSVTPZBC0F",
        "patientControlNumber": "111222333",
        "timeOfResponse": "2026-02-13T19:51:51.496Z",
        "payerId": "6400",
        "formatVersion": "5010",
        "rhclaimNumber": "01KHC8Y4HNP0GVQ5NSVTPZBC0F",
        "serviceLines": [
          {
            "lineItemControlNumber": "111222333"
          }
        ]
      },
      "meta": {
        "traceId": "d61ca4bc-e9e7-4d0f-93d0-6f7ff810b0e6"
      },
      "payer": {
        "payerName": "Cigna",
        "payerId": "6400"
      },
      "x12": "ISA*00*          *00*          *ZZ*STEDITEST      *ZZ*574183004559   *260213*1951*^*00501*980180479*0*T*`~GS*HN*STEDITEST*574183004559*20260213*195151*1*X*005010X214~ST*277*0001*005010X214~BHT*0085*08*01KHC8YJE8EY6A5HFR00Z5H305*20260213*195151*TH~HL*1**20*1~NM1*AY*2*STEDI INC*****46*117151744~TRN*1*01KHC8YJE8EY6A5HFR00Z5H305~DTP*050*D8*20260213~DTP*009*D8*20260213~HL*2*1*21*1~NM1*41*2*Test Data Health Services, Inc.*****46*123456~TRN*2*01KHC8Y4HNP0GVQ5NSVTPZBC0F~STC*A0`17`AY*20260213*WQ*109.2~QTY*90*1~AMT*YU*109.2~HL*3*2*19*1~NM1*85*2*Therapy Associates*****XX*1234567890~TRN*1*0~REF*TJ*123456789~QTY*QA*1~AMT*YU*109.2~HL*4*3*PT*0~NM1*QC*1*Anon*John****MI*U7777788888~TRN*2*111222333~STC*A1`20*20260213*WQ*109.2~DTP*472*RD8*20240101-20240101~SE*25*0001~GE*1*1~IEA*1*980180479~",
      "httpStatusCode": "200 OK"
    }
    ```
  </Tab>
</Tabs>

### Concurrency limit [#concurrency-limit]

Professional claim submission endpoints share a concurrency pool with other claim endpoints. For more information, visit [Concurrency limits](/healthcare/api-reference#concurrency-limits).

### Recommended API clients [#recommended-api-clients]

You may want to use an API client to make testing and debugging easier.

We **don't recommend** using Postman for requests containing Protected Health Information (PHI) because Postman defaults to storing request history - including full request payloads - on its cloud servers. You can't turn this feature off without impractical workarounds.

Visit [API clients](/healthcare/api-reference#api-clients) for a list of recommended clients you can use instead.

## UI submission [#ui-submission]

You can submit professional claims through the Stedi portal. Manual claim submission can be useful for testing, QA, and debugging your pipeline.

You can submit professional claims either through our interactive claim form or by uploading X12 EDI claim data.

### CMS-1500 claim form [#cms-1500-claim-form]

<Warning>
  The CMS-1500 form only supports submitting claims to the patient's **primary health plan**, though you can include information about secondary or tertiary payers if required. To submit claims directly to secondary or tertiary payers, use X12 EDI upload, API, or SFTP instead.
</Warning>

To submit a professional claim: Go to the [claims view](https://portal.stedi.com/app/healthcare/claims), click **Submit claim**, and select **CMS-1500 form** from the dropdown.

The submission form is based on the CMS-1500 Claim Form.
<img alt="Manual claim submission" src="__img2" />

Enter the required information for your professional claim. Notably:

| Form section                           | Instructions and Notes                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
| -------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Send                                   | Select whether you want to send the claim **Electronically** or **By mail**. <ul><li>**Electronically**: The claim is transformed into an X12 EDI transaction and routed electronically to the payer.</li><li>**By mail**: Select this option when you want to send a paper claim to the payer. When you select this option:<ul><li>If the payer exists in Stedi's Payer Network, select it from the **Stedi payer** dropdown.</li><li>If the payer is not in the network, check **I'm sending to a payer not found in Stedi's network**. Stedi automatically populates the dropdown with the **Print and Mail - All Payers** option.</li></ul>Additional fields appear in the **Postage address** section where you must enter the mail-to payer name (the addressee on the physical envelope) and the payer's mailing address (where the claim will be sent).</li></ul>                                                                                                                                                                                                                                                                                                                                                                                                                                 |
| Stedi payer                            | Select a **Payer** from the dropdown list. Start typing to filter the list.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |
| EDI mode                               | Select whether you want to submit a **Production** or **Test** claim.<ul><li>Production claims are sent to the payer.</li><li>Test claims aren't sent to the payer. Stedi validates them and displays them in the portal so you can get familiar with Stedi's claim processing workflow. Stedi responds to test claims with a 277CA claim acknowledgment, but you won't receive an 835 Electronic Remittance Advice (ERA).</li></ul>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      |
| Patient account number                 | We strongly recommend submitting a unique value in **Box 26** (Patient acccount number). The identifier should be more complex than a simple sequential number and should be hard to guess. The payer returns this value in related transactions, such as the 277CA and 835 ERA, so you can correlate responses and real-time claim status checks with the original claim. <ul><li>Keep it 17 characters or less. Some payers cut off values longer than 17 characters in ERAs and claim acknowledgments, which makes it hard to match them with the original claim.</li><li>Use alphanumeric characters only. Avoid special characters, as many payers don't handle them properly.</li><li>Use random strings. Formats with patient initials or the date of service in them can create duplicates.</li></ul>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             |
| Line item control numbers              | The line item control number is an identifier for each service line in **Box 24** (Service lines) that you can use correlate the original claim with the 835 ERA. <ul><li>By default, Stedi automatically assigns line item control numbers for each service line.</li><li>To set your own identifiers, click the **Set manual line item control numbers** in the service lines table. Line item control numbers must be 30 characters or less and unique within the claim.</li></ul>Note that Stedi will automatically reuse the same line item control numbers if you resubmit this claim through the CMS-1500 form.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
| Attachments                            | Submit claim-level attachments in **Box 19b** (Claim attachments) and service-line attachments in **Box 24** (Service lines). Note that you can't add attachments to claims that were already submitted through the portal. To include attachments for those, resubmit the claim with the attachments. <ol><li>Click **+ Add attachment** (claim-level) or **Add attachment, note or NDC codes** (service-line) to specify the details for an attachment.</li><li>Choose the appropriate **Report type** for each attachment.</li><li>Choose the appropriate **Transmission code**. If you plan to upload an attachment file, set this to &#x2A;*EL (EDI)**. If you plan to submit the attachment through another method, such as directly through the payer's portal, set this to the appropriate code.</li><li>Either enter the **Attachment control number** or click **Upload file** to select the file you want to attach. Supported file types are JPG, PDF, PNG, or TIFF. Each attachment should be 10 MB or less to comply with most payer requirements. You can add up to 10 attachment files at the claim level and up to 10 attachment files for each service line. If you included attachment files, Stedi automatically generates the required attachment control numbers for you.</li></ol> |
| Secondary or tertiary or payer details | Select an option in **Box 11d** (Is there another health benefit plan?).<ul><li>Select **Yes** when submitting a coordination of benefits (COB) claim. **Box 9** (Other insured) appears where you can enter the other payer's information. In **Box 9*&#x2A;, Click **+ Other insured** to add multiple plans (up to two additional plans for secondary and tertiary coverage). Each other insured card includes:<ul><li>**Box 9*&#x2A;: Other Insured's Name &#x2A;(required)&#x2A; and Member ID Number &#x2A;(required)*</li><li>**Box 9a**: Other Insured's Policy or Group Number</li><li>**Box 9d**: Insurance Plan Name or Program Name</li><li>**Additional details*&#x2A;: Click to expand and enter Other Payer &#x2A;(required)&#x2A;, Payer Responsibility Sequence Number Code &#x2A;(required)&#x2A;, Other Insured Relationship to Insured &#x2A;(required)*, and additional optional fields.</li></ul></li><li>Select **No** when the patient is covered by a single health plan.</li></ul>                                                                                                                                                                                                                                                                                              |

When you're finished, click **Submit claim**. Stedi validates the claim and submits it to the payer. It will appear on the [claims view](https://portal.stedi.com/app/healthcare/claims) within a few minutes.

### X12 EDI upload [#x12-edi-upload]

Your X12 EDI claim data must adhere to the [837 Claim: Professional (X222A1)](https://portal.stedi.com/app/guides/view/hipaa/health-care-claim-professional-x222a1/01HR60MDFAGCSEJNKY8J38867Y) specification.

To manually submit an X12 EDI claim:

1. Go to the [claims view](https://portal.stedi.com/app/healthcare/claims).

2. Click **Submit claim** and select **Upload raw X12 file**.

3. Do one of the following:

   * Click **Upload X12 EDI** and select an existing `.edi` file.
   * Select the transaction type and then paste the X12 EDI content into the text area.

   You can submit multiple claims in a single file, as long as all claims are 837s of the same type and X12 version. Visit [Bulk claims](#bulk-claims) for details.

4. Set `ISA15` (Interchange Usage Indicator) to `T` (Test Data) or `P` (Production Data), accordingly. Production claims are sent to payers. Test claims aren't sent to payers - Stedi's test clearinghouse processes them and returns test 277CA acknowledgments so you can evaluate your claim processing pipeline.

5. Fix any X12 EDI validation errors that appear after adding the claim content. Stedi highlights errors in red and displays the specification for the claim type you selected on the right side of the screen to make it easier to identify and fix issues.

   These validations ensure your claim data conforms to the HIPAA specification. Stedi runs additional claim edits on your claim data after submission.

6. Click **Submit claim**.

Stedi processes the claim and runs claim edits to identify errors that could lead to a payer rejection. If a claim fails one of Stedi's edits, you'll receive a 277CA claim acknowledgment from Stedi rejecting the claim immediately after submission. This can happen even when the X12 EDI editor showed no errors before submission.

If the claim passes all of Stedi's edits, Stedi submits it to the payer. It will appear on the [claims view](https://portal.stedi.com/app/healthcare/claims) within a few minutes.

#### Bulk claims [#bulk-claims]

You can submit multiple claims in a single X12 EDI file, as long as they are all the same claim type (professional, institutional, or dental) and X12 version. You can submit multiple claims in the same 837 transaction by including multiple instances of the following loops:

* `Loop 2000A` (Billing provider)
* `Loop 2000B` (Subscriber)
* `Loop 2300` (Claim Information) - You can submit up to 1,000 claim loops in each 837 transaction

After submission, Stedi separates your bulk 837 transaction into individual claims and sends each claim separately to the payer. This includes multiple claims going to the same payer - all claims within a bulk submission are sent individually to maintain consistency.

The following example would produce 12 separate claims (2 x 3 x 2 = 12), each shown individually on the [claims view](https://portal.stedi.com/app/healthcare/claims):

* 837 transaction contains information for two billing providers (2x `Loop 2000A`)
* Each billing provider has three subscribers (3x `Loop 2000B`)
* Each subscriber has two claims (2x `Loop 2300`)

Then, you'll typically receive separate 277CA claim acknowledgments for each claim. Each claim will also receive its own test ERA from Stedi's test clearinghouse if the payer was `STEDITEST`.

## View submitted claims [#view-submitted-claims]

In the [claims view](https://portal.stedi.com/app/healthcare/claims), you can review and filter every claim in your account. Toggle test mode to **ON** to review test claims. Click any claim to review its details and download the auto-generated CMS-1500 claim form PDF.

## 275 claim attachments [#275-claim-attachments]

If the claim requires attachments, you must include additional details about the attachments in the appropriate objects:

* Attachments for entire claim: [`claimInformation.claimSupplementalInformation.reportInformation`](/healthcare/api-reference/post-healthcare-claims#body.claimInformation.claimSupplementalInformation.reportInformation) or [`claimInformation.claimSupplementalInformation.reportInformations`](/healthcare/api-reference/post-healthcare-claims#body.claimInformation.claimSupplementalInformation.reportInformations) (multiple attachments)
* Attachments for a specific service line: [`claimInformation.serviceLines[].serviceLineSupplementalInformation`](/healthcare/api-reference/post-healthcare-claims#body.claimInformation.serviceLines.serviceLineSupplementalInformation)

Visit [Claim attachments](/healthcare/submit-claim-attachments) for complete instructions.

## Submit to a secondary or tertiary payer [#submit-to-a-secondary-or-tertiary-payer]

In [coordination of benefits (COB)](/healthcare/coordination-of-benefits) scenarios, you'll need to submit a claim to multiple payers.

You must set the `subscriber.paymentResponsibilityLevelCode` to either `S` (when submitting to the secondary payer) or `T` (when submitting to the tertiary payer).

You must also include the following information about how prior payers have adjudicated the claim. For example, if a patient's private insurance plan (primary payer) adjusted the requested reimbursement amount and paid for its portion of the services, you must include that information in the claim you submit to Medicare (secondary payer). You can find these details in 835 ERA responses from prior payers.

### Claim information [#claim-information]

You must submit one object in the `claimInformation.otherSubscriberInformation` array for each prior payer. Supply all the required properties in the object plus the following additional information:

* `claimLevelAdjustments`: Provide if the prior payer made adjustments at the claim level. Codes and their associated amounts must come from ERAs sent by the prior payers. You can find these codes in the ERA's [`transactions[].detailInfo[].paymentInfo[].claimAdjustments`](/healthcare/api-reference/get-healthcare-reports-835#response.transactions.detailInfo.paymentInfo.claimAdjustments) array.
* `medicareInpatientAdjudication` (institutional claims only): You must include this if Medicare was one of the prior payers and reported inpatient adjudication information on the ERA.
* `medicareOutpatientAdjudication`: You must include this if Medicare was one of the prior payers and reported outpatient adjudication information on the ERA.
* `otherPayerName.otherPayerAdjudicationOrPaymentDate`: The date the payer adjudicated or paid the claim. You must provide this if you aren't providing a value in the `claimInformation.serviceLines[].lineAdjudicationInformation[].adjudicationOrPaymentDate` property.
* `payerPaidAmount`: This is the total amount in dollars the payer paid on this claim.

### Service line information [#service-line-information]

You must submit `serviceLines[].lineAdjudicationInformation` objects when the prior payers provided line-level adjudication information. Submit one object for each prior payer. For each object, you should include the following properties.

* `adjudicationOrPaymentDate`: The date the payer adjudicated or paid the claim. Don't include this if you're providing a date in the `otherPayerName.otherPayerAdjudicationOrPaymentDate` property.
* `claimAdjustmentInformation`: You can find this information in the ERA's [`transactions[].detailInfo[].paymentInfo[].serviceLines[].serviceAdjustments`](/healthcare/api-reference/get-healthcare-reports-835#response.transactions.detailInfo.paymentInfo.serviceLines.serviceAdjustments) array.
* `otherPayerPrimaryIdentifier`: The identifier for the other payer. This value should match the identifier you supplied for the payer in the `claimInformation.otherSubscriberInformation[].otherPayerName.otherPayerIdentifier` property.
* `procedureCode`: The adjudicated procedure code for the service line.
* `serviceIdQualifier`: A code identify the type of procedure code. Visit [Claims code lists](/healthcare/claims-code-lists#composite-medical-procedure---product-or-service-id-qualifier-codes) for a complete list.
* `serviceLinePaidAmount`: The total amount in dollars the prior payer paid on this service line.
* `paidServiceUnitCount`: The number of paid units for the service line. When paid units are not present on the remittance advice, use the original billed units.
* `remainingPatientLiability`: The amount of the service line the patient is responsible for paying.

## Claim Filing Indicator Code [#claim-filing-indicator-code]

The Claim Filing Indicator Code indicates how a claim was filed with a payer, such as `MC` (Medicaid) or `CI` (Commercial Insurance Co.).

Choosing the correct claim filing indicator code is important for successful claim submission. Visit the [Claims code lists](/healthcare/claims-code-lists#choosing-the-right-code) documentation for best practices for selecting the appropriate code.

## Set a claim's correlation ID [#set-a-claims-correlation-id]

A claim's correlation ID is a business identifier that you can use to track and manage claims.

* When you submit claims through the JSON endpoint, Stedi generates the correlation ID for you, and this value will be unique for each claim.
* When you submit claims in X12 EDI through the API or an [SFTP connection](/healthcare/submit-claims-sftp-connection), you can specify your own correlation ID in the `BHT03` element. This allows you to use the same value for multiple claims if desired.

## CMS-1500 claim form PDF [#cms-1500-claim-form-pdf]

Stedi automatically generates a PDF [CMS-1500 claim form](https://www.nucc.org/index.php/1500-claim-form-mainmenu-35) for each professional claim you submit.

You can download a PDF version of professional claims in the CMS-1500 format from both the timeline view and the claim's detail page.

1. From the [claims view](https://portal.stedi.com/app/healthcare/claims), click a professional claim to open its timeline.

2. Do one of the following:
   * From the timeline view, hover over the claim and click **Download CMS-1500 claim PDF**.
   * Open the claim's detail page and click **Download CMS-1500 claim PDF**.

3. In the download menu, choose whether to **Include CMS-1500 form background**. This option is checked by default.

   The National Uniform Claim Committee (NUCC) and CMS provide exact specifications for blank CMS-1500 forms, including paper size and ink color. Many provider offices are accustomed to using these pre-printed forms, and their Practice Management System (PMS) applications are designed to print claim data onto them. Generating PDFs with no background allows you to print the claim data directly onto official pre-printed forms.

4. Click **Confirm download**. The PDF downloads to your computer.

You can also retrieve PDFs programmatically through the following endpoints:

* [CMS-1500 PDF: Business Identifier](/healthcare/api-reference/get-pdf-1500-business-identifier): Retrieve PDFs through a claim's business identifier. You can find the business identifier value in the `claimReference.correlationId` property Stedi returns in the synchronous claim submission response.
* [CMS-1500 PDF: Transaction ID](/healthcare/api-reference/get-pdf-1500): Retrieve PDFs through the `transactionId` Stedi assigns to the processed claim. This ID is included in the transaction processed event for the claim, which you can receive automatically through [webhooks](/healthcare/configure-webhooks).

Payers have strict requirements for submitted CMS-1500 claim forms. If you plan to send generated PDFs to payers or retain them for your records, we strongly recommend visiting [CMS-1500 Claim Form PDF](/healthcare/cms-1500-claim-form-pdf) for information about how to structure claim submissions for optimal generation, the correct printer settings for generated PDFs, and general best practices.

# Support
Source: https://www.stedi.com/docs/healthcare/support


We encourage you to contact us with questions, feedback, or for help using our products.

## Contact us [#contact-us]

We make every effort to respond as soon as possible, particularly to urgent requests. For both general support requests and billing inquiries, you can contact us through the following methods:

* [Website](https://www.stedi.com/contact) for all request types
* Email [support@stedi.com](mailto:support@stedi.com) for support requests, billing questions, and/or set up a dedicated Slack or Teams channel

When you report an issue, please include the following:

* A description of the issue, including the current behavior and the expected behavior
* Your Stedi account ID, if you submit through our website
* Screenshots showing the problem, when possible

# Supported payers
Source: https://www.stedi.com/docs/healthcare/supported-payers


Stedi supports thousands of medical, dental, and vision payers. You can get details about all supported payers through our interactive Payer Network, our Payers API, or the Stedi Agent.

## Find payer details [#find-payer-details]

You can use the following methods to determine:

* The transaction types supported for each payer and whether [transaction enrollment](/healthcare/transaction-enrollment) is required.
* The payer IDs you need to send transactions through Stedi.
* Which payers support medical, dental, and vision use cases.
* The states and territories where each payer operates.

### Payer Network [#payer-network]

Visit the [Payer Network](https://www.stedi.com/healthcare/network) to review a searchable list of supported payers.

<img alt="Payer Network search" src="__img0" />

### Payers API [#payers-api]

You can use the following endpoints to search for payers and retrieve their details.

* [Retrieve payer](/healthcare/api-reference/get-payer): Retrieve a specific payer record using the [Stedi payer ID](/healthcare/supported-payers#stedi-payer-id), a unique identifier Stedi assigns to each payer that will never change
* [List Payers JSON](/healthcare/api-reference/get-payers): List all supported payers in JSON format - supports pagination
* [List Payers CSV](/healthcare/api-reference/get-payers-csv): List all supported payers in CSV format
* [Search Payers](/healthcare/api-reference/get-search-payers): Search for payers by name, payer ID, or payer ID alias - supports fuzzy matching. Stedi returns results in JSON format.

These endpoints are especially useful when you want to embed payer details or search capabilities into your system or application. For example, you can use the Search Payers endpoint to allow patients to search for and select their insurance provider in a patient intake form. Learn more about [how to use payer IDs in applications](/healthcare/supported-payers#use-payer-ids-in-applications).

### Stedi Agent [#stedi-agent]

You can chat with the Stedi Agent to get information about supported payers. To use it, you must be at least an [Operator](/healthcare/account-settings#members) role within your Stedi account.

To start chatting with the Stedi Agent:

1. Go to the [Chats page](https://portal.stedi.com/app/healthcare/chats) in the Stedi portal.
2. Click **New chat** and select **Payer Finder**.
3. Type your question in the chat window and press &#x2A;*Enter.** For example, you could ask "What is the payer ID for Aetna?" or "Does Cigna support dental eligibility checks?" You can also ask more complex questions, like "Which payers support dental eligibility checks and require transaction enrollment?" Talk to Stedi Agent like you would a human support agent.
4. Ask follow-up questions as needed. You can ask multiple questions about different payers in the same chat.

The Stedi Agent will respond to your questions and display its answers in the chat window.

### What if my payer isn't available? [#what-if-my-payer-isnt-available]

If a payer you need isn't in the network, [request a payer](https://www.stedi.com/healthcare/network/request-payer) and we'll add them. We're continuously expanding our network.

## Supported transaction types and enrollment requirements [#supported-transaction-types-and-enrollment-requirements]

Check whether the transaction types you want to send or receive are supported for each of your payers. For example, if the Payer Network shows that real-time claim status checks aren't supported, you can't send them to that payer.

For supported transactions, check whether [transaction enrollment](/healthcare/transaction-enrollment) is required. Transaction enrollment is the process of registering a provider to exchange a specific healthcare transaction with a specific payer through Stedi. All payers require transaction enrollment for 835 ERAs. For other transactions, like claims and eligibility checks, it depends on the payer.

* The [Payer Network](https://www.stedi.com/healthcare/network) shows **Transactions** for each payer. Transaction types are marked as **Supported** (enrollment not required), **Supported, enrollment required** (you must complete transaction enrollment first), or **Not supported** (transaction type not available for this payer).

  <img alt="Payer Network - enrollment required for ERAs" src="__img1" />

* The [Retrieve Payer](/healthcare/api-reference/get-payer), [List Payers](/healthcare/api-reference/get-payers), and [Search Payers](/healthcare/api-reference/get-search-payers) endpoints return a `transactionSupport` object for each payer. Each property in the object has a value of `SUPPORTED` (enrollment not required), `ENROLLMENT_REQUIRED` (enrollment required), or `NOT_SUPPORTED` (transaction type not available).

  For example, the following `claimPayment` property shows that Blue Cross Blue Shield of North Carolina requires enrollment for 835 Electronic Remittance Advice (ERAs):

  ```json
  {
    "stediId": "UPICO",
    "displayName": "Blue Cross NC",
    "primaryPayerId": "BCSNC",
    "transactionSupport": {
      "claimPayment": "ENROLLMENT_REQUIRED",
      "claimStatus": "SUPPORTED",
      "coordinationOfBenefits": "SUPPORTED",
      "dentalClaimSubmission": "SUPPORTED",
      "eligibilityCheck": "SUPPORTED",
      "institutionalClaimSubmission": "SUPPORTED",
      "professionalClaimSubmission": "SUPPORTED",
      "unsolicitedClaimAttachment": "NOT_SUPPORTED"
    }
    // ...
  }
  ```

Learn more about [transaction enrollment](/healthcare/transaction-enrollment), including the enrollment process and how to submit enrollment requests.

## Payer IDs [#payer-ids]

The Payer Network includes three types of payer IDs. You can use any of these IDs to send transactions through Stedi.

<Note>
  You must include leading `0` characters in payer IDs. For example, use `00540`
  for SISCO, not `540`.
</Note>

### Primary payer ID (recommended) [#primary-payer-id-recommended]

The primary payer ID is the most commonly used ID for a payer and most often corresponds to the name the payer uses internally and provides to patients on member ID cards.

When you don't already have a payer ID you use for a particular payer, we recommend using the primary Payer ID.

### Stedi payer ID [#stedi-payer-id]

The Stedi payer ID is a unique identifier Stedi assigns to each payer. This ID will not change, even if the primary payer ID is updated. We maintain a list of Stedi payer IDs to ensure that 1) you can always refer to a payer using a consistent identifier, 2) we can more easily route requests to the payer through the most reliable connection behind the scenes, and 3) we can update our products without introducing breaking changes.

You may want to use the Stedi payer ID for requests if you are building a system that requires a consistent and immutable set of payer IDs.

### Payer ID aliases [#payer-id-aliases]

These are alternative IDs associated with a payer. If a payer changes their primary payer ID, payer ID aliases ensure that customers who still refer to the old ID can find the payer and continue sending transactions to the payer uninterrupted. Some payers also have different payer IDs for different plans. Payer ID aliases ensure that requests using these IDs are routed to the same payer.

### Use payer IDs in applications [#use-payer-ids-in-applications]

We recommend the following best practices when using payer IDs in provider-facing applications:

| ID Type                                                                                                  | Best Practices                                                                                                                                                                                                                                                                                                                                                                                                                                                                |
| -------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Stedi payer ID ([`stediId`](/healthcare/api-reference/get-payer#response.payer.stediId))                 | <ul><li>Use this ID as your internal system key when referencing payers in your database. It's a randomly-generated identifier that never changes, even if the payer updates their primary ID. This makes it reliable for long-term data relationships and foreign keys.</li><li>Don't display Stedi payer IDs to providers - they won't recognize them in association with specific payers. Stedi payer IDs are designed to be a stable, internal-only identifier.</li></ul> |
| Primary payer ID ([`primaryPayerId`](/healthcare/api-reference/get-payer#response.payer.primaryPayerId)) | <ul><li>Use this ID as the single payer ID to display in your application's user interface. This is the ID most providers recognize because it corresponds to what payers use internally and show on member ID cards.</li><li>Display only the `primaryPayerId` in list views where you need to identify payers quickly.</li></ul>                                                                                                                                            |
| Payer ID aliases ([`aliases`](/healthcare/api-reference/get-payer#response.payer.aliases))               | <ul><li>Treat aliases as a broader set of alternate identifiers separate from the `primaryPayerId`. They represent historical IDs or plan-specific variations, which may be useful for search functionality, data migration, or handling legacy integrations.</li><li>Display the complete list of `aliases` in payer detail views where users might need to look up alternative IDs or understand the payer's ID history.</li></ul>                                          |

## Medical, dental, and vision coverage [#medical-dental-and-vision-coverage]

Payers may support medical use cases, dental use cases, vision use cases, or all three. Coverage types only apply to batch and real-time eligibility checks.

* The [Payer Network](https://www.stedi.com/healthcare/network) lists **Coverage types** for each payer that indicate supported eligibility check use cases.
* The [Retrieve Payer](/healthcare/api-reference/get-payer), [List Payers](/healthcare/api-reference/get-payers), and [Search Payers](/healthcare/api-reference/get-search-payers) endpoints return a `coverageTypes` array for each payer indicating supported eligibility check use cases.

For example, Aetna's **Coverage types** in the network are **Dental, Medical, Vision**. That means you can submit eligibility checks for medical, dental, and vision services to Aetna.

## Operating states [#operating-states]

Operating states refer to the geographical areas where a payer sells insurance plans. This can differ from the location of the payer's legal headquarters and from the location of the patient's home or work address.

For example, if a company is headquartered in Washington (WA), an employee in their Georgia office can still have Premera WA coverage. In this case, WA is the operating state because that's where the plan is sold.

<Note>
  Operating states data can change rapidly for smaller payers. If you have questions about operating states for a specific payer, [contact us](https://www.stedi.com/contact).
</Note>

* The [Payer Network](https://www.stedi.com/healthcare/network) lists **Operating states** for each payer that indicate where they operate.
* The [Retrieve Payer](/healthcare/api-reference/get-payer), [List Payers](/healthcare/api-reference/get-payers), and [Search Payers](/healthcare/api-reference/get-search-payers) endpoints return an `operatingStates` array for each payer indicating where they operate.

For example, Cigna's **Operating states** in the network are **NATIONAL**, indicating that Cigna operates throughout the entire United States.

## Other payer names [#other-payer-names]

The Payer Network includes other names for many payers. These additional names help you search for and identify payers using the name most familiar to your organization. For example, "Eaton Benefits Ohio" is an alternative associated with "Cigna" – searching for either name returns the same payer within the database.

## Stedi payer errors [#stedi-payer-errors]

Stedi returns the following error messages when a payer is not supported or enrolled properly.

{/* prettier-ignore-start */}

| Error message                                                                                                         | Possible causes and resolutions                                                                                                                                                                                                                     |
| --------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `Payer is not configured for {transaction type}. Please contact Stedi support to resolve.`                            | Stedi does not yet support this transaction type for this payer, or there is a mis-mapping of payer IDs. Contact us with the name of the payer, and we'll investigate the issue.                                                                    |
| `Payer connection does not support {transaction type}. Please contact Stedi support to discuss connectivity options.` | Stedi has a connection to this payer, but it doesn't currently support this functionality (real-time eligibility or claim submission). Contact us for a timeline on enabling it.                                                                    |
| `Payer is not configured. Please check our published payer list or contact Stedi support to resolve.`                 | Stedi doesn't recognize the payer ID you provided. Double-check the payer ID in the [Stedi Payer Network](https://www.stedi.com/healthcare/network), or contact us with the name of the payer, and we will help you determine the correct payer ID. |
| `Payer is not supported. Please contact Stedi support to discuss connectivity options.`                               | Stedi doesn't yet have connectivity to this payer. We're likely already working on it - contact us for details about the connectivity timeline.                                                                                                     |

{/* prettier-ignore-end */}

# Test claims workflow
Source: https://www.stedi.com/docs/healthcare/test-claims-workflow


You can submit test professional, dental, and institutional claims to make sure your claims process is working smoothly from end to end. When you submit test claims to the [Stedi Test Payer](https://www.stedi.com/healthcare/network?search=StediTest\&entry=FRCPB), Stedi generates and returns an 835 Electronic Remittance Advice (ERA) based on the original claim.

## Submit test claims [#submit-test-claims]

You can submit test claims with any payer ID and receive test 277CA claim acknowledgments from Stedi. This helps you test your claim submission workflow and practice interpreting and handling 277CA responses.

To send test claims:

* **JSON endpoints:** Set the `usageIndicator` property in the test claim body to `T`.
* **X12 EDI endpoints and SFTP:** Set `ISA15` (Interchange Usage Indicator) to `T` (Test Data) instead of `P` (Production Data).
* **Stedi portal**: Designate the claim as a test claim during the submission process.
  * In the [1500 claim form](https://portal.stedi.com/app/healthcare/claims/create), select **Test** for the **EDI mode**.
  * During [X12 EDI upload](https://portal.stedi.com/app/healthcare/claims/upload-raw-x12), set `ISA15` (Interchange Usage Indicator) to `T` (Test Data).

Stedi processes the claim and applies our entire catalog of [edits and repairs](/healthcare/claim-edits-and-repairs).

### Test 277CAs [#test-277cas]

When you submit a test claim to any payer, Stedi returns a test 277CA claim acknowledgment indicating whether the claim was successfully processed.

## View test claims [#view-test-claims]

When you designate a claim as test data, you can view it in test mode from the [claims view](https://portal.stedi.com/app/healthcare/claims). Toggle test mode to **ON** to review test claims and their associated responses.

## Generate test ERAs [#generate-test-eras]

When you submit test claims to the [Stedi Test Payer](https://www.stedi.com/healthcare/network?search=StediTest\&entry=FRCPB), Stedi returns a test 277CA claim acknowledgment and a test 835 Electronic Remittance Advice (ERA) based on the original claim. Only test claims you send to the Stedi Test Payer will generate a test 835 ERA.

You can use this approach to test your claims processing workflow from end to end.

### Enroll with the Stedi Test Payer [#enroll-with-the-stedi-test-payer]

You must enroll your provider with the [Stedi Test Payer](https://www.stedi.com/healthcare/network?search=StediTest\&entry=FRCPB) for **835 Claim payment**. Visit [Create and manage transaction enrollments](/healthcare/create-manage-transaction-enrollments) for instructions on how to submit an enrollment request.

Once submitted, the enrollment request is automatically set to `LIVE` status within one minute. You can start submitting test claims to the Stedi Test Payer immediately after enrollment.

<img alt="Stedi Test Payer enrollment" src="__img0" />

<Note>
  If you need to test ERAs for providers without an NPI, use a dummy NPI value (such as `1999999984`) to enroll with the Stedi Test Payer. You can then submit test claims with a state license number and the tax ID from your enrollment.
</Note>

### Submit a test claim [#submit-a-test-claim]

Submit a test claim to the Stedi Test Payer. Ensure that you:

* Designate the claim as test data:
  * JSON endpoints: Set the `usageIndicator` property to `T`.
  * X12 EDI endpoints and SFTP: Set `ISA15` to `T`.
  * Stedi portal: Specify that this is a test claim in the submission form.
* Set the payer to the [Stedi Test Payer](https://www.stedi.com/healthcare/network?search=StediTest\&entry=FRCPB).
* Include the billing provider identifiers you enrolled with the Stedi Test Payer. You can submit:
  * **Providers with an NPI:** NPI and tax ID
  * **Providers without an NPI:** Tax ID and state license number

The following example shows how to submit a test professional claim to the Stedi Test Payer using the [Professional Claims](/healthcare/api-reference/post-healthcare-claims) JSON endpoint. The request includes the billing provider's NPI and tax ID.

{/* schema:ClaimsSubmissionRequestContent */}

{/* replace:<TAX-ID-USED-IN-ENROLLMENT>:1234567890 */}

{/* replace:<NPI-USED-IN-ENROLLMENT>:1234567890 */}

```bash
curl --request POST \
  --url "https://healthcare.us.stedi.com/2024-04-01/change/medicalnetwork/professionalclaims/v3/submission" \
  --header "Authorization: <api_key>" \
  --header "Content-Type: application/json" \
  --data '{
    "tradingPartnerName": "Stedi Test Payer",
    "tradingPartnerServiceId": "STEDITEST",
    "usageIndicator": "T",
    "billing": {
      "address": {
        "address1": "123 Some St",
        "address2": "Floor 1",
        "city": "A City",
        "postalCode": "123450000",
        "state": "NY"
      },
      "contactInformation": {
        "name": "Test Data Health Services, Inc.",
        "phoneNumber": "5553334444"
      },
      "employerId": "<TAX-ID-USED-IN-ENROLLMENT>",
      "npi": "<NPI-USED-IN-ENROLLMENT>",
      "organizationName": "Therapy Associates",
      "providerType": "BillingProvider",
      "taxonomyCode": "2084P0800X"
    },
    "claimInformation": {
      "benefitsAssignmentCertificationIndicator": "Y",
      "claimChargeAmount": "109.20",
      "claimFilingCode": "CI",
      "claimFrequencyCode": "1",
      "healthCareCodeInformation": [
        {
          "diagnosisCode": "F1111",
          "diagnosisTypeCode": "ABK"
        }
      ],
      "patientControlNumber": "<YOUR-CLAIM-ID>",
      "placeOfServiceCode": "02",
      "planParticipationCode": "A",
      "releaseInformationCode": "Y",
      "serviceFacilityLocation": {
        "address": {
          "address1": "1234 Other St",
          "city": "A City",
          "postalCode": "123450000",
          "state": "NY"
        },
        "npi": "1999999984",
        "organizationName": "Smith Associates"
      },
      "serviceLines": [
        {
          "professionalService": {
            "compositeDiagnosisCodePointers": {
              "diagnosisCodePointers": [
                "1"
              ]
            },
            "lineItemChargeAmount": "109.20",
            "measurementUnit": "UN",
            "procedureCode": "90837",
            "procedureIdentifier": "HC",
            "procedureModifiers": [
              "95"
            ],
            "serviceUnitCount": "1"
          },
          "providerControlNumber": "111222333",
          "renderingProvider": {
            "firstName": "Jane",
            "lastName": "Smith",
            "npi": "1999999984",
            "providerType": "RenderingProvider",
            "taxonomyCode": "111YP2000X"
          },
          "serviceDate": "20240101"
        }
      ],
      "signatureIndicator": "Y"
    },
    "receiver": {
      "organizationName": "Stedi"
    },
    "submitter": {
      "contactInformation": {
        "name": "Test Data Health Services, Inc.",
        "phoneNumber": "5552223333"
      },
      "organizationName": "Test Data Health Services, Inc.",
      "submitterIdentification": "<YOUR-SUBMITTER-ID>"
    },
    "subscriber": {
      "address": {
        "address1": "2222 Random St",
        "city": "A City",
        "postalCode": "123450000",
        "state": "NY"
      },
      "dateOfBirth": "20000101",
      "firstName": "John",
      "gender": "M",
      "groupNumber": "3335555",
      "lastName": "Anon",
      "memberId": "U7777788888",
      "paymentResponsibilityLevelCode": "P",
      "subscriberGroupName": "Test ERAs Group"
    }
  }'
```

### Test responses [#test-responses]

Stedi returns the following responses within minutes of submitting a test claim to the Stedi Test Payer:

* A test 277CA claim acknowledgment response indicating whether the claim was successfully processed. Note that if Stedi rejects the claim in the 277CA, you won't receive a test 835 ERA.
* A test 835 Electronic Remittance Advice (ERA) containing information from the original claim, including the same:
  * Provider information
  * Patient information
  * Service line details
  * Charges

Test 835 ERAs identify the payee using the billing provider's tax ID from the claim submission. The ERA also includes whichever provider identifier you submitted in the 837 claim (NPI or state license number).

Test 835 ERAs always indicate that all service lines are paid, with the same charge amounts you submitted in the test claim. Note that when you submit production claims, payers may send ERAs with different outcomes, including partially paid, denied, split, or bundled claims.

## Retrieve test responses [#retrieve-test-responses]

You can retrieve test 277CAs and 835 ERAs through the following methods:

### APIs [#apis]

You can retrieve responses through Stedi's reports endpoints. Visit [Get and correlate acknowledgments and ERAs](/healthcare/receive-claim-responses) for details.

### SFTP [#sftp]

Claim responses will appear in your server's `from-stedi` directory. Visit [SFTP submission](/healthcare/submit-claims-sftp-retrieve-responses) for details.

### Stedi portal [#stedi-portal]

You can review test 277CAs and 835 ERAs from the [claims view](https://portal.stedi.com/app/healthcare/claims). Toggle test mode to **ON** to view test claims and responses.

#### 277CAs [#277cas]

Click **All claims** at the top of the page to view all test claims in your account.

1. Click a claim to view a timeline of its processing activity.
2. Click an **Acknowledgment** (277CA) to review its details.

Stedi displays key information about the 277CA, including the billing provider's information and status codes.

#### 835 ERAs [#835-eras]

Click **835 ERAs** at the top of the page to review all test ERAs in your account.

1. Filter by processed date, trace number, total paid, payment date, payment method, payer, payee (billing provider), payee NPI, payee Tax ID, or PCN (Patient Control Number).
2. Click an ERA to review its details.

You can also find ERAs for a specific claim from the claim's timeline:

1. Click **All claims** at the top of the page.
2. Click a claim to view its timeline.
3. Click **Find matching ERAs** in the side panel under the **PCN** to search for ERAs that match the claim's Patient Control Number (PCN). If no ERAs match, the ERA list will be empty.
4. Click an ERA to review its details.

## Correlate test responses [#correlate-test-responses]

Both the test 277CA and the test 835 ERA will include the Patient Control Number you specified in the claim submission, which is what you can use to match these responses to the original claim.

### 277CA claim acknowledgment [#277ca-claim-acknowledgment]

* **JSON:** [`transactions[].payers[].claimStatusTransactions[].claimStatusDetails[].patientClaimStatusDetails[].claims[].claimStatus.patientAccountNumber`](/healthcare/api-reference/get-healthcare-reports-277#response.transactions.payers.claimStatusTransactions.claimStatusDetails.patientClaimStatusDetails.claims.claimStatus.patientAccountNumber)
* **X12 EDI:** `Loop 2200D TRN02` (Patient Control Number)
* **Stedi portal:** Go to the [claims view](https://portal.stedi.com/app/healthcare/claims) and click a claim to open its timeline. All associated 277CAs are listed in the timeline view. Click a 277CA to review its details, including the **Patient control number**.

### 835 Electronic Remittance Advice (ERA) [#835-electronic-remittance-advice-era]

* **JSON:** [`transactions[].detailInfo[].paymentInfo[].claimPaymentInfo.patientControlNumber`](/healthcare/api-reference/get-healthcare-reports-835#response.transactions.detailInfo.paymentInfo.claimPaymentInfo.patientControlNumber)
* **X12 EDI:** `Loop 2100 CLP01` (Patient Control Number)
* **Stedi portal:** Go to the [claims view](https://portal.stedi.com/app/healthcare/claims), click **835 ERAs**, and click the ERA to open it. On the **Overview** tab, the Patient Control Number is in the **Claims** section in the **Patient Control Number** column for each claim.

# Test mode
Source: https://www.stedi.com/docs/healthcare/test-mode


Test mode provides a separate test environment where you can realistically simulate transactions in your Stedi account without PHI/PII and without sending any data to payers.

[Sandbox accounts](/healthcare/billing#sandbox-accounts) are limited to test mode only. Production accounts can access test mode at any time by clicking your account name in the side navigation and toggling **Test mode** to **ON**.

## Send mock eligibility checks [#send-mock-eligibility-checks]

<Tip>
  Mock transactions you send in test mode are free for testing purposes and
  won't incur any charges from Stedi.
</Tip>

You can submit mock real-time eligibility checks through the manual [eligibility check form](https://portal.stedi.com/app/healthcare/checks/create) or through [Stedi's APIs](/healthcare/api-reference/mock-requests-eligibility-checks). You can choose from a variety of predefined requests for well-known payers, including:

* Aetna
* Cigna
* UnitedHealthcare
* National Centers for Medicare & Medicaid Services (CMS)

For each mock request, Stedi returns a realistic mock benefits response for that payer so you can get a sense for the kinds of data you'll receive in production. The benefits responses include examples of copays, deductibles, and other patient payment responsibilities, as well as active coverage.

You can also submit a mock Medicare Beneficiary Identifier (MBI) lookup. MBI lookups allow you to use a patient's Social Security Number (SSN) to retrieve their MBI and complete benefits information from the Centers for Medicare and Medicaid Services (CMS).

### Generate test API keys [#generate-test-api-keys]

Test API keys allow you to send [mock eligibility requests](/healthcare/api-reference/mock-requests-eligibility-checks) through Stedi's APIs without transmitting PHI or PII.

To create a test API key:

1. Log into your [Stedi account](https://portal.stedi.com/app).
2. Click your account name in the side navigation.
3. Select **API Keys**.
4. Click **Generate new API Key**.
5. Enter a name with a `test` prefix and choose **Test** as the key type.
6. Click **Generate** and copy your key.

Learn more about [API authentication](/healthcare/api-reference#authentication).

### Test the MCP server [#test-the-mcp-server]

The Model Context Protocol (MCP) server works with test mode, allowing you to develop AI agents that work with eligibility data without transmitting PHI or PII.

<Note>
  The MCP server is only available for [production accounts](/healthcare/billing). If you have a sandbox account, click **Upgrade account** in the side navigation to access the MCP server.
</Note>

The MCP server provides tools that AI agents can use to:

* **Search for payers**: Find the correct payer ID and supported transaction types.
* **Run eligibility checks**: Construct and submit properly formatted eligibility requests.
* **Troubleshoot errors**: Get guidance on recovering from common errors like "Subscriber Not Found".

You can connect the MCP server to AI agents using test API keys. Visit the [Model Context Protocol (MCP)](/healthcare/mcp-server) for full installation instructions and details.

### Test the Stedi Agent [#test-the-stedi-agent]

The [Stedi Agent](/healthcare/send-eligibility-checks-ui#retry-with-the-stedi-agent) resolves recoverable eligibility check errors automatically with the same best practices our Support team uses for troubleshooting. You can run a specific mock eligibility check to evaluate the Stedi Agent:

1. Create a new eligibility check and select **Stedi Agent** as the payer. Keep all other properties set to their defaults.
2. Submit the check. It's designed to fail so you can watch the agent resolve issues in real time. Specifically, it returns `AAA` error `73` (Invalid/Missing Subscriber/Insured Name).
3. Click **Resolve with Stedi Agent**. The agent runs in **Debug view** to fix the error and eventually produce a successful mock eligibility response.
4. Click **View check** to go to its details page and review the full mock benefits response.

## Review eligibility check results [#review-eligibility-check-results]

After you submit a mock eligibility check, you can review all of the request and response details. This includes:

* A list of historical eligibility checks that you can filter by status, payer ID, date, and error code.
* The raw API request and response.
* A user-friendly benefits view designed to help you quickly understand the patient's active coverage and payment responsibilities, such as co-pay and deductible amounts.
* Eligibility check **Debug** view, which allows you to to systematically troubleshoot failed checks until you receive a successful response from the payer.

To review an eligibility check's results:

1. Go to the [Eligibility searches page](https://portal.stedi.com/app/healthcare/eligibility).
2. Click the eligibility search with the benefits information you want to view.

Stedi opens the eligibility search's **Overview** tab. Click **Benefits** to review a table of the mock benefits data.

<img alt="Benefits table overview" src="__img0" />

## View test claims [#view-test-claims]

<Note>
  Test claim submission is only available for [production accounts](/healthcare/billing). If you have a sandbox account, click **Upgrade account** in the side navigation to submit test claims through the API or SFTP.
</Note>

You can submit test claims through SFTP or Stedi's APIs and view them in the [claims view](https://portal.stedi.com/app/healthcare/claims) when **Test mode** is toggled to **ON**. Submitting test claims through the claims view is not yet supported.

To submit test claims:

* **JSON endpoints:** Set the `usageIndicator` property in the test claim body to `T`.
* **X12 EDI endpoints and SFTP:** Set `ISA15` (Interchange Usage Indicator) to `T` (Test Data).

Visit the [test claims workflow](/healthcare/test-claims-workflow) page for detailed instructions on submitting test claims and generating test 835 Electronic Remittance Advice (ERA) responses from the Stedi Test Payer.

Click any test claim to view a timeline of its processing activity, including all associated test responses such as test 277CA claim acknowledgments and test 835 Electronic Remittance Advice (ERAs).

## Explore the Stedi portal [#explore-the-stedi-portal]

The test environment allows you to get familiar with Stedi's UI tools and learn more about how you can use Stedi to automate claims and eligibility check workflows.

## Not supported [#not-supported]

The following features aren't currently supported in test mode:

* Transaction enrollment
* Insurance discovery checks
* Coordination of benefits (COB) checks
* Submitting claims through the Stedi portal UI
* 275 claim attachments
* 276/277 real-time claim status
* Custom mock data or payer selection

# Transaction enrollment FAQ
Source: https://www.stedi.com/docs/healthcare/transaction-enrollment-faq


This FAQ provides answers to the most common questions about transaction enrollment. Please contact Stedi support with additional questions.

## How do I know if I need to enroll? [#how-do-i-know-if-i-need-to-enroll]

All payers require transaction enrollment for 835 Electronic Remittance Advice (ERAs). For other transactions, like claims and eligibility checks, it depends on the payer.

Check the [Payer Network](https://www.stedi.com/healthcare/network) to determine whether your payers require enrollment for the transaction types you want to send and receive.

For transactions marked as **Supported, enrollment required**, you must complete the transaction enrollment process before you can begin exchanging that transaction type through Stedi.

## How long does transaction enrollment take? [#how-long-does-transaction-enrollment-take]

The transaction enrollment process typically takes 24-48 hours, though it can take up to 30 days for some payers.

## Do I need to enroll through Stedi if I'm already enrolled through another clearinghouse? [#do-i-need-to-enroll-through-stedi-if-im-already-enrolled-through-another-clearinghouse]

Yes. Enrollment is specific to each clearinghouse. So if a payer requires enrollment, you will need to go through the enrollment process with Stedi to begin exchanging transactions through the Stedi clearinghouse.

## What will happen to the ERAs I currently receive through a different clearinghouse? [#what-will-happen-to-the-eras-i-currently-receive-through-a-different-clearinghouse]

ERAs can only be sent to a single clearinghouse. Once you enroll for ERAs through Stedi, all ERAs from that payer to the provider you enrolled will come through Stedi. The provider will no longer receive ERAs from that payer through your previous clearinghouse.

## Does enrolling with Stedi cancel my enrollment with another clearinghouse? [#does-enrolling-with-stedi-cancel-my-enrollment-with-another-clearinghouse]

For ERAs, yes. Once you enroll for ERAs through Stedi, the payer will stop sending ERAs to your previous clearinghouse.

For other transaction types, mostly no (with a few exceptions). For most payers that require enrollment for claim submission, eligibility checks, or claim status inquiries, enrolling through Stedi won't impact your ability to send transactions to your original clearinghouse. Only a few payers require the 837 claim to be sent to the same clearinghouse as the 835 ERA enrollment. For any questions on payer nuances, contact Stedi's support team.

## Can a provider be enrolled through multiple clearinghouses at the same time? [#can-a-provider-be-enrolled-through-multiple-clearinghouses-at-the-same-time]

Yes, for eligibility checks, claims, and claim status checks. For most payers that require enrollment for claim submission, eligibility checks, or claim status inquiries, enrolling through Stedi will not impact your ability to send transactions to your original clearinghouse. Only a few payers require the 837 claim to be sent to the same clearinghouse as the 835 ERA enrollment. For any questions on payer nuances, contact Stedi's support team.

No, for ERAs. As soon as an ERA enrollment in Stedi is processed with the payer, you won't receive ERAs through your previous clearinghouse.

## Can I send claims through Stedi without switching my ERA enrollments? [#can-i-send-claims-through-stedi-without-switching-my-era-enrollments]

Yes, you can start sending claims through Stedi without enrolling for ERAs. The ERAs will still go to your current clearinghouse. In Stedi, you'll see the claim and the 277CA claim acknowledgment from the payer, but you won't see ERAs until you switch those enrollments to Stedi.

## Can I enroll one NPI without affecting others associated with the same TIN (tax ID)? [#can-i-enroll-one-npi-without-affecting-others-associated-with-the-same-tin-tax-id]

It depends on how the payer manages enrollment scope.

Some payers manage enrollments at the NPI level - when you enroll one NPI, only that NPI switches to Stedi. Other payers manage enrollments at the Tax Identification Number (TIN) level - when you enroll one NPI, all NPIs under that TIN switch to Stedi.

Payers vary in how they manage enrollment scope, and this information isn't always disclosed to Stedi. If you have multiple NPIs that share the same TIN and you want to keep some with your existing clearinghouse, contact Stedi support before submitting enrollment requests to discuss your specific situation.

# Enrollment tasks and PDF documents
Source: https://www.stedi.com/docs/healthcare/transaction-enrollment-tasks-documents


After you submit an enrollment request, you may need to complete tasks to move the enrollment forward. Some tasks require you to upload documentation, such as completed forms or tax documents.

Stedi is automatically notified when you complete a task, and the enrollment process continues.

## Task types [#task-types]

Stedi uses structured task definitions to collect information from providers during enrollment. The API reflects each task type in the [`tasks[].definition`](/healthcare/api-reference/get-enrollment#response.tasks.definition) property.

Stedi uses a flexible task definition (`manualTask`) to collect information for enrollment tasks. Each task can have:

* An `instructions` property that describes what actions the provider must take to move the enrollment forward.
* A `fields` array with objects describing discrete pieces of information required to complete the task. When `fields` are present, you must supply a value for every `field` to complete the task. The `fields` array may be empty if the task only requires following instructions - for example, following steps within a payer's portal.
* A `links` array (optional) with helpful resources related to the task, such as payer portal URLs or reference documentation.

Manual tasks can contain:

{/* prettier-ignore-start */}

| Field Type | Description                                                                                                                                                              |
| ---------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| No fields  | The provider must follow the directions in the task's `instructions` property. For example, the task may require logging into a payer portal or contacting a department. |
| `TEXT`     | The provider must supply specific pieces of information required to complete the enrollment, such as their bank account information or other identifiers.                |
| `DOCUMENT` | The provider must upload PDF documentation required to complete the enrollment.                                                                                          |
| Mixed      | Combines text and document requirements in one task. For example, a task may require uploading PDF documentation and supplying a bank account number.                    |

{/* prettier-ignore-end */}

For example, the following `manualTask` requests the provider's Medicaid ID and a signed agreement.

```json
{
  "definition": {
    "manualTask": {
      "instructions": "Please provide your Medicaid Provider Identifier and upload the signed provider agreement.",
      "fields": [
        {
          "key": "MEDICAID_ID",
          "label": "Medicaid Provider Identifier",
          "fieldType": "TEXT"
        },
        {
          "key": "SIGNED_AGREEMENT",
          "label": "Signed Provider Agreement",
          "fieldType": "DOCUMENT"
        }
      ],
      "links": [
        {
          "label": "Download Provider Agreement Template",
          "url": "https://example.com/documents/provider-agreement.pdf"
        }
      ]
    }
  }
}
```

## Manage tasks [#manage-tasks]

When there's a new task that requires the provider to take action, Stedi adds a task to the enrollment request with instructions and sets the enrollment status to **Provider Action Required**. The email address listed as the **Stedi contact person** also [receives a notification](/healthcare/create-manage-transaction-enrollments#notifications) that there's a new task to complete.

You can complete tasks through the Stedi portal or programmatically through the API.

### UI [#ui]

You can review and manage tasks at the top of the enrollment request's details page in the Stedi portal. You must have the [Operator role](/healthcare/account-settings#assign-member-roles) or higher to complete enrollment tasks.

If the task requires documentation, the instructions specify what you need to provide. Some tasks include a PDF template to download, complete, and upload to Stedi. Other tasks may ask you to upload a document you already have, such as a W-9 form.

<img alt="Enrollment task PDF upload" src="__img0" />

Once you've taken the required action, check the box next to the task to mark it as complete.

<img alt="Complete enrollment task" src="__img1" />

### API [#api]

You may want to streamline your providers' workflows by allowing them to complete required enrollment tasks within your application. You can do this by integrating with Stedi's Enrollments API.

Tasks use a structured format with defined fields. The workflow to complete them varies based on the contents of the `fields` array.

#### Retrieve open tasks [#retrieve-open-tasks]

When Stedi adds a new task, the enrollment status changes to **Provider Action Required** and Stedi emits an `enrollment.task.assigned` event. You can retrieve new tasks in two ways:

{/* prettier-ignore-start */}

| Method                 | Description                                                                                                                                                                                                                                                                                                                                                                                                                                                          |
| ---------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Polling**            | <ol><li>Poll the [List Enrollments](/healthcare/api-reference/get-enrollment-list-enrollments) endpoint with the `status` filter set to `PROVIDER_ACTION_REQUIRED` to retrieve enrollments with open tasks.</li><li>For each result, check the `tasks` array for entries with `isComplete` set to `false`.</li></ol>                                                                                                                                                 |
| **Event destinations** | <ol><li>[Configure an event destination](/healthcare/event-destinations-configure) that automatically sends [`enrollment.task.assigned` events](/healthcare/event-destinations-event-types#enrollmenttaskassigned) to your endpoint. This allows you to receive real-time notifications when Stedi adds new tasks to an enrollment.</li><li>Use the [Retrieve Enrollment](/healthcare/api-reference/get-enrollment) endpoint to get the full task details.</li></ol> |

{/* prettier-ignore-end */}

#### Follow instructions (no fields) [#follow-instructions-no-fields]

Use the following steps to complete tasks with an empty `fields[]` array:

<Steps>
  <Step title="Retrieve the enrollment and review task instructions.">
    Call the [Retrieve Enrollment](/healthcare/api-reference/get-enrollment) endpoint to get the task details.

    <Accordion title="Example task with no fields" id="example-task-with-no-fields">
      ```json
      {
        "responsibleParty": "PROVIDER",
        "definition": {
          "manualTask": {
            "instructions": "Log in to your Authority's portal and request clearinghouse access for Stedi.",
            "fields": []
          }
        },
        "rank": 0,
        "isComplete": false,
        "id": "019eb885-f8dd-74a0-9939-07ae6f15f4df"
      }
      ```
    </Accordion>
  </Step>

  <Step title="Complete the required action.">
    Follow the instructions in the `definition.manualTask.instructions` property.
  </Step>

  <Step title="Mark the task complete.">
    Call the [Update Enrollment Task](/healthcare/api-reference/post-enrollment-update-task) endpoint with `completed: true`.

    <Accordion title="Complete the task" id="complete-the-task">
      ```bash
      curl --request POST \
        --url "https://enrollments.us.stedi.com/2024-09-01/tasks/019eb885-f8dd-74a0-9939-07ae6f15f4df" \
        --header "Authorization: <api_key>" \
        --header "Content-Type: application/json" \
        --data '{
          "completed": true
        }'
      ```
    </Accordion>
  </Step>
</Steps>

#### Provide information (TEXT fields) [#provide-information-text-fields]

Use the following steps to complete tasks with `TEXT` fields:

<Steps>
  <Step title="Retrieve the enrollment and review field requirements.">
    Call the [Retrieve Enrollment](/healthcare/api-reference/get-enrollment) endpoint to get the task details.

    <Accordion title="Example task with TEXT field" id="example-task-with-text-field">
      ```json
      {
        "responsibleParty": "PROVIDER",
        "definition": {
          "manualTask": {
            "instructions": "Please provide your Medicaid Provider Identifier.",
            "fields": [
              {
                "key": "MEDICAID_ID",
                "label": "Medicaid Provider Identifier",
                "fieldType": "TEXT"
              }
            ]
          }
        },
        "rank": 0,
        "isComplete": false,
        "id": "019eb887-82dc-7613-a279-8a4a2ba794fe"
      }
      ```
    </Accordion>

    Review the `definition.manualTask.fields[]` array to understand what information is required. Each field definition has the following properties:

    * `key`: The identifier you'll use when submitting values. Keys must be in SCREAMING\_SNAKE\_CASE format, such as `MEDICAID_ID` or `ENROLLMENT_FORM`.
    * `label`: User-friendly field name.
    * `description` (optional): Additional context about the field.
    * `fieldType`: Set to `TEXT` for text input.
  </Step>

  <Step title="Collect the required information.">
    Gather the text values needed for each field from the provider.
  </Step>

  <Step title="Submit values and mark task complete.">
    Call the [Update Enrollment Task](/healthcare/api-reference/post-enrollment-update-task) endpoint a `values` array containing an object for each field. Each `value` object include the field's `key` and a `value` object containing the required text.

    <Accordion title="Complete a task with TEXT fields" id="complete-a-task-with-text-fields">
      ```bash
      curl --request POST \
        --url "https://enrollments.us.stedi.com/2024-09-01/tasks/019eb887-82dc-7613-a279-8a4a2ba794fe" \
        --header "Authorization: <api_key>" \
        --header "Content-Type: application/json" \
        --data '{
          "completed": true,
          "responseData": {
            "manualTask": {
              "values": [
                {
                  "key": "MEDICAID_ID",
                  "value": {
                    "text": "ABCD12"
                  }
                }
              ]
            }
          }
        }'
      ```
    </Accordion>
  </Step>
</Steps>

#### PDF upload (DOCUMENT fields) [#pdf-upload-document-fields]

Use the following steps to complete tasks with `DOCUMENT` fields:

<Steps>
  <Step title="Retrieve the enrollment and review document requirements.">
    Call the [Retrieve Enrollment](/healthcare/api-reference/get-enrollment) endpoint to get the task details.

    <Accordion title="Example task with DOCUMENT field" id="example-task-with-document-field">
      ```json
      {
        "responsibleParty": "PROVIDER",
        "definition": {
          "manualTask": {
            "instructions": "Download form, sign and re-upload PDF",
            "links": [
              {
                "label": "Enrollment Form",
                "url": "https://enrollments.us.stedi.com/2024-09-01/documents/019375d0-9876-7890-abcd-567890fedcba/download"
              }
            ],
            "fields": [
              {
                "key": "ENROLLMENT_FORM",
                "label": "Signed PDF",
                "description": "Your filled-in and signed enrollment form, as a PDF",
                "fieldType": "DOCUMENT"
              }
            ]
          }
        },
        "rank": 0,
        "isComplete": false,
        "id": "019eb887-82dc-7613-a279-8a4a2ba794fe"
      }
      ```
    </Accordion>

    Review the task details:

    * `definition.manualTask.links[]`: Check if these are Stedi download URLs.
      * **Stedi download URLs** start with `https://enrollments.us.stedi.com/` and require authentication. You can use these to download a PDF template from Stedi for the required documentation.
      * **External links** point to resources outside Stedi (such as payer websites or reference documentation).

    * `definition.manualTask.fields[]`: Required document fields, each with a `key` and `label`.
  </Step>

  <Step title="Download template (if provided).">
    When a task requires downloading a form and reuploading the completed PDF, the task includes a `links` array with a URL to download the template.

    If no `links` array is present, check the instructions property for details about what supporting documentation (such as the provider's W-9 form) is required. Then, skip to step 4 to upload that documentation.

    To download a template:

    1. Make an authenticated `GET` request to the URL in `links[].url`. This returns a pre-signed download URL.

       <Accordion title="Get the pre-signed download URL" id="get-the-pre-signed-download-url">
         ```bash
         curl --request GET \
           --url "https://enrollments.us.stedi.com/2024-09-01/documents/019375d0-9876-7890-abcd-567890fedcba/download" \
           --header "Authorization: <api_key>"
         ```
       </Accordion>

       The pre-signed URL expires after 24 hours. If the URL expires before you download the PDF, call the endpoint again to get a new one.

    2. Make a `GET` request to the returned `downloadUrl` to retrieve the PDF template.

       <Accordion title="Download the PDF" id="download-the-pdf">
         ```bash
         curl --request GET \
           --url "<downloadUrl>" \
           --output /path/to/file.pdf
         ```
       </Accordion>
  </Step>

  <Step title="Complete and prepare the PDF.">
    Skip this step if uploading existing documentation.

    The provider should complete the PDF template according to the instructions in `definition.manualTask.instructions` and the field's `description` property.
  </Step>

  <Step title="Upload the PDF to Stedi.">
    Upload the required PDF documentation to the enrollment request. This is either a completed enrollment PDF template or supporting documentation (such as a W-9) that Stedi requested.

    1. Call the [Upload Enrollment Document](/healthcare/api-reference/post-enrollment-document-upload) endpoint with the enrollment ID and task ID.

       <Accordion title="Get upload URL" id="get-upload-url">
         ```bash
         curl --request POST \
           --url "https://enrollments.us.stedi.com/2024-09-01/enrollments/{enrollmentId}/documents" \
           --header "Authorization: <api_key>" \
           --header "Content-Type: application/json" \
           --data '{
             "name": "signed-enrollment-form.pdf",
             "taskId": "019eb887-82dc-7613-a279-8a4a2ba794fe"
           }'
         ```
       </Accordion>

       Stedi returns a pre-signed URL in the `uploadUrl` property you can use to upload the completed PDF to the enrollment request. The URL expires after 24 hours. If it expires, call the endpoint again to get a new one.

       You should also save the `documentId` returned in the response. You'll use it later to poll for the document's status and when completing the task.

       <Accordion title="Sample response data" id="sample-response-data">
         ```json
         {
           "enrollmentId": "db6675c5-7b07-4af9-8c68-a54a336d2911",
           "uploadUrl": "https://s3.amazonaws.com/enrollment-documents/db6675c5-7b07-4af9-8c68-a54a336d2911/provider-license.pdf?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=...",
           "documentId": "doc-123e4567-e89b-12d3-a456-426614174000"
         }
         ```
       </Accordion>

    2. Make a `PUT` request to the `uploadUrl` to upload the completed PDF to Stedi. The request must include the `Content-Type: application/pdf` header. Only PDF documents are currently supported.

       <Accordion title="Upload the PDF" id="upload-the-pdf">
         ```bash
         curl --request PUT \
           --url "<uploadUrl>" \
           --header "Content-Type: application/pdf" \
           --upload-file /path/to/file.pdf
         ```
       </Accordion>
  </Step>

  <Step title="Poll for document status.">
    You must wait for the document's status to change from `PENDING` to `UPLOADED` before marking the associated task as complete. This typically takes less than 10 seconds.

    You can poll the [Retrieve Enrollment](/healthcare/api-reference/get-enrollment) endpoint to check the status of the uploaded document. When the status is `UPLOADED`, the document has been successfully received and processed by Stedi.

    Our [TypeScript example](/healthcare/api-reference/post-enrollment-document-upload#poll-for-document-status) shows how you might poll.
  </Step>

  <Step title="Submit document ID and mark task complete.">
    Once the document status is `UPLOADED`, call the [Update Enrollment Task](/healthcare/api-reference/post-enrollment-update-task) endpoint to mark the task as complete. Your payload must include a `values` array with one object per field. Each object should contain:

    * The field's `key`
    * A `value` object. The object must contain a `document` property with the `documentId` Stedi returned when you uploaded the PDF.

    <Accordion title="Complete a task with DOCUMENT fields" id="complete-a-task-with-document-fields">
      ```bash
      curl --request POST \
        --url "https://enrollments.us.stedi.com/2024-09-01/tasks/019eb887-82dc-7613-a279-8a4a2ba794fe" \
        --header "Authorization: <api_key>" \
        --header "Content-Type: application/json" \
        --data '{
          "completed": true,
          "responseData": {
            "manualTask": {
              "values": [
                {
                  "key": "ENROLLMENT_FORM",
                  "value": {
                    "document": {
                      "documentId": "019375d0-1234-7abc-9def-123456789abc"
                    }
                  }
                }
              ]
            }
          }
        }'
      ```
    </Accordion>
  </Step>
</Steps>

#### Mixed field types [#mixed-field-types]

Manual tasks can combine `TEXT` and `DOCUMENT` fields in a single task. For example, a task may require uploading PDF documentation and supplying a bank account number.

<Accordion title="Example task with mixed fields" id="example-task-with-mixed-fields">
  ```json
  {
    "responsibleParty": "PROVIDER",
    "definition": {
      "manualTask": {
        "instructions": "Please provide your Medicaid ID and upload signed enrollment PDF.",
        "links": [
          {
            "label": "Enrollment Form",
            "url": "https://enrollments.us.stedi.com/2024-09-01/documents/019375d0-9876-7890-abcd-567890fedcba/download"
          }
        ],
        "fields": [
          {
            "key": "MEDICAID_ID",
            "label": "Medicaid ID",
            "description": "Please provide your Medicaid ID.",
            "fieldType": "TEXT"
          },
          {
            "key": "AGREEMENT_PDF",
            "label": "Enrollment PDF",
            "description": "Please sign PDF.",
            "fieldType": "DOCUMENT"
          }
        ]
      }
    },
    "rank": 0,
    "isComplete": false,
    "id": "019eb887-82dc-7613-a279-8a4a2ba794fe"
  }
  ```
</Accordion>

To complete a task with mixed fields:

1. Collect the required text values from the provider.
2. Follow the [DOCUMENT field workflow](#pdf-upload-document-fields) to upload required PDF documentation to Stedi.
3. Submit all values together in the `values[]` array and mark the task as complete.

<Accordion title="Complete task with mixed field types" id="complete-task-with-mixed-field-types">
  ```bash
  curl --request POST \
    --url "https://enrollments.us.stedi.com/2024-09-01/tasks/019eb887-82dc-7613-a279-8a4a2ba794fe" \
    --header "Authorization: <api_key>" \
    --header "Content-Type: application/json" \
    --data '{
      "completed": true,
      "responseData": {
        "manualTask": {
          "values": [
            {
              "key": "MEDICAID_ID",
              "value": {
                "text": "ABCD12"
              }
            },
            {
              "key": "AGREEMENT_PDF",
              "value": {
                "document": {
                  "documentId": "3b4cea78-ab7b-40aa-a16e-0af6cfe5b4cc"
                }
              }
            }
          ]
        }
      }
    }'
  ```
</Accordion>

## Review and download documents [#review-and-download-documents]

You can upload documents through [tasks](#task-types) Stedi assigns on the enrollment request. Stedi may also upload documentation throughout the enrollment process. You can review, download, or delete these documents as needed. Documents associated with an enrollment may include:

* Completed enrollment forms
* W-9 tax forms
* Voided checks
* Other documentation that Stedi completes and submits to the payer

### UI [#ui-1]

To review, download, or delete documents associated with an enrollment request:

1. Go to the [Enrollments page](https://portal.stedi.com/app/healthcare/enrollments) and click the enrollment request.
2. Scroll to the **Documents** section at the bottom of the page.

In the **Documents*&#x2A; section, click any document to view it in your web browser. You can also click &#x2A;*...** (ellipses) to the right of the document to:

* Download the original PDF file.
* Copy a secure link to view the file, which you can share with any member of your Stedi account.
* Delete the file, if necessary.

<img alt="Transaction enrollment documents" src="__img2" />

### API [#api-1]

You can use the following API endpoints to manage documents on an enrollment request programmatically:

* [Upload Enrollment Document](/healthcare/api-reference/post-enrollment-document-upload): Get a pre-signed URL to upload a PDF document related to a task. This endpoint requires a `taskId` - you can use it for [tasks with DOCUMENT fields](#pdf-upload-document-fields).
* [Download Enrollment Document](/healthcare/api-reference/get-enrollment-document-download): Get a pre-signed URL to download a specific PDF document related to an enrollment request.
* [Delete Enrollment Document](/healthcare/api-reference/delete-enrollment-document): Delete a specific PDF document related to an enrollment request.

# Transaction enrollment
Source: https://www.stedi.com/docs/healthcare/transaction-enrollment


Transaction enrollment is the process of registering a provider to exchange specific healthcare transactions with a payer. It involves submitting information about the provider, including their name, tax ID, [NPI](/healthcare/national-provider-identifier), billing address, and contact information.

## Do I need to enroll my provider? [#do-i-need-to-enroll-my-provider]

For 835 ERAs, always yes. For other transactions, it depends on the payer.

Check the [Payer Network](https://www.stedi.com/healthcare/network) or use the [Payers API](/healthcare/api-reference/get-payers) to determine whether your payers require enrollment for the transaction types you want to send and receive. Each transaction type is marked as either:

* Supported, enrollment not required
* Supported, enrollment required
* Not supported

For example, the following payer record shows that Blue Cross Blue Shield of North Carolina requires enrollments for 835 ERAs, as indicated in the `transactionSupport.claimPayment` property.

```json
{
  "stediId": "UPICO",
  "displayName": "Blue Cross Blue Shield of North Carolina",
  "primaryPayerId": "BCSNC",
  "transactionSupport": {
    "eligibilityCheck": "SUPPORTED",
    "claimStatus": "SUPPORTED",
    "claimSubmission": "SUPPORTED",
    "claimPayment": "ENROLLMENT_REQUIRED",
    "dentalClaimSubmission": "SUPPORTED",
    "professionalClaimSubmission": "SUPPORTED",
    "institutionalClaimSubmission": "SUPPORTED",
    "coordinationOfBenefits": "SUPPORTED",
    "unsolicitedClaimAttachment": "NOT_SUPPORTED"
  }
  // truncated for brevity
}
```

If enrollment for a supported transaction type is:

* **Not required:** The provider can start exchanging transactions through Stedi right away. They'll include their information (like their [NPI](/healthcare/national-provider-identifier)) in transactions as needed.
* **Required:** The provider must complete transaction enrollment before they can start exchanging those transactions through Stedi. Note that ERA enrollment is exclusive to one clearinghouse. Switching a provider to Stedi stops ERA delivery through the previous clearinghouse.

## How long does enrollment take? [#how-long-does-enrollment-take]

Most enrollments are completed within 24 - 48 hours. However, some payers may take up to 30 days, depending on their internal processes and requirements.

<Tip>
  Check out [FAQ](/healthcare/transaction-enrollment-faq) for answers to other common questions about transaction
  enrollment.
</Tip>

## Enrollment process [#enrollment-process]

Stedi handles the entire enrollment process for you, including submitting the required information to the payer and monitoring the status of the enrollment.

Here's how it works:

<Steps>
  <Step title="Add a new provider record.">
    The provider record includes the information required to enroll the provider with payers, including the provider's name, tax ID, [NPI](/healthcare/national-provider-identifier), and contact information.
  </Step>

  <Step title="Submit transaction enrollment requests.">
    You can [create enrollment requests](/healthcare/create-manage-transaction-enrollments) individually through the Stedi portal, in bulk through CSV import, or programmatically through the API. Stedi gets alerted about new enrollment requests once they're in `STEDI_ACTION_REQUIRED` status.

    For each provider, you'll create one enrollment request per transaction type. For example, you would create three separate requests to enroll a provider for 837P professional claims, 270 real-time eligibility checks, and 835 ERAs.
  </Step>

  <Step title="Stedi begins the enrollment process with the payer.">
    When we begin the enrollment process with the payer, we'll set the enrollment status to `PROVISIONING` and send you notifications. You can manage your [notification preferences](/healthcare/account-settings#notification-preferences) to control which notifications you receive.

    We'll also reach out to you in your dedicated Slack or Teams channel with resources and to answer any follow-up questions.
  </Step>

  <Step title="Complete any payer-specific requirements.">
    For some payers, such as those with [one-click enrollment](/healthcare/transaction-enrollment#one-click-enrollment), Stedi can complete the entire enrollment process for you. We sign enrollment PDF forms on your behalf, when possible, to speed up the process and eliminate extra work for your team.

    If payers require additional steps from providers as part of their standard enrollment process, Stedi sets the enrollment status to `PROVIDER_ACTION_REQUIRED` and adds a task to the enrollment request with clear instructions. The enrollment process continues once the required tasks are completed.

    You can check which payers require additional steps on our [Transaction Enrollments Hub](https://enrollments.stedi.com/?v=1a7685bc14df80ed8e07000c941f6bff).
  </Step>

  <Step title="Enrollment is live.">
    Once the enrollment is approved, the enrollment status is set to `LIVE`, and the provider can start exchanging the enrolled transactions with the payer.
  </Step>
</Steps>

### Enrollment statuses [#enrollment-statuses]

An enrollment request can have one of the following statuses:

<img alt="Transaction Enrollment statuses" src="__img0" />

* `DRAFT`: You are still editing the record and it has not been submitted to Stedi.
* `STEDI_ACTION_REQUIRED`: You have submitted the enrollment and it is ready for Stedi to begin processing.
* `PROVIDER_ACTION_REQUIRED`: The enrollment requires action from the healthcare provider to proceed, such as providing additional documentation. Stedi will add a note to your enrollment request with clear instructions.
* `PROVISIONING`: Stedi has begun the process of completing the enrollment with the payer.
* `LIVE`: The enrollment process is complete, and the specified provider can begin exchanging the listed transaction types with the payer.
* `REJECTED`: The payer rejected the enrollment. Common reasons for rejection include incorrect details in the request and that the provider is not credentialed with the payer. Customer support will contact you with reasons for rejection and next steps.
* `CANCELED`: The enrollment has been terminated per customer or provider request. You can only [cancel enrollments](#cancel-enrollments) that are in `DRAFT`, `STEDI_ACTION_REQUIRED`, or `PROVIDER_ACTION_REQUIRED` status.

### One-click enrollment [#one-click-enrollment]

We offer one-click enrollment for eligible payers. Once you submit the enrollment request, Stedi handles the entire process without any additional action from you. These payers don't require any signatures or documentation other than what is included in the enrollment request.

You can determine whether a payer is eligible for one-click enrollment by:

* Checking the [Payer Network](https://www.stedi.com/healthcare/network). Click a payer's name to view its details. Stedi lists the **Type** as **One-click** for transaction types that support one-click enrollment.
* Calling the [Payers API](/healthcare/api-reference/get-payers). The `enrollment.transactionEnrollmentProcesses.{transactionType}.type` property is set to `ONE_CLICK` for transaction types that support one-click enrollment.

### Rejected enrollments [#rejected-enrollments]

In rare cases, the enrollment status might be set to `REJECTED` if the payer denies the enrollment request. Rejection can happen for many reasons, but the most common are:

* The provider isn't credentialed with the payer. If a payer rejects your transaction enrollment request with a message indicating the provider is "not on file" or "not recognized," it likely means the provider hasn't completed credentialing and payer enrollment with that payer. Visit [Credentialing and enrollment](/healthcare/credentialing-and-enrollment) to learn more.
* There was incorrect data in the enrollment submission.

If an enrollment is rejected, Stedi puts a note on the enrollment request explaining the reason and how to resolve it. You can review the note through the UI or API and contact Stedi support in Slack or Teams with any additional questions.

# Trust Center
Source: https://www.stedi.com/docs/healthcare/trust-center


Visit our [Trust Center](https://trust.stedi.com/) for complete trust and compliance information for all Stedi products and APIs, including our:

* Privacy policy
* Data management policy
* Access control policy
* HIPAA compliance policy
* Certifications, including SOC 2 Type II and HIPAA
* Security and privacy controls

# Provider Docs
Source: https://www.stedi.com/docs/providers
Check patient benefits in real time. Submit, track, and review claims and remittance.

## Get started [#get-started]

<CardGroup cols="2">
  <Card title="Set up your account" icon="survey-line" href="providers/providers-account-setup">
    Create your account in under 5 minutes. Install apps to connect to
    third-party systems.
  </Card>

  <Card title="Complete transaction enrollment" icon="check-fill" href="providers/providers-transaction-enrollment-intro">
    Required for 835 Electronic Remittance Advice (ERAs) and some other
    transaction types.
  </Card>
</CardGroup>

## Eligibility & benefits [#eligibility--benefits]

<CardGroup cols="2">
  <Card title="Run eligibility checks" icon="file-search-line" href="providers/providers-eligibility-checks">
    Submit real-time checks to verify coverage in seconds. Submit batch
    eligibility checks for monthly coverage refreshes.
  </Card>

  <Card title="Review patient benefits" icon="stack-line" href="providers/providers-review-patient-benefits">
    Determine whether a service is covered. Get patient responsibility details,
    such as co-pays and deductible amounts.
  </Card>

  <Card title="Find patient coverage" icon="search-line" href="providers/providers-insurance-discovery">
    Run insurance discovery checks to find active health plans using the
    patient's demographic data.
  </Card>

  <Card title="Coordination of benefits (COB)" icon="survey-line" href="providers/providers-coordination-of-benefits">
    Identify coverage overlap and determine payer responsibility for claims
    (primacy).
  </Card>
</CardGroup>

## Claims processing [#claims-processing]

<CardGroup cols="2">
  <Card title="Submit claims" icon="file-upload-line" href="providers/providers-submit-claims">
    Submit professional claims from the Stedi portal.
  </Card>

  <Card title="Review and resubmit claims" icon="inbox-2-line" href="providers/providers-review-resubmit-claims">
    Review, revise, and resubmit professional, dental, and institutional claims.
  </Card>

  <Card title="Check claim status" icon="survey-line" href="providers/providers-check-claim-status">
    Run real-time claim status checks for updates about adjudication and payment
    status.
  </Card>

  <Card title="Electronic Remittance Advice (ERAs)" icon="mail-check-line" href="providers/providers-electronic-remittance-advice">
    Get ERAs with payment details and explanations for any adjustments or
    denials.
  </Card>
</CardGroup>

# About Stedi
Source: https://www.stedi.com/docs/providers/providers-about-stedi


Stedi is a healthcare clearinghouse. We act as an intermediary between healthcare providers (like you) and insurance payers. Instead of connecting to each payer separately, you (or your vendor) send your healthcare transactions to Stedi, and we route them to the appropriate payer. Then we receive the payer's responses and deliver them to you.

These healthcare transactions include:

* **Real-time eligibility checks** to verify patient coverage. You submit patient demographics, service dates, payer details, and information about the requesting provider to Stedi, and we forward the request to the payer. We receive the payer's response and translate the patient's benefits details into user-friendly tables, a downloadable PDF, and other helpful views.
* **Claim submissions** (professional, institutional, and dental). You submit claim information to Stedi, and we forward it to the payer. We receive the payer's acknowledgments and display them in the Stedi portal. If you need to resubmit rejected claims, you can do that through Stedi, too.
* **Electronic Remittance Advice (ERAs)** with payment details. After the payer processes your claims, they send ERAs to Stedi with payment information and explanations for any adjustments or denials. You can review and download these ERAs through the Stedi portal.
* **Real-time claim status checks**. You submit a claim status request to Stedi with key information about the claim(s) you want to check, and we forward it to the payer. We receive the payer's response about the claim's processing status and display it in the Stedi portal.

## How you can use Stedi [#how-you-can-use-stedi]

There are two main ways providers use Stedi:

### Directly [#directly]

You and your office staff submit and monitor transactions directly through the Stedi portal. These provider docs will help you submit transactions and review the results.

**Your practice ↔ Stedi portal ↔ Payer**

<Note>
  If you're looking to use an AI agent to build an integration with Stedi, check out the [Build with AI](https://www.stedi.com/docs/healthcare) section of our developer docs instead.
</Note>

### Through your vendor [#through-your-vendor]

You submit transactions through your vendor's software and your vendor handles connecting with Stedi on the backend. In this case, your vendor has asked you to create a Stedi account so that they can submit transactions to Stedi on your behalf.

**Your practice ↔ Vendor software ↔ Stedi ↔ Payer**

Your vendor will provide you with a custom sign-up link that creates your account. After signup, you'll install your vendor's app to connect their software to Stedi. Once this process is complete, you can use your vendor's software as you normally would.

Depending on your vendor's setup, you may occasionally come to the Stedi portal to:

* View transaction details in more depth. For example, you may be interested in reviewing raw transaction data or payer rejections in more detail.
* Access Stedi features that your vendor doesn't offer. For example, you might submit claims through your vendor's platform but come to Stedi to run claim status checks when you haven't received remittance within your expected timeframe.

## Next step [#next-step]

Ready to get started? Visit [Set up your Stedi account](/providers/providers-account-setup).

We'll walk you through creating an account and (if relevant) connecting your account to your existing vendor.

# Account settings and security
Source: https://www.stedi.com/docs/providers/providers-account-settings


Learn how to manage Stedi accounts, members, and security settings.

## Accounts [#accounts]

A Stedi account is a container for all of your Stedi activity and resources. Every account has a name, which you can find in the [Account profile](https://portal.stedi.com/app/settings/account-details). Your account also has an ID, which appears in dashboard URLs in the `account` URL parameter.

Accounts can have unlimited members, and members can be assigned different roles with different permissions.

It's possible to have multiple accounts, though using one account is recommended for most customers. If you need additional accounts, [contact us](https://www.stedi.com/contact).

### Create an account [#create-an-account]

To create a Stedi account, go to the [signup page](https://portal.stedi.com/auth/sign-up). The signup process includes:

1. Filling out the signup form
2. Confirming your email address
3. Providing your company name

New accounts start as free sandbox accounts, which are limited to test mode. You can upgrade to production at any time to process real transactions with payers. When you upgrade to a paid plan, you'll set up Multi-Factor Authentication (MFA) and agree to a Business Associate Agreement (BAA).

### Join an existing account [#join-an-existing-account]

During [sign up](https://portal.stedi.com/auth/sign-up), Stedi checks whether your email domain is associated with an existing Stedi account. If it is, you can request to join that account instead of creating a new one.

For example, if you sign up with `john.doe@example.com` and your company already has a Stedi account for `example.com`, you'll see the option to request to join it. This helps prevent duplicate accounts for the same organization.

You'll receive an email when the account admin invites you to join the account and log in.

### Upgrade to production [#upgrade-to-production]

Every Stedi account is either a sandbox account or a production account.

* Sandbox accounts are free and limited to test mode.
* Production accounts can process unlimited real transactions with payers.

To upgrade from a sandbox account to production, click **Upgrade account** in the side navigation. Then, follow the upgrade flow.

### Change account theme [#change-account-theme]

To change your account theme:

1. Click your account name in the side navigation.
2. Next to **Theme** you can choose between light, dark, or system (which matches your device settings).

### Set default landing page [#set-default-landing-page]

You can customize which page opens when you log in to the Stedi portal.

1. Go to the [General page](https://portal.stedi.com/app/settings/account-details) in your account settings.
2. Choose a **Default landing page** option:
   * **Dynamic (default):** Stedi opens the claims view if you've processed at least one claim. Otherwise, Stedi opens the eligibility searches page.
   * **Claims:** Stedi opens the claims view.
   * **Eligibility:** Stedi opens the eligibility searches page.

### Change your password [#change-your-password]

To change or reset your password:

1. Go to the [Authentication page](https://portal.stedi.com/app/settings/user-authentication) in your account settings.
2. Click **Change password** in the **Password** section.
3. Enter your current password, then enter and confirm your new password.
4. Click **Done**.

You'll need to use the new password the next time you log in to Stedi.

### Delete an account [#delete-an-account]

[Contact support](https://www.stedi.com/contact). You can't delete your account through the Stedi portal or API.

## Members [#members]

Your account can have many members - a member represents an individual email address used to log into the account. You may want to add additional members so that other individuals in your organization can help manage transactions and troubleshoot issues.

### Invite members [#invite-members]

To add members to your account:

1. Go to the [Members page](https://portal.stedi.com/app/settings/members) in your account settings.
2. Click **Invite member**.
3. Enter the email address of the member you want to add.
4. Select the member's role from the dropdown.
5. Click **Send invitation**.

The invited member will receive an email with instructions about how to accept the invitation and log into the account. Invitations do not expire, but can be revoked by any account admin at any time before acceptance.

<Note>
  Stedi apps may automatically add one or more support users with a Developer role to your account during installation. These support users allow your vendor to help you troubleshoot issues directly within your account and assist with implementation.
</Note>

### Assign member roles [#assign-member-roles]

Admins can use role-based access control (RBAC) to ensure only authorized users can access and modify resources in a Stedi account. An Admin has the highest permissions, and they can access and update all resources in your account, including members and billing details. We recommend assigning most members to the Operator role. This role allows members to manage transactions (like claims and eligibility checks) and submit transaction enrollments requests, but not change account settings or billing information.

Admins can assign Stedi account members to one of four roles:

* **Admin:** These users can access and modify all resources within a Stedi account. This includes adding and removing members, assigning member roles, adding billing information, configuring settings, running eligibility checks, submitting claims, managing API keys, and configuring resources.
* **Developer:** These users can access and configure all resources, including managing API keys. However, they can't manage members or billing information.
* **Operator:** These users can run eligibility checks, run insurance discovery checks, submit claims, submit transaction enrollments, and review transaction data. They can also manage guides and trading partners (EDI platform). Finally, they can interact with developer resources, but can't modify them. For example, they can call our APIs, but they can't create or delete API keys.
  <Tip>
    Operator is the minimum required role for a user to interact with our
    clearinghouse and review transactions (such as completed eligibility checks)
    in Stedi.
  </Tip>
* **Read-only:** These users can view some account resources, but cannot modify them. For example, they can review processed transactions in Stedi but can't call APIs.

To change a member's role:

1. Go to [Members page](https://portal.stedi.com/app/settings/members) in your account settings.
2. Click the pencil icon for a member, choose the appropriate **Role** from the list, and click **Update role**.

### Remove members [#remove-members]

An account admin can remove other members from an account. Removed users will still retain their Stedi user credentials and access to other accounts of which they're a member.

To remove a member from your account:

1. Go to [Members page](https://portal.stedi.com/app/settings/members) in your account settings.
2. Click the &#x2A;*...** (ellipses) to the right of the member you want to remove and select **Remove from account**.
3. Click &#x2A;*Are you sure?** to confirm.

The removed member will no longer have access to your Stedi account.

## Multi-Factor Authentication (MFA) [#multi-factor-authentication-mfa]

You can enable Multi-Factor Authentication (MFA) for your user account. To enable MFA, go to the [Account security page](https://portal.stedi.com/app/settings/account-security) in your account settings and click **Enable MFA**.

### Enforce MFA for all members [#enforce-mfa-for-all-members]

You can require **all** users to enable MFA before accessing a Stedi account. To enforce MFA for all users:

1. Go to the [Account security page](https://portal.stedi.com/app/settings/account-security) in your account settings.
2. Click the button to **Enforce multi-factor authentication**.

The next time a user logs into the Stedi account, Stedi prompts them to set up their MFA token: [https://portal.stedi.com/auth/setup-mfa](https://portal.stedi.com/auth/setup-mfa)

<Warning>
  Once you enable MFA for a Stedi account, it cannot be disabled.
</Warning>

### Reset a member's MFA [#reset-a-members-mfa]

If a member loses access to their authenticator app, an account admin can reset their MFA token.

To reset a member's MFA token:

1. Go to [Members page](https://portal.stedi.com/app/settings/members) in your account settings.
2. Click the &#x2A;*...** to the right of the member you want to reset.
3. Select **Reset member MFA**.

The member will be prompted to set up a new MFA token the next time they log in. If they're currently logged in, they may not be logged out immediately - the reset process can take up to an hour.

### Update your MFA [#update-your-mfa]

To update your MFA token:

1. Go to the [Account security page](https://portal.stedi.com/app/settings/user-authentication) in your account settings.
2. Click **Update** in the **Multi-factor authentication** section.
3. Follow the prompts to set up your new MFA token.
4. Click **Save**.

## Single Sign-On (SSO) and SCIM [#single-sign-on-sso-and-scim]

Admins can configure Single Sign-On (SSO) and directory sync (SCIM) through Stedi's WorkOS integration.

* SSO allows account members to sign in to Stedi through your chosen identity provider, such as Okta or OneLogin.
* Directory sync (SCIM) automatically creates and removes Stedi accounts through your chosen identity provider.

### Request access [#request-access]

To request SSO and/or directory sync for your account:

1. Go to the [Account security page](https://portal.stedi.com/app/settings/account-security) in your account settings.
2. Click **Contact us** to go to Stedi's contact form and request SSO for your account.

Stedi support will review the request and enable access.

### Configure SSO [#configure-sso]

Once Stedi support enables SSO access, you can configure it for your account:

1. Go to the [Account security page](https://portal.stedi.com/app/settings/account-security) in your account settings.
2. Click **Set up Single sign-on**. Stedi redirects you to the WorkOS portal for setup.
3. Follow the steps in the WorkOS portal to configure SSO for your identity provider. WorkOS provides detailed instructions for connecting each identity provider as part of the setup flow. You can also visit the WorkOS [Single Sign-On documentation](https://workos.com/docs/sso) for more details.

Once configured, you can manage the account's SSO settings from the [Account security page](https://portal.stedi.com/app/settings/account-security). This includes:

* **Require SSO for all members:** Toggling this to **ON** disables the standard email and password login process - account members will only be able to access Stedi through SSO.
* **Default role for new members:** Choose which member role is automatically assigned to users when they join the account.

### Configure directory sync (SCIM) [#configure-directory-sync-scim]

Once SSO is configured, you can optionally also set up directory sync (SCIM) through WorkOS. If you don't see directory sync in your account, contact Stedi support to request access.

To configure directory sync:

1. Go to the [Account security page](https://portal.stedi.com/app/settings/account-security) in your account settings.
2. In the &#x2A;*Single sign-on (SSO)** section, click **Set up directory sync**. Stedi redirects you to the WorkOS portal for setup.
3. Follow the steps in the WorkOS portal to configure directory sync for your identity provider. WorkOS provides detailed instructions for connecting each identity provider as part of the setup flow. You can also visit the WorkOS [directory sync documentation](https://workos.com/docs/directory-sync) for more details.

Once configured, you can review automatically created user accounts from the [Members page](https://portal.stedi.com/app/settings/members) in your account settings.

You can manage the account's directory sync settings from the [Account security page](https://portal.stedi.com/app/settings/account-security).

## Reauthentication [#reauthentication]

Stedi requires all users to sign in every 12 hours. This aligns our maximum session duration with National Institute of Standards and Technology (NIST) best practices, and it isn't configurable.

### Enable inactivity sign-out [#enable-inactivity-sign-out]

Admins can opt in to have account members automatically sign out after 30 minutes of inactivity. This reduces the risk of unattended workstations being used to access patient data.

To enable inactivity sign-out for your account:

1. Go to the [Account security page](https://portal.stedi.com/app/settings/account-security) in your account settings.
2. Click **Enable inactivity sign-out** under **Inactivity sign-out**.

Once enabled, members will be automatically signed out of the Stedi portal after 30 minutes of inactivity. Activity includes mouse movements, keyboard input, and touch events.

## Notification preferences [#notification-preferences]

You can manage your notification preferences from the [Notifications page](https://portal.stedi.com/app/settings/notifications) in your account settings. Stedi sends notifications through two channels: in-app (the bell icon in the side navigation) and email.

### Notification categories [#notification-categories]

Notifications are grouped into the following categories:

* **Enrollments:** Stedi sends notifications when a transaction enrollment request changes status to **PROVISIONING**, **PROVIDER ACTION REQUIRED**, **LIVE**, or **REJECTED**. The [email set as the **Stedi contact person**](/providers/providers-submit-enrollment-requests#stedi-contact-email) receives in-app notifications for status changes as well as a batched email once per hour with all updates.
* **Exports:** Stedi sends in-app notifications to the user who requested an export when their claims list or Electronic Remittance Advice (ERA) list export is ready to download. Export files are available for 30 days.
* **Billing & payments:** For pay-as-you-go accounts, Stedi sends notifications to the billing email address and account admins when automatic recharge payments fail, when account access is suspended due to insufficient funds, and when access is restored. Visit [Billing](/providers/providers-billing#failed-payments) for more details.
* **Account & access:** Stedi sends you notifications when you're invited to new Stedi accounts and when Stedi has approved an account upgrade. Account admins receive notifications when another user is requesting to join their Stedi account.

### Manage preferences [#manage-preferences]

On the [Notifications page](https://portal.stedi.com/app/settings/notifications), you can set your preferences for both in-app and email notifications. Check or uncheck the boxes to opt in or opt out for each type.

* **Default is opt-in:** All notifications are enabled by default.
* **Preferences are per user:** Your notification preferences apply across all Stedi accounts you can access. They're tied to your signed-in user, not to a specific account.
* **Independent channels:** Turning off email delivery for a notification type doesn't affect in-app delivery, and vice versa.

## Apps [#apps]

You can install apps for third-party vendor systems like Revenue Cycle Management (RCM), Practice Management Systems (PMS), Electronic Healthcare Record (EHR) platforms, and other [Platform Partners](https://www.stedi.com/platform-partners).

Installing an app sends an invitation to the vendor, allowing them to access your account and connect it to their product.

To install an app:

1. In the side navigation, click your account name, then click **Connect account to apps** to go to the [Apps page](https://portal.stedi.com/app/settings/developer/apps).

2. Browse the list of apps and click the one you want to install.

3. Click **Install** to begin the installation process.

4. Read the installation details and then click **Confirm and install**. This action sends an email invitation to the app vendor. This will allow your vendor to log into your account, complete the setup process, and provide support as needed.

   Stedi displays new API and SFTP credentials. You can ignore these. Your vendor will log into your account and generate their own credentials to connect their system to Stedi.

5. Check the box next to **I've added these details to my \[Vendor] account** and click **Done**.

The app is now installed, and your vendor will complete the setup process.

# Set up your account
Source: https://www.stedi.com/docs/providers/providers-account-setup


This guide walks you through creating and configuring a new Stedi account. You can complete this process in under 5 minutes.

If you're new to Stedi, visit [About Stedi](/providers/providers-about-stedi) to learn what Stedi is and how it works.

## Create a Stedi account [#create-a-stedi-account]

To create a Stedi account:

1. Do one of the following:
   * Go to the [Stedi signup page](https://portal.stedi.com/auth/sign-up) to create a free sandbox account. To upgrade to a production account later, click **Upgrade account** in the side navigation.
   * Go to the custom signup link your vendor provided. This creates a production account. Once you've completed the sign-up process, you'll need to [install your vendor's app](#install-stedi-apps) to connect their software to Stedi.
2. Follow the signup process, which includes:
   * Filling out the signup form.
   * Confirming your email address.
   * Providing your company name.
   * Setting up Multi-Factor Authentication (MFA) and agreeing to a Business Associate Agreement (BAA) if signing up through your vendor's custom link.

Stedi begins provisioning your account. You'll be able to submit [transaction enrollment requests](/providers/providers-transaction-enrollment-intro) in about 15 minutes. However, you can start [running eligibility checks](/providers/providers-eligibility-checks) immediately.

### Join existing account [#join-existing-account]

During sign up, Stedi checks whether your email domain is associated with an existing Stedi account. If it is, you can request to join that account instead of creating a new one.

For example, if you sign up with `john.doe@example.com` and your company already has a Stedi account for `example.com`, you'll see the option to request to join it. This helps prevent duplicate accounts for the same organization.

You'll receive an email when the account admin invites you to join the account and log in.

## (Optional) Add members [#optional-add-members]

Your Stedi account can have many members - a member represents an individual email address used to log into the account. You may want to add additional members so that other individuals in your organization can help manage transactions and troubleshoot issues. Your vendor may also request to be invited to your account, so they can investigate and troubleshoot issues directly during support sessions.

Members can have different roles, depending on the permissions you want them to have within your account. An **Admin** has the highest permissions, and they can access and update all resources in your account, including members and billing details.

To add members to your account:

1. Go to the [Members](https://portal.stedi.com/app/settings/members) page in your account settings.
2. Click **Invite member**.
3. Enter the email address of the member you want to add.
4. Select the member's role from the dropdown. We recommend assigning most members to the **Operator** role. This role allows them to manage transactions (like claims and eligibility checks) and submit transaction enrollments requests, but not change account settings or billing information.
5. Click **Send invitation**.

The invited member will receive an email with instructions about how to accept the invitation and log into the account.

<Note>
  Visit [Account settings and security](/providers/providers-account-settings) for complete details about managing your account, including member roles, Multi-Factor Authentication (MFA), Single Sign-On (SSO), and other security settings.
</Note>

## Install your vendor's app [#install-your-vendors-app]

You can install apps for third-party vendor systems like Revenue Cycle Management (RCM), Practice Management Systems (PMS), Electronic Healthcare Record (EHR) platforms, and other [Platform Partners](https://www.stedi.com/platform-partners).

Installing an app sends an invitation to the vendor, allowing them to access your account and connect it to their product.

To install an app:

1. In the side navigation, click your account name, then click **Connect account to apps** to go to the [Apps page](https://portal.stedi.com/app/settings/developer/apps).

2. Browse the list of apps and click the one you want to install.

3. Click **Install** to begin the installation process.

4. Read the installation details and then click **Confirm and install**. This action sends an email invitation to the app vendor. This will allow your vendor to log into your account, complete the setup process, and provide support as needed.

   Stedi displays new API and SFTP credentials. You can ignore these. Your vendor will log into your account and generate their own credentials to connect their system to Stedi.

5. Check the box next to **I've added these details to my \[Vendor] account** and click **Done**.

The app is now installed, and your vendor will complete the setup process.

## Next step: Transaction enrollment [#next-step-transaction-enrollment]

Are you planning to process claims through Stedi?

If so, you must complete transaction enrollment with each payer before you can receive 835 Electronic Remittance Advice (ERAs). Transaction enrollment is also required for some other types of transactions, like claims and eligibility checks, depending on the payer.

[Start transaction enrollment ->](/providers/providers-transaction-enrollment-intro)

# Billing and pricing
Source: https://www.stedi.com/docs/providers/providers-billing


Learn about Stedi account types, pricing plans, and billing.

## Account types [#account-types]

Every Stedi account is either a sandbox account or a production account.

### Sandbox accounts [#sandbox-accounts]

Sandbox accounts are free and limited to test mode. You can use sandbox accounts to:

* Run mock eligibility checks.
* Explore the Stedi portal.
* Build and test your eligibility integration using test API keys. Developers and coding agents can run eligibility checks in a free sandbox account using test API keys. When they're ready to move to production, they can upgrade in account settings and swap in a production API key.

<Note>
  Sandbox accounts don't support submitting test claims through the API or SFTP. You need a production account to access these features.
</Note>

### Production accounts [#production-accounts]

Production accounts can process unlimited real transactions with payers. Stedi offers production accounts on two pricing plans: pay-as-you-go for per-transaction billing with volume discounts, or custom plans for high-volume customers requiring enterprise features.

All production accounts include:

* Unlimited user seats and providers
* Transaction enrollment, including the Transaction Enrollment API
* A searchable, programmatic payer list
* All transactions and APIs available on our [pricing page](https://www.stedi.com/pricing)
* The Stedi MCP server for AI agents
* Stedi Agent, an in-app AI assistant
* Real-time support over Slack, Microsoft Teams, and email

### Upgrade to production [#upgrade-to-production]

To upgrade from a sandbox account to production, click **Upgrade account** in the side navigation. Then, follow the upgrade flow.

## Pricing plans [#pricing-plans]

Production accounts are available on one of two pricing plans:

### Pay as you go [#pay-as-you-go]

The pay-as-you-go plan uses prepaid credits with usage-based pricing and automatic volume-based discounts. The plan uses tiered pricing – for most transactions, the per-transaction rate drops as your monthly volume grows.

When you [sign up](https://portal.stedi.com/auth/sign-up?redirect_uri=https%3A%2F%2Fportal.stedi.com%2Fapp%2Fcreate-account) for the pay-as-you-go plan, you add a credit card and fund an initial Stedi account balance, starting at $25.

Each transaction draws down the balance at the rate for its pricing tier. Visit our [pricing page](https://www.stedi.com/pricing) for an estimator and full breakdown of each tier.

Stedi automatically adds to your balance when it drops below a trigger you set. For example, you can add $100 to your balance whenever it falls below $10, the minimum trigger.

Your balance rolls forward month to month. At the end of each month, Stedi sends an invoice that covers your monthly usage. If you send zero transactions in a month, you pay nothing.

### Custom [#custom]

The custom plan offers discounted usage rates for customers with high transaction volume. Custom plans also include enterprise features like SSO, SCIM, and consolidated billing for integrated accounts.

To request a custom plan, [contact us](https://www.stedi.com/contact).

## Billing [#billing]

Manage your payment methods and understand how Stedi billing works.

### Add or update payment method [#add-or-update-payment-method]

This section applies to pay-as-you-go accounts.

To add or update your payment method:

1. Go to your [Account settings](https://portal.stedi.com/app/settings/account-details).
2. Click **Billing**.
3. In the **Payment method** section, click **Edit**.

Stedi bills any charges to the payment method on file.

### Download W9 form [#download-w9-form]

To download Stedi's W9 tax form:

1. Go to your [Account settings](https://portal.stedi.com/app/settings/account-details).
2. Click **Billing**.
3. In the **Tax information** section, click **Download**.

### Pay-as-you-go billing [#pay-as-you-go-billing]

Manage your pay-as-you-go billing, including viewing your balance, downloading receipts, manually adding funds, and configuring auto-recharge settings.

#### View your current balance [#view-your-current-balance]

To view your current account balance:

1. Go to your [Account settings](https://portal.stedi.com/app/settings/account-details).
2. Click **Billing**.

The billing page displays your current balance as well as your pricing plan at the top of the page.

#### Review payment history [#review-payment-history]

To view your payment history and download receipts:

1. Go to your [Account settings](https://portal.stedi.com/app/settings/account-details).
2. Click **Billing**.
3. View your payment history in the **Payments** section and download receipts for individual payments.

#### Manual top-up [#manual-top-up]

You can manually add funds to your balance at any time. Charges and the updated balance are reflected immediately.

To manually add to your balance:

1. Go to your [Account settings](https://portal.stedi.com/app/settings/account-details).
2. Click **Billing**.
3. In the **Manual top-up** section, enter the amount you want to add (minimum $25).
4. Click **Top-up**.

#### Configure auto-recharge settings [#configure-auto-recharge-settings]

You can configure when Stedi automatically adds to your balance and how much to add each time.

To configure your auto recharge settings:

1. Go to your [Account settings](https://portal.stedi.com/app/settings/account-details).
2. Click **Billing**.
3. In the **Auto recharge** section, click **Edit** and set your preferred values:
   * **When balance is below**: The minimum balance that triggers an automatic recharge (minimum $10).
   * **Add this amount**: The amount to add when your balance falls below the trigger (minimum $25).

Stedi automatically charges your payment method on file when your balance drops below the reload trigger.

<Warning>
  When your account balance reaches $0, access is suspended immediately. You'll be unable to process new transactions. To avoid this, set your recharge amount and threshold based on your usage, and leave a generous buffer.
</Warning>

### Failed payments [#failed-payments]

This section applies to pay-as-you-go accounts. When an automatic recharge payment fails, you'll receive email and in-app notifications. You must take action to resolve the issue. You retain full access to your account until your balance reaches $0.

#### Resolve failed payments [#resolve-failed-payments]

If auto-recharge fails, you must resolve the issue to avoid service interruption. The fastest way to restore a positive balance in your account is to retry the failed payment:

1. Go to your [Account settings](https://portal.stedi.com/app/settings/account-details).
2. Click **Billing**.
3. Check that your payment method is valid and has sufficient funds. For example, ensure your credit card hasn't expired and has enough available credit.
4. Update your payment method if needed.
5. Retry the failed payment.

#### Failed payment notifications [#failed-payment-notifications]

You'll receive email and in-app notifications at key points in the failed payment process:

* **Payment failure**: When an auto-recharge payment fails.
* **Access suspended**: When your balance reaches $0 and account access is suspended.
* **16-day reminder**: When your account has been suspended for 16 days, reminding you that your account will be closed after 30 days of suspension.
* **25-day reminder**: When your account has been suspended for 25 days, reminding you that your account will be closed after 30 days of suspension.
* **Access restored**: When your balance returns to positive and access is restored.

Stedi sends all email notifications to your admin account email and billing email addresses.

#### Account suspension and closure [#account-suspension-and-closure]

When your balance reaches $0 or goes negative, Stedi immediately suspends your account:

* **API access is suspended**: You cannot process new transactions.
* **Portal access is limited**: You can only access billing and payment settings to resolve the issue.

As soon as your balance returns to positive (through a successful retry payment or an auto recharge), Stedi restores full access.

<Warning>
  If your account remains suspended for 30 consecutive days, it becomes eligible for closure. You'll receive reminder emails at 14 days and 5 days before closure.
</Warning>

### Custom billing [#custom-billing]

Manage your custom plan billing, including downloading invoices.

#### Download invoices [#download-invoices]

To download invoices:

1. Go to your [Account settings](https://portal.stedi.com/app/settings/account-details).
2. Click **Billing**.
3. Download your latest invoice from the top of the page, or download past invoices from the **Invoices** section.

# Check claim status
Source: https://www.stedi.com/docs/providers/providers-check-claim-status


You may need to check a claim's status when you don't receive a 277CA claim acknowledgment or 835 Electronic Remittance Advice (ERA) from the payer within your expected timeframe.

You can run real-time claim status checks to determine whether a payer is still processing a claim or if it's been rejected or denied.

## Testing [#testing]

You can only run real-time claim status checks for production claims that have entered the payer's processing system.

Requests for test claims or claims the payer hasn't yet accepted for processing won't return results. That's why our claim status best practices recommend waiting at least a week after submission before attempting to check a claim's status. You also won't be able to check the status if Stedi or the payer rejected a claim with a [277CA claim acknowledgment](/providers/providers-claim-acknowledgments).

## Transaction enrollment [#transaction-enrollment]

[Transaction enrollment](/providers/providers-transaction-enrollment-intro) is the process of registering a provider to exchange specific healthcare transactions with a payer. Some payers require enrollment before allowing providers to submit real-time claim status checks through a new clearinghouse. This enrollment process is separate from the transaction enrollment process for 837 claims.

You can check whether a specific payer requires transaction enrollment for real-time claim status checks in the [Payer Network](https://www.stedi.com/healthcare/network).

To enroll:

1. Go to the [Providers page](https://portal.stedi.com/app/healthcare/providers) and create a provider record with the information required for enrollment. If you already have a record for the provider, you can skip this step.
2. Go to the [Enrollments page](https://portal.stedi.com/app/healthcare/enrollments) and submit an enrollment request for real-time claim status.

<Note>
  For most payers that require enrollment for claim status checks, enrolling through Stedi won't impact your ability to send transactions to your original clearinghouse. For any questions on payer nuances, contact Stedi's support team.
</Note>

## Best practices [#best-practices]

We recommend following these best practices when checking claim status.

* **Wait for the payer to receive the claim.** You can check a claim's status once the payer has received and accepted it into their processing system - you don't need to wait until the claim is fully adjudicated. We recommend waiting at least 2-3 days after submitting the claim or until you receive a 277CA claim acknowledgment from the payer indicating they have received the claim.

* **Check periodically.** If you haven't received an 835 ERA, we recommend checking the claim's status at 21 days after submission and then again at 1 month.

* **Supply a date of service range.** We recommend the following when providing dates of service:
  * The date range should be at least plus or minus 7 days from the date of the services listed in the claim. The payer may have stored a different date for the encounter than the one in your records, so providing a date range increases the likelihood that the payer will find a match.
  * Keep the date range to 30 days or less. Some payers may reject requests with a date range that is too wide.
  * Don't submit future dates - only submit date ranges up to and including today's date. Some payers reject requests containing future service dates.

* **Start with the recommended base request.** Providing too much information in a claim status request can negatively affect the results. We recommend starting with only the minimum required information.

## Run a claim status check [#run-a-claim-status-check]

To submit a 276/277 real-time claim status check:

1. Go to the [Create claim status check page](https://portal.stedi.com/app/healthcare/claims/status/create).
2. Enter the required information.
   * Start with our [recommended base request](#recommended-base-request).
   * We also strongly recommend reviewing our [best practices](#best-practices). Supplying too much information or a too narrow/broad date of services range can negatively affect the results.
3. Click **Submit**.

Stedi displays the claim status response on the next page. If the payer finds a matching claim, the response includes the claim's status and (if applicable) one or more rejection messages indicating the reason(s) for rejection. When the claim status check returns more than one matching claim, you can toggle between them using the dropdown at the top left of the page.

The claim status response also includes information about the attached claim, including key identifiers (such as the Patient Control Number), service details, billed amount, and paid amount (if applicable). However, it doesn't include all details from the original claim and any associated 835 Electronic Remittance Advice (ERAs). For example, if you need a detailed breakdown of payments and adjustments, you must check the related ERA.

<Warning>
  Claim status checks aren't listed on the **Transactions** page. You can only
  review the response immediately after submitting the request. If you need to
  know the status of the same claim later, you must run a new claim status
  check.
</Warning>

### Recommended base request [#recommended-base-request]

We recommend starting with the following fields in your claim status request.

{/* prettier-ignore-start */}

| Form fields                | Description                                                                                                                                                                                                                                                                                                                                                                                                             |
| -------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Trading partner service ID | You must specify the payer. Choose the payer from the dropdown. Start typing to filter the list.                                                                                                                                                                                                                                                                                                                        |
| Providers                  | The provider information from the original claim. To start, provide only the **NPI**, **Organization name**, and **Provider type** fields.                                                                                                                                                                                                                                                                              |
| Subscriber                 | The subscriber information from the original claim. To start, provide only the **First name**, **Last name**, **Date of birth**, **Gender**, and **Member ID** fields. You'll need to click **Select fields** to add the **Gender** field to the form.                                                                                                                                                                  |
| Dependent                  | The dependent information from the original claim. To start, provide only the **First name**, **Last name**, **Date of birth**, and **Gender** fields. You'll need to click **Select fields** to add the **Dependent** fields to the form. If the patient is the subscriber, don't include this information.                                                                                                            |
| Encounter                  | The encounter information from the original claim. To start, provide only the **Beginning date of service** and **End date of service** fields. Remember that you should provide a date range that is plus or minus 7 days from the date of service listed in the claim for best results. Only use date ranges that are up to and including today's date - some payers reject requests containing future service dates. |

{/* prettier-ignore-end */}

## Limitations [#limitations]

Claim status requests are likely to fail in the following scenarios:

### Claims submitted by other providers [#claims-submitted-by-other-providers]

You likely won't be able to check the status of a claim submitted by a different provider organization or by the patient themselves, even if you have all of the details about the claim.

Payers generally only allow a provider organization to check the status of the claims they submitted. They impose these access controls to protect plan member privacy and confidential commercial data.

### Claims older than 18 months [#claims-older-than-18-months]

Payers often archive claims older than 18 months, but this varies by payer. If you try to check the status of a claim from several years ago, the payer may return an error even if the information you submit matches a real historical claim.

### Claims outside the payer's system [#claims-outside-the-payers-system]

You can only check the status of claims the payer has received and accepted into their processing system. Claims that haven't entered the payer's system won't return results, even if you have all the correct information. This is why we recommend waiting at least a week after submission before running a claim status check.

You'll know the claim is in the payer's system when you receive a 277CA claim acknowledgment from the payer with acceptance codes. Some payers will never send a 277CA.

## No matches - Interpret status codes [#no-matches---interpret-status-codes]

When the payer can't find matching claims, they return codes that can help you diagnose the problem.

### Claim Status Category Code [#claim-status-category-code]

These codes qualify the type of Claim Status Code included in the response and can provide additional information about why the payer couldn't find a match. Visit the X12 documentation for a complete list: [Claim Status Category Codes](https://x12.org/codes/claim-status-category-codes)

Often, this will be a generic `D0` (Data Search Unsuccessful) to indicate that the payer couldn't find any matching claims.

### Claim Status Code [#claim-status-code]

These codes identify the status of an entire claim or service line. It can be either a [Health Care Claim Status Code](https://x12.org/codes/claim-status-codes) or a National Council for Prescription Drug Programs (NCPDP) Reject/Payment Code, when the status is related to pharmacy claims.

When the payer can't find matching claims, this code is often just a generic `35` (Claim/Encounter Not Found). However, sometimes these codes can help explain why there are no matches. For example, `97` (Patient eligibility not found with entity) indicates that the payer couldn't find the patient in their system.

### Example [#example]

The following combination of codes suggests that the payer couldn't find insurance coverage information for the patient details you entered. This can happen when the patient's demographic details are incorrect - for example, if their name is misspelled - or when the final claim was submitted to a different payer than the one the patient identified when receiving services.

* **Status Category Code:** `D0` (Data Search Unsuccessful - The payer is unable to return status on the requested claim(s) based on the submitted search criteria)
* **Status Code:** `97` (Patient eligibility not found with entity)

## Troubleshooting steps [#troubleshooting-steps]

If your claim status requests don't return matching claim information, we recommend trying the following troubleshooting steps in order, regardless of the error codes you receive.

Payers often send non-specific or even misleading error codes in claim status responses. While error codes sometimes provide insight into the issue, we recommend trying all of these common troubleshooting steps if you're not getting successful results. For example, Claim Status Category Codes like `E1` (Response not possible - System Status) can indicate that the payer's systems are temporarily down, but some payers also send these codes when your request information was incorrect.

### Step 1: Add additional fields [#step-1-add-additional-fields]

Regardless of the status codes in the response, we recommend immediately retrying with these fields added to the request one by one, in the following order. Through experience, we've found including this information reliably improves hit rates for a large number of payers:

1. **Submitted amount**: The total charge amount for the entire claim - the sum of all service lines.

   To add: Click **Select fields**, go to the **Encounter** section, and check the box next to **Submitted amount**.

2. **Payer Claim Control Number (PCCN)**: The unique identifier the payer assigns to claims in their adjudication system.

   You can find the PCCN in 277CA claim acknowledgments from the payer once the claim has entered their adjudication system. Go to the [claims view](https://portal.stedi.com/app/healthcare/claims), click the claim to open its timeline, and click **See more detail** on the 277CA. The PCCN is listed under **Payer claim control number** if available.

   To add: Click **Select fields**, go to the **Encounter** section, and check the box next to **Trading partner claim number**.

3. **Tax ID**: The billing provider's Tax Identification Number (TIN). Some payers need this identifier instead of the NPI to find the right claim.

   To add: Click **Select fields**, go to the **Providers** section, and check the box next to &#x2A;*Taxpayer Identification Number (TIN)**.

### Step 2: Check for common errors [#step-2-check-for-common-errors]

Many failed claim status requests are due to the following errors. Sometimes, the status codes can indicate the cause and help you focus your troubleshooting efforts. If not, we recommend checking all of the following:

#### Payer-specific requirements [#payer-specific-requirements]

Many payers document additional requirements beyond the X12 HIPAA specification. Check the payer's 276/277 companion guide, and look for information about:

1. **Provider type:** We recommend starting with only the billing provider's information in claim status checks. However, some payers may require information about the service provider(s) instead of or in addition to the billing provider. Check whether `Loop 2100C` (Provider Name) is listed as required, optional, or disallowed and whether there are specific requirements about the type of provider.

   You can adjust this information in the **Providers** section.

2. **Provider identifier:** Some payers may require a different identifier than the NPI, such as the provider's tax ID. Check whether the payer has specific notes about what to use for `Loop 2100C NM109` (Provider Identifier).

   You can adjust this information in the **Providers** section by clicking **Select fields** and checking the box next to &#x2A;*Taxpayer Identification Number (TIN)**.

3. **Member ID format:** Some payers may require that you enter the subscriber's member ID with a specific prefix or digit count. Check whether the payer has specific notes about `Loop 2100D NM109` (Subscriber Identifier).

   You can adjust this information in the **Subscriber** section by updating the **Member ID** field.

4. **Demographics:** Some payers require additional demographic information about the subscriber or dependent. Check whether the payer has specific notes about `Loop 2000D` (Subscriber) or `Loop 2000E` (Dependent).

   You can adjust this information in the **Subscriber** or **Dependent** sections. Click **Select fields** to see all available demographic fields.

If you need help finding a payer's companion guide, contact [Stedi support](https://www.stedi.com/contact).

#### Date of service range [#date-of-service-range]

Some payers store service dates differently than what you submitted. Try expanding your date of service range to plus or minus 14 days from the original claim's service date.

You can adjust the date range in the **Encounter** section by updating the **Beginning date of service** and **End date of service** fields.

#### Billing provider NPI [#billing-provider-npi]

The billing provider NPI must match the one submitted in the claim. If your group or practice uses a group NPI for billing, try resubmitting with that organizational NPI instead.

If the billing provider NPI fails, try substituting the rendering provider's NPI as the billing NPI. Some payers index claims by the rendering provider rather than the billing organization.

You can adjust the NPI in the **Providers** section.

#### Patient demographics [#patient-demographics]

Administrative entities that handle claim submission sometimes discover changes to the patient's insurance information after services were rendered. For example, they may:

* discover a coordination of benefits (COB) scenario. As a result, they may submit the final claim to a different payer than the one originally listed as the patient's insurance provider.
* update the patient's name, member ID, or other identifying information. As a result, you may be making claim status requests with incorrect patient data.

Try running a [real-time eligibility check](/providers/providers-eligibility-checks) with the patient's information. If the check is successful, it confirms that your patient data is correct.

If the payer returns `AAA` errors, you can often use them to identify issues with the patient's data. For example:

* An `AAA` error `71` (Patient Birth Date Does Not Match That for the Patient on the Database) indicates that the patient's birthdate may be the issue.
* An `AAA` error `73` (Invalid/Missing Subscriber/Insured Name) may indicate that the patient's first or last name are spelled incorrectly.
* An `AAA` error `75` (Subscriber/Insured Not Found) indicates that the payer couldn't find the patient in their system. This may indicate that the patient's name, member ID, or other demographics are incorrect or that they're insured with a different payer.

#### BCBS / BlueCard routing [#bcbs--bluecard-routing]

For BCBS members, the claim may have been adjudicated by the member's **home plan** rather than the local plan where services were rendered. To identify the correct payer, run a [real-time eligibility check](/providers/providers-eligibility-checks) with the patient's information.

Stedi enriches the eligibility response with information about the patient's home plan when the eligibility check includes the member's first name, last name, birthdate, and full member ID (including the 3-character BCBS alpha prefix).

This information appears in the **Benefit** column of the eligibility response benefits table as a **Related entity**. The **Type** will be "Party performing verification" and the **Entity** will contain the payer's name. Once you've identified the correct home plan, resubmit the claim status check using that payer instead.

Note that BCBS enrichment isn't supported when:

* The patient's member ID doesn't contain the 3-character alpha prefix.
* The patient has stand-alone vision and pharmacy cards issued through an intermediary model.
* The patient's plan is a stand-alone dental product.
* The patient is part of a Federal Employee Program (FEP). In this case, the patient has R before their member ID.

#### Provider credentialing [#provider-credentialing]

Some payers require the provider NPI to be credentialed or enrolled specifically for real-time claim status checks, separate from claim submission enrollment. If you receive codes indicating that the request was sent to the wrong payer but you're certain the payer you selected is correct, the provider may not be credentialed properly with the payer.

For example, the following combination of codes may indicate a credentialing issue:

* Claim Status Category Code `E0` (Response not possible - error on submitted request data)
* Claim Status Code `116` (Claim submitted to incorrect payer.)

Try the same request with a different provider that you know is properly credentialed with that payer. If you get a different response, such as category code `A4` with status code `35` (Claim/Encounter Not Found), the original provider is likely the issue.

<Note>
  Stedi handles [transaction enrollment](/providers/providers-transaction-enrollment-intro) - the process of registering a provider to send and receive specific EDI transactions through Stedi with a payer. However, Stedi doesn't handle credentialing (validating a provider's qualifications) or payer enrollment (registering a credentialed provider with a payer's health plan). Providers must complete credentialing and payer enrollment directly with each payer or through a specialized service.
</Note>

### Step 3: Contact support [#step-3-contact-support]

If you've tried all these steps and still receive errors for claim status checks with information you know is correct, contact [Stedi support](https://www.stedi.com/contact). We can help figure out the next steps.

# 277CA claim acknowledgments
Source: https://www.stedi.com/docs/providers/providers-claim-acknowledgments


You may receive 277CA claim acknowledgments after you submit 837 claims through Stedi.

These 277CAs indicate whether the claim was accepted for processing or rejected. If the claim was rejected, the 277CA explains why so you can understand what to change before resubmitting.

## 277CA responses [#277ca-responses]

You may receive multiple separate 277CAs for each claim you submit. Each 277CA typically correlates to one claim. However, some payers may send a single 277CA that references multiple claims.

* You'll receive the first 277CA from Stedi within about 30 minutes of submitting the claim. This 277CA may contain rejection message(s) and warnings, if applicable.
* You may receive additional 277CAs from intermediary clearinghouses.
* You may receive one or more 277CAs from the payer. Typically, there is one 277CA that indicates receipt of the claim and a second 277CA that contains summary counts of transactions received, information about accepted transactions, and details for rejected transactions.

## Review 277CAs [#review-277cas]

You can find 277CAs from the [claims view](https://portal.stedi.com/app/healthcare/claims).

1. Click a claim to view a timeline of its processing activity.
2. Click an **Acknowledgment** (277CA) to review its details page.

Stedi displays key information about the 277CA, including the billing provider's information and status codes, so you can determine whether the associated claim was accepted or rejected.

### Determine claim status [#determine-claim-status]

277CAs from the payer indicate whether the claim was accepted for processing or rejected.

You can find this claim status information on the 277CA's **Overview** tab. If the 277CA references multiple claims, you can toggle between them to review each claim's status information.

<img alt="277CA example transaction overview" src="__img0" />

Specifically, you should review the following details:

{/* prettier-ignore-start */}

| Information            | Description                                                                                                                                                                                                                                                |
| ---------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Sender                 | The 277CA is from the payer when the **From** field contains the payer's name or ID and the **Entity type** is `Payer`.                                                                                                                                    |
| Patient Control Number | The **Patient control number** is the value you sent in the original claim's `Loop 2300 CLM01` (Patient Control Number). This is **Box 26** (Patient account number) in the CMS-1500 form UI. This identifier helps match the 277CA to the original claim. |
| Status codes           | The overview lists claim status codes that indicate whether the claim has been accepted or rejected. If the claim was rejected, the overview lists one or more rejection messages marked with **Claim issue** indicating the reason(s) for rejection.      |

{/* prettier-ignore-end */}

### View X12 EDI [#view-x12-edi]

You can review the raw X12 EDI for any 277CA claim acknowledgment from the **EDI** tab.

The EDI is displayed on the left and the specification is displayed on the right. As you hover over different parts of the EDI, Stedi highlights the corresponding part of the specification to help you understand what each part of the EDI means.

## 277CA vs. claim status check [#277ca-vs-claim-status-check]

The 277CA contains different information than a real-time claim status check. Specifically:

* **277CAs**: Tell you whether the payer has received a claim and accepted it for processing. If the claim was rejected, 277CAs tell you why so you can resubmit. 277CAs don't indicate whether the claim has been adjudicated or paid.
* **Real-time claim status checks**: Tell you the status of a claim that's already been accepted into the payer's system. They provide information about whether the claim has been adjudicated, paid, denied, or is pending further review.

If you're waiting for an ERA, you should first check the related 277CA to confirm that the claim was accepted for processing. If the claim was rejected, you won't receive an ERA because the payer didn't adjudicate the claim.

Then, you can run a [real-time claim status check](/providers/providers-check-claim-status) to get updates about the claim's adjudication and payment status.

# Claim edits and repairs
Source: https://www.stedi.com/docs/providers/providers-claim-edits-and-repairs


Stedi checks each claim you submit for errors that could lead to rejections or denials.

Depending on the type of error, Stedi will either fix the issue automatically (repair) or reject the claim (edit rejection) with instructions explaining what to change before resubmitting. This process helps ensure claims are complete, accurate, HIPAA-compliant, and aligned with payer-specific rules *before* they reach the payer.

Catching and resolving issues early through claim edits and repairs streamlines claims processing so providers can get paid faster.

## Repairs [#repairs]

Repairs are fixes that Stedi applies to claims before checking them against our library of [claim edits](#edits). They fix problems with a known, deterministic solution, such as formatting issues. For example, if a phone number contains dashes or spaces, a repair might remove them so the claim passes validation.

We don't use repairs to change substantive or clinical content. For example, a repair won't change a CPT code in a claim to reflect a different procedure. That's a substantive change that requires resubmission.

Claim repairs don't require any action from you - they happen automatically, so you don't need to make changes or resubmit.

## Edits [#edits]

Claim edits are validation rules that check a specific requirement. For example, an edit might check that each phone number in the claim contains exactly 10 digits. Many of our [repairs](#repairs) fix issues that would cause claims to fail one or more edits. For example, a repair may remove dashes in a phone number so it's in the right format for the edit validation. If the phone number still doesn't have 10 digits, the claim fails the edit.

Stedi runs our entire library of edits on each claim you submit. This applies to both new claims and claims you're resubmitting through Stedi.

When a claim fails one or more edits, Stedi doesn't send it to the payer. Instead, you'll see a validation error for each edit the claim failed. You'll need to fix the issues causing the edit failures before you can successfully submit the claim to Stedi.

<img alt="Claim edit validation failure" src="__img0" />

### Stedi's edit database [#stedis-edit-database]

Stedi has a growing library of claim edits, including edits for specific payers. You can review a filterable, up-to-date list of all our claim edits in our [Edits database](https://edits.stedi.com/).

There's no standardized universal library of claim edits. However, a large number of industry-standard edits originate from HIPAA rules (such as using ICD-10 as the standard coding system) and from Centers for Medicare & Medicaid Services (CMS) rules, such as the National Correct Coding Initiative (NCCI). NCCI edits were originally developed by CMS for Medicare, but many non-Medicare payers have adopted them or use them as a baseline.

Our goal is to eventually cover all non-provider-specific edits that can be deterministically applied to claims. You can submit requests for new edits or updates to existing ones through our [Request a claim edit](https://www.stedi.com/request-claim-edit) form.

### SNIP framework [#snip-framework]

Edits are often categorized using the Strategic National Implementation Process (SNIP) framework. The framework was created by the Workgroup for Electronic Data Interchange (WEDI), which sets guidelines (but not standards) for how EDI should be implemented in healthcare.

Each SNIP type, or level, checks a different aspect of a claim's correctness. You can find the SNIP level of all of our edits in the [Edits database](https://edits.stedi.com/).

**SNIP Type 1: EDI Standard Integrity Testing**

Edits that check whether the claim uses valid EDI syntax. Examples:

* Are the EDI segments in the right order?
* Do fields meant for numbers contain numbers?

**SNIP Type 2: HIPAA Implementation Guide Requirement Testing**

Edits that check whether the claim uses HIPAA-compliant X12 syntax. Examples:

* Invalid phone numbers
* Invalid date of birth
* Invalid billing provider address
* Missing primary payer

**SNIP Type 3: HIPAA Balance Testing**

Edits that check whether the billing amounts in the claim add up correctly. Examples:

* Non-zero adjustment amounts
* COB claims must be balanced
* Total claim charges must equal line-level charges

**SNIP Type 4: HIPAA Inter-Segment Situation Testing**

Edits that check whether fields are present or missing based on the presence of other fields. Examples:

* Missing accident date
* Missing admission source code

**SNIP Type 5: HIPAA External Code Set Testing**

Checks that fields that use official HIPAA-adopted code sets only contain valid values. For example, an edit could check for invalid ICD-10-CM diagnosis codes.

**SNIP Type 6: Product Type/Type of Service Testing**

Edits that check whether the claim is valid and in the right format for the type of healthcare service listed. These edits catch mismatches between the procedure code being billed and the type of claim or service category. Examples:

* Using a CDT dental code in an 837P professional claim.
* Billing a surgery CPT code under a diagnostic service type.
* Including a revenue code, which is only for 837I institutional claims, in an 837P professional claim.

**SNIP Type 7: Trading Partner-Specific Testing**

Edits that check whether the claim complies with rules specific to an individual trading partner or payer. These rules vary by payer and go beyond standard HIPAA requirements. While government payers like Medicare and Medicaid are common sources of payer-specific rules, SNIP Type 7 applies to any payer with unique requirements. Examples:

* Invalid primary diagnosis on Medicare chiropractic claims
* Missing initial treatment date for Medicare chiropractic claims
* Missing referral number when the payer requires one

# Claims view
Source: https://www.stedi.com/docs/providers/providers-claims-view


The [claims view](https://portal.stedi.com/app/healthcare/claims) in the Stedi portal provides insight into your claims processing pipeline. In the claims view, you can:

* Submit claims through the interactive CMS-1500 form or by uploading raw X12 EDI files.
* Review every claim you submit through Stedi and the details of related claim transactions, such as 277CA claim acknowledgments.
* Review a clear timeline of activity for each claim, including resubmissions and responses you receive from Stedi and the payer.
* Understand a claim's current [status](#claim-processing-status) within the processing pipeline, such as whether the claim has been accepted or rejected.
* Filter submitted claims by key details, such as processed date, status, patient name, and service date(s).
* Review 835 Electronic Remittance Advice (ERAs) and download ERA PDFs.

## Submit claims [#submit-claims]

You can submit claims from the claims view through the interactive CMS-1500 form or by uploading raw X12 EDI files. Manual claim submission is useful for testing, QA, debugging your claims processing pipeline, and handling scenarios that fall outside your normal workflow.

To submit a claim, click **Submit claim** in the claims view and select one of the following options:

* **CMS-1500 form**: Submit professional claims through an interactive form. Visit [Submit claims](/providers/providers-submit-claims#claim-form-professional-only) for detailed instructions.
* **Upload raw X12 file**: Upload X12 EDI files for professional, institutional, or dental claims. You can submit multiple claims in a single file. Visit [Submit claims](/providers/providers-submit-claims#x12-edi-upload) for detailed instructions.

## Review claims [#review-claims]

You can filter, export, and review detailed information about all claims you've submitted through Stedi in the [claims view](https://portal.stedi.com/app/healthcare/claims).

<Tip>
  Toggle **Test mode** to **ON** in the side navigation to review test claims you've submitted.
</Tip>

### Filter claims [#filter-claims]

Click **Claims** in the side navigation to view a list of the claims you've submitted through Stedi. Available filters include:

| Filter                     | Description                                                                                                                                                                                                                                                                      |
| -------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Processed date**         | When Stedi received each claim.                                                                                                                                                                                                                                                  |
| **Status**                 | Where a claim is in the processing pipeline. Refer to [claim processing status](#claim-processing-status) for details on how we determine a claim's status and how to know if action is required to move the claim forward.                                                      |
| **Type**                   | Claim type - professional, dental, or institutional.                                                                                                                                                                                                                             |
| **Patient control number** | The patient control number for the claim, sometimes referred to as the claim ID. You submitted this value in:<ul><li>**CMS-1500 claim form:** **Box 26** (Patient's Account No.)</li><li>**X12 EDI:** `Loop 2300` (Claim Information) `CLM01` (Patient Control Number)</li></ul> |
| **Patient name**           | The patient's first or last name. Supports partial matching.                                                                                                                                                                                                                     |
| **Member ID**              | The subscriber's member ID for their health plan.                                                                                                                                                                                                                                |
| **Payer**                  | Payer name, ID, or alias. Refer to the [Payer Network](https://www.stedi.com/healthcare/network) for a complete list for each payer.                                                                                                                                             |
| **Billing provider NPI**   | The billing provider's NPI.                                                                                                                                                                                                                                                      |
| **Billing Provider TIN**   | The billing provider's TIN.                                                                                                                                                                                                                                                      |
| **Total charges**          | Claims with a minimum or maximum charge amount.                                                                                                                                                                                                                                  |
| **Service date**           | Claims with specific service dates.                                                                                                                                                                                                                                              |

When you apply one or more filters, Stedi displays the total number of claims that match your filter criteria. This count helps you quantify specific scenarios, such as the number of claims in a rejected status from the previous week or the number of claims submitted for a certain billing provider. If a claim is resubmitted and linked to the initial claim record, the original submission and any resubmissions are counted together as one claim.

### Export claims list [#export-claims-list]

You can export filtered claims lists to an Excel file (`.xlsx`) for further analysis or reporting. For example, you can export filtered lists that help you:

* Track claim status over specific time periods.
* Identify rejected claims by payer.
* Reconcile billing records with your practice management system.
* Generate custom reports for specific billing providers or date ranges.

To export a filtered claims list:

1. Apply [one or more filters](#filter-claims) to narrow down the claims you want to export. The export button appears once you apply at least one filter.
2. Click **Export**. Stedi disables the export button when the filtered list contains more than 250,000 records. In this case, add more filters to reduce the list size.
3. Stedi creates the report and sends you an in-app notification when it's ready.
4. The download happens automatically when the report is complete. You can also manually download the report at any time by clicking the bell icon in the side navigation, finding the **Download is ready** notification, and clicking **Download**.

Your export file includes the filtered claims list and a metadata tab that includes the export date, the filters you applied, and the number of records.

<Note>
  Export files are available for 30 days from the notification. After 30 days, the download link expires.
</Note>

### Claim timeline [#claim-timeline]

From the claims view, click any claim to review a timeline of its processing activity, including when the claim was submitted and when you received 277CA claim acknowledgments from Stedi and the payer.

The timeline view also includes resubmissions for the claim and any associated 277CAs resulting from those resubmissions.

<img alt="claims view timeline" src="__img0" />

<Note>
  835 ERAs and real-time claim status requests aren't currently included in the timeline. Click **Find matching ERAs** in the side panel under the **PCN** to view a pre-filtered list of all ERAs that match the claim's Patient Control Number (PCN).
</Note>

### Transaction details [#transaction-details]

From a claim's timeline view, hover over a transaction and click **See more detail** to review a user-friendly summary of key information, such as patient information, service dates, and service line details. You'll also be able to review the raw X12 EDI for the transaction.

### Download CMS-1500 claim PDF [#download-cms-1500-claim-pdf]

You can download a PDF version of professional claims in the CMS-1500 format from both the timeline view and the claim's detail page.

1. From the [claims view](https://portal.stedi.com/app/healthcare/claims), click a professional claim to open its timeline.

2. Do one of the following:
   * From the timeline view, hover over the claim and click **Download CMS-1500 claim PDF**.
   * Open the claim's detail page and click **Download CMS-1500 claim PDF**.

3. In the download menu, choose whether to **Include CMS-1500 form background**. This option is checked by default.

   The National Uniform Claim Committee (NUCC) and CMS provide exact specifications for blank CMS-1500 forms, including paper size and ink color. Many provider offices are accustomed to using these pre-printed forms, and their Practice Management System (PMS) applications are designed to print claim data onto them. Generating PDFs with no background allows you to print the claim data directly onto official pre-printed forms.

4. Click **Confirm download**. The PDF downloads to your computer.

## Review 835 ERAs [#review-835-eras]

You can review 835 ERAs by filtering the full list on the [835 ERAs view](https://portal.stedi.com/app/healthcare/claims/eras) or finding ERAs for a specific claim from its timeline.

<Tip>
  Toggle **Test mode** to **ON** in the side navigation to review test ERAs.
</Tip>

### Filter ERAs [#filter-eras]

Click **835 ERAs** in the side navigation to view a list of all 835 ERAs in your account. Available filters include:

| Filter                           | Description                                                                                                                                                                                                                                                                                                                                                                                    |
| -------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Processed date**               | When Stedi received the ERA.                                                                                                                                                                                                                                                                                                                                                                   |
| **Trace number**                 | The unique identifier the payer assigns to the ERA transaction. In X12 EDI, this is `TRN02` (Check or EFT Trace Number).<br /><br />You can use this value to link the ERA with the associated payment, if applicable. For example: When the payment is remitted by check, the trace number is the check number.                                                                               |
| **Total paid**                   | The total amount paid across all claims included in the ERA.                                                                                                                                                                                                                                                                                                                                   |
| **Payment date**                 | When the payer issued the payment.                                                                                                                                                                                                                                                                                                                                                             |
| **Payment method**               | The method used for payment (such as check or ACH).                                                                                                                                                                                                                                                                                                                                            |
| **Payer**                        | Payer name, ID, or alias. Refer to the [Payer Network](https://www.stedi.com/healthcare/network) for a complete list for each payer.                                                                                                                                                                                                                                                           |
| **Payee**                        | The payee's (billing provider's) name. Supports partial matching.                                                                                                                                                                                                                                                                                                                              |
| **Payee NPI**                    | The payee's (billing provider's) National Provider Identifier.                                                                                                                                                                                                                                                                                                                                 |
| **Payee Tax ID**                 | The payee's (billing provider's) Tax Identification Number.                                                                                                                                                                                                                                                                                                                                    |
| **PCN (Patient Control Number)** | A claim's PCN, sometimes referred to as the claim ID. Since an ERA can contain multiple claims, this returns ERAs where any claim matches the specified PCN. This is the same value you submitted on the original claim in:<ul><li>**CMS-1500 claim form:** **Box 26** (Patient's Account No.)</li><li>**X12 EDI:** `Loop 2300` (Claim Information) `CLM01` (Patient Control Number)</li></ul> |

When you apply one or more filters, Stedi displays the total number of ERAs that match your filter criteria. This count helps you quantify specific scenarios, such as the number of ERAs received from a payer in a given month or the total number of ERAs for a specific billing provider.

### Export ERA list [#export-era-list]

You can export filtered ERA lists to an Excel file (`.xlsx`) for further analysis or reporting. For example, you can export filtered lists that help you:

* Generate monthly payment reports based on payment received date.
* Track reimbursements by payer or billing provider.
* Reconcile payments with your accounting system.
* Analyze payment trends and adjustment patterns across specific time periods.

To export a filtered ERA list:

1. Apply [one or more filters](#filter-eras) to narrow down the ERAs you want to export. The export button appears once you apply at least one filter.
2. Click **Export**. Stedi disables the export button when the filtered list contains more than 250,000 records. In this case, add more filters to reduce the list size.
3. Stedi creates the report and sends you an in-app notification when it's ready.
4. The download happens automatically when the report is complete. You can also manually download the report at any time by clicking the bell icon in the side navigation, finding the **Download is ready** notification, and clicking **Download**.

Your export file includes the filtered ERA list and a metadata tab that includes the export date, the filters you applied, and the number of records.

<Note>
  Export files are available for 30 days from the notification. After 30 days, the download link expires.
</Note>

### Find ERAs from a claim's timeline [#find-eras-from-a-claims-timeline]

You can also find ERAs for a specific claim from the claim's timeline:

1. Go to the [claims view](https://portal.stedi.com/app/healthcare/claims).
2. Click the associated claim to open its timeline.
3. Click **Find matching ERAs** in the side panel under the **PCN** to search for ERAs that match the claim's Patient Control Number (PCN). If no ERAs match, the ERA list will be empty.

### ERA details [#era-details]

Click any ERA in the list to review its details. The **Overview** page contains key information about the ERA, including:

* Payer and payee information
* Total amount paid
* Payment date and method
* Details for all claims included in the ERA
* Adjustments applied to each claim

You can also click **EDI** at the top of the ERA details page to review the raw X12 EDI for the transaction.

### Download ERA PDF [#download-era-pdf]

You can download a PDF version of the ERA from its details page.

1. Go to the [claims view](https://portal.stedi.com/app/healthcare/claims) and click **835 ERAs**.
2. Click the ERA to open its details page.
3. Click **Download PDF** at the top right.
4. In the download menu, select your preferences:
   * **Include Stedi logo in 835 ERA PDF**: Adds the Stedi logo to the PDF.
   * **Download each claim as a separate PDF**: Downloads one PDF for each claim included in the ERA. When the ERA contains multiple claims, the PDFs will be provided as a zip file. For example, if the ERA contains 5 claims, you'll download a zip file containing 5 separate PDFs.
5. Click **Confirm PDF download**.

You can also download a PDF for each claim individually. Click the three dots to the right of a claim in the **Claims** section and select **Download 835 ERA PDF for this claim**.

## Review your payers [#review-your-payers]

The [My Payers view](https://portal.stedi.com/app/healthcare/claims/my-payers) shows all payers with which you have exchanged 837 claims or 835 Electronic Remittance Advice (ERAs) through Stedi. You can use this view to:

* Review all the payers with which you've exchanged claim data in a single location.
* Identify payers that have issues with transaction enrollment. If you've sent claims to a payer and haven't received any ERAs within your expected timeframe, you may need to complete [transaction enrollment](/providers/providers-manage-transaction-enrollments), or there may be issues with an existing enrollment request.
* Verify that your claims processing cycle is working from end-to-end for all your payers.

<img alt="My Payers view" src="__img1" />

Hover over any payer row to access quick links:

* **View in network**: View the payer's details in the [Payer Network](https://www.stedi.com/healthcare/network).
* **Find claims**: View all claims submitted to this payer in the [claims view](https://portal.stedi.com/app/healthcare/claims).
* **Find 835 ERAs**: View all 835 ERAs you received from this payer through Stedi.
* **Find enrollments**: View all enrollments with this payer.

### Filter your payer list [#filter-your-payer-list]

Click the filter options at the top of the My Payers view to filter the list:

| Filter       | Description                                                                                                                                   |
| ------------ | --------------------------------------------------------------------------------------------------------------------------------------------- |
| **Payer**    | Filter by payer name, ID or alias. Refer to the [Payer Network](https://www.stedi.com/healthcare/network) for a complete list for each payer. |
| **837s**     | Filter by whether or not you've used Stedi to submit a professional, dental, or institutional claim.                                          |
| **835 ERAs** | Filter by whether or not you've received an 835 Electronic Remittance Advice (ERA) from the payer through Stedi.                              |

## Resubmit or cancel claims [#resubmit-or-cancel-claims]

You can resubmit or cancel claims from within the claims view.

To resubmit a claim:

1. Click the claim you want to resubmit to open its timeline.
2. Hover over the claim submission and do one of the following:
   * Click **Edit and resubmit**. This option appears when the last claim submission was rejected by either Stedi or the payer.
   * Click **See more detail** to review the claim's details page, then click **Edit and resubmit**.
3. Select one of the following options:
   * **CMS-1500 resubmission**: Resubmit professional claims through the interactive form. Visit [Review and resubmit claims](/providers/providers-review-resubmit-claims#cms-1500-form-professional) for detailed instructions.
   * **X12 transaction resubmission**: Resubmit professional, institutional, or dental claims through the X12 EDI editor. Visit [Review and resubmit claims](/providers/providers-review-resubmit-claims#x12-edi-editor) for detailed instructions.

## Claim processing status [#claim-processing-status]

The claims view displays each claim's current processing status. These statuses are designed to help you quickly understand whether action is required to move claims forward.

Stedi's claim processing statuses are different from the status codes you receive in 277CAs and in real-time claim status checks:

* **277CAs:** Each 277CA contains one or more status category codes that indicate receipt, acceptance or rejection at a *specific stage* of processing. Stedi evaluates all available 277CAs to determine the claim's current *overall* processing status.
* **Real-time claim status checks:** Claim status checks can only provide status information about claims that have been accepted into the payer's adjudication system. Stedi's statuses provide insight both before and after the claim reaches the payer.

<Warning>
  Stedi currently doesn't use information from real-time claim status checks or 835 ERAs to determine claim status. That means Stedi's statuses won't indicate when claims have been adjudicated or paid. You'll need to monitor for 835 ERAs independently.
</Warning>

### Stedi claim status codes [#stedi-claim-status-codes]

A claim in the Stedi portal can have one of the following processing statuses:

| status    | description                                                                                                                       | What to do                                                                                                                                                                 |
| --------- | --------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Submitted | You submitted the claim to Stedi but haven't yet received a 277CA response from Stedi or the payer.                               | No action needed. Monitor for the next 277CA claim acknowledgment with acceptance or rejection status.                                                                     |
| Received  | The clearinghouse or payer has acknowledged receipt of the claim. This doesn't mean the claim has been accepted for adjudication. | No action needed. Monitor for the next 277CA claim acknowledgment with acceptance or rejection status.                                                                     |
| Rejected  | Either Stedi or the payer rejected the claim. This can happen even when the payer has acknowledged receipt.                       | Review the 277CA claim acknowledgment for error details, correct the claim, and resubmit.                                                                                  |
| Accepted  | The payer has accepted the claim into their adjudication system and it's currently being processed or adjudicated.                | No action needed. Monitor for the next 277CA claim acknowledgment or the 835 ERA with adjudication details.                                                                |
| Invalid   | The 277CA contains unsupported or invalid status codes.                                                                           | Review the 277CA claim acknowledgment for details. If the 277CA is from Stedi, contact Stedi support. If the 277CA is from the payer, contact the payer for clarification. |

#### Received vs. Accepted [#received-vs-accepted]

Many payers send two 277CAs:

* An initial 277CA with `STC01-01` (Health Care Claim Status Category Code) set to `A1` (Acknowledgment/Receipt). Stedi sets the claim status to **Received**.
* A second 277CA with `STC01-01` set to an explicit Accepted or Rejected code. Stedi then updates the claim status to **Accepted** or **Rejected** accordingly.

However, some payers don't send 277CAs with explicit Accepted codes. In these cases, the claims view keeps the claim in **Received** status.

If a claim has been in **Received** status longer than expected, you can run a [claim status check](/healthcare/check-claim-status) to determine its processing status with the payer. You can also contact Stedi support with questions about behavior for particular payers.

### How we determine status [#how-we-determine-status]

Once you submit a claim, you'll receive several [277CA claim acknowledgments](/healthcare/claim-responses-overview#277ca-claim-acknowledgment) from the clearinghouse and the payer that indicate receipt, acceptance, or rejection at various stages of processing.

Stedi uses the information in the 277CAs to determine the current status of a claim.

#### Step 1: Classify each 277CA [#step-1-classify-each-277ca]

We assign each 277CA transaction a submission status based on the `STC01-1` (Health Care Claim Status Category Code) status category codes present in the transaction. [Full code list](https://x12.org/codes/claim-status-category-codes)

When there are multiple codes present within a 277CA, we evaluate codes in the following priority order:

1. Rejected
2. Accepted
3. Received
4. Invalid (unrecognized STC codes)

For example, if a 277CA contains both rejected and received status category codes, we classify the 277CA as rejected.

#### Step 2: Decide which 277CA reflects the claim's status [#step-2-decide-which-277ca-reflects-the-claims-status]

Each claim can receive multiple 277CAs from Stedi and the payer as it moves through the processing pipeline. Once we evaluate the status of all existing 277CAs for a claim, we apply the following rules to determine which 277CA reflects the claim's overall status:

1. **Current submission:** We focus on the 277CAs tied to the most-recent 837 submission. If there are no 277CAs for the most recent submission, the claim's status is set to **Submitted**.
2. **Terminal outcomes:** We prioritize by Rejected --> Accepted --> Received. For example, if any 277CA from Stedi or the payer has a rejected status, we use the 277CA rejection to set the claim status, even if there are other 277CAs with accepted codes. This helps ensure you don't miss required actions to correct and resubmit a rejected claim.
3. **Payer > Clearinghouse:** We prioritize 277CAs from the payer over 277CAs from Stedi or intermediaries. For example, if a claim has a Stedi 277CA with received status codes and a payer 277CA with received status codes, we use the payer's 277CA to set the overall claim status to **Received**.
4. **Recency:** We use recency as a final tiebreaker to ensure deterministic results. If a claim has multiple 277CAs from the same source with the same status category codes, we first check the effective date listed in the EDI transaction and use the most recent one. If those are the same, we'll use the 277CA that most recently entered Stedi's system.

Note that at this time, we **only** use 277CAs to determine claim status. We don't incorporate information from real-time claim status responses or 835 Electronic Remittance Advice (ERAs). For example, if a claim has been paid, that won't be reflected in Stedi's claim processing statuses - you'll need to monitor for the 835 ERA independently.

#### Examples [#examples]

The following scenarios illustrate how we use the above rules to determine a claim's status when there are multiple 277CAs.

**Scenario 1**

You submit a claim to Stedi and receive the following 277CAs:

| Source | Status classification | Effective date |
| ------ | --------------------- | -------------- |
| Stedi  | Received              | 2026-01-01     |
| Payer  | Accepted              | 2026-01-02     |

The claim's status would be set to **Accepted** based on the accepted status category codes in the payer's 277CA.

**Scenario 2**

You submit a claim to Stedi and receive the following 277CAs:

| Source | Status classification | Effective date |
| ------ | --------------------- | -------------- |
| Payer  | Rejected              | 2026-01-01     |
| Payer  | Received              | 2026-01-02     |

This scenario can happen when a payer sends responses out-of-order due to network delays, outage recovery, retries, or batch processes. In this case, the claim's status would be set to **Rejected** because we prioritize terminal statuses over the timing of the responses.

# CMS-1500 Claim Form PDF
Source: https://www.stedi.com/docs/providers/providers-cms-1500-claim-form-pdf


Stedi automatically generates a [CMS-1500 Claim Form](https://www.nucc.org/index.php/1500-claim-form-mainmenu-35) PDF for each professional claim you submit.

We strongly recommend reviewing the following behavior and recommendations if you plan to send these PDFs to payers or retain them for your records.

## Retrieve PDFs [#retrieve-pdfs]

You can download a PDF version of professional claims in the CMS-1500 format from both the timeline view and the claim's detail page.

1. From the [claims view](https://portal.stedi.com/app/healthcare/claims), click a professional claim to open its timeline.

2. Do one of the following:
   * From the timeline view, hover over the claim and click **Download CMS-1500 claim PDF**.
   * Open the claim's detail page and click **Download CMS-1500 claim PDF**.

3. In the download menu, choose whether to **Include CMS-1500 form background**. This option is checked by default.

   The National Uniform Claim Committee (NUCC) and CMS provide exact specifications for blank CMS-1500 forms, including paper size and ink color. Many provider offices are accustomed to using these pre-printed forms, and their Practice Management System (PMS) applications are designed to print claim data onto them. Generating PDFs with no background allows you to print the claim data directly onto official pre-printed forms.

4. Click **Confirm download**. The PDF downloads to your computer.

### Standard form size [#standard-form-size]

The generated PDFs use the standard 8.5" x 11" format.

## Edit PDFs [#edit-pdfs]

Single-page PDFs are editable so you can make any necessary adjustments before printing and sending them to payers. You can use any PDF editor to make changes to the generated CMS-1500 PDF.

## Print PDFs [#print-pdfs]

Note the following behavior and recommendations when printing CMS-1500 PDFs.

* We recommend generating PDFs with a white background (no red form overlay) if you plan to print them on pre-printed claim forms.
* The form boxes and labels **must** be printed in red ink and the item values **must** be printed in black ink for the claim form to be read by a scanner. Your vendor may choose not to process claim forms that don't conform to these specifications.
* Set the **Page Size & Handling** option to **Actual size** or the equivalent in your PDF reader application. The **Fit** option may cause the contents to be scaled down to fit within the printable area, causing the form fields to be misaligned when printed.
* Don't print forms from the Apple Preview app built in to macOS. There appear to be problems with field alignment and fonts. Instead, we recommend using either Adobe Acrobat or Google Chrome.

### Printer models [#printer-models]

We generally recommend using business laser printers to print CMS-1500 PDFs. However, due to mechanical variations between printer models, we can't guarantee that the generated PDFs will align perfectly with pre-printed forms. You should always test the alignment with your printer before using the generated PDFs for official submissions.

You may not get acceptable results when using inkjet printer models because the file contents can extend beyond the normal printable area. If you do plan to use an inkjet printer, don't enable a **borderless** option because this may cause the printer (or printer driver) to slightly magnify the page image regardless of other print settings. This behavior can crop form edges and cause form fields to appear in the wrong positions. Some inkjet printers have a manual setting to change the extension amount, but this isn't always available and may not give consistent results.

# Interpret COB response
Source: https://www.stedi.com/docs/providers/providers-cob-response


The coordination of benefits (COB) response includes information about the patient's active health plans, subscriber information, and coordination of benefits.

Unlike standard eligibility checks, the COB response shape is standardized across all supported payers. There are no payer-specific variations in what information is included or how the response is structured.

The Stedi portal displays the raw JSON response data from COB checks. This section explains how to interpret the response fields and determine payer primacy.

## COB status [#cob-status]

The `coordinationOfBenefits` object contains status information about whether a COB instance exists and whether Stedi was able to determine the primary payer.

{/* schema:COB:unwrap */}

```json
"coordinationOfBenefits": {
    "classification": "CobInstanceExistsPrimacyDetermined",
    "instanceExists": true,
    "primacyDetermined": true,
    "coverageOverlap": true,
    "benefitOverlap": true
  }
```

A COB check response can have one of the following statuses, indicated by the `coordinationOfBenefits.classification` property.

{/* prettier-ignore-start */}

| status                                 | Description                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         |
| -------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `MemberFoundNoCob`                     | The patient has coverage with the payer you checked, but Stedi didn't find any other health plans with overlapping coverage. Note that Stedi can only report information for other COB-supported health plans from our payer list. For example, if the individual has coverage from Cigna and Medicare, a COB check to Cigna will state that no COB was detected, since Medicare is not a supported payer. You can find a complete list of supported payers for COB checks in the [Payer Network](https://www.stedi.com/healthcare/network?query=eyIyNzAiOnt9LCIyNzYiOnt9LCI4MzUiOnt9LCI4MzdQIjp7fSwiODM3SSI6e30sIjgzN0QiOnt9LCJDT0IiOnsiaXNTdXBwb3J0ZWQiOnRydWV9fQ%3D%3D\&page=0). |
| `CoverageOverlapNoBenefitOverlap`      | The patient has overlapping coverage with at least one other health plan, but there is no benefit overlap between the plans. Coordination of benefits is not required.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              |
| `CoverageOverlapExistsNotSubjectToCob` | The patient has overlapping coverage with at least one other health plan, but coordination of benefits is not required.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             |
| `CobInstanceExistsPrimacyUndetermined` | The patient has overlapping coverage with at least one other health plan and coordination of benefits is required. However, Stedi could not determine the primary payer. We recommend contacting the patient's health plans for further guidance.                                                                                                                                                                                                                                                                                                                                                                                                                                   |
| `CobInstanceExistsPrimacyDetermined`   | The patient has overlapping coverage with at least one other health plan, and Stedi was able to identify the primary payer.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         |

{/* prettier-ignore-end */}

## Payer primacy [#payer-primacy]

The response includes a `benefitsInformation` object with `code` = `R` when Stedi finds overlapping coverage with another health plan.

The `benefitsInformation[].benefitsRelatedEntities` array contains information about the other payer, and the `entityIdentifier` property indicates the payer's primacy for payment on claims when this information is available. It can be set to:

* `Payer`: Stedi didn't find a COB instance or could not determine primacy.
* `Primary Payer`: This payer is the primary payer for the service type.
* `Secondary Payer`: This payer is the secondary payer for the service type.
* `Tertiary Payer`: This payer is the tertiary payer for the service type.

In the following example, the patient has overlapping coverage for medical care services with Cigna, the primary payer for medical care services.

{/* schema:COBBenefitsInformation */}

```json
{
  "code": "R",
  "name": "Other or Additional Payor",
  "serviceTypeCodes": ["1"],
  "serviceTypes": ["Medical Care"],
  "benefitsDateInformation": {
    "coordinationOfBenefits": "2024-07-01"
  },
  "benefitsRelatedEntities": [
    {
      "entityIdentifier": "Primary Payer",
      "entityName": "CIGNA",
      "entityIdentification": "PI",
      "entityIdentificationValue": "1006"
    },
    {
      "entityIdentifier": "Insured or Subscriber",
      "entityFirstname": "JOHN",
      "entityMiddlename": "X",
      "entityIdentification": "MI",
      "entityIdentificationValue": "00000000000",
      "entityLastname": "DOE"
    }
  ],
  "subscriber": {
    "dateOfBirth": "2002-12-31"
  }
}
```

When Stedi can't reliably determine primacy, you should contact the patient's health plans directly for further guidance. Visit [Primacy determination rules](#primacy-determination-rules) for more information about how Stedi determines payer primacy.

## Sample response interpretation [#sample-response-interpretation]

The following example COB response shows information for a dependent who is covered by multiple health plans through their parents' policies. The COB check was submitted to Aetna with a service type code of `30` and a date of service of `2024-11-27`.

The response indicates the following:

* **Active coverage:** The patient has active coverage with Aetna for medical care services, pharmacy services, and vision services. This is indicated by the three objects in the `benefitsInformation` array with the `code` set to `1`.
* **Coverage overlap:** The patient has overlapping coverage for medical care services between two health plans. This is indicated by the `benefitsInformation` object with the `code` set to `R`.
* **Primacy:** The other health plan is Cigna, listed in `benefitsInformation[].benefitsRelatedEntities`. Cigna is the primary payer for medical care services. Note that the ID returned in this property is proprietary to our COB check product, so you can't use it as the Payer ID for eligibility checks or other API requests to Stedi. It likely doesn't match the Payer IDs listed in the [Payer Network](https://www.stedi.com/healthcare/network).
* **COB instance:** There is a COB instance for medical care services on the date of service provided in the request. This is indicated in the `coordinationOfBenefits` object.

Based on this response, you must send claims first to Cigna as the primary payer for medical care services. Once Cigna adjudicates the claim, you can send another one, if necessary, to Aetna as the secondary payer (subject to specific payer claims processing rules).

Before sending claims we'd also recommend sending a separate eligibility check to Aetna to verify coverage status.

{/* schema:CoordinationOfBenefitsResponseContent */}

```json
{
  "benefitsInformation": [
    {
      "code": "1",
      "name": "Active Coverage",
      "serviceTypeCodes": ["1"],
      "serviceTypes": ["Medical Care"],
      "benefitsDateInformation": {
        "benefitBegin": "2023-03-01"
      },
      "subscriber": {
        "dateOfBirth": "2002-02-27"
      }
    },
    {
      "code": "1",
      "name": "Active Coverage",
      "serviceTypeCodes": ["88"],
      "serviceTypes": ["Pharmacy"],
      "benefitsDateInformation": {
        "benefitBegin": "2023-03-01"
      },
      "subscriber": {
        "dateOfBirth": "2002-02-27"
      }
    },
    {
      "code": "1",
      "name": "Active Coverage",
      "serviceTypeCodes": ["AL"],
      "serviceTypes": ["Vision (Optometry)"],
      "benefitsDateInformation": {
        "benefitBegin": "2023-03-01"
      },
      "subscriber": {
        "dateOfBirth": "2002-02-27"
      }
    },
    {
      "code": "R",
      "name": "Other or Additional Payor",
      "serviceTypeCodes": ["1"],
      "serviceTypes": ["Medical Care"],
      "benefitsDateInformation": {
        "coordinationOfBenefits": "2024-07-01"
      },
      "benefitsRelatedEntities": [
        {
          "entityIdentifier": "Primary Payer",
          "entityName": "CIGNA",
          "entityIdentification": "PI",
          "entityIdentificationValue": "1006"
        },
        {
          "entityIdentifier": "Insured or Subscriber",
          "entityFirstname": "JOHN",
          "entityMiddlename": "X",
          "entityIdentification": "MI",
          "entityIdentificationValue": "00000000000",
          "entityLastname": "DOE"
        }
      ],
      "subscriber": {
        "dateOfBirth": "2002-12-31"
      }
    }
  ],
  "coordinationOfBenefits": {
    "classification": "CobInstanceExistsPrimacyDetermined",
    "instanceExists": true,
    "primacyDetermined": true,
    "coverageOverlap": true,
    "benefitOverlap": true
  },
  "dependent": {
    "firstName": "JORDAN",
    "lastName": "DOE",
    "gender": "M",
    "dateOfBirth": "2002-12-31",
    "relationToSubscriber": "Child",
    "relationToSubscriberCode": "19",
    "address": {
      "address1": "1 MAIN ST.",
      "city": "NEW YORK",
      "state": "NY",
      "postalCode": "10000"
    }
  },
  "errors": [],
  "meta": {
    "applicationMode": "production",
    "traceId": "01JDQFT4W3KTWZNTADEZ55BFFX",
    "outboundTraceId": "01JDQFT4W3KTWZNTADEZ55BFFX"
  },
  "payer": {
    "name": "Aetna",
    "payerIdentification": "AETNA-USH"
  },
  "provider": {
    "providerOrgName": "AETNA-USH",
    "npi": "1999999984"
  },
  "subscriber": {
    "memberId": "W000000000",
    "firstName": "JOHN",
    "lastName": "DOE",
    "address": {
      "address1": "1 MAIN ST.",
      "city": "NEW YORK",
      "state": "NY",
      "postalCode": "10000"
    }
  }
}
```

## Response examples [#response-examples]

The following examples show common COB check scenarios and their responses.

### COB exists, primacy determined [#cob-exists-primacy-determined]

In the following example, the COB check was submitted to Cigna with a service type code of `30` and a date of service of `2024-12-19`.

The response indicates that the patient has active coverage with Cigna for medical care services, and that there is overlapping coverage with Kaiser Foundation Health Plan of Massachusetts. COB is required for medical care services, and Kaiser is the primary payer.

<Accordion title="Response COB exists, primacy determined" id="response-cob-exists-primacy-determined">
  {/* schema:CoordinationOfBenefitsResponseContent */}

  ```json
  {
    "benefitsInformation": [
      {
        "code": "1",
        "name": "Active Coverage",
        "serviceTypeCodes": ["1"],
        "serviceTypes": ["Medical Care"],
        "benefitsDateInformation": {
          "benefitBegin": "2024-01-01"
        },
        "subscriber": {
          "dateOfBirth": "1948-11-01"
        }
      },
      {
        "code": "R",
        "name": "Other or Additional Payor",
        "serviceTypeCodes": ["1"],
        "serviceTypes": ["Medical Care"],
        "benefitsDateInformation": {
          "coordinationOfBenefits": "2024-01-01"
        },
        "benefitsRelatedEntities": [
          {
            "entityIdentifier": "Primary Payer",
            "entityName": "KAISER FOUNDATION HEALTH PLAN OF MAS",
            "entityIdentification": "PI",
            "entityIdentificationValue": "1009"
          },
          {
            "entityIdentifier": "Insured or Subscriber",
            "entityFirstname": "GOOFY",
            "entityMiddlename": "X",
            "entityIdentification": "MI",
            "entityIdentificationValue": "999999999",
            "entityLastname": "GOOF"
          }
        ],
        "subscriber": {
          "dateOfBirth": "1948-11-01"
        }
      }
    ],
    "coordinationOfBenefits": {
      "classification": "CobInstanceExistsPrimacyDetermined",
      "instanceExists": true,
      "primacyDetermined": true,
      "coverageOverlap": true,
      "benefitOverlap": true
    },
    "dependent": {
      "firstName": "GOOFY",
      "lastName": "GOOF",
      "gender": "M",
      "dateOfBirth": "1948-11-01",
      "relationToSubscriber": "Spouse",
      "relationToSubscriberCode": "01",
      "address": {
        "address1": "3 DISNEY RD",
        "city": "ORLANDO",
        "state": "FL",
        "postalCode": "32801"
      }
    },
    "errors": [],
    "meta": {
      "applicationMode": "production",
      "traceId": "01JJQRFYSXPKNYQ96EVM7XDXC4",
      "outboundTraceId": "01JJQRFYSXPKNYQ96EVM7XDXC4"
    },
    "payer": {
      "name": "CIGNA",
      "payerIdentification": "CIGNA-HCIN"
    },
    "provider": {
      "providerOrgName": "PROVIDER",
      "npi": "1999999984"
    },
    "subscriber": {
      "memberId": "X99999999",
      "firstName": "MRS",
      "lastName": "GOOF",
      "groupNumber": "12345678",
      "address": {
        "address1": "3 DISNEY RD",
        "city": "ORLANDO",
        "state": "FL",
        "postalCode": "32801"
      }
    }
  }
  ```
</Accordion>

### Coverage overlap, no benefit overlap [#coverage-overlap-no-benefit-overlap]

In the following example, the COB check was submitted to Cigna with a service type code of `30` and a date of service of `2025-01-01`.

The response indicates that the patient has active coverage with Cigna for medical care services, and that there is overlapping coverage with Aetna for dental care services. There is no benefit overlap between the two health plans because dental and medical benefits have two different service type codes. COB is not required.

<Accordion title="Response Coverage overlap, no benefit overlap" id="response-coverage-overlap-no-benefit-overlap">
  ```json
  {
    "benefitsInformation": [
      {
        "code": "1",
        "name": "Active Coverage",
        "serviceTypeCodes": ["1"],
        "serviceTypes": ["Medical Care"],
        "benefitsDateInformation": {
          "benefitBegin": "2024-10-03"
        },
        "subscriber": {
          "dateOfBirth": "1925-11-28"
        },
        "dependent": {
          "firstName": "MICKEY",
          "lastName": "MOUSE",
          "memberId": "X999999999",
          "dateOfBirth": "1928-11-28",
          "familySeqNum": "0003",
          "relationToSubscriber": "Spouse",
          "relationToSubscriberCode": "01"
        }
      },
      {
        "code": "R",
        "name": "Other or Additional Payor",
        "serviceTypeCodes": ["35"],
        "serviceTypes": ["Dental Care"],
        "benefitsDateInformation": {
          "periodStart": "2024-10-03"
        },
        "benefitsRelatedEntities": [
          {
            "entityIdentifier": "Payer",
            "entityName": "AETNA",
            "entityIdentification": "PI",
            "entityIdentificationValue": "1000"
          },
          {
            "entityIdentifier": "Insured or Subscriber",
            "entityFirstname": "MINNIE",
            "entityMiddlename": "X",
            "entityIdentification": "MI",
            "entityIdentificationValue": "X999999999",
            "entityLastname": "MOUSE"
          }
        ],
        "subscriber": {
          "dateOfBirth": "1925-11-28"
        },
        "dependent": {
          "firstName": "MICKEY",
          "lastName": "MOUSE",
          "memberId": "X999999999",
          "dateOfBirth": "1928-11-28",
          "familySeqNum": "0003",
          "relationToSubscriber": "Spouse",
          "relationToSubscriberCode": "01"
        }
      }
    ],
    "coordinationOfBenefits": {
      "classification": "CoverageOverlapNoBenefitOverlap",
      "instanceExists": true,
      "coverageOverlap": true,
      "benefitOverlap": false,
      "primacyDetermined": false
    },
    "dependent": {
      "firstName": "MICKEY",
      "lastName": "MOUSE",
      "gender": "M",
      "dateOfBirth": "1928-11-28",
      "relationToSubscriber": "Spouse",
      "relationToSubscriberCode": "01",
      "address": {
        "address1": "3 DISNEY RD",
        "city": "ORLANDO",
        "state": "FL",
        "postalCode": "32801"
      }
    },
    "errors": [],
    "meta": {
      "applicationMode": "production",
      "traceId": "01JJVW6QJWXESXYAAAE4H996HR",
      "outboundTraceId": "01JJVW6QJWXESXYAAAE4H996HR"
    },
    "payer": {
      "name": "CIGNA",
      "payerIdentification": "CIGNA-HCIN"
    },
    "provider": {
      "providerOrgName": "PROVIDER",
      "npi": "1999999984"
    },
    "subscriber": {
      "memberId": "X99999999",
      "firstName": "MINNIE",
      "lastName": "MOUSE",
      "middleName": "X",
      "groupNumber": "3340181",
      "address": {
        "address1": "3 DISNEY RD",
        "city": "ORLANDO",
        "state": "FL",
        "postalCode": "32801"
      }
    }
  }
  ```
</Accordion>

### Member found, no COB [#member-found-no-cob]

In the following example, the COB check was submitted to UnitedHealthcare with a service type code of `30` and a date of service of `2023-01-10`.

The response indicates that the patient has active coverage with UnitedHealthcare for medical care services, but there is no overlapping coverage with any other health plan.

<Accordion title="Response Member found, no COB" id="response-member-found-no-cob">
  {/* schema:CoordinationOfBenefitsResponseContent */}

  ```json
  {
    "benefitsInformation": [
      {
        "code": "1",
        "name": "Active Coverage",
        "serviceTypeCodes": ["1"],
        "serviceTypes": ["Medical Care"],
        "benefitsDateInformation": {
          "benefitBegin": "2024-01-01"
        }
      }
    ],
    "coordinationOfBenefits": {
      "classification": "MemberFoundNoCob",
      "instanceExists": false,
      "coverageOverlap": false,
      "benefitOverlap": false,
      "primacyDetermined": false
    },
    "dependent": {
      "firstName": "HUEY",
      "lastName": "DUCK",
      "middleName": "M",
      "gender": "F",
      "dateOfBirth": "1990-01-01",
      "relationToSubscriber": "Child",
      "relationToSubscriberCode": "19",
      "address": {
        "address1": "25 THE ROAD",
        "city": "READING",
        "state": "MA",
        "postalCode": "01867"
      }
    },
    "errors": [],
    "meta": {
      "applicationMode": "production",
      "traceId": "09JJSWD8RBGZMVCCYGQZS3P1F7",
      "outboundTraceId": "09JJSWD8RBGZMVCCYGQZS3P1F7"
    },
    "payer": {
      "name": "UnitedHealthcare",
      "payerIdentification": "UHC"
    },
    "provider": {
      "providerOrgName": "PROVIDER",
      "npi": "1999999984"
    },
    "subscriber": {
      "memberId": "999999999",
      "firstName": "DONALD",
      "lastName": "DUCK",
      "middleName": "X",
      "address": {
        "address1": "25 THE ROAD",
        "city": "READING",
        "state": "MA",
        "postalCode": "01867"
      }
    }
  }
  ```
</Accordion>

## Primacy determination rules [#primacy-determination-rules]

<Warning>
  Stedi doesn't support Medicare plans, so they're not included in the primacy
  determination process. However, we support many Medicare Advantage plans,
  which will be included in primacy determination.
</Warning>

Our COB service follows the guidelines set by the [National Association of Insurance Commissioners (NAIC)](https://content.naic.org/) to determine payer primacy. You may also want to refer to these guidelines when submitting claims.

#### Plan responsibilities [#plan-responsibilities]

In almost all cases, the **primary** plan pays benefits first as if no other plan exists. The one exception to this policy is when the patient has both an HMO (closed network plan) and a PPO (open network plan). When the HMO is the primary plan and the PPO is secondary, the PPO will pay first when the patient uses out-of-network providers unless it's an emergency or an authorized referral covered by the HMO.

When multiple policies are treated as a single plan, the primacy determination applies to the entire plan. The plans must coordinate amongst themselves according to their contracts. If more than one insurance company provides benefits under the plan, the one designated as primary is responsible for complying with coordination of benefits rules.

#### Order of benefits rules [#order-of-benefits-rules]

After the primary plan pays, each subsequent plan pays remaining eligible costs. Each health plan determines their order of benefits using the first of the following rules that apply:

**1. Non-Dependent vs. Dependent vs. Medicare**

* A plan covering the patient as an employee, subscriber, or retiree is primary over a plan that covers them as a dependent.
* If the patient also has Medicare, special rules apply:
  * Medicare is secondary to a plan covering the person as a dependent.
  * Medicare is primary to a plan covering the person as an employee (from an employer with more than 20 employees), subscriber, or retiree.
  * If the patient has all three plan types, the order of primacy is: Medicare, then the plan covering the person as a dependent, and then any other plans.

**2. Dependent child with multiple plans**

Note that the following rules are the same regardless of whether the subscribers of the multiple plans are the child's parents or other significant individuals in their life (not their parents).

* If the two subscribers are married or living together: The subscriber with the birthday that occurs first in the calendar year has the primary plan. If both subscribers have the same birthday, the plan that has covered the child the longest is primary.
* If the dependent child's coverage under the spouse's plan began on the same date as their coverage under either or both parents' plans, the order of benefits will be determined using the birthday rule.
* If the two subscribers are divorced, separated, or not living together, a court order typically decides which plan is primary. Otherwise:
  * The plan of the custodial parent is primary.
  * The plan of the spouse of the custodial parent is secondary.
  * The plan of the non-custodial parent is tertiary.
  * The plan of the spouse of the non-custodial parent is last.
* If a dependent child has coverage under either or both parents' plans and is also covered as a dependent under a spouse's plan, apply rule 5 - Length of coverage.

**3. Active vs. retired employees**

Coverage from a current employer (active employee) is primary to retired or laid-off employee plans.

**4. COBRA vs. state continuation coverage**

Employer-based plans are primary to COBRA coverage.

**5. Length of coverage**

If other rules don't decide, the plan covering the person for the longest time is primary.

**6. Final rule (If no other rules apply)**

If no clear primary plan is determined, costs are split equally between the plans.

# Troubleshoot failed COB checks
Source: https://www.stedi.com/docs/providers/providers-cob-troubleshooting


A list of potential errors and possible resolutions when submitting coordination of benefits (COB) checks.

## Inaccurate patient data [#inaccurate-patient-data]

COB checks are significantly more sensitive to data accuracy than eligibility checks. To perform successful COB checks, the patient information you provide in the check must match the payer's data exactly.

For example, if a payer has a patient's name stored as "Jonathan Doe", they may return benefits information when you submit an eligibility check for "Jon Doe", as long as they can identify the patient through the other information provided. However, a COB request for "Jon Doe" will fail because the name doesn't match the payer's records exactly.

This is why the Stedi portal only allows you to submit COB checks from successful eligibility checks and prefills the form data.

## Missing data [#missing-data]

COB requests must contain the patient's first name, last name, date of birth, plus their member ID and/or Social Security Number (SSN). If you don't send all data points, Stedi returns an error with a message listing the missing data.

{/* schema:ValidationExceptionResponseContent */}

```json
{
  "fieldList": [
    {
      "path": "/subscriber/dateOfBirth",
      "message": "Value at '/subscriber/dateOfBirth' failed to satisfy constraint: Member must not be null"
    }
  ],
  "message": "1 validation error detected. Value at '/subscriber/dateOfBirth' failed to satisfy constraint: Member must not be null"
}
```

## Request found multiple patients [#request-found-multiple-patients]

The `Duplicate Subscriber/Insured ID Number` error can occur when Stedi finds more than one member ID for the patient in the request. For example, this could occur if you only provide the patient's Social Security Number (SSN), and the search returns more than one member ID associated with that SSN.

In this case, Stedi returns a response with an `AAA` error in the `subscriber` object.

{/* schema:COBResponseSubscriber:unwrap */}

```json
"subscriber": {
  "memberId": "123456789",
  "firstName": "John",
  "lastName": "Doe",
  "dateOfBirth": "1961-10-21",
  "aaaErrors": [
    {
      "field": "AAA",
      "code": "76",
      "description": "Duplicate Subscriber/Insured ID Number",
      "followupAction": "Please Correct and Resubmit",
      "location": "Loop 2100C",
      "possibleResolutions": "Duplicate member ID was found in the payer database."
    }
  ]
}
```

## Invalid service dates [#invalid-service-dates]

The service dates you provide **must** be within the past 2 years. COB checks don't support requests with dates outside of this range.

Don't send service dates that are in the future. Future service dates typically result in errors from the payer.

## Inactive coverage [#inactive-coverage]

For COB checks to return a positive result, the patient must have active coverage. Sometimes, you can receive a false negative or error on a COB check when a patient's coverage has very recently changed. For example, if the patient recently became eligible for coverage within the last few days, that information may not yet be reflected in the COB member data, and you will receive a `Subscriber/Insured Not Found` error.

Payers typically update COB member data on a weekly basis. If you receive an error and the patient's coverage has recently changed, we recommend trying again next week to give the changes time to propagate to the COB database.

## AAA errors [#aaa-errors]

The COB response may contain one or more `AAA` errors specify issues with your request and any recommended follow-up actions. Stedi includes this information in the `aaaErrors` object in the response JSON.

`AAA` errors can be present at multiple different levels in the response, depending on the type. In the COB response, the `subscriber`, `dependent`, and `provider` objects can each contain their own `aaaErrors` array.

Common causes for AAA errors include:

* Missing or incorrect information for the subscriber, dependent, provider, or payer. In this case, you should correct any errors before resubmitting.
* Issues with payer enrollment. Many of these issues require that the provider contact the payer directly to resolve, due to PHI/HIPAA guidelines.

Each error contains a code field that corresponds to a `followupAction`:

{/* X12 follow-up action code descriptions keep their spec semicolons. */}

{/* vale Stedi.Semicolons = NO */}

* `C` - Please correct and resubmit
* `N` - Resubmission not allowed | Note that this code doesn't mean you should never resubmit the request. Intermediary clearinghouses may send this code when they have temporarily lost connection to the payer, so this code indicates that you should wait at least a few minutes before retrying instead of retrying immediately.
* `P` - Please resubmit original transaction
* `R` - Resubmission allowed
* `S` - Do not resubmit; Inquire initiated to a third party
* `Y` - Do not resubmit; We will hold your request and respond again shortly

{/* vale Stedi.Semicolons = YES */}

# Run coordination of benefits (COB) checks
Source: https://www.stedi.com/docs/providers/providers-coordination-of-benefits


Some patients have multiple health plans. For example, a dependent may have coverage with two private insurance companies through their parents. When a patient has active coverage with multiple plans, you need to know which health plan is primarily responsible for paying claims (coordination of benefits).

You can use a coordination of benefits (COB) check to determine:

* If a patient is covered by more than one health plan
* Whether there is coverage overlap between plans
* Whether coverage overlap requires coordination of benefits
* Each payer's responsibility for payment (primacy) in coordination of benefits scenarios

COB checks can help ensure that you submit claims to the correct payer and avoid claim denials. We recommend performing COB checks for all new patients who have coverage through one of Stedi's supported payers. When Stedi identifies overlapping coverage, we strongly recommend performing follow-up eligibility checks with each payer to verify coverage status and retrieve the patient's complete and current benefits information before you submit claims.

<Tip>
  COB checks require that you know at least one of the patient's active health
  plans. If you're unsure whether a patient has any active coverage at all, you
  can perform an [insurance discovery
  check](/providers/providers-insurance-discovery) to find potential coverage.
</Tip>

## How COB checks work [#how-cob-checks-work]

You submit a coordination of benefits request with information for one of the patient's health plans. The information required is similar to a standard eligibility check – first name, last name, DOB, and either member ID or SSN – and you should first run a real-time eligibility check to ensure that the member's details are accurate.

Once you submit the request, Stedi searches a database of eligibility data from regional and national plans. This database has 245+ million patient coverage records from 45+ health plans, ASOs, TPAs, and others, including participation from the vast majority of national commercial health plans. Data is updated at least weekly to ensure accuracy.

<Warning>
  COB check results may be partial or negative and may fail to include some or all of a patient's health plans. Results depend on whether the patient's payers contribute to the COB database.
</Warning>

Stedi synchronously returns summary information about each of the patient's active health plans, whether there is coverage overlap, and, if so, the responsibility sequence number for each payer (such as primary or secondary, if that can be determined).

Once you receive the results, we strongly recommend performing follow-up eligibility checks with each payer to verify coverage status and retrieve the patient's complete and current benefits information before you submit claims.

## Supported payers [#supported-payers]

COB doesn't support Medicare plans. However, Stedi supports many Medicare Advantage plans. Visit the [Payer Network](https://www.stedi.com/healthcare/network?query=eyIyNzAiOnt9LCIyNzYiOnt9LCI4MzUiOnt9LCI4MzdQIjp7fSwiODM3SSI6e30sIjgzN0QiOnt9LCJDT0IiOnsiaXNTdXBwb3J0ZWQiOnRydWV9fQ%3D%3D\&page=0) for a complete list of supported payers.

## Transaction enrollment [#transaction-enrollment]

[Transaction enrollment](/providers/providers-transaction-enrollment-intro) isn't required to run COB checks through Stedi.

## Check COB [#check-cob]

Each COB check must be for a participating health plan for which the patient has coverage. For example, if the patient has coverage from Cigna and UnitedHealthcare, a COB check to Aetna will return an error.

<Note>
  Medicare plans are not supported. However, many Medicare Advantage plans are
  supported.
</Note>

### Accurate patient data [#accurate-patient-data]

COB checks are significantly more sensitive to data accuracy than eligibility checks. To perform successful COB checks, the patient information you provide in the check **must** match the payer's data exactly.

For example, if a payer has a patient's name stored as "Jonathan Doe", they may return benefits information when you submit an eligibility check for "Jon Doe", as long as they can identify the patient through the other information provided. However, a COB request for "Jon Doe" will fail because the name doesn't match the payer's records exactly.

To avoid unnecessary COB check failures, we strongly recommend that you first submit an eligibility check request for the patient. Then use the patient's first name, last name, date of birth, and member ID from the successful eligibility response to build the COB request.

### Service type code [#service-type-code]

You can submit COB checks with the `30` service type code for Health Benefit Plan Coverage. This is the broadest service type code that covers all medical services and subtypes included in the patient's health plan.

### Submit COB checks [#submit-cob-checks]

To prevent accidentally sending checks to unsupported payers, you can only perform a COB check within successful eligibility checks to supported COB payers.

To submit a new COB check through the Stedi portal:

1. Go to the [checks view](https://portal.stedi.com/app/healthcare/eligibility/checks).
2. Click the eligibility check for the patient you want to check for coordination of benefits. This must be a successful eligibility check for the patient's health plan. Failed checks with errors can't be used as the basis for COB checks.
3. Click **Actions** and select **Start COB check** to open the coordination of benefits check form. Stedi prefills the patient's information from the eligibility check.

After you submit the check, Stedi displays the response in JSON format. The response contains all the information you need to determine payer primacy and coverage details, but it won't be formatted in a visual table or summary view.

Visit [Interpret COB response](/providers/providers-cob-response) to learn how to understand the response and determine payer primacy.

## Follow up with eligibility checks [#follow-up-with-eligibility-checks]

Our COB data is updated weekly, and the response doesn't contain complete details about the patient's coverage with each health plan.

When Stedi finds overlapping coverage, we strongly recommend conducting follow-up [eligibility checks](/providers/providers-eligibility-checks) with each payer to verify coverage status and retrieve the patient's complete, up-to-date benefits information.

# 835 Electronic Remittance Advice (ERAs)
Source: https://www.stedi.com/docs/providers/providers-electronic-remittance-advice


An Electronic Remittance Advice (ERA) contains details about payments for specific services and explanations for any adjustments or denials. The payer only sends ERAs for accepted claims. If a claim is rejected in a 277CA, there's no adjudication or payment information to report.

## Transaction enrollment [#transaction-enrollment]

Processing ERAs always requires [transaction enrollment](/providers/providers-transaction-enrollment-intro) with the payer. Once you're enrolled, you'll receive all of your ERAs through Stedi, even if you submit some or all of your claims through another clearinghouse.

## Review 835 ERAs [#review-835-eras]

You can review 835 ERAs by filtering the full list or finding ERAs for a specific claim from its timeline.

### Filter ERAs [#filter-eras]

Go to the [claims view](https://portal.stedi.com/app/healthcare/claims) and click **835 ERAs** to review all 835 ERAs in your account. Available filters include:

| Filter                           | Description                                                                                                                                                                                                                                                                                                                                                                                    |
| -------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Processed date**               | When Stedi received the ERA.                                                                                                                                                                                                                                                                                                                                                                   |
| **Trace number**                 | The unique identifier the payer assigns to the ERA transaction. In X12 EDI, this is `TRN02` (Check or EFT Trace Number).<br /><br />You can use this value to link the ERA with the associated payment, if applicable. For example: When the payment is remitted by check, the trace number is the check number.                                                                               |
| **Total paid**                   | The total amount paid across all claims included in the ERA.                                                                                                                                                                                                                                                                                                                                   |
| **Payment date**                 | When the payer issued the payment.                                                                                                                                                                                                                                                                                                                                                             |
| **Payment method**               | The method used for payment (such as check or ACH).                                                                                                                                                                                                                                                                                                                                            |
| **Payer**                        | Payer name, ID, or alias. Refer to the [Payer Network](https://www.stedi.com/healthcare/network) for a complete list for each payer.                                                                                                                                                                                                                                                           |
| **Payee**                        | The payee's (billing provider's) name. Supports partial matching.                                                                                                                                                                                                                                                                                                                              |
| **Payee NPI**                    | The payee's (billing provider's) National Provider Identifier.                                                                                                                                                                                                                                                                                                                                 |
| **Payee Tax ID**                 | The payee's (billing provider's) Tax Identification Number.                                                                                                                                                                                                                                                                                                                                    |
| **PCN (Patient Control Number)** | A claim's PCN, sometimes referred to as the claim ID. Since an ERA can contain multiple claims, this returns ERAs where any claim matches the specified PCN. This is the same value you submitted on the original claim in:<ul><li>**CMS-1500 claim form:** **Box 26** (Patient's Account No.)</li><li>**X12 EDI:** `Loop 2300` (Claim Information) `CLM01` (Patient Control Number)</li></ul> |

### Find ERAs from a claim's timeline [#find-eras-from-a-claims-timeline]

You can also find ERAs for a specific claim from the claim's timeline:

1. Go to the [claims view](https://portal.stedi.com/app/healthcare/claims).
2. Click the associated claim to open its timeline.
3. Click **Find matching ERAs** in the side panel under the **PCN** to search for ERAs that match the claim's Patient Control Number (PCN). If no ERAs match, the ERA list will be empty.

### ERA details [#era-details]

Click an ERA to review its details. The **Overview** page contains key information about the ERA, including:

* Payer and payee information
* Total amount paid
* Payment date and method
* Details for all claims included in the ERA
* Adjustments applied to each claim

### View X12 EDI [#view-x12-edi]

Click **EDI** at the top of the ERA details page to review the raw X12 EDI for the transaction.

The EDI is displayed on the left and the specification is displayed on the right. As you hover over different parts of the EDI, Stedi highlights the corresponding part of the specification to help you understand what each part of the EDI means.

## Download ERA PDF [#download-era-pdf]

You can download a PDF version of an ERA from the Stedi portal:

1. Go to the [claims view](https://portal.stedi.com/app/healthcare/claims) and click **835 ERAs**.
2. Click the ERA to open its details page.
3. Click **Download PDF** at the top right.
4. In the download menu, select your preferences:
   * **Include Stedi logo in 835 ERA PDF**: Adds the Stedi logo to the PDF.
   * **Download each claim as a separate PDF**: Downloads one PDF for each claim included in the ERA. When the ERA contains multiple claims, the PDFs will be provided as a zip file. For example, if the ERA contains 5 claims, you'll download a zip file containing 5 separate PDFs.
5. Click **Confirm PDF download**.

You can also download a PDF for each claim individually. Click the three dots to the right of a claim in the **Claims** section and select **Download 835 ERA PDF for this claim**.

### Format [#format]

The PDF contains a human-readable version of the ERA, including payment details, adjustments, and explanations for each service line. It adheres to the Standard Paper Remittance (SPR) format required by the Centers for Medicare and Medicaid Services (CMS).

This is a PDF representation of the 835 ERA - it's not the same as an Explanation of Benefits (EOB) or an Explanation of Payment (EOP) that you may receive from the payer.

* **EOB:** A statement from a payer explaining how a medical claim was processed, including what was covered, denied, and the remaining patient responsibility. The patient receives an EOB after a claim has been adjudicated.
* **EOP:** A version of the EOB for the provider. It contains more information related to how the payer has adjudicated the claim. The provider receives the EOP after claim adjudication and payment are sent.
* **ERA:** An electronic file that details payment and claim adjustment information. The provider receives the ERA after the payer has adjudicated the claim and issued payment, typically at the same time the funds are deposited electronically.

## Duplicate ERAs [#duplicate-eras]

Payers typically only send one ERA per claim. However, they may occasionally retransmit another identical 835 ERA, so you should be aware of the potential for duplicates.

You can assume an ERA is a duplicate if the Check or EFT Trace Number is the same. In X12 EDI, this is in segment `TRN` (Reassociation Trace Number), element `TRN02` (Check or EFT Trace Number).

# Run eligibility checks
Source: https://www.stedi.com/docs/providers/providers-eligibility-checks


You can run both real-time and batch 270/271 eligibility checks in your account to verify a patient's insurance coverage and benefits.

You can also run a special kind of real-time eligibility check called a Medicare Beneficiary Identifier (MBI) lookup. MBI lookups allow you to retrieve benefits information from the Centers for Medicare and Medicaid Services (CMS) when you don't know the patient's MBI.

## Real-time eligibility checks [#real-time-eligibility-checks]

Real-time eligibility checks provide a response in seconds. They're ideal for in-person patient visits, telehealth appointments, and other scenarios where you need immediate information about a patient's coverage.

To run a new eligibility check:

1. Go to the [checks view](https://portal.stedi.com/app/healthcare/eligibility/checks) or [searches view](https://portal.stedi.com/app/healthcare/eligibility/searches).

2. Click **+ New eligibility check**. Stedi opens the simplified eligibility check form, which we recommend for most use cases.

   <img alt="Simplified eligibility check form" src="__img0" />

   If you need to submit a check with additional information, click **Swap to advanced form**. On the advanced form, click **Select fields** on the top right of the window. The **Select fields** modal opens, where you can add additional form fields, such as the provider's Social Security Number (SSN) or procedure codes.

   Check the boxes next to the fields you want to add to each section and click **Save selection**.

   <img alt="Select fields modal" src="__img1" />

3. Complete the form. Review [eligibility request fields](#eligibility-request-fields) for detailed instructions and tips for required fields. We especially recommend reviewing how to choose the right service type code (STC) or procedure code. This is **very** important for getting the best results from the payer.

4. Click **Submit**.

Stedi opens the **Overview** page for the eligibility check. If the check was successful, you can click **Benefits** to review the patient's benefits information.

<Tip>
  If the check failed, you can review the error code and retry the check with updated information. Visit [Troubleshoot failed eligibility checks](/providers/providers-eligibility-troubleshooting) for instructions on how to retry.
</Tip>

## MBI lookup [#mbi-lookup]

A Medicare Beneficiary Identifier (MBI) is a unique, randomly-generated identifier assigned to individuals enrolled in Medicare. You must include the patient's MBI in every eligibility check you submit to the Centers for Medicare and Medicaid Services (CMS).

When patients don't know their MBI, you can perform an MBI lookup instead of a standard eligibility check. You can run MBI lookups through the eligibility check form or through [bulk CSV upload](#batch-eligibility-checks).

### Types of MBI lookups [#types-of-mbi-lookups]

There are two types of MBI lookups you can perform with Stedi. For each, you'll use a special payer that tells Stedi to perform an MBI lookup for the patient in addition to a standard eligibility check.

| Type     | What's required                                                    | Payer                          |
| -------- | ------------------------------------------------------------------ | ------------------------------ |
| With SSN | first name, last name, date of birth, Social Security Number (SSN) | **CMS MBI Lookup**             |
| No SSN   | first name, last name, date of birth, U.S. state                   | **CMS MBI Lookup Without SSN** |

We recommend running MBI lookups **with** the patient's SSN whenever possible. When the SSN is present, the MBI lookup has a higher likelihood of successfully returning their MBI. MBI lookups with no SSN are a fallback option when the patient's SSN isn't available.

You don't need to include more patient demographic information than what's required, such as additional address data. It doesn't improve MBI lookup success rates.

### Run an MBI lookup [#run-an-mbi-lookup]

To run an MBI lookup:

1. Go to the [checks view](https://portal.stedi.com/app/healthcare/eligibility/checks) or [searches view](https://portal.stedi.com/app/healthcare/eligibility/searches&#x29; and click **+ New eligibility check**.

2. Click **Swap to advanced form**. The advanced form will allow you to add the additional fields required for an MBI lookup.

3. Construct an eligibility check request with the required patient demographic data. You don't need to include more than the required fields, such as extra address data. Extra demographic data won't improve lookup success rates.
   * **With SSN:** Include the patient's first name, last name, date of birth, and SSN.

     You'll need to click **Select fields** and check the box next to &#x2A;*Social Security Number (SSN)** under the **Subscriber** section. This adds the SSN field to the form.
     <img alt="Select SSN field" src="__img2" />

   * **No SSN:** Include the patient's first name, last name, date of birth, and U.S. state.

     You'll need to click **Select fields** and check the box next to **State** under the **Subscriber > Address** section. This adds the **State** field to the form. You can leave the rest of the address fields blank.
     <img alt="Select state field" src="__img3" />

4. Set the **Service type code** to `30` (Health Benefit Plan Coverage).

5. Set the **Trading partner service ID** to either:
   * **CMS MBI Lookup** for MBI lookups with SSN.
   * **CMS MBI Lookup Without SSN** for MBI lookups without SSN.

6. Enter the rest of the required information. Review [basic eligibility request fields](#basic-eligibility-request-fields) for detailed instructions about how to complete remaining form fields.

7. Click **Submit**.

Stedi uses the patient's demographic data and SSN to perform an MBI lookup. If there is a match, Stedi submits an eligibility check to CMS. Stedi returns a complete eligibility response from CMS for the patient and returns the patient's MBI as the subscriber's member ID.

Stedi automatically opens the **Eligibility search** overview page for the MBI lookup when it's complete.

<Tip>
  Medicare Advantage plans have their own unique member ID, which **isn't** returned in the MBI lookup response. You also shouldn't submit eligibility checks for Medicare Advantage plans to CMS (HETS) - you should submit them to the actual Medicare Advantage plan payer instead.
</Tip>

#### Outdated MBI error [#outdated-mbi-error]

Stedi's MBI lookup may rarely retrieve an outdated MBI for a patient. CMS may rotate an MBI for a member for various reasons at any time, such as to help protect against identity theft.

In these cases, the response will contain an `AAA` error with code `72` (Invalid/Missing Subscriber/Insured ID) *and* return a subscriber member ID, which is the outdated MBI.

<img alt="Outdated MBI error" src="__img4" />

## Batch eligibility checks [#batch-eligibility-checks]

Batch eligibility checks allow you to submit eligibility checks for multiple patients at once through CSV upload. We recommend using batch checks for bulk workflows that aren't time sensitive, such as monthly or weekly eligibility refreshes. You can submit batch eligibility checks and [MBI lookups](#mbi-lookup) through CSV upload.

### Create new CSV batch [#create-new-csv-batch]

To create a new CSV batch:

1. Go to the [Batch eligibility checks page](https://portal.stedi.com/app/healthcare/checks/batch).
2. Click **+ New batch from CSV**.
3. Enter a unique name for the batch. Stedi displays this name in the list of batch uploads. This name is for your reference only - we don't send it to payers.
4. (Optional) Click **Advanced options** to configure a custom **Retry duration** between 8 and 24 hours. This is the maximum number of hours that Stedi will retry checks in the batch that fail due to payer connectivity issues. The default is 8 hours.
5. Click **Create** to go to the CSV upload page for your new batch.

### Upload CSV file [#upload-csv-file]

On the CSV upload page for your batch:

1. Click **Download a template** to download the CSV template with the supported fields. You can also download it from this link: [template CSV file](/files/batch-eligibility-template.csv).

2. Populate the template with eligibility checks. Each row in the template represents one eligibility check. You can submit up to 10,000 checks per CSV file. The upload page contains detailed documentation for each possible field and recommendations for which fields to include for the best chance of success.

   <Note>
     You can also submit [MBI lookups](#mbi-lookup) through CSV upload. Set the `tradingPartnerServiceId` for each check to either **MBILU** (for MBI lookups with SSN) or **MBILUNOSSN** (for MBI lookups without SSN). Then, include the required patient demographic information for each lookup.
   </Note>

3. Click **+ Upload file** to upload your complete CSV file.

4. Click **Verify file** so Stedi can validate the data in each eligibility check. You can fix any errors and re-upload the CSV file as many times as needed. When the file is error-free, you'll be able to execute the batch.

5. Click **Execute batch** to send the eligibility checks to Stedi for processing.

Stedi begins processing the batch. Each eligibility check in the batch is stored in its own eligibility search. You can review the details of each check from the [Eligibility searches view](https://portal.stedi.com/app/healthcare/eligibility).

### Review batch progress [#review-batch-progress]

You can review the progress of submitted batches on the [Batch eligibility checks page](https://portal.stedi.com/app/healthcare/checks/batch). The page displays each CSV batch you've submitted, along with it's name, date created, status, and total items (number of eligibility checks in the batch).

* The batch status changes to **In progress** while Stedi is processing the batch.
* The batch status changes to **Completed** when Stedi has sent all checks in the batch to payers and received responses.
* Most batches complete in 15 to 30 minutes. However, Stedi retries checks that fail due to payer connectivity issues for up to the configured retry period, so it can take up to the end of the retry period for all checks in a batch to return results.

Click a batch to view its details, including the status of each check in the batch. Click any eligibility check to go to its details page.

From the batch details page, you can also download the original CSV input by clicking **Download** under **Original input file**.

## Eligibility request fields [#eligibility-request-fields]

For the best chance of success, start by sending the smallest possible set of fields in your eligibility checks. Adding extra data can lead to unnecessary rejections.

We recommend starting with the following information. Only include more if the payer requires it.

{/* prettier-ignore-start */}

| Form section                              | Instructions                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              |   |                                |                                                                                                                                                                                                             |
| ----------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | - | ------------------------------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Payer**, or trading partner service ID  | Select your payer from the provided list. Hover over **view details** to review a summary of the payer's various identifiers and open the full payer record in Stedi's [Payer Network](https://www.stedi.com/healthcare/network).                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         |   |                                |                                                                                                                                                                                                             |
| **Provider**                              | Most eligibility requests require the provider's name - either their first and last name (individual) or business name (organization) - and their National Provider Identifier (NPI). If you need to provide additional information, such as the provider's Social Security Number (SSN), click **Swap to advanced form** and then click **Select fields** to add additional fields to the request form.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  |   |                                |                                                                                                                                                                                                             |
| **Subscriber**                            | <ul><li>At a minimum, you must supply at least the subscriber's **Member ID**, **Date of birth**, or **Last name**. However, each payer has different requirements, so you should supply the fields necessary for each payer to identify the subscriber in their system. </li><li>When you supply the subscriber's member ID, first name, last name, and date of birth, payers are required to return a response if the member is in their database. That's why these are the default form fields.</li><li>If you need to run an MBI lookup with the subscriber's Social Security Number (SSN), click **Select fields** and check the box next to &#x2A;*Social Security Number (SSN)** under the **Subscriber** section. This adds the SSN field to the form.</li></ul>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  |   |                                |                                                                                                                                                                                                             |
| **Dependent**                             | A patient qualifies as a dependent for eligibility checks when they are listed as a dependent on the subscriber's insurance plan and the payer cannot uniquely identify the patient through information outside the subscriber's policy. If the patient has their own member ID (even if it only differs by a suffix like `0`), you must identify them in the **Subscriber** section instead. <ul><li>To add a dependent to the real-time eligibility check form, click **Select fields** and select **Dependents**.</li><li>You can only submit one dependent per eligibility check.</li><li> Most Medicaid plans don't support dependents - you'll almost always need to submit the child as a subscriber in the **Subscriber** section. Sending dependent information here for payers that don't support dependents will either cause an error, or the payer may return results for the subscriber instead.</li><li>We strongly recommend including the dependent's date of birth in the request when available because many payers return errors without it.</li><li>Enter the dependent's name exactly as written on their insurance card, if available, including any special or punctuation characters such as apostrophes, hyphens (dashes), or spaces.</li></ul> |   | **Trading partner service ID** | You must specify the payer.<ul><li>For real-time eligibility checks, select the payer from the dropdown list.</li><li>For MBI lookups, you must select **CMS MBI Lookup** from the dropdown list.</li></ul> |
| **Encounter**, service or procedure codes | You must include either a service type code (STC) or a procedure code and qualifier. This tells the payer what kinds of benefits information you're requesting. Most medical payers don't support procedure codes. Some dental payers do, but we recommend trying an STC first.<ul><li>We recommend STC `30` (Health Benefit Plan Coverage) to retrieve a patient's general medical benefits and `35` to retrieve a patient's general dental benefits.</li><li>We recommend submitting one STC per request, unless you've tested and are certain that the payer supports multiple.</li><li>When requesting benefits for specific services, you should test the STCs that seem most appropriate to determine which ones yield the most benefits information. Our STCs and procedure codes docs explain how.</li><li>By default, the real-time eligibility check form allows you to choose a **Service type code**. If you want to include a procedure code instead, click **Swap to advanced form** and then click **Select fields**. Select the boxes for the **Procedure code** and **Product or service ID qualifier** to add them to the form. Note that you can submit either an STC or a procedure code and qualifier - not both.</li></ul>                          |   |                                |                                                                                                                                                                                                             |
| **Encounter**, service dates              | Stedi populates today's date as the date of service by default.<ul><li>To add a date range, click **Swap to advanced form** and click **Select fields**. Under **Encounter**, select both the **Beginning date of service** and **End date of service** (date range).</li><li> We recommend submitting dates up to 12 months in the past or up to the end of the current month. Payers aren't required to support dates outside these ranges. However, some payers such as the Centers for Medicare and Medicaid Services (CMS) do support requests for dates further in the future - especially the next calendar month. Check the payer's documentation to determine their specific behavior.</li></ul>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |   |                                |                                                                                                                                                                                                             |

{/* prettier-ignore-end */}

## Patient information [#patient-information]

Follow this guidance to help payers find the patient in their system.

### Payer search requirements [#payer-search-requirements]

All payers are required to be able to search for patients using the following "bare minimum" subsets of information. They will return benefits information as long as they can find a unique match for the patient within their system.

For a subscriber:

* Member ID, first name, last name, date of birth
* Member ID, last name, date of birth
* Member ID, first name, last name

For a dependent:

* Subscriber member ID, first name, last name, date of birth
* Subscriber member ID, last name, date of birth
* Subscriber member ID, first name, last name

Of course, not all of this patient information is always available. For example, a patient may forget their ID card. In these instances, some payers may still be able to search with even less information, such as the patient's first name, last name, and date of birth. Contact us if you have questions about alternative search options for a particular payer.

### Dependents [#dependents]

The patient qualifies as a dependent for eligibility checks when:

1. The patient is listed as a dependent on the subscriber's insurance plan.
2. The payer cannot uniquely identify the patient through information outside the subscriber's policy.

When the patient meets these criteria, you should submit their information in the **Dependent** section of the form. Otherwise, you must submit their information in the **Subscriber** section instead.

For example, if the dependent has their own member ID number in the payer's database, you must identify them as a subscriber. This includes member IDs that differ only by a suffix, such as `01`, because the patient can still be uniquely identified.

#### Medicaid dependents [#medicaid-dependents]

Most Medicaid plans don't support dependents. However, some state Medicaid plans support eligibility inquiries for newborn children under 12 months old.

Children typically must be enrolled in Medicaid as a separate subscriber with their own unique member ID, even if they are legally the dependent of a parent who is a Medicaid plan member. Therefore, you'll almost always need to submit the child as a subscriber in the **Subscriber** section.

Sending dependent information to payers that don't support dependents will either cause an error, or the payer may ignore the information and return results for the subscriber instead.

### Patient names [#patient-names]

Note the following information and best practices when entering patient names:

* Enter the name exactly as written on the patient's insurance ID card (if available), including any special or punctuation characters such as apostrophes, hyphens (dashes), or spaces. If the patient's insurance ID card isn't available, enter the name exactly as written on a government-issued ID card. If a government ID card isn't available, enter the name exactly as given by the patient.
* Don't include a name prefix, title, rank, honorific, or academic degree in any field. These include Mrs., Dr., Hon., and PhD.
* Don't include a suffix or generation such as Jr. or III in the **First name** or **Last name** field. Put it in the separate **Suffix** field instead. Payers are supposed to automatically parse suffixes out of the last name, but Stedi can't guarantee that all payers will do this correctly.
* You can populate a middle name (or names) or initial in the **Middle name** field, but most payers ignore it when searching for the patient.
* Case doesn't matter. For example, JANE is equivalent to Jane.

The following are supported for patient names:

* Compound last and first names separated by spaces or hyphens such as Jean‐Claude or Smith Jones
* Apostrophized or elided names such as O'Connor or D'Amore
* Numbers like 3, however this typically indicates a data entry error

Some payers may have more specific requirements or restrictions that we don't cover in our docs. If you're receiving errors for a specific payer, we recommend consulting that payer's documentation for eligibility checks for additional guidance.

## CMS HETS Rules of Behavior [#cms-hets-rules-of-behavior]

All parties involved in eligibility transactions sent to the Centers for Medicare & Medicaid Services (CMS) eligibility system, called HETS, must comply with the [HETS Rules of Behavior](https://www.cms.gov/research-statistics-data-and-systems/cms-information-technology/hetshelp/downloads/eligibilitytransactionsysteminquiriesrulesofbehavior.pdf). Compliance is also required under our terms.

Review the Rules of Behavior before sending eligibility checks to CMS.

# Eligibility PDF
Source: https://www.stedi.com/docs/providers/providers-eligibility-pdf


Stedi generates a PDF with a summary of an eligibility check's request details and a user-friendly version of the benefits response.

If the response contains errors, the PDF displays them with possible resolutions. When an eligibility check returns benefits information, you can use the PDF to determine:

* whether the patient has active coverage with the health plan.
* whether a patient's health plan covers the requested services.
* patient responsibility amounts, such as co-pays and deductibles.
* whether prior authorization is required for specific services.

## Download the PDF [#download-the-pdf]

To download the PDF:

1. Go to the [eligibility searches view](https://portal.stedi.com/app/healthcare/eligibility) in the Stedi portal.
2. Click the eligibility search with the patient information you want to view.
3. Click the **Download PDF** icon at the top of the eligibility check's details page.

## PDF structure [#pdf-structure]

The PDF has the following primary sections.

### Summary [#summary]

For successful eligibility checks, the summary section at the top clearly indicates whether Stedi found *any* service type codes (STCs) or procedure codes with active coverage in the response. You can then check the [benefits tables](#benefits) to determine which specific services are covered.

The summary section also shows details about the subscriber, payer, and provider. This includes plan details such as when coverage starts, the plan dates, and the group name and number.

<img alt="PDF summary coverage found" src="__img0" />

If the eligibility check response contains errors, the summary section indicates that the check was **Failed** and lists the errors with possible resolutions.

<img alt="PDF summary errors" src="__img1" />

### Benefits [#benefits]

The **Benefits** section contains tables listing all the benefits information returned in the response. Each row in the table corresponds to a specific benefit for a specific service type code (STC) or procedure code.

The benefits are grouped in two ways:

* The first grouping mechanism is the patient's health plan. Many eligibility responses only contain benefits for a single health plan, but some responses include benefits for multiple plans. For example, if the patient has both a primary health plan and a dental plan, the PDF will contain separate sections for each plan.
* Within each health plan section, benefits are further grouped by STC and procedure code.

The following example shows the patient's benefits for STC `30` (Health Benefit Plan Coverage). Note that their plan name **E20** is at the top of the section. The PDF notes that this is **Plan 1 of 1**, meaning that the payer returned information about a single health plan for this patient.

<img alt="PDF benefits table" src="__img2" />

For each STC or procedure code, the columns in the table include:

| Column                | Description                                                                                                                                                                                                                                                                                                                        |
| --------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Type**              | The type of benefit, such as co-payment, deductible, or prior authorization requirement.                                                                                                                                                                                                                                           |
| **Coverage level**    | The level of coverage for the benefit, such as Individual or Family.                                                                                                                                                                                                                                                               |
| **Network indicator** | Whether the benefit applies to in-network or out-of-network providers. Note that this column only indicates whether the benefit applies to in-network or out-of-network providers in general. It doesn't indicate whether the requesting provider is in-network or out-of-network for the patient.                                 |
| **Coverage**          | The amount or details of the benefit. For rows with the **Statuses** type, this column lists whether the patient has active coverage for that STC or procedure code. For patient responsibility rows, this column lists the amount the patient is responsible for. For example, a co-payment row may list a $20 co-payment amount. |
| **Benefit**           | Additional details about the benefit. This column includes the plan type, places of service, whether prior authorization is required, and any messages from the payer about the benefit. For example, a co-payment row may include a message that says "waived if admitted to hospital."                                           |

There may be multiple benefits for the same STC and benefit type. For example, a patient may have different co-insurance amounts for in-network and out-of-network providers or for specific services within a broader STC. The **Messages** field contains notes from the payer, which typically list limitations or conditions that apply to the benefit.

In the following example, the patient has a $200 co-payment for STC `86` (Emergency Services), but the messages indicate that this co-payment is waived if the patient is admitted to the hospital.

<img alt="PDF messages example" src="__img3" />

### Request [#request]

The final **Request** section provides a human-readable version of the original 270 eligibility check request. This helps you remember what STCs and procedure codes you requested and compare that to the benefits the payer returned in the response.

<img alt="PDF request section" src="__img4" />

## Interpret the PDF [#interpret-the-pdf]

You can use the information in the PDF to answer important questions about the patient's coverage and financial responsibility for services.

### Does the patient have coverage? [#does-the-patient-have-coverage]

The PDF indicates at the top in the **Summary** section whether there was a service type code (STC) or procedure code with active coverage returned.

<img alt="PDF active coverage" src="__img5" />

Then, you can check to see if there's a **Statuses** row for the STCs or procedure codes you care about. Typically, only broad STCs (`30` and `35` for general medical and dental coverage) will have a status.

<img alt="PDF statuses" src="__img6" />

Quick reference:

* The patient has coverage when the status is **Active coverage** for the relevant STC or procedure code. You can also assume the patient has coverage when there is no status, but benefits are listed (such as co-pay or deductible amounts).
* The patient doesn't have coverage when the status is **Inactive** for an STC or procedure code. You can also assume the patient doesn't have coverage if there are no benefits listed or the payer returned a message indicating that the service isn't covered.

### What is the patient's financial responsibility? [#what-is-the-patients-financial-responsibility]

Once you've confirmed that the patient has coverage, you may want to understand their financial responsibility for services. For example, you may want to know their co-pay amount for an in-office visit or whether they've met their deductible.

Within each STC or procedure code section, the PDF includes rows for each type of patient responsibility.

The following example shows that for STC `83` (Infertility), the patient has a yearly out-of-pocket maximum of $7,500 for individual coverage and a $15,000 out-of-pocket maximum for family coverage. They also have a co-payment of $50 for in-office visits for both in and out-of-network providers.

<img alt="PDF patient responsibility" src="__img7" />

### Is the provider in- or -out-of-network? [#is-the-provider-in--or--out-of-network]

Unfortunately, you can't reliably answer this question from a standard eligibility response. That means you also can't reliably answer this question from the generated PDF.

Payers typically don't explicitly indicate whether the requesting provider is in- or out-of-network for the patient (though there are some exceptions). The Network indicator field in the table only indicates whether the benefit applies to in-network or out-of-network providers in general. It doesn't tell you whether the requesting provider is in- or out-of-network for the patient.

Some payers do provide additional information about whether the requesting provider is in- or out-of-network. They may do this through either freeform messages or selective inclusion of benefits in the response.

For example, some payers only return out-of-network benefits if the requesting provider is out-of-network. Likewise, if the provider is in-network, they only provide in-network benefits. Stedi doesn't have a complete list of payers that selectively include or exclude benefits based on the provider's network status.

**The most reliable way to determine network status is to check directly with the payer or the provider.** Note that payers may have different networks for different health plans, such as employer-sponsored plans versus Medicare Advantage, and these networks may have different contact paths.

### Is prior authorization required? [#is-prior-authorization-required]

Prior authorization (also called pre-authorization or pre-certification) is a requirement that the patient or their provider must get approval before a payer will cover specific services, procedures, medications, or devices. Without it, the payer may deny claims.

If the payer provides prior authorization information in the eligibility response, it will be listed in the **Benefit** column for that service or procedure. The payer may also send messages about prior authorization rules.

If the payer doesn't provide prior authorization information for a service or procedure, you can assume that prior authorization isn't required.

In the following example, the patient requires prior authorization for both STC `A7` (Psychiatric - Inpatient) and STC `A8` (Psychiatric - Outpatient) services. This rule applies to both in-network and out-of-network providers.

<img alt="PDF prior authorization" src="__img8" />

# Troubleshoot failed eligibility checks
Source: https://www.stedi.com/docs/providers/providers-eligibility-troubleshooting


You can edit the request details for failed eligibility checks and resubmit them as many times as you need to get a successful response. For some types of errors, you can use the Stedi Agent to troubleshoot automatically.

## Review eligibility check errors [#review-eligibility-check-errors]

The [Eligibility check errors page](https://portal.stedi.com/app/healthcare/checks/reports/errors) shows a list of recent eligibility check `AAA` error codes. These are errors the payer returns when they reject your eligibility request. They specify the reasons for rejection and any recommended follow-up actions.

To go to this page, click **Errors** under **Eligibility** in the side navigation.

<img alt="Eligibility check errors page" src="__img0" />

The errors are grouped by error code, and you can filter the list by Payer ID. You can look up any payer's ID in the [Payer Network](https://www.stedi.com/healthcare/network). Click on an error code to review a list of all the instances of that error.

This page helps you identify patterns in eligibility check failures. For example, if you see a large number of errors with code `75` (Subscriber/Insured Not Found) for a specific payer, you might want to investigate whether there are common issues with the patient data being submitted to that payer.

## Can't find payer ID [#cant-find-payer-id]

You can use Stedi Agent to identify the correct payer ID for eligibility checks. This is helpful when you're unsure which payer ID to use based on the insurance information on the patient's card.

To identify a payer from a member card:

1. Go to the Stedi Agent [**Chats** page](https://portal.stedi.com/app/healthcare/chats) in the Stedi portal.
2. Click **New chat** and select the **Upload member ID card** option.
3. Upload a photo or scan of the front of the patient's insurance member card.
4. Review the results. The agent analyzes the card and either:
   * Successfully maps the information on the insurance card to a payer in Stedi's [Payer Network](https://www.stedi.com/healthcare/network). In this case, the agent returns information about the matching payer, including the payer's primary payer ID, Stedi payer ID, operating states, and supported transactions.
   * Indicates that it cannot read the information from the card. Try taking a clearer picture and resubmitting.
   * Indicates that it cannot determine the payer ID. Contact Stedi support.

## Payer unable to find patient [#payer-unable-to-find-patient]

Sometimes, a payer can't return benefits information for a patient even when the patient exists in their system. This problem can occur for a couple reasons.

### Multiple matching records [#multiple-matching-records]

Payers can have multiple records of patients with the same name and date of birth. The payer cannot return benefits information unless they are able to identify a unique match within their system.

To avoid this issue, we recommend:

* Include all of the demographic information available for a patient.
* Include the patient's member ID, if available.

### Information discrepancies [#information-discrepancies]

There can be discrepancies between the information the provider has collected from the patient and the record the payer has in their system. These discrepancies can lead to issues returning a patient, even though a match exists. Some examples include differences in spelling the patient's name, using a nickname instead of the full name ("Nick" vs. "Nicolas"), and accidentally transposing numbers in the date of birth.

If a request fails to return the expected member in the response, we recommend progressively sending additional eligibility check requests with fewer patient identity and demographic data elements, or different combinations of those. This allows you to identify and handle cases where there are data errors or discrepancies between payer and provider data.

### Name mismatches [#name-mismatches]

If the payer fails to find a matching plan member due to a name mismatch, the `errors` array in the response typically has the `code` set to one of the following values:

* `65`: Invalid/Missing Patient Name
* `67`: Patient Not Found
* `73`: Invalid/Missing Subscriber/Insured Name
* `75`: Subscriber/Insured Not Found

These error codes are set by the payer, not by Stedi, so it's possible that other error codes could be returned.

Resolving the error may require trying different name variations until the check is successful.

* Replace any nickname or shortened name with the full legal name, for example "Robert" instead of "Bob".
* Replace any non-English or accented characters (letters with diacritical marks) such as "Ñ" or "é" with the closest equivalent within the character restrictions. Stedi automatically replaces most such characters with the usual closest equivalent but this might not match the payer's record. For example, the character "Đ" could be transliterated to "D" or "J" depending on the romanization system used.
* For compound names try using only one or the other part. You can also try try removing the separator, or changing the separator from hyphen to space, or vice versa. Some payers may ignore special or separator characters when performing name searches.
* If the patient has recently changed their name, for example due to marriage, then the name stated by the patient or printed on their ID card might not match the payer's record. Try both the current and previous name.

## Retry failed eligibility checks [#retry-failed-eligibility-checks]

When an eligibility check fails, you can edit the request details in the portal and resubmit it until you get a successful response. There are three ways to retry a failed eligibility check: using the [Stedi Agent](#retry-with-the-stedi-agent), [manually resubmitting](#manually-edit-and-retry) the request, or using [Debug view](#iterate-in-debug-view).

<Tip>
  For information about common eligibility check errors and recommended resolutions, review [Payer unable to find patient](#payer-unable-to-find-patient).
</Tip>

### Retry with the Stedi Agent [#retry-with-the-stedi-agent]

The Stedi Agent can troubleshoot and resolve common recoverable eligibility check errors automatically. To use it, you must be at least an [Operator](/providers/providers-account-settings#assign-member-roles) role within your Stedi account.

To resolve a failure with the Stedi Agent:

1. Go to the [checks view](https://portal.stedi.com/app/healthcare/eligibility/checks) or [searches view](https://portal.stedi.com/app/healthcare/eligibility/searches).
2. Hover over a failed check or search to reveal the **Resolve with Stedi Agent** button. Only checks and searches with common recoverable errors will show this button. If a check or search doesn't have this option, you'll need to retry it manually.
   <img alt="Stedi Agent retry button" src="__img1" />
3. The Stedi Agent opens a side panel in [Debug view](#debug-view).
4. The Stedi Agent analyzes the eligibility request and works through best practice recovery strategies based on the error type. For example, if the payer returned an error code `75` (Subscriber/Insured Not Found), the agent may try different combinations of patient data or adjust the name format to find a match in the payer's system.

Each time the agent retries the eligibility check, it stores the new request in the same eligibility search record and it shows up in Debug view in real time. This allows you to see the history of attempts and the progression of the agent's troubleshooting efforts.

The agent only accesses data from the eligibility search it's working on. It can't access data from other searches, customers, or systems.

Please note:

* The Stedi Agent is available on all paid Stedi plans at no additional cost beyond those for related API calls.
* The agent is assistive. Outputs can be incorrect or incomplete. Verify all responses before taking any action based on them.
* You are responsible for any actions you instruct or authorize the AI service to take, including generating billable requests on your behalf.

You can review past recovery attempts with Stedi Agent from the [Chats page](https://portal.stedi.com/app/healthcare/chats). These attempts are read only - you won't be able to send chat messages to the agent.

### Manually edit and retry [#manually-edit-and-retry]

To manually resubmit an eligibility check:

1. From the [checks view](https://portal.stedi.com/app/healthcare/eligibility/checks) or [searches view](https://portal.stedi.com/app/healthcare/eligibility/searches), click the eligibility check or search you want to troubleshoot to view its details.
2. Click **Actions > Edit and retry**.
3. Update the request details as needed, and click **Submit**.

You'll know the retry was successful when the [status of the eligibility search](/providers/providers-eligibility-views#search-statuses) is either `Active` or `Inactive`. If the status of the eligibility search is still `Failed`, you may want to try resolving in [Debug view](#iterate-in-debug-view) or using the [Stedi Agent](#retry-with-the-stedi-agent), if available.

### Iterate in Debug view [#iterate-in-debug-view]

Debug view is a workspace where you can systematically troubleshoot failed eligibility checks until you receive a successful response from the payer. For example, first you might try swapping the patient's nickname (Dave) for their full name (David) to see if that returns benefits information. In the next iteration, you might try submitting the request with a different service type code or dropping the date of birth.

Debug view shows all past iterations of the eligibility check and highlights the differences between each new version of the request. You can also draft and submit new requests directly from this page. This format helps you understand what you've already tried and quickly iterate on failed requests.

<img alt="debug view" src="__img2" />

To troubleshoot eligibility checks in Debug view:

1. From the [checks view](https://portal.stedi.com/app/healthcare/eligibility/checks) or [searches view](https://portal.stedi.com/app/healthcare/eligibility/searches), click the eligibility check or search you want to troubleshoot to view its details.
2. Click **Actions > Debug** to enter Debug view.
3. Click **+ Add draft** to create a new draft request. Stedi pre-populates the draft with the details from the most recent eligibility check.
4. Update the draft request as needed. Use the **Edit columns** list to show or hide specific fields in the request.
5. Click the green arrow when you're ready to submit the updated eligibility check draft.

Stedi runs the check and moves it to the list of **Past checks**. Stedi highlights the differences between it and other past checks so you can see a clear record of your troubleshooting efforts. You can repeat this process as many times as needed to get a successful response.

## CMS attestation required [#cms-attestation-required]

CMS requires providers to complete attestation (also called HETS EDI Enrollment) before running Medicare eligibility checks. This requirement applies to traditional Medicare only, not Medicare Advantage (Part C) or Part D plans.

If you submit a Medicare eligibility check without completing attestation, CMS rejects the request with an error code `41` (Authorization/Access Restrictions).

To resolve this error, complete the [CMS eligibility enrollment requirement](/providers/providers-submit-enrollment-requests#cms-eligibility-enrollment) for the billing NPI. Attestation takes approximately 5-15 minutes per NPI.

# Eligibility views
Source: https://www.stedi.com/docs/providers/providers-eligibility-views


The Stedi portal provides two views for tracking eligibility checks. You can navigate to each view from the side navigation.

* **[Checks](https://portal.stedi.com/app/healthcare/eligibility/checks)** - Shows individual eligibility check attempts. Every attempt appears as a separate row. If a check is retried, the retry appears as its own row.
* **[Searches](https://portal.stedi.com/app/healthcare/eligibility/searches)** - Groups all retry attempts for the same check into a single record, called an eligibility search.

## Checks view [#checks-view]

The [checks view](https://portal.stedi.com/app/healthcare/eligibility/checks) shows individual eligibility check attempts. For example, if you submit a check for patient Jane Doe that initially fails and then retry to get successful results, the initial attempt and the retry appear as separate checks in the list.

You can use the checks view to:

* Check the status of individual eligibility check attempts. For example, you may want to reference the results of an eligibility check that you ran earlier in the day.
* Identify patterns in check failures. For example, if you filter by a specific payer and find that checks for all patients within the last hour have failed, the payer may be experiencing an outage.

Eligibility checks are sorted by **Processed date**, with the most recent checks appearing first.

<img alt="Eligibility checks view" src="__img0" />

### Filter [#filter]

You can filter eligibility checks by the following criteria:

{/* prettier-ignore-start */}

| Filter             | Description                                                                                                                         |
| ------------------ | ----------------------------------------------------------------------------------------------------------------------------------- |
| **Processed date** | A date range for when Stedi processed the eligibility check.                                                                        |
| **Results**        | By the check result status (Active, Inactive, Investigate, or Failed).                                                              |
| **Member ID**      | By the patient's member ID.                                                                                                         |
| **Payer**          | By a Payer ID or alias in the [Payer Network](https://www.stedi.com/healthcare/network) or a payer's business name (such as Cigna). |
| **Provider NPI**   | By the National Provider Identifier (NPI) of the requesting provider.                                                               |
| **Error code**     | By the AAA code returned by the payer. For example, `42` errors indicate a connectivity issue.                                      |
| **Search ID**      | By the ID of the eligibility search containing the check.                                                                           |

{/* prettier-ignore-end */}

### Check result [#check-result]

Each eligibility check can have one of the following results:

{/* prettier-ignore-start */}

| Status          | Description                                                                                                                         |
| --------------- | ----------------------------------------------------------------------------------------------------------------------------------- |
| **Active**      | The payer's response contains an active eligibility and benefit type.                                                               |
| **Inactive**    | The payer's response doesn't contain an active eligibility and benefit type.                                                        |
| **Investigate** | The payer returned an unexpected eligibility or benefit type code. Review the response and contact the payer if you have questions. |
| **Failed**      | The payer returned an error code in the response. Review the error code and retry the eligibility check.                            |

{/* prettier-ignore-end */}

### Check details [#check-details]

Click any check to view its details, including the check overview, benefits information (if present), and raw request and response data.

<img alt="Eligibility check overview page" src="__img1" />

From an individual eligibility check's detail page, you can go to the associated [eligibility search](#searches-view) to review all related attempts. Click **View search** to open the search. If the search contains multiple checks, the button shows the count of related checks.

## Searches view [#searches-view]

The [searches view](https://portal.stedi.com/app/healthcare/eligibility/searches) displays a list of eligibility searches. An eligibility search is a container for retry attempts of a particular eligibility check.

When you submit an eligibility check through any method, Stedi creates a new eligibility search record. Every time you retry that eligibility check, Stedi stores the retry details within the existing eligibility search. This creates a clear timeline of troubleshooting efforts for failed requests.

You can use the searches view to:

* Track the full retry history for a specific patient's eligibility check. For example, you can see all troubleshooting attempts made to resolve a failed check for patient Jane Doe and track what you changed for each attempt.
* View the overall status of an eligibility check based on the highest-priority result. An [eligibility search's result](#search-result) is based on the best outcome achieved across all retry attempts.

Eligibility searches are sorted by the date of the original eligibility check within the eligibility search, with the most recent listed first.

<img alt="Eligibility searches view" src="__img2" />

### Filter [#filter-1]

You can filter eligibility searches by the following criteria:

{/* prettier-ignore-start */}

| Filter           | Description                                                                                                                                                                                                                                                                                                                                        |
| ---------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Error code**   | By the AAA code returned by the payer. For example, `42` errors indicate a connectivity issue.                                                                                                                                                                                                                                                     |
| **Payer**        | By a Payer ID or alias in the [Payer Network](https://www.stedi.com/healthcare/network) or a payer's business name (such as Cigna).                                                                                                                                                                                                                |
| **Status**       | By Active, Inactive, Investigate, and Failed.                                                                                                                                                                                                                                                                                                      |
| **Date**         | A date range for the submission of the initial eligibility check within a search. For example, a filter beginning on October 1st would only include eligibility searches with an initial submission on or after October 1st. It would *not* include an eligibility search with an initial submission on September 30th and a retry on October 1st. |
| **Provider NPI** | By the National Provider Identifier (NPI) of the requesting provider.                                                                                                                                                                                                                                                                              |

{/* prettier-ignore-end */}

### Search result [#search-result]

The result of an eligibility search is determined by the **highest-priority check** among all checks in the search. Stedi uses the following priority order: **Active → Inactive → Investigate → Failed**. If multiple checks share the same priority result, the most recent check determines the search result.

**Example:** A search contains three sequential checks: first a Failed check, then an Active check, and finally another Failed check. The search result is `Active` because Active has the highest priority, even though it's not the most recent check.

This priority logic also applies to all search-level data displayed in the Eligibility searches view, including patient information, payer details, service type codes, and error metadata. All of this data comes from the highest-priority check, not necessarily the most recent check.

An eligibility search can have one of the following results:

{/* prettier-ignore-start */}

| Status          | Description                                                                                                                         |
| --------------- | ----------------------------------------------------------------------------------------------------------------------------------- |
| **Active**      | The payer's response contains an active eligibility and benefit type.                                                               |
| **Inactive**    | The payer's response doesn't contain an active eligibility and benefit type.                                                        |
| **Investigate** | The payer returned an unexpected eligibility or benefit type code. Review the response and contact the payer if you have questions. |
| **Failed**      | The payer returned an error code in the response. Review the error code and retry the eligibility check.                            |

{/* prettier-ignore-end */}

### Search details [#search-details]

Click any search to view its details, including the search overview and a complete history of all check attempts.

<img alt="Eligibility search details page" src="__img3" />

From a search detail page, you can view all individual checks within the search to see the progression of retry attempts. Click any check to see its full details, including benefits information (if present), and the raw request and response data.

# Find patient insurance
Source: https://www.stedi.com/docs/providers/providers-insurance-discovery


Eligibility checks verify a patient's coverage with a specific payer. But what if you don't know the patient's insurance details or you're not sure whether they have coverage at all? In these situations, you can use an insurance discovery check to search for a patient's active coverage using only their demographic data.

Insurance discovery checks return an array of coverages along with subscriber details and benefits information. These coverages may be active or inactive, and there may be multiple of each type. If an insurance discovery check returns active coverage for the patient, you don't need to perform a follow-up eligibility check. The results include the same benefits information you'd get from running an eligibility check with the payer.

## Use cases [#use-cases]

If you have all the patient's demographic details (first name, last name, date of birth, member ID) and know the payer, running a standard eligibility check with that payer is always the most cost-effective and reliable path. Insurance discovery is the best option if running a standard eligibility check isn't possible.

You may need to perform an insurance discovery check when:

* You don't know the payer, such as when a patient doesn't have their insurance card or can't provide insurance details in an urgent care situation.
* One or more eligibility checks failed with an AAA `75` (Subscriber Not Found) or similar error.
* The patient's information is incomplete or outdated, such as when the patient can't provide their member ID.
* The coverage on file is no longer active, such as when a member changes employers or loses coverage.

The most common workflows for eligibility checks and insurance discovery are patient intake and claims submission. You can also use insurance discovery checks during revenue recovery. The following flowchart shows how insurance discovery works as part of these workflows:

<img alt="Insurance discovery workflow" src="__img0" />

For patients who are likely covered by Medicare, such as those 65 or older, an [MBI lookup](/providers/providers-eligibility-checks#mbi-lookup) is a targeted alternative to an insurance discovery check. An MBI lookup returns the patient's Medicare Beneficiary Identifier (MBI) and, if found, the patient's complete eligibility response from Medicare. You can run MBI lookups using only the patient's demographic information and (optionally) Social Security Number (SSN).

## Usage notes [#usage-notes]

* **Match rates vary**: Insurance discovery checks aren't guaranteed to return a patient's active health plans 100% of the time - especially when the request doesn't include key demographic information like the patient's state or Social Security Number (SSN). Although unlikely, false positives are possible, so you're ultimately responsible for matching results to your own records.
* **Dental and vision use cases aren't supported**: Insurance discovery checks only reliably identify active medical coverage. Some payers may return dental coverage (service type code `35`) or vision coverage (service type code `AL`) in their response, but insurance discovery checks won't return results for dental-only or vision-only payers even if the patient has coverage. Don't use insurance discovery for dental or vision use cases.
* **Coverage is relative to service dates**: Insurance discovery checks can only return active coverage for the service dates in the request. For example: A patient starts a new job, and coverage with their new employer starts through Cigna in March 2026. Previously, they had active coverage through UnitedHealthcare (UHC). If you submit an insurance discovery check for a date of service in February 2026, and it succeeds, Stedi returns active coverage for UHC and no coverage for Cigna.
* **No payer primacy**: Insurance discovery checks can't determine payer primacy. You must either run a coordination of benefits (COB) check or use your own internal logic to determine whether the patient has active coverage with additional payers and which payer is responsible for paying claims (primacy).
* **Response time**: The p50 latency is \~3.5 seconds and the p90 latency is \~13 seconds. If the discovery check has not completed after 120 seconds, it returns a `PENDING` state, and you can retrieve the final results asynchronously.

## How insurance discovery works [#how-insurance-discovery-works]

<Steps>
  <Step title="Submit insurance discovery check.">
    Submit an insurance discovery check through the [Create insurance discovery check form](https://portal.stedi.com/app/healthcare/insurance-discovery/create) in the Stedi portal.

    Provide as much patient demographic information as possible, such as first name, last name, DOB, state, and SSN, to increase the chances of finding matching coverage. You'll also include information like the provider's NPI and the date of service, similar to an eligibility check.
  </Step>

  <Step title="Stedi searches for active coverage.">
    Stedi uses the supplied information - alongside its proprietary logic - to find coverage. This process usually takes between 3.5s and 13s.
  </Step>

  <Step title="Receive results.">
    Stedi returns an array of coverages along with subscriber details and benefits information. Always review the results to ensure that the returned subscriber information matches the patient's demographic information. These coverages could be active or inactive, depending on what the payer supplied.

    * If there's a match, you can use the benefits information to determine the patient's eligibility for services. Since the coverage result comes directly from the payer's 271 response, you don't need to perform a follow-up eligibility check, as the insurance discovery response includes all the necessary benefits information.
    * If you need to change the date of service or service type code (STC), run a standard eligibility check with the exact demographic information the insurance discovery check returned.
  </Step>
</Steps>

## Run insurance discovery checks [#run-insurance-discovery-checks]

You can run insurance discovery checks in the Stedi portal.

### Transaction enrollment [#transaction-enrollment]

[Transaction enrollment](/providers/providers-transaction-enrollment-intro) isn't required for insurance discovery, but we do strongly recommend it. Enrollment lets Stedi run Medicare Beneficiary Identifier (MBI) lookups as part of the discovery check in addition to checks to other large payers that require enrollment, improving your results.

To enroll, submit an enrollment request for the Stedi Insurance Discovery payer ([payer ID: `DISCOVERY`](https://www.stedi.com/healthcare/network?page=0\&search=disco\&entry=UQKWC)):

1. If you don't already have a provider record in Stedi, create one with the information required for enrollment. Visit [Submit enrollment requests](/providers/providers-submit-enrollment-requests) for instructions.
2. Submit an enrollment request for **Real-time eligibility checks** using `DISCOVERY` as the payer ID (Stedi Insurance Discovery).

#### Medicaid Provider ID [#medicaid-provider-id]

A Medicaid Provider ID is a unique identification number that state Medicaid programs assign to healthcare providers when they enroll. It's different than a provider's National Provider Identifier (NPI), which the federal government assigns. If a provider works in multiple states, they'll have different Medicaid IDs for each state.

Medicaid Provider IDs aren't required for transaction enrollment with Stedi, but they can enhance insurance discovery check results for certain payers. To add Medicaid Provider IDs to transaction enrollment requests, email [enrollments@stedi.com](mailto:enrollments@stedi.com) with a CSV file containing the NPI and Medicaid ID(s) for each provider.

Many state Medicaid agencies have a provider lookup tool you can use to find a provider's Medicaid Provider ID. For example, providers practicing in Texas can use the [Texas Medicaid & Healthcare Partnership Provider lookup tool](https://opl.tmhp.com/) to search for enrolled providers. You can also call the state Medicaid agency to request a provider's ID.

### Submit check [#submit-check]

To submit an insurance discovery check:

1. Go to the [insurance discovery check form](https://portal.stedi.com/app/healthcare/insurance-discovery/create).
2. Enter the provider's NPI.
3. Enter the patient's [demographic information](#required-patient-information). Provide as much information as possible to increase the chances of finding matching coverage.
4. Click **Submit**.

The insurance discovery check can take up to 2 minutes to complete.

<Note>
  Unlike eligibility checks, Stedi doesn't display historical insurance discovery checks in the portal for review. If you leave the results page, you'll need to run the check again.
</Note>

### Required patient information [#required-patient-information]

Provide as much patient demographic information as possible when submitting insurance discovery checks. The more information you provide, the more likely Stedi is to find matching coverage.

#### Minimum required [#minimum-required]

At a minimum, you must provide the patient's:

* First name
* Last name
* Date of birth (DOB)

#### Recommended [#recommended]

We strongly recommend providing as much of the following additional information as possible:

* State from the current address or previous addresses. This ensures that Stedi's insurance discovery logic finds localized, relevant payers. Without the state, Stedi can only determine coverage from the large, national payers.
* Social Security Number (SSN). The patient's full SSN is best, but even the last 4 digits of the SSN can help narrow down matching coverage.

## Review results [#review-results]

After submitting an insurance discovery check, Stedi displays the results. You can toggle between matching coverages (if available). Each potential match in the results includes information about the following, when available:

* **Payer and plan:** Payer name, plan name, and plan/eligibility dates
* **Subscriber:** Name, date of birth, member ID, address, and gender
* **Benefits:** Switch to the **Benefits** tab to review a table containing details about the patient's benefits, including the service type codes with active coverage and patient responsibility such as copay and deductible amounts

### **Important:** Verify the match [#important-verify-the-match]

Always verify that the returned subscriber or dependent information matches the demographic information you submitted for the patient. Pay special attention to:

* **Name matching** - The patient's name must match, though slight variations (like hyphenated last names) may appear.
* **Date of birth** - Must match exactly.
* **Address** - Must match or be a previous address.

If the information matches, you can use the benefits details to understand the patient's coverage. You don't need to run a follow-up eligibility check since the insurance discovery response includes the same benefits information.

### No matches [#no-matches]

Insurance discovery checks can return zero matches for a patient even when they have active coverage.

Common reasons for zero matches include:

* Recommended demographic data, like state or SSN, was missing from the request. Provide as much [patient demographic information](#required-patient-information) as possible to increase the chances of finding matching coverage.
* The patient's data doesn't exactly match what the payer has on file. For example, the patient demographics in the request don't match the patient's legal name or date of birth.
* The payer that the patient has doesn't support real-time eligibility checks, which makes it impossible for Stedi to determine coverage.
* The patient has coverage with a payer that supports eligibility checks, but Stedi's insurance discovery system couldn't find the payer.

We're always looking for feedback. If you know the patient has coverage and determined the payer through other means, reach out to Stedi's support team for further investigation.

# Manage enrollment requests
Source: https://www.stedi.com/docs/providers/providers-manage-transaction-enrollments


You'll get notifications each time a transaction enrollment request status changes or there is new information for you to review. You can also track and manage enrollment requests from within your Stedi account.

## Monitor enrollment status [#monitor-enrollment-status]

You can track the status of your transaction enrollment requests from the [Enrollments page](https://portal.stedi.com/app/healthcare/enrollments) in your account.

Click an enrollment request to view its details, including:

* The provider and payer associated with the enrollment.
* The transaction types included in the enrollment.
* The current status of the enrollment.
* Any notes or instructions from Stedi or the payer.
* The history of status changes and actions taken on the enrollment.
* Enrollment documents, such as signed PDF forms.

### Enrollment statuses [#enrollment-statuses]

An enrollment request can have one of the following statuses:

<img alt="Transaction Enrollment statuses" src="__img0" />

{/* prettier-ignore-start */}

| Status                     | Description                                                                                                                                                                                                                                     |
| -------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| DRAFT                      | You are still editing the record and it has not been submitted to Stedi.                                                                                                                                                                        |
| STEDI\_ACTION\_REQUIRED    | You have submitted the enrollment and it is ready for Stedi to begin processing.                                                                                                                                                                |
| PROVIDER\_ACTION\_REQUIRED | The enrollment requires action from the healthcare provider to proceed, such as providing additional documentation. Stedi will add a note to your enrollment request with clear instructions.                                                   |
| PROVISIONING               | Stedi has begun the process of completing the enrollment with the payer.                                                                                                                                                                        |
| LIVE                       | The enrollment process is complete, and the specified provider can begin exchanging the listed transaction types with the payer.                                                                                                                |
| REJECTED                   | The payer rejected the enrollment. Common reasons for rejection include incorrect details in the request and that the provider is not credentialed with the payer. Customer support will contact you with reasons for rejection and next steps. |
| CANCELED                   | The enrollment has been terminated per customer or provider request. You can only [cancel enrollments](#cancel-enrollments) that are in `DRAFT`, `STEDI_ACTION_REQUIRED`, or `PROVIDER_ACTION_REQUIRED` status.                                 |

{/* prettier-ignore-end */}

### Notifications [#notifications]

Stedi sends in-app notifications and emails when a transaction enrollment request changes status to **PROVISIONING**, **PROVIDER ACTION REQUIRED**, **LIVE**, or **REJECTED**. You can manage your [notification preferences](/providers/providers-account-settings#notification-preferences) to control which notifications you receive.

* **In-app notifications:** You'll receive an in-app notifications for these status changes. Each notification includes links to the associated enrollment requests where you can review required tasks, notes, and other details.
* **Email notifications:** Once an hour, Stedi checks for enrollment request status changes. If there are updates, Stedi sends a batched notification email with a summary of all enrollment request updates.

Stedi sends notifications to the address designated as the **Stedi contact person** for the enrollment. This is typically the email associated with the Stedi account that created the enrollment request, and it may differ from the provider's designated contact.

If you aren't receiving notifications for enrollment request updates, contact Stedi support through our [Contact us form](https://www.stedi.com/contact) or your designated Slack or Teams channel.

### Rejected enrollments [#rejected-enrollments]

In rare cases, the enrollment status might be set to `REJECTED` if the payer denies the enrollment request. Rejection can happen for many reasons, but the most common are:

* You aren't credentialed with the payer. If a payer rejects your transaction enrollment request with a message indicating the provider is "not on file" or "not recognized," it likely means you haven't completed credentialing and payer enrollment with that payer. You'll need to contact the payer and complete their credentialing process before you can successfully enroll for transactions through Stedi.
* There was incorrect data in the enrollment submission.

If an enrollment is rejected, Stedi puts a note on the enrollment request explaining the reason and how to resolve it. Contact Stedi support with any additional questions.

## Manage enrollment tasks [#manage-enrollment-tasks]

Tasks are actions that either the provider or Stedi need to complete to move the enrollment process forward.

When there's a new task that requires you to take action, Stedi adds a task to the enrollment request with instructions and sets the enrollment status to **Provider Action Required**. You'll [receive a notification](#notifications) that there's a new task to complete.

Stedi is automatically notified when you complete a task, and the enrollment process continues.

### Task types [#task-types]

Tasks fall into three categories:

* **Follow instructions:** Complete a specific action, such as logging into a payer portal or contacting a department. The task includes instructions explaining what to do.
* **Provide information:** Supply specific information or confirmation to Stedi. The task describes what information is needed.
* **Provide documentation:** Upload PDF documentation related to the enrollment.

When a task requires documentation, Stedi may ask you to:

* **Complete a template:** Stedi provides a PDF template for you to download, fill out, and upload back to Stedi.
* **Upload supporting documentation:** Stedi asks you to provide a document you already have, such as a W-9 form or voided check.

### Complete tasks [#complete-tasks]

You can review and manage tasks at the top of the enrollment request's details page in the Stedi portal. You must have the [Operator role](/providers/providers-account-settings#assign-member-roles) or above to complete enrollment tasks.

Once you've taken the required action, check the box next to the task to mark it as complete. Stedi is automatically notified when you complete a task, and the enrollment process continues.

<img alt="Complete enrollment task" src="__img1" />

## Manage enrollment documents [#manage-enrollment-documents]

You can upload documents through [tasks](#task-types) Stedi assigns on the enrollment request. Stedi may also upload documentation throughout the enrollment process. You can review, download, or delete these documents as needed. Documents associated with an enrollment may include:

* Completed enrollment forms
* W-9 tax forms
* Voided checks
* Other documentation that Stedi completes and submits to the payer

To review, download, or delete documents associated with an enrollment request:

1. Go to the [Enrollments page](https://portal.stedi.com/app/healthcare/enrollments) and click the enrollment request.
2. Scroll to the **Documents** section at the bottom of the page.

In the **Documents*&#x2A; section, click any document to view it in your web browser. You can also click &#x2A;*...** (ellipses) to the right of the document to:

* Download the original PDF file.
* Copy a secure link to view the file, which you can share with any member of your Stedi account.
* Delete the file, if necessary.

<img alt="Transaction enrollment documents" src="__img2" />

## Cancel enrollments [#cancel-enrollments]

You can only cancel enrollment requests that are in `DRAFT`, `STEDI_ACTION_REQUIRED`, or `PROVIDER_ACTION_REQUIRED` status. To cancel, reach out to Stedi support through our [Contact us form](https://www.stedi.com/contact) or your designated Slack or Teams channel. Once an enrollment is canceled, Stedi sets its status to `CANCELED` and stops the enrollment process with the payer.

We can't cancel enrollments that are in `PROVISIONING` or `LIVE` status. Once an enrollment is in one of these statuses, the only way to stop 835 ERAs from coming to Stedi is to submit an enrollment through another clearinghouse.

## Transaction Enrollments Hub [#transaction-enrollments-hub]

Our network and enrollment operations team knows the nuances of each payer's enrollment requirements and maintains a public repository of payers that require additional transaction enrollment steps through our [Transaction Enrollments Hub](https://enrollments.stedi.com).

However, you don't need to keep track of these requirements. We'll contact you directly if there are additional steps you need to take to complete enrollment with a specific payer.

# Notifications
Source: https://www.stedi.com/docs/providers/providers-notifications


Stedi sends notifications through two channels: in-app (the bell icon in the side navigation) and email. You can manage your notification preferences from the [Notifications page](https://portal.stedi.com/app/settings/notifications) in your account settings.

## Notification categories [#notification-categories]

Stedi sends you notifications about the following:

### Transaction enrollments [#transaction-enrollments]

Stedi sends notifications when a [transaction enrollment](/providers/providers-transaction-enrollment-intro) request changes status to **PROVISIONING**, **PROVIDER ACTION REQUIRED**, **LIVE**, or **REJECTED**.

* **Who:** The [email set as the **Stedi contact person**](/providers/providers-submit-enrollment-requests#stedi-contact-email)
* **What:** In-app notifications, plus a batched email once per hour with all updates.

Visit [Manage enrollment requests](/providers/providers-manage-transaction-enrollments#notifications) for more details.

### Account activity [#account-activity]

Stedi sends notifications for the following account activity:

* You're invited to a new account.
  * **Who:** The invited user
  * **What:** In-app and email notifications
* Your account or account update is reviewed and approved.
  * **Who:** All account users
  * **What:** In-app and email notifications
* A user requests to join your account.
  * **Who:** Account admins only
  * **What:** In-app and email notifications

Visit [Account setup](/providers/providers-account-setup) for details about managing account members and upgrading your account.

### Exports [#exports]

Stedi sends notifications when your claims list or Electronic Remittance Advice (ERA) list exports are ready to download.

* **Who:** The user who requested the export
* **What:** In-app notifications when the export file is ready. Export files are available for 30 days.

### Billing and payments [#billing-and-payments]

For pay-as-you-go accounts, Stedi sends notifications when automatic recharge payments fail or when your account is suspended due to insufficient funds.

* **Who:** Billing email address and account admins
* **What:** In-app and email notifications at the following points:
  * **Payment failure:** When an auto-recharge payment fails.
  * **Access suspended:** When your balance reaches $0 and account access is suspended. You'll also receive reminder emails after 16 days and 25 days of suspension about potential account closure if you don't resolve the issue.
  * **Access restored:** When your balance returns to positive and access is restored.

Visit [Billing](/providers/providers-billing#failed-payments) for details about failed payments and account suspension.

## Manage notification preferences [#manage-notification-preferences]

You can control which notifications you receive from the [Notifications page](https://portal.stedi.com/app/settings/notifications) in your account settings. Check or uncheck the boxes to opt in or opt out for each notification category.

Please note:

* **Default is opt-in:** All notifications are enabled by default.
* **Preferences are per user:** Your notification preferences apply across all Stedi accounts you can access. They're tied to your signed-in user, not to a specific account.
* **Independent channels:** Turning off email delivery for a notification type doesn't affect in-app delivery, and vice versa.

# Stedi portal UI
Source: https://www.stedi.com/docs/providers/providers-review-patient-benefits


You can review eligibility check results in the [checks view](https://portal.stedi.com/app/healthcare/eligibility/checks). For successful eligibility checks, you can use our filterable benefits table to determine whether a patient's health plan covers the requested services and view details about specific benefits, such as co-pay amounts, deductible information, and whether prior authorization is required.

## Eligibility check results [#eligibility-check-results]

To review an eligibility check's results:

1. Go to the [checks view](https://portal.stedi.com/app/healthcare/eligibility/checks).
2. Click the eligibility check with the patient information you want to view.

Stedi opens the eligibility check's **Overview** tab.

### Overview tab [#overview-tab]

The **Overview** tab shows details about the eligibility check.

<img alt="Eligibility search details page" src="__img0" />

If the eligibility check was successful, the **Overview** tab contains:

* The check's [result](#eligibility-check-result)
* Patient information, such as their name, date of birth, and member ID.
* The service type code(s) you requested.
* The requesting provider's information, including their name and NPI.
* The payer's information, including their name and Payer ID.
* The patient's health plan information, including the plan names, group number, and plan begin and end dates.
* Any benefits related entities, which are commonly used to designate the patient's primary care provider (PCP), another organization that handles a specific carveout benefit type (such as telehealth mental health services), or another health plan for the patient (coordination of benefits scenarios).

### Benefits tab [#benefits-tab]

The **Benefits** tab displays the patient's benefits in filterable tables. Information in the table is grouped into sections:

* The first grouping mechanism is the patient's health plan. Many eligibility responses only contain benefits for a single health plan, but some responses include benefits for multiple plans. For example, if the patient has both a primary health plan and a dental plan, the benefits view will contain separate sections listing all of the benefits for each plan.
* Within each health plan section, benefits are further grouped by service type code (STC) and procedure code so that you can easily find and review all of the benefits for a specific set of services.

<img alt="Benefits table overview" src="__img1" />

There may be multiple benefits for the same STC and benefit type. For example, a patient may have different co-insurance amounts for in-network and out-of-network providers or for specific services within a broader STC. The **Message** or **Messages** field contains notes from the payer, which typically list limitations or conditions that apply to the benefit.

In the following example, the patient has a $50 co-pay for Emergency Services (STC `86`), but the messages indicate that this co-pay is waived if the patient is admitted to the hospital.

<img alt="benefits table notes" src="__img2" />

#### Benefits filters [#benefits-filters]

Payers typically send more benefits information than you requested. You can filter the benefits table by the following criteria to review only the benefits you care about. The options for each filter type depend on the benefits data in the payer's response. For example, if the payer didn't return any family-level benefits, the **Coverage level** filter won't have a `Family` option.

{/* prettier-ignore-start */}

| Filter               | Description                                                                                                                                                                                                                                                                                                                                                                                                             |
| -------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Type                 | This is the benefit type code, such as `Co-insurance` or `Deductible`.                                                                                                                                                                                                                                                                                                                                                  |
| Coverage level       | The coverage level. This is typically either `Individual` or `Family`, but the values can vary depending on the patient's plan.                                                                                                                                                                                                                                                                                         |
| Network              | Whether the benefit applies to in-network providers, out-of-network providers, or both.<ul><li>The payer may not send this indicator for every benefit. In these cases, the **Network indicator** field in the benefits table will be `Not set`.</li><li>This field doesn't tell you whether the provider is in or out-of-network for the patient. To determine that, you must check directly with the payer.</li></ul> |
| Service or procedure | The service type code (STC) or procedure code associated with the benefit. For example, `UC` for Urgent Care or `MH` for Mental Health.                                                                                                                                                                                                                                                                                 |
| Place of service     | The names of place of service codes associated with the benefit. For example, `Emergency Room - Hospital` for service type code `23`.                                                                                                                                                                                                                                                                                   |
| Message              | Messages from the payer associated with the benefit. For example, `Co-pay waived if admitted`.                                                                                                                                                                                                                                                                                                                          |
| Plan name            | The name of the patient's health plan.                                                                                                                                                                                                                                                                                                                                                                                  |

{/* prettier-ignore-end */}

For example, to determine the patient's co-pay for urgent care visits with in-network providers, you might set the **Type** filter to `Co-payment`, the **Network** filter to `In-Network`, and the **Service or procedure** filter to `UC` or another relevant code.

### Eligibility check result [#eligibility-check-result]

An eligibility check can have one of the following results:

{/* prettier-ignore-start */}

| Status          | Description                                                                                                                         |
| --------------- | ----------------------------------------------------------------------------------------------------------------------------------- |
| **Active**      | The payer's response contains an active eligibility and benefit type.                                                               |
| **Inactive**    | The payer's response doesn't contain an active eligibility and benefit type.                                                        |
| **Investigate** | The payer returned an unexpected eligibility or benefit type code. Review the response and contact the payer if you have questions. |
| **Failed**      | The payer returned an error code in the response. Review the error code and retry the eligibility check.                            |

{/* prettier-ignore-end */}

Note that an **Active** result only indicates that there was at least one service type with active coverage in the benefits response. You must check the response details to determine whether the patient has active coverage for the services you care about.

## Does the patient have coverage? [#does-the-patient-have-coverage]

The patient has coverage when the date of service is within the plan's eligibility period, and the patient has active coverage for the relevant services. Here's how to check whether these conditions are met:

<Steps>
  <Step title="Check whether the date of service is within the eligibility period.">
    1. Go to the **Overview** tab of an eligibility check.
    2. Review any available **Plan begin** and/or **Plan end** dates.

    If the date of service is within that range, the patient may have coverage.

        <img alt="Benefits plan overview" src="__img3" />
  </Step>

  <Step title="Check whether the patient has active coverage for the requested service type code (STC) or procedure code.">
    1. Go to the **Benefits** tab.
    2. Filter by **Service / procedure** and choose the STC(s) or procedure code(s) you care about.

    The **Status** field in the **Benefit** column may show whether the patient has active coverage for the relevant STC(s) or procedure code(s). Typically, only broad STCs (`30` and `35` for general medical and dental coverage) will have a status.

    * The patient has coverage when the status is **Active coverage** for the relevant STC or procedure code. You can also assume the patient has coverage when there is no status, but benefits are listed (such as co-pay or deductible amounts).
    * The patient doesn't have coverage when the status is **Inactive** for an STC or procedure code. You can also assume the patient doesn't have coverage if there are no benefits listed or the payer returned a message indicating that the service isn't covered.

        <img alt="Benefits table statuses" src="__img4" />
  </Step>
</Steps>

<Tip>
  An eligibility check has an **Active** result when the response contains at least one active benefit type. However, you must review the benefits table to confirm that the patient has active coverage for the STCs you care about.
</Tip>

## What is the patient's financial responsibility? [#what-is-the-patients-financial-responsibility]

Once you've confirmed that the patient has coverage, you may want to understand their financial responsibility for services. For example, you may want to know their co-pay amount for an in-office visit or whether they've met their deductible.

You can use the **Type** filter on the **Benefits** tab to narrow the results to specific benefits types (such as co-pay amounts) for each STC or procedure code.

The following example shows that the patient has a 20% co-insurance for Hospital - Inpatient (STC `48`) services performed by in-network providers and a 50% co-insurance for services performed by out-of-network providers. The co-insurance amounts also apply to specific services, which are listed in the **Messages** field.

<img alt="Benefits plan overview" src="__img5" />

## Is the provider in- or out-of-network? [#is-the-provider-in--or-out-of-network]

Unfortunately, you can't reliably answer this question from a standard eligibility response.

Payers typically don't explicitly indicate whether the requesting provider is in- or out-of-network for the patient (though there are some exceptions). The **Network indicator** field in the table only indicates whether the benefit applies to in-network or out-of-network providers in general. It doesn't tell you whether the requesting provider is in- or out-of-network for the patient.

Some payers do provide additional information about whether the requesting provider is in- or out-of-network. They may do this through either freeform messages or selective inclusion of benefits in the response.

For example, some payers only return out-of-network benefits if the requesting provider is out-of-network. Likewise, if the provider is in-network, they only provide in-network benefits. Stedi doesn't have a complete list of payers that selectively include or exclude benefits based on the provider's network status.

**The most reliable way to determine network status is to check directly with the payer or the provider.** Note that payers may have different networks for different health plans, such as employer-sponsored plans versus Medicare Advantage, and these networks may have different contact paths.

## Is prior authorization required? [#is-prior-authorization-required]

Prior authorization (also called pre-authorization or pre-certification) is a requirement that the patient or their provider must get approval before a payer will cover specific services, procedures, medications, or devices. Without it, the payer may deny claims.

If the payer provides prior authorization information in the eligibility response, it will be listed in the **Benefit** column for that service or procedure. The payer may also send messages about prior authorization rules.

<img alt="Benefits plan overview" src="__img6" />

If the payer doesn't provide prior authorization information for a service or procedure, you can assume that prior authorization isn't required.

# Review and resubmit claims
Source: https://www.stedi.com/docs/providers/providers-review-resubmit-claims


You can review, revise, and resubmit claims in the Stedi portal. This includes professional claims you submitted through the portal as well as professional, dental, and institutional claims third-party vendors submitted through Stedi on your behalf.

You may need to resubmit claims for several reasons, including changes to the patient's coverage, errors in the original claim's information, or appealing a denied claim. You may also need to cancel duplicate claims or claims that were submitted in error.

## Pre-adjudication vs. adjudication [#pre-adjudication-vs-adjudication]

When resubmitting claims, you need to know whether your claim is pre-adjudication or in adjudication.

| Stage            | Definition                                                                                                                                                                                                                                           | How you'll know                                                                                                                                                                                                                                                                                                                                                                                      |
| ---------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Pre-adjudication | The claim hasn't entered the payer's adjudication system. This includes claims the payer has received and then rejected based on front-end edits.                                                                                                    | <ul><li>You received a 277CA claim acknowledgment from Stedi or the payer. Payer rejections may include a message, such as "returned as unprocessable" or "not entered into processing system."</li><li>The payer's 277CA doesn't contain a [Payer Claim Control Number (PCCN)](#payer-claim-control-number-pccn).</li></ul>                                                                         |
| Adjudication     | The claim has entered the payer's adjudication system. This includes claims that were rejected during adjudication, claims still in progress (for example, in **Pending** status), and claims that completed adjudication (resulting in an 835 ERA). | <ul><li>The payer's 277CA contains a [Payer Claim Control Number (PCCN)](#payer-claim-control-number-pccn), indicating it has entered the payer's system. OR</li><li>You ran a real-time claim status check that included a PCCN in the response. OR</li><li>You received an 835 Electronic Remittance Advice (ERA) from the payer with adjudication details. All 835 ERAs include a PCCN.</li></ul> |

The following diagram illustrates the claim submission lifecycle and the responses you can expect to receive at each stage.

<img alt="Claim response lifecycle" src="__img0" />

## Preparing claim resubmissions or cancellations [#preparing-claim-resubmissions-or-cancellations]

Stedi's guidance for resubmissions varies depending on three factors:

* **Whether the claim has entered the payer's adjudication system** - Visit [Pre-adjudication vs. adjudication](#pre-adjudication-vs-adjudication) to determine where your claim is in the lifecycle.
* **Whether you're resubmitting to Medicare** - Medicare Part A and Part B (processed through MACs) have different requirements than other payers. Visit [Medicare resubmission](#medicare-resubmission) for details.
* **Claim type** - Institutional claims have different requirements than professional or dental claims. Visit [Institutional claims](#institutional-claims) for details.

These factors determine which codes and identifiers to include in the resubmission:

* The proper [Claim Frequency Code (CFC)](#claim-frequency-code-cfc) - indicates the type of submission
* The [Payer Claim Control Number (PCCN)](#payer-claim-control-number-pccn), if appropriate - the payer's unique identifier for your claim
* The appropriate [Patient Control Number (PCN)](#patient-control-number-pcn) - your unique identifier for the claim

You'll also need to include any necessary corrections to the claim data.

### Claim Frequency Code (CFC) [#claim-frequency-code-cfc]

The Claim Frequency Code (CFC) indicates the type of claim submission. It's what tells the payer the claim is an original, a replacement, or a cancellation.

| Scenario                      | CFC Guidance                                                                                                                                                                                                                    |
| ----------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Pre-adjudication (all payers) | <ul><li>**Professional/Dental:** `1` (Admit thru Discharge Claim)</li><li>**Institutional:** CFC from original submission</li></ul>                                                                                             |
| Adjudication, non-Medicare    | <ul><li>**All claim types:** `7` (Replacement of Prior Claim) or `8` (Void/Cancel of Prior Claim)</li><li>Resubmission requirements can vary by payer. Always confirm this guidance with the payer's companion guide.</li></ul> |
| Adjudication, Medicare        | <ul><li>**Professional/Dental:** `1` (Admit thru Discharge Claim)</li><li>**Institutional:** CFC from original submission</li></ul>                                                                                             |

#### Set the CFC [#set-the-cfc]

You can set the Claim Frequency Code (CFC) in the following locations:

* **X12 EDI:** `Loop 2300 CLM05-03` (Claim Frequency Code) component
* **CMS-1500 claim form UI:** Set the **Qualifier** in **Box 22** (Resubmission code)

#### Institutional claims [#institutional-claims]

Institutional claims support a broader set of Claim Frequency Code (CFC) values than professional or dental claims.

For example, in long term care settings, facilities commonly submit interim claims every 30 days to receive partial payments while the patient is still admitted, rather than waiting until the end of the patient's stay. The CFC codes for these interim claims are `2` (Interim - First Claim), `3` (Interim - Continuing Claims), or `4` (Interim - Last Claim).

Therefore, the guidance for institutional claim CFCs is different from professional and dental claims. Specifically, for claims in pre-adjudication or Medicare claims in adjudication, you should resubmit with the same CFC you used in the original submission.

### Payer Claim Control Number (PCCN) [#payer-claim-control-number-pccn]

The Payer Claim Control Number (PCCN) is the unique identifier the payer assigns when your claim enters their adjudication system. It's different from the [Patient Control Number](#patient-control-number-pcn) you sent in the original claim.

| Scenario                      | PCCN Guidance                                                                                                                                                                       |
| ----------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Pre-adjudication (all payers) | Don't include a PCCN. The claim hasn't entered the payer's adjudication system yet, so no PCCN exists.                                                                              |
| Adjudication, non-Medicare    | Include the PCCN the payer returned in [one or more responses](#find-existing-pccn) to the original claim. Without the PCCN, the payer won't know which claim to replace or cancel. |
| Adjudication, Medicare        | Don't include the PCCN. Medicare explicitly instructs providers to omit it when resubmitting claims. Visit [Medicare resubmission](#medicare-resubmission) for details.             |

#### Set the PCCN [#set-the-pccn]

You can supply the Payer Claim Control Number (PCCN) in the following locations:

* **X12 EDI:** `Loop 2300 REF02`, where `REF01` = `F8` (Original Reference Number)
* **CMS-1500 claim form UI:** Set the **Original reference number** in **Box 22** (Resubmission code)

#### Find existing PCCN [#find-existing-pccn]

You can retrieve the Payer Claim Control Number (PCCN) for the original claim from any of the following transactions from the payer.

| Transaction                                                                                 | How to get it                                                                                                                                                                                                                                          |
| ------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| [277CA claim acknowledgment](/providers/providers-claim-acknowledgments)                    | Go to the [claims view](https://portal.stedi.com/app/healthcare/claims), click the claim to open its timeline, and click **See more detail** on the 277CA to review a user-friendly summary with the PCCN.                                             |
| [277 real-time claim status](/providers/providers-check-claim-status)                       | Run a claim status check for the claim you want to resubmit. The results page shows the PCCN as **Payer claim control number**.                                                                                                                        |
| [835 Electronic Remittance Advice (ERA)](/providers/providers-electronic-remittance-advice) | Go to the [claims view](https://portal.stedi.com/app/healthcare/claims), click **835 ERAs**, and click the ERA to open it. On the **Overview** tab, the PCCN is in the **Claims** section in the **Payer Claim Control Number** column for each claim. |

### Patient Control Number (PCN) [#patient-control-number-pcn]

The Patient Control Number (PCN) is a unique identifier you assign to the claim. The payer returns this value in related transactions, such as the 277CA claim acknowledgment and 835 Electronic Remittance Advice (ERA), so you can correlate responses with the original claim.

| Scenario                      | PCN Guidance                    |
| ----------------------------- | ------------------------------- |
| Pre-adjudication (all payers) | Same PCN as original submission |
| Adjudication, Medicare        | Same PCN as original submission |
| Adjudication, non-Medicare    | New, unique PCN                 |

Reuse the same PCN from the original submission for pre-adjudication resubmissions and adjudication Medicare resubmissions. Stedi uses the PCN to match claims and resubmissions in the claims view, so reusing the PCN allows Stedi to show the original claim and resubmissions within a unified claim timeline. Reusing the PCN also helps you track the claim throughout the resubmission process.

Use a new, unique PCN for adjudication non-Medicare resubmissions. In this scenario, a new PCN helps you avoid potential duplicate claim errors from the payer. A new PCN also helps you differentiate between the 835 Electronic Remittance Advice (ERAs) for the original submission and the resubmission.

#### Set the PCN [#set-the-pcn]

You can set the PCN in the following locations:

* **X12 EDI:** `Loop 2300 CLM01` (Patient Control Number)
* **CMS-1500 claim form UI:** Set **Box 26** (Patient account number)

#### PCN format [#pcn-format]

When assigning a PCN, follow these best practices:

* Use a unique PCN for each claim. The identifier should be more complex than a simple sequential number and should be hard to guess.
* Use random strings. Formats with patient initials or the date of service in them can create duplicates. We recommend using [nanoid](https://www.npmjs.com/package/nanoid) or a similar library configured with the characters available in the [basic character set](#character-set) to create a strong, unique 17-character PCN for each claim.
* Keep it 17 characters or less. Some payers cut off values longer than 17 characters in ERAs and claim acknowledgments, which makes it hard to match them with the original claim.
* Use only characters available in the [basic character set](#character-restrictions), and avoid special characters that are only available in the extended character set. Payers are permitted to return data using the basic character set. Using other characters may result in data loss or mismatches when correlating claims with responses.
* Treat PCN values as case-insensitive when matching transactions, even if the submitted value included both lower and uppercase characters.

## Find specific claims [#find-specific-claims]

You can find a list of all your submitted claims on the [claims view](https://portal.stedi.com/app/healthcare/claims).

We recommend filtering for the claim's **Patient control number** (`Loop 2300 CLM01`) if it's unique for each claim. This will help you find the specific claim you're looking for. If you don't have the Patient Control Number, you can search for another identifier, such as the **Patient name**, to help narrow down the results. Your search terms must match what's in the claim exactly, including all spaces, capitalization, and punctuation.

## Revise and resubmit claims [#revise-and-resubmit-claims]

The resubmission process is the same for both corrections and cancellations - the [Claim Frequency Code](#claim-frequency-code-cfc) indicates which action you want to take.

* For professional claims, you can edit and resubmit through either the interactive CMS-1500 form or the X12 EDI editor.
* For dental and institutional claims, you can only edit and resubmit through the X12 EDI editor.

### CMS-1500 form (professional) [#cms-1500-form-professional]

<Warning>
  Stedi's CMS-1500 claim form UI is mostly limited to the CMS-1500 form fields. It may not be able to successfully resubmit complex claims originally submitted through our APIs or SFTP.
</Warning>

To resubmit a professional claim through Stedi's interactive CMS-1500 form:

1. Go to the [claims view](https://portal.stedi.com/app/healthcare/claims) and click the claim you want to resubmit to open its timeline.

2. Hover over the claim submission and do one of the following:
   * Click **Edit and resubmit**. This option appears when the last claim submission was rejected by either Stedi or the payer.
   * Click **See more detail** to review the claim's details page, then click **Edit and resubmit**.

3. Select **CMS-1500 resubmission**. Stedi opens the interactive CMS-1500 form prepopulated with the claim's information.

   <img alt="Claim resubmission CMS-1500 form" src="__img1" />

4. Make any necessary changes to the claim.
   * Make sure to update the Claim Frequency Code, the Payer Claim Control Number, and the Patient Control Number according to best practices.
   * Click **Claims timeline** to open a side panel with the claim's activity. You can review related 277CA claim acknowledgments containing the errors you need to address before resubmitting. Hover over a transaction and click **See more detail** to review its details.

5. Click **Submit claim** to resubmit the updated claim to the payer.

The updated claim will appear on the [claims view](https://portal.stedi.com/app/healthcare/claims) within a few minutes. The claim timeline will reflect that this claim is a resubmission along with the original claim and any associated responses.

You'll receive new 277CA claim acknowledgments indicating whether the resubmitted claim was accepted or rejected.

### X12 EDI editor [#x12-edi-editor]

To resubmit a professional, dental, or institutional claim through Stedi's X12 EDI editor:

1. Go to the [claims view](https://portal.stedi.com/app/healthcare/claims) and click the claim you want to resubmit to open its timeline.

2. Hover over the claim submission and do one of the following:
   * Click **Edit and resubmit**. This option appears when the last claim submission was rejected by either Stedi or the payer.
   * Click **See more detail** to review the claim's details page, then click **Edit and resubmit**.

3. Select **X12 transaction resubmission**. Stedi opens the claim in an interactive editor with the X12 EDI on the left and the EDI specification on the right.

   As you hover over different parts of the EDI, Stedi highlights the corresponding part of the specification on the right to help you understand what each part of the EDI means and how to edit it correctly.
   <img alt="X12 EDI editor" src="__img2" />

4. Make changes to the claim EDI.
   * You can type directly in the EDI editor or copy and paste updated EDI from another source.
   * Make sure to update the Claim Frequency Code, the Payer Claim Control Number, and the Patient Control Number according to best practices.
   * Click **Claims timeline** to open a side panel with the claim's activity. You can review related 277CA claim acknowledgments containing the errors you need to address before resubmitting. Hover over a transaction and click **See more detail** to review its details.

5. Click **Review and submit**. Stedi shows a comparison of the original claim and the new claim containing your changes.

6. Click **Resubmit claim** to send the updated claim to the payer.

The updated claim will appear on the [claims view](https://portal.stedi.com/app/healthcare/claims) within a few minutes. The claim timeline will reflect that this claim is a resubmission along with the original claim and any associated responses.

You'll receive new 277CA claim acknowledgments indicating whether the resubmitted claim was accepted or rejected.

## Medicare resubmission [#medicare-resubmission]

Medicare Part A and Part B (processed through MACs) have different requirements for resubmissions and cancellations than non-Medicare payers. Non-Medicare includes all other payers, such as commercial insurance and Medicaid.

* Medicare does not accept Claim Frequency Codes `7` or `8` for resubmissions. For professional and dental claims, resubmit with Claim Frequency Code `1`. For institutional claims, resubmit with the same Claim Frequency Code as the original submission.
* Don't include the original claim's Payer Claim Control Number (PCCN) when resubmitting, even if one is available.

## Determine 277CA sender [#determine-277ca-sender]

To determine whether Stedi or the payer sent a 277CA claim acknowledgment:

1. Go to the [claims view](https://portal.stedi.com/app/healthcare/claims).
2. Find the associated claim and click it to view the claim timeline.
3. Find the 277CA in the timeline view. The **From** field indicates whether the acknowledgment is from Stedi or the payer.

<img alt="277CA claim timeline" src="__img3" />

## Character restrictions [#character-restrictions]

Only use the X12 Basic and Extended character sets in request data. Using characters outside these sets may cause errors.

<Accordion title="Basic character set" id="basic-character-set">
  The X12 Basic character set includes uppercase letters, digits, space, and some special characters. Lowercase letters and special language characters like `ñ` are not included.

  The following special characters are included:

    <img alt="Basic special characters" src="__img4" />
</Accordion>

<Accordion title="Extended character set" id="extended-character-set">
  The Extended character set includes the characters listed in Basic, plus lowercase letters and additional special characters, such as `@`.

  The following additional special characters are included:
    <img alt="Extended special characters" src="__img5" />
</Accordion>

In addition, the following characters are reserved for delimiters in the final X12 EDI transaction to the payer: `~`, `*`, `:`, `^`, and `>`. X12 doesn't support using escape sequences to represent delimiters or special characters. Stedi returns a `400` error if you use these restricted characters improperly.

* **CMS-1500 form:** Don't include delimiter characters anywhere in your request data.
* **Raw X12:** You can use these characters as delimiters, but not in the body of the request data.

# STCs and procedure codes
Source: https://www.stedi.com/docs/providers/providers-stc-procedure-codes


You're likely running an eligibility check to determine the patient's coverage and financial responsibility for particular medical or dental services, such as chiropractic or hospice care.

You can retrieve specific types of benefits information from the payer by including either a service type code (STC) or a procedure code and qualifier in your request.

However, it's not always clear which STC or procedure code to use for best results. This page explains how to choose the right STC or procedure code for your eligibility check, how to test whether a payer supports a specific STC, and how to map procedure codes to STCs when necessary.

## Should I use STCs or procedure codes? [#should-i-use-stcs-or-procedure-codes]

It depends on the type of benefits information you want to retrieve.

### Medical benefits [#medical-benefits]

You'll almost always need to submit an STC because most medical payers don't support procedure codes (CPT/HCPCS/CDT). Refer to our guidance for [choosing STCs](#choose-the-right-stc).

### Dental benefits [#dental-benefits]

Many (but not all) dental payers support procedure codes. However, we recommend:

1. First try STC `35` - especially if you need information about general dental benefits. Many payers only return comprehensive dental-specific benefits for STC `35`.
2. Try the relevant CDT code if you still need more benefits information for a specific service.
3. If the CDT code still doesn't return what you need, try the STC mapped to that CDT code. Refer to our list of [common mappings](#dental) for dental benefits.

## Choose the right STC [#choose-the-right-stc]

A Service Type Code (STC) is a two-character code that groups similar healthcare services into standard categories, such as `47` (Hospital) and `UC` (Urgent Care). STC support varies by payer:

* Not all payers support all STCs.
* Some payers only respond to the first STC you send and ignore the rest.
* Some payers completely ignore the STCs in the request and always return a default response for STC `30` (Health Benefit Plan Coverage).
* Some payers don't support multiple STCs in a single request.
* Some payers do support multiple STCs, but only a limited number per request.

When choosing an STC, we recommend:

* Send the most specific STC you can for the services you're targeting. You should [test the STCs](#test-payer-stc-support) that seem most appropriate to determine which ones yield the most benefits information. Refer to our list of [STCs for common services](#stcs-for-common-services).
* If no specific STC seems appropriate or if the payer doesn't support it, fall back to a [general benefit check](#general-benefit-checks).
* Include only one STC per request, unless you've tested the payer and confirmed they support multiple STCs in a single request *and* that the response contains better benefits information when you include more than one.

If after testing, no STC produces the benefits information you need, you may need to call the payer or visit the payer portal.

### General benefit checks [#general-benefit-checks]

Use STC `30` for general medical benefits or `35` for general dental benefits. These STCs are supported by all payers and are a good fall back when a payer doesn't support a more specific STC.

When you send STC `30` in an eligibility check, all payers must return benefits information for the following STCs when the patient's plan covers them:

* `1` (Medical Care)
* `33` (Chiropractic)
* `47` (Hospital)
* `86` (Emergency Services)
* `88` (Pharmacy)
* `98` (Professional Physician Visit - Office)
* `AL` (Vision - Optometry)
* `MH` (Mental Health)
* `UC` (Urgent Care)

<Note>
  [CAQH CORE-certified payers](#required-stcs-for-core-certified-payers) are required to support a broader set of STCs.
</Note>

### STCs for common services [#stcs-for-common-services]

Try the following STCs in the order shown - from the most specific to more general alternatives. We recommend sending only one STC at a time, unless you've [tested the payer](#test-payer-stc-support) and confirmed they support multiple in a single request.

We've also included the mapping to specific procedure codes where possible, to make it easier to determine the right STC for your use case.

<Tip>
  Try our interactive [Service Type Code Lookup](https://www.stedi.com/cpt-hcpcs-to-stc) tool for additional mappings.
</Tip>

#### Medical [#medical]

Ranges of applicable codes are represented as `rangeStart - rangeEnd`.

{/* prettier-ignore-start */}

| Procedure codes                                                                          | Type of care                                 | STCs to try                                          |
| ---------------------------------------------------------------------------------------- | -------------------------------------------- | ---------------------------------------------------- |
| `97151 - 97157`                                                                          | ABA Therapy                                  | `BD`, `MH`                                           |
| `97810`, `97811 - 97814`                                                                 | Acupuncture                                  | `64`, `1`                                            |
| `96401 - 96549`                                                                          | Chemotherapy                                 | `ON`, `78`, `87`, `91`, `92`                         |
| `96493`                                                                                  | Chemotherapy, IV push                        | `78`, `87`, `91`, `92`                               |
| `96494`                                                                                  | Chemotherapy, additional infusion            | `78`, `87`, `91`, `92`                               |
| `99490`, `99439`, `99491`, `99437`, `99487`                                              | Chronic Care Management (CCM) services       | `A4`, `MH`, `98`, `1`                                |
| too many to list                                                                         | Dermatology                                  | `3`, `98`                                            |
| `T1032`, `T1033`                                                                         | Doula                                        | `BT`, `BU`, `BV`, `1`                                |
| `E1399`                                                                                  | Durable Medical Equipment                    | `DM`, `11`, `12`, `18`                               |
| `96375`                                                                                  | IV push                                      | `92`                                                 |
| `96360`, `96365`, `96366`                                                                | IV Therapy/Infusion                          | `92`, `98`                                           |
| too many to list                                                                         | Maternity (professional)                     | `BT`, `BU`, `BV`, `69`                               |
| `97802`                                                                                  | Medical nutrition therapy                    | `98`, `MH`, `BZ`, `1`                                |
| `97803`                                                                                  | Medical nutrition follow-up                  | `98`, `MH`, `BZ`, `1`                                |
| too many to list                                                                         | Mental health                                | `MH`, `96`, `98`, `A4`, `BD`, `CF`                   |
| `95700 - 96020`                                                                          | Neurology                                    | `98`                                                 |
| `99460`, `99463`                                                                         | Newborn/facility                             | `65`, `BI`                                           |
| `97165 - 97168` and `97110`, `97530`, `97112`, `97140`, `97535`, `97116`, `97129`        | Occupational therapy                         | `AD`, `98`                                           |
| `97110`, `97112`, `97116`, `97350`, and several others                                   | Physical therapy                             | `PT`, `AE`                                           |
| too many to list                                                                         | Podiatry                                     | `93`, `98`                                           |
| too many to list                                                                         | Primary care                                 | `96`, `98`, `A4`, `A3`, `99`, `A0`, `A1`, `A2`, `98` |
| `99214`                                                                                  | Physician office visit                       | `1`, `98`, `BY`                                      |
| `96130 - 96133`, `96136 - 96137`                                                         | Psychological testing evaluation             | `MH`, `CF`, `A6`, `A8`, `A4`, `98`, `96`             |
| `90832 - 90834`, `90836 - 90840`, `90845 - 90847`, `90849`, `90853`                      | Psychotherapy                                | `MH`, `CF`, `A6`, `A8`, `A4`, `BD`, `98`, `96`       |
| too many to list                                                                         | Rehabilitation                               | `A9`, `AA`, `AB`, `AC`                               |
| `98975`, `98976`, `98977`, `98980`, `98981`                                              | Remote Therapeutic Monitoring (RTM) services | `A4`, `98`, `MH`, `92`, `DM`, `1`                    |
| `99304-99318`                                                                            | Skilled Nursing                              | `AG`, `AH`                                           |
| `92507`, `92508`, `92521`, `92522`, `92523`, `92526`, `92607`, `92609`, `92605`, `92618` | Speech Therapy                               | `AF`, `98`                                           |
| `90791`, `90832`, `90834`, `90837`, `90853`, `99408`, `99409`, and `H0017-H0019`         | Substance Abuse/Addiction                    | `AI`, `AJ`, `AK`, `MH`                               |
| `99202-99215`, `99421-99423`, `99441-99443`, `G2010` and `G2012`                         | Telehealth                                   | `9`, `98`                                            |
| `90867`                                                                                  | Transcranial magnetic stimulation            | `A4`, `MH`                                           |

{/* prettier-ignore-end */}

#### Dental [#dental]

Procedure codes are listed in ranges. For example, `D0xxx` represents CDT codes from `D0000` to `D0999`.

{/* prettier-ignore-start */}

| Procedure                     | Type of care                                                                                   | STCs to try |
| ----------------------------- | ---------------------------------------------------------------------------------------------- | ----------- |
| `D0xxx`                       | Diagnostic (such as evaluations and radiographs)                                               | `23`        |
| `D1xxx`                       | Preventive (such as prophylaxis, fluoride, and sealants)                                       | `41`        |
| `D2xxx`                       | Restorative (fillings and crowns not tied to implants)                                         | `25`        |
| `D3xxx`                       | Endodontics (such as root canals)                                                              | `26`        |
| `D4xxx`                       | Periodontics (such as SRP and perio maintenance)                                               | `24`        |
| `D59xx`                       | Maxillofacial prosthetics (specifically for `D5900–D5999`, all other `D5xxx` use `39` instead) | `27`        |
| `D5xxx/D6xxx`, except `D59xx` | Prosthodontics (removable and fixed, such as dentures and bridges)                             | `39`        |
| `D7xxx`                       | Oral & maxillofacial surgery (such as extractions and osseous surgery)                         | `40`        |
| `D9xxx`                       | Adjunctive general services (such as palliative, occlusal guards, and anesthesia)              | `28`        |

{/* prettier-ignore-end */}

### Full STC list [#full-stc-list]

You can include the following STCs in an eligibility check. Not all payers support all STCs, so you should always [test each payer](#test-payer-stc-support) to ensure they support the STCs you plan to use.

* The word physician in service type codes refers to any healthcare provider, including physician assistants, nurse practitioners, and other types of healthcare professionals.
* **Don't send STCs that aren't in this list.** This list is specific to X12 version 005010, the mandated version for eligibility checks. It's different from the [X12 Service Type Codes](https://x12.org/codes/service-type-codes) list, which applies to X12 versions later than 005010. Payers shouldn't accept or send STCs not explicitly listed in version 005010.

<Accordion title="Service Type Codes" id="service-type-codes">
  - `1` Medical Care
  - `2` Surgical
  - `3` Consultation
  - `4` Diagnostic X-Ray
  - `5` Diagnostic Lab
  - `6` Radiation Therapy
  - `7` Anesthesia
  - `8` Surgical Assistance
  - `9` Other Medical
  - `10` Blood Charges
  - `11` Used Durable Medical Equipment
  - `12` Durable Medical Equipment Purchase
  - `13` Ambulatory Service Center Facility
  - `14` Renal Supplies in the Home
  - `15` Alternate Method Dialysis
  - `16` Chronic Renal Disease (CRD) Equipment
  - `17` Pre-Admission Testing
  - `18` Durable Medical Equipment Rental
  - `19` Pneumonia Vaccine
  - `20` Second Surgical Opinion
  - `21` Third Surgical Opinion
  - `22` Social Work
  - `23` Diagnostic Dental
  - `24` Periodontics
  - `25` Restorative
  - `26` Endodontics
  - `27` Maxillofacial Prosthetics
  - `28` Adjunctive Dental Services
  - `30` Health Benefit Plan Coverage - **supported by all payers**
  - `32` Plan Waiting Period
  - `33` Chiropractic
  - `34` Chiropractic Office Visits
  - `35` Dental Care
  - `36` Dental Crowns
  - `37` Dental Accident
  - `38` Orthodontics
  - `39` Prosthodontics
  - `40` Oral Surgery
  - `41` Routine (Preventive) Dental
  - `42` Home Health Care
  - `43` Home Health Prescriptions
  - `44` Home Health Visits
  - `45` Hospice
  - `46` Respite Care
  - `47` Hospital
  - `48` Hospital - Inpatient
  - `49` Hospital - Room and Board
  - `50` Hospital - Outpatient
  - `51` Hospital - Emergency Accident
  - `52` Hospital - Emergency Medical
  - `53` Hospital - Ambulatory Surgical
  - `54` Long Term Care
  - `55` Major Medical
  - `56` Medically Related Transportation
  - `57` Air Transportation
  - `58` Cabulance
  - `59` Licensed Ambulance
  - `60` General Benefits
  - `61` In-vitro Fertilization
  - `62` MRI/CAT Scan
  - `63` Donor Procedures
  - `64` Acupuncture
  - `65` Newborn Care
  - `66` Pathology
  - `67` Smoking Cessation
  - `68` Well Baby Care
  - `69` Maternity
  - `70` Transplants
  - `71` Audiology Exam
  - `72` Inhalation Therapy
  - `73` Diagnostic Medical
  - `74` Private Duty Nursing
  - `75` Prosthetic Device
  - `76` Dialysis
  - `77` Otological Exam
  - `78` Chemotherapy
  - `79` Allergy Testing
  - `80` Immunizations
  - `81` Routine Physical
  - `82` Family Planning
  - `83` Infertility
  - `84` Abortion
  - `85` AIDS
  - `86` Emergency Services
  - `87` Cancer
  - `88` Pharmacy
  - `89` Free Standing Prescription Drug
  - `90` Mail Order Prescription Drug
  - `91` Brand Name Prescription Drug
  - `92` Generic Prescription Drug
  - `93` Podiatry
  - `94` Podiatry - Office Visits
  - `95` Podiatry - Nursing Home Visits
  - `96` Professional (Physician)
  - `97` Anesthesiologist
  - `98` Professional (Physician) Visit - Office
  - `99` Professional (Physician) Visit - Inpatient
  - `A0` Professional (Physician) Visit - Outpatient
  - `A1` Professional (Physician) Visit - Nursing Home
  - `A2` Professional (Physician) Visit - Skilled Nursing Facility
  - `A3` Professional (Physician) Visit - Home
  - `A4` Psychiatric
  - `A5` Psychiatric - Room and Board
  - `A6` Psychotherapy
  - `A7` Psychiatric - Inpatient
  - `A8` Psychiatric - Outpatient
  - `A9` Rehabilitation
  - `AA` Rehabilitation - Room and Board
  - `AB` Rehabilitation - Inpatient
  - `AC` Rehabilitation - Outpatient
  - `AD` Occupational Therapy
  - `AE` Physical Medicine
  - `AF` Speech Therapy
  - `AG` Skilled Nursing Care
  - `AH` Skilled Nursing Care - Room and Board
  - `AI` Substance Abuse
  - `AJ` Alcoholism
  - `AK` Drug Addiction
  - `AL` Vision (Optometry)
  - `AM` Frames
  - `AN` Routine Exam - Use for Routine Vision Exam only
  - `AO` Lenses
  - `AQ` Nonmedically Necessary Physical
  - `AR` Experimental Drug Therapy
  - `B1` Burn Care
  - `B2` Brand Name Prescription Drug - Formulary
  - `B3` Brand Name Prescription Drug - Non-Formulary
  - `BA` Independent Medical Evaluation
  - `BB` Partial Hospitalization (Psychiatric)
  - `BC` Day Care (Psychiatric)
  - `BD` Cognitive Therapy
  - `BE` Massage Therapy
  - `BF` Pulmonary Rehabilitation
  - `BG` Cardiac Rehabilitation
  - `BH` Pediatric
  - `BI` Nursery
  - `BJ` Skin
  - `BK` Orthopedic
  - `BL` Cardiac
  - `BM` Lymphatic
  - `BN` Gastrointestinal
  - `BP` Endocrine
  - `BQ` Neurology
  - `BR` Eye
  - `BS` Invasive Procedures
  - `BT` Gynecological
  - `BU` Obstetrical
  - `BV` Obstetrical/Gynecological
  - `BW` Mail Order Prescription Drug - Brand Name
  - `BX` Mail Order Prescription Drug - Generic
  - `BY` Physician Visit - Office: Sick
  - `BZ` Physician Visit - Office: Well
  - `C1` Coronary Care
  - `CA` Private Duty Nursing - Inpatient
  - `CB` Private Duty Nursing - Home
  - `CC` Surgical Benefits - Professional (Physician)
  - `CD` Surgical Benefits - Facility
  - `CE` Mental Health Provider - Inpatient
  - `CF` Mental Health Provider - Outpatient
  - `CG` Mental Health Facility - Inpatient
  - `CH` Mental Health Facility - Outpatient
  - `CI` Substance Abuse Facility - Inpatient
  - `CJ` Substance Abuse Facility - Outpatient
  - `CK` Screening X-ray
  - `CL` Screening Laboratory
  - `CM` Mammogram, High Risk Patient
  - `CN` Mammogram, Low Risk Patient
  - `CO` Flu Vaccination
  - `CP` Eyewear and Eyewear Accessories
  - `CQ` Case Management
  - `DG` Dermatology
  - `DM` Durable Medical Equipment
  - `DS` Diabetic Supplies
  - `GF` Generic Prescription Drug - Formulary
  - `GN` Generic Prescription Drug - Non-Formulary
  - `GY` Allergy
  - `IC` Intensive Care
  - `MH` Mental Health
  - `NI` Neonatal Intensive Care
  - `ON` Oncology
  - `PT` Physical Therapy
  - `PU` Pulmonary
  - `RN` Renal
  - `RT` Residential Psychiatric Treatment
  - `TC` Transitional Care
  - `TN` Transitional Nursery Care
  - `UC` Urgent Care
</Accordion>

### Test payer STC support [#test-payer-stc-support]

We recommend testing each payer to determine which STC(s) they support and which STC(s) return the most benefits information for the services you care about.

To test whether a payer supports a specific STC:

1. Send a baseline request with just STC `30` for general medical benefits or `35` for general dental benefits.
2. Send a request with the specific STC that best matches the benefit type you want to check. For example, to check mental health benefits, you might send a request with STC `MH` (Mental Health). Use our list of [STCs for common services](#stcs-for-common-services) as a starting point.
3. Compare the baseline response with the response to the specific STC. If they're different, the payer likely supports the specific STC.

You may also want to test whether the payer supports multiple STCs in a single request:

1. Send a baseline request with just STC `30` for general medical benefits or `35` for general dental benefits.
2. Send a request with multiple STCs matching the benefit types you want to check.
3. Compare the responses. If they change based on the number of STCs, the payer likely supports multiple STCs in a single request. If not, the payer may be ignoring or only partially supporting STCs - for example, they may only be returning information for the first STC.

<Tip>
  **Developers:** We recommend scripting your requests to speed up the testing process. Specifically, you should loop through candidate STCs and compare the responses against the baseline STC `30` or `35` response for the same patient. You can also save the `benefitsInformation` array for each STC and diff them.
</Tip>

## Map procedure codes to STCs [#map-procedure-codes-to-stcs]

It can be hard to map procedure codes to the right STC. For example, if a provider offers medical nutrition therapy and bills using CPT code 97802, should they use service type code `1` - Medical Care, `3` - Consultation, `MH` - Mental Health, or another option?

Unfortunately, there's no standardized mapping between procedure codes and STCs. In fact, payers themselves often don't have an explicit mapping for their own health plans. Their eligibility check systems aren't necessarily directly integrated with their claims processing systems, so when you ask them which STC to use, they may not always be able to provide a good answer.

Review our list of [STCs for common services](#stcs-for-common-services), which contains mappings to the associated procedure codes. Try our interactive [Service Type Code Lookup](https://www.stedi.com/cpt-hcpcs-to-stc) tool for additional mappings.

If you don't find the procedure code you're looking for, use the following approaches to determine the best STC for your use case:

* Review the payers' documentation for eligibility checks. Some payers provide a list of STCs they support and their mappings to procedure codes.
* If you can't find the information in the payer's documentation, contact the payer directly or reach out to [Stedi support](https://www.stedi.com/contact), and we'll contact the payer for you.
* For dental payers that don't support specific CDT codes, you can use either of these sources to map CDT codes to service type codes. You can either purchase a copy of these documents or contact Stedi support for recommendations about specific mappings:
  * NDEDIC's [Companion to ASC X12 270/271](https://ndedic.org/Sys/Store/Products/1016)
  * Table 6 in the American Dental Association's [Technical Report No. 1102](https://engage.ada.org/p/eg/ada-technical-report-no-1102-electronic-dental-benefits-eligibility-verification-e-book-1390?itm_source=pp-1316\&itm_component=p-related).
* If none of the above methods work, you can ask a medical coder with [AAPC certification](https://www.aapc.com/certifications) for guidance. Their familiarity with billable codes will help them make good recommendations about service type code mappings.

Once you determine the right STC code(s), we recommend maintaining an internal document that contains the mappings for the health plans you most frequently bill.

## Required STCs for CORE-Certified payers [#required-stcs-for-core-certified-payers]

CAQH CORE creates operating rules and frameworks that improve interoperability in healthcare data exchange. CORE requires certified payers to support a broader set of STC codes than those mandated for [general benefits inquiries](#general-benefit-checks).

If the plan covers the service, certified payers must return benefit information for the following STCs. Visit CAQH CORE's website for a complete list of [CORE-Certified Health Plans](https://www.caqh.org/core/core-certified-organizations-pending-and-current).

<Accordion title="Required STCs for CORE-Certified Health Plans" id="required-stcs-for-core-certified-health-plans">
  * `4` Diagnostic X-Ray
  * `5` Diagnostic Lab
  * `6` Radiation Therapy
  * `7` Anesthesia
  * `8` Surgical Assistance
  * `12` DME Purchase
  * `13` Ambulatory Surgery Facility
  * `18` DME Rental
  * `20` Second Surgical Opinion
  * `30` Health Benefit Plan Coverage
  * `33` Chiropractic
  * `62` MRI/CAT Scan
  * `65` Newborn Care
  * `68` Well Baby Care
  * `78` Chemotherapy
  * `80` Immunizations
  * `81` Routine Physical
  * `82` Family Planning
  * `86` Emergency Services
  * `93` Podiatry
  * `98` Physician Visit - Office
  * `99` Physician Visit - Inpatient
  * `A0` Physician Visit - Outpatient
  * `A3` Physician Visit - Home
  * `AD` Occupational Therapy
  * `AE` Physical Medicine
  * `AF` Speech Therapy
  * `AG` Skilled Nursing Care
  * `BG` Cardiac Rehabilitation
  * `BH` Pediatric
</Accordion>

## STCs in the eligibility response [#stcs-in-the-eligibility-response]

To determine whether the payer is returning the benefits information you need, you must check the [**Benefits tab** of a completed eligibility check](/providers/providers-review-patient-benefits#benefits-tab). Each benefit listed in the table may be associated with one or more STCs or procedure codes.

<img alt="Benefits table overview" src="__img0" />

The payer may send benefits information for additional STCs you didn't request - this is expected. It can also mean that the payer is ignoring the STC you sent, which is why we recommend [testing payers](#test-payer-stc-support) to determine their support for specific STCs.

To learn more about interpreting the eligibility response, visit [Review patient benefits](/providers/providers-review-patient-benefits).

# Stedi Agent
Source: https://www.stedi.com/docs/providers/providers-stedi-agent


The Stedi Agent is an AI assistant that helps you resolve common issues with eligibility checks and answers questions about supported payers.

All plans provide access to the Stedi Agent. To use it, you must be at least an [Operator](/providers/providers-account-settings#assign-member-roles) role within your Stedi account.

To go to the Stedi Agent [**Chats** page](https://portal.stedi.com/app/healthcare/chats), click the agent icon at the top of the side navigation.

## Get payer details [#get-payer-details]

The Stedi Agent can answer your questions about supported payers. It can help you:

* Find the correct payer ID or payer name for a patient's insurance plan.
* Determine which payers require [transaction enrollment](/providers/providers-manage-transaction-enrollments).
* Identify which payers support medical, dental, or both use cases.
* Get help with other payer-related questions.

To start chatting with the Stedi Agent:

1. Go to the [Chats page](https://portal.stedi.com/app/healthcare/chats) in the Stedi portal.
2. Click **New chat** and select **Payer Finder**.
3. Type your question in the chat window and press &#x2A;*Enter.** For example, you could ask "What is the payer ID for Aetna?" or "Does Cigna support dental eligibility checks?" You can also ask more complex questions, like "Which payers support dental eligibility checks and require transaction enrollment?" Talk to Stedi Agent like you would a human support agent.
4. Ask follow-up questions as needed. You can ask multiple questions about different payers in the same chat.

The Stedi Agent will respond to your questions and display its answers in the chat window.

## Identify payer from member card [#identify-payer-from-member-card]

When you're unsure which payer ID to use based on the insurance information on the patient's card, you can upload the member card to the Stedi Agent. The agent analyzes the card and works to identify the correct payer ID, helping you avoid failed eligibility checks due to incorrect payer information.

This is particularly useful when:

* You have the patient's insurance card in front of you or have a scanned copy available
* The payer name on the card doesn't clearly match a payer in the [Payer Network](https://www.stedi.com/healthcare/network)
* You want to verify the correct payer before submitting an eligibility check

To identify a payer from a member card:

1. Go to the Stedi Agent [**Chats** page](https://portal.stedi.com/app/healthcare/chats) in the Stedi portal.
2. Click **New chat** and select the **Upload member ID card** option.
3. Upload a photo or scan of the front of the patient's insurance member card.
4. Review the results. The agent analyzes the card and either:
   * Successfully maps the information on the insurance card to a payer in Stedi's [Payer Network](https://www.stedi.com/healthcare/network). In this case, the agent returns information about the matching payer, including the payer's primary payer ID, Stedi payer ID, operating states, and supported transactions.
   * Indicates that it cannot read the information from the card. Try taking a clearer picture and resubmitting.
   * Indicates that it cannot determine the payer ID. Contact Stedi support.

## Resolve failed eligibility checks [#resolve-failed-eligibility-checks]

You can use the Stedi Agent to troubleshoot and resolve common recoverable eligibility check errors automatically.

To resolve an eligibility check failure with the Stedi Agent:

1. Go to the [checks view](https://portal.stedi.com/app/healthcare/eligibility/checks) or [searches view](https://portal.stedi.com/app/healthcare/eligibility/searches).
2. Hover over a failed check or search to reveal the **Resolve with Stedi Agent** button. This button is only available for checks and searches with common recoverable errors.
3. Click **Resolve with Stedi Agent**. The Stedi Agent opens a side panel in Debug view.
4. The Stedi Agent analyzes the eligibility request and works through best practice recovery strategies based on the error type. For example, if the payer returned an error code `75` (Subscriber/Insured Not Found), the agent may try different combinations of patient data or adjust the name format to find a match in the payer's system.

Each time the agent retries the eligibility check, it stores the new request in the same eligibility search record and it shows up in Debug view in real time. This allows you to see the history of attempts and the progression of the agent's troubleshooting efforts.

The agent only accesses data from the eligibility search it's working on. It can't access data from other searches, customers, or systems.

## Review chat history [#review-chat-history]

You can review a list of all past chats with the Stedi Agent on the [Chats page](https://portal.stedi.com/app/healthcare/chats) in the Stedi portal. Click any chat to open it and review the conversation history. You can restart any previous chat by sending a new message.

The chat history contains both your conversations about payer details and any recovery attempts the agent made while troubleshooting eligibility check failures.

## Usage notes [#usage-notes]

Please note:

* The Stedi Agent is available on all paid Stedi plans at no additional cost beyond those for related API calls.
* The agent is assistive. Outputs can be incorrect or incomplete. Verify all responses before taking any action based on them.
* You are responsible for any actions you instruct or authorize the AI service to take, including generating billable requests on your behalf.
* Your chats with the Stedi Agent aren't private - they're visible to anyone with access to your Stedi account.

# Submit claims
Source: https://www.stedi.com/docs/providers/providers-submit-claims


You can submit professional, dental, and institutional claims through the Stedi portal:

* **Electronic claims**: You submit through the Stedi portal. Stedi submits your claim to the payer electronically.
* **Paper claims**: You submit through the Stedi portal with the receiver ID set to `PAPER` (Print and Mail - All Payers). Stedi prints and mails the claim to the payer on your behalf.

## Electronic claims [#electronic-claims]

You can submit professional claims through our interactive claim form or by uploading X12 EDI claim data. There's no interactive claim form for dental and institutional claims, but you can submit them by uploading X12 EDI claim data.

### Claim form (professional only) [#claim-form-professional-only]

<Warning>
  The CMS-1500 form only supports submitting claims to the patient's **primary health plan**, though you can include information about secondary or tertiary payers if required. To submit claims directly to secondary or tertiary payers, use X12 EDI upload, API, or SFTP instead.
</Warning>

To submit a professional claim: Go to the [claims view](https://portal.stedi.com/app/healthcare/claims), click **Submit claim**, and select **CMS-1500 form** from the dropdown.

The submission form is based on the CMS-1500 Claim Form.
<img alt="Manual claim submission" src="__img0" />

Enter the required information for your professional claim. Notably:

| Form section                           | Instructions and Notes                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
| -------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Send                                   | Select whether you want to send the claim **Electronically** or **By mail**. <ul><li>**Electronically**: The claim is transformed into an X12 EDI transaction and routed electronically to the payer.</li><li>**By mail**: Select this option when you want to send a paper claim to the payer. When you select this option:<ul><li>If the payer exists in Stedi's Payer Network, select it from the **Stedi payer** dropdown.</li><li>If the payer is not in the network, check **I'm sending to a payer not found in Stedi's network**. Stedi automatically populates the dropdown with the **Print and Mail - All Payers** option.</li></ul>Additional fields appear in the **Postage address** section where you must enter the mail-to payer name (the addressee on the physical envelope) and the payer's mailing address (where the claim will be sent).</li></ul>                                                                                                                                                                                                                                                                                                                                                                                                                                 |
| Stedi payer                            | Select a **Payer** from the dropdown list. Start typing to filter the list.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |
| EDI mode                               | Select whether you want to submit a **Production** or **Test** claim.<ul><li>Production claims are sent to the payer.</li><li>Test claims aren't sent to the payer. Stedi validates them and displays them in the portal so you can get familiar with Stedi's claim processing workflow. Stedi responds to test claims with a 277CA claim acknowledgment, but you won't receive an 835 Electronic Remittance Advice (ERA).</li></ul>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      |
| Patient account number                 | We strongly recommend submitting a unique value in **Box 26** (Patient acccount number). The identifier should be more complex than a simple sequential number and should be hard to guess. The payer returns this value in related transactions, such as the 277CA and 835 ERA, so you can correlate responses and real-time claim status checks with the original claim. <ul><li>Keep it 17 characters or less. Some payers cut off values longer than 17 characters in ERAs and claim acknowledgments, which makes it hard to match them with the original claim.</li><li>Use alphanumeric characters only. Avoid special characters, as many payers don't handle them properly.</li><li>Use random strings. Formats with patient initials or the date of service in them can create duplicates.</li></ul>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             |
| Line item control numbers              | The line item control number is an identifier for each service line in **Box 24** (Service lines) that you can use correlate the original claim with the 835 ERA. <ul><li>By default, Stedi automatically assigns line item control numbers for each service line.</li><li>To set your own identifiers, click the **Set manual line item control numbers** in the service lines table. Line item control numbers must be 30 characters or less and unique within the claim.</li></ul>Note that Stedi will automatically reuse the same line item control numbers if you resubmit this claim through the CMS-1500 form.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
| Attachments                            | Submit claim-level attachments in **Box 19b** (Claim attachments) and service-line attachments in **Box 24** (Service lines). Note that you can't add attachments to claims that were already submitted through the portal. To include attachments for those, resubmit the claim with the attachments. <ol><li>Click **+ Add attachment** (claim-level) or **Add attachment, note or NDC codes** (service-line) to specify the details for an attachment.</li><li>Choose the appropriate **Report type** for each attachment.</li><li>Choose the appropriate **Transmission code**. If you plan to upload an attachment file, set this to &#x2A;*EL (EDI)**. If you plan to submit the attachment through another method, such as directly through the payer's portal, set this to the appropriate code.</li><li>Either enter the **Attachment control number** or click **Upload file** to select the file you want to attach. Supported file types are JPG, PDF, PNG, or TIFF. Each attachment should be 10 MB or less to comply with most payer requirements. You can add up to 10 attachment files at the claim level and up to 10 attachment files for each service line. If you included attachment files, Stedi automatically generates the required attachment control numbers for you.</li></ol> |
| Secondary or tertiary or payer details | Select an option in **Box 11d** (Is there another health benefit plan?).<ul><li>Select **Yes** when submitting a coordination of benefits (COB) claim. **Box 9** (Other insured) appears where you can enter the other payer's information. In **Box 9*&#x2A;, Click **+ Other insured** to add multiple plans (up to two additional plans for secondary and tertiary coverage). Each other insured card includes:<ul><li>**Box 9*&#x2A;: Other Insured's Name &#x2A;(required)&#x2A; and Member ID Number &#x2A;(required)*</li><li>**Box 9a**: Other Insured's Policy or Group Number</li><li>**Box 9d**: Insurance Plan Name or Program Name</li><li>**Additional details*&#x2A;: Click to expand and enter Other Payer &#x2A;(required)&#x2A;, Payer Responsibility Sequence Number Code &#x2A;(required)&#x2A;, Other Insured Relationship to Insured &#x2A;(required)*, and additional optional fields.</li></ul></li><li>Select **No** when the patient is covered by a single health plan.</li></ul>                                                                                                                                                                                                                                                                                              |

When you're finished, click **Submit claim**. Stedi validates the claim and submits it to the payer. It will appear on the [claims view](https://portal.stedi.com/app/healthcare/claims) within a few minutes.

Later, you'll also see related claim responses, such as [277CA claim acknowledgments](/providers/providers-claim-acknowledgments) and [835 Electronic Remittance Advice (ERAs)](/providers/providers-electronic-remittance-advice).

### X12 EDI upload [#x12-edi-upload]

You can submit professional, dental, and institutional claims through the Stedi portal in X12 EDI format. Claim data must adhere to the following X12 HIPAA claim specifications:

* [837 Claim: Professional (X222A1)](https://portal.stedi.com/app/guides/view/hipaa/health-care-claim-professional-x222a1/01HR60MDFAGCSEJNKY8J38867Y)
* [837 Claim: Institutional (X223A2)](https://portal.stedi.com/app/guides/view/hipaa/health-care-claim-institutional-x223a2/01JBHW2YXMN2F9KXK2PS0BFP9F)
* [837 Claim: Dental (X224A2)](https://portal.stedi.com/app/guides/view/hipaa/health-care-claim-dental-x224a2/01JCJZ46AEK835RYV1BXQNBPK8)

<img alt="CMS-1500 PDF download" src="__img1" />

To manually submit an X12 EDI claim:

1. Go to the [claims view](https://portal.stedi.com/app/healthcare/claims).

2. Click **Submit claim** and select **Upload raw X12 file**.

3. Do one of the following:

   * Click **Upload X12 EDI** and select an existing `.edi` file.
   * Select the transaction type and then paste the X12 EDI content into the text area.

   You can submit multiple claims in a single file, as long as all claims are 837s of the same type and X12 version. Visit [Bulk claims](#bulk-claims) for details.

4. Set `ISA15` (Interchange Usage Indicator) to `T` (Test Data) or `P` (Production Data), accordingly. Production claims are sent to payers. Test claims aren't sent to payers - Stedi's test clearinghouse processes them and returns test 277CA acknowledgments so you can evaluate your claim processing pipeline.

5. Fix any X12 EDI validation errors that appear after adding the claim content. Stedi highlights errors in red and displays the specification for the claim type you selected on the right side of the screen to make it easier to identify and fix issues.

   These validations ensure your claim data conforms to the HIPAA specification. Stedi runs additional claim edits on your claim data after submission.

6. Click **Submit claim**.

Stedi processes the claim and runs claim edits to identify errors that could lead to a payer rejection. If a claim fails one of Stedi's edits, you'll receive a 277CA claim acknowledgment from Stedi rejecting the claim immediately after submission. This can happen even when the X12 EDI editor showed no errors before submission.

If the claim passes all of Stedi's edits, Stedi submits it to the payer. It will appear on the [claims view](https://portal.stedi.com/app/healthcare/claims) within a few minutes.

#### Bulk claims [#bulk-claims]

You can submit multiple claims in a single X12 EDI file, as long as they are all the same claim type (professional, institutional, or dental) and X12 version. You can submit multiple claims in the same 837 transaction by including multiple instances of the following loops:

* `Loop 2000A` (Billing provider)
* `Loop 2000B` (Subscriber)
* `Loop 2300` (Claim Information) - You can submit up to 1,000 claim loops in each 837 transaction

After submission, Stedi separates your bulk 837 transaction into individual claims and sends each claim separately to the payer. This includes multiple claims going to the same payer - all claims within a bulk submission are sent individually to maintain consistency.

The following example would produce 12 separate claims (2 x 3 x 2 = 12), each shown individually on the [claims view](https://portal.stedi.com/app/healthcare/claims):

* 837 transaction contains information for two billing providers (2x `Loop 2000A`)
* Each billing provider has three subscribers (3x `Loop 2000B`)
* Each subscriber has two claims (2x `Loop 2300`)

Then, you'll typically receive separate 277CA claim acknowledgments for each claim. Each claim will also receive its own test ERA from Stedi's test clearinghouse if the payer was `STEDITEST`.

## Paper claims [#paper-claims]

Some payers require claims to be submitted on paper rather than electronically. Instead of mailing these claims yourself, you can send the claim information to Stedi using an electronic submission workflow with the receiver ID set to `PAPER` (Print and Mail - All Payers). Stedi then handles printing and mailing the claim to the designated payer on your behalf.

You can submit the following claim types as paper claims:

* **Professional:** Through the CMS-1500 form or X12 EDI upload
* **Institutional:** Through X12 EDI upload

### Limitations [#limitations]

Paper claims have the following limitations:

* **No dental claims**: 837D dental claims (ADA form) aren't supported for paper submission.
* **No paper attachments**: You can't submit paper attachments today by setting the receiver ID to `PAPER`.
* **Limited acknowledgments**: You'll receive 277CA claim acknowledgments indicating when Stedi has forwarded the claim for printing. Additional status updates (such as when the claim is printed, mailed, or returned as undeliverable) aren't currently available.
* **ERAs typically unavailable**: Payers that require paper claim submission usually don't support Electronic Remittance Advice (ERAs). Instead, they typically mail an Explanation of Benefits (EOB) back to the provider.

### Transaction enrollment [#transaction-enrollment]

Transaction enrollment isn't required for paper claim submission. However, you may still need enrollment for Electronic Remittance Advice (ERAs) if the payer supports them.

Note that payers that require paper claim submission usually *don't* support ERAs:

* HIPAA covered entity health plans are required to send ERAs electronically.
* Other health plans may use different formats and communication channels for both claim submissions and remittances.

### Paper receiver ID [#paper-receiver-id]

Stedi uses a special payer ID to route claim submissions for printing and mailing: `PAPER` (Print and Mail - All Payers). You'll submit this as the **receiver ID** in the claim submission.

For paper claims, it's the receiver ID that determines whether a claim is printed and mailed or sent electronically:

{/* prettier-ignore-start */}

| Name            | Location                                                                                                            | Description                       |
| --------------- | ------------------------------------------------------------------------------------------------------------------- | --------------------------------- |
| **Receiver ID** | <ul><li>**CMS-1500 UI:** **Send** section</li><li>**X12 EDI:** `Loop 1000B` (Receiver Name) `NM109`</li></ul>       | Controls the delivery method.     |
| **Payer ID**    | <ul><li>**CMS-1500 UI:** **Stedi payer** dropdown</li><li>**X12 EDI:** `Loop 2010BB` (Payer Name) `NM109`</li></ul> | Identifies the destination payer. |

{/* prettier-ignore-end */}

When the receiver ID is set to `PAPER` (or **By mail** is selected in the CMS-1500 form), Stedi bypasses the traditional electronic submission flow and uses the mail-to payer name and mailing address to print and mail a paper claim to the payer.

You'll still set the payer ID to the destination payer's ID or alias, if available in the Stedi [Payer Network](https://www.stedi.com/healthcare/network). However, you can also set the payer ID to `PAPER` when you need to send paper claims to payers outside of the electronic network.

For example, you can set the receiver ID to `PAPER` while keeping the payer ID as `CIGNA`. This tells Stedi to print and mail the claim to Cigna.

### Submit through CMS-1500 form [#submit-through-cms-1500-form]

You can submit professional paper claims through the [CMS-1500 form](https://portal.stedi.com/app/healthcare/claims/create). Within the form, configure these paper-specific settings:

<img alt="CMS-1500 paper claim fields" src="__img2" />

1. In the **Send** section, select **By mail**. This expands the UI to show additional fields for the mail-to payer name and payer address.

2. In the **Stedi payer** dropdown:
   * If the payer exists in Stedi's Payer Network, select it from the dropdown.
   * If the payer is not in the network, check **I'm sending to a payer not found in Stedi's network**. Stedi automatically populates the dropdown with the **Print and Mail - All Payers** option.

3. In the **Postage address** section:
   * Update the **Mail-to payer name** if necessary. This becomes the addressee on the physical envelope.
   * Fill in the **Payer address** fields with the complete mailing address where the claim should be sent.

After you submit the claim, Stedi will use the paper payer ID and the mailing address you provided to route the claim for printing and mailing.

### Submit through X12 EDI upload [#submit-through-x12-edi-upload]

You can submit professional paper claims through [X12 EDI upload](#x12-edi-upload). Construct an X12 EDI claim as you normally would. Then, add the following information.

{/* prettier-ignore-start */}

| Location                     | Elements                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     |
| ---------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `Loop 1000B` (Receiver Name) | Set the following paper-specific elements: <ul><li>`NM103`: The actual payer name, such as Cigna.</li><li>`NM109`: Set to `PAPER`. This is what tells Stedi to bypass the typical electronic submission flow and instead route this claim to be printed and mailed.</li></ul>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                |
| `Loop 2010BB` (Payer Name)   | Set the following paper-specific elements: <ul><li>`NM103`: The mail-to payer name. This is what should be listed on the physical envelope. This information may be different from `1000B NM103`.</li><li>`NM109`: Set this to the destination payer's ID or alias, if available in the Stedi [Payer Network](https://www.stedi.com/healthcare/network). If you're sending claims to payers outside the Payer Network, set this to `PAPER`.</li><li>`N301`: The first line of the street address. This typically contains the building number and street name.</li><li>`N302`: The second line of the street address. This is optional, and typically contains the apartment or suite number, if relevant.</li><li>`N401`: The city name.</li><li>`N402`: The state or province code. Only required when the city is in the United States and Canada.</li><li>`N403`: The postal zone or ZIP Code. Exclude punctuation and spaces.</li></ul> |

{/* prettier-ignore-end */}

After you submit the claim, Stedi will use the paper payer ID and the mailing address you provided to route the claim for printing and mailing.

#### Example: Professional paper claim [#example-professional-paper-claim]

The following example uses:

* The paper payer ID `PAPER` in `Loop 1000B` (Receiver Name) `NM109`.
* Cigna's payer ID from the Stedi [Payer Network](https://www.stedi.com/healthcare/network) in `Loop 2010BB` (Payer Name) `NM109`.

```
ISA...~
GS...~
ST*837*0001*005010X222A1~
...

NM1*40*2*CIGNA*****46*PAPER~                             // Paper payer ID
NM1*PR*2*CIGNA*****PI*62308~                             // Name and payer ID
N3*123 Example Street*STE 100~                           // Mailing address
N4*Mountain View*CA*940433706~

...
SE...~
GE...~
IEA...~
```

#### Example: Payer not in Stedi's network [#example-payer-not-in-stedis-network]

The following example uses:

* The paper payer ID `PAPER` in `Loop 1000B` (Receiver Name) `NM109`.
* The paper payer ID `PAPER` in `Loop 2010BB` (Payer Name) `NM109`. This allows you to submit paper claims to payers outside of the Stedi [Payer Network](https://www.stedi.com/healthcare/network).

```
ISA...~
GS...~
ST*837*0001*005010X222A1~
...

NM1*40*2*ACME Employer LLC*****46*PAPER~ // Paper payer ID
NM1*PR*2*ACME Employer LLC*****PI*PAPER~ // Name and paper payer ID
N3*987 Example Street*STE 200~           // Mailing address
N4*Philadelphia*PA*19192~

...
SE...~
GE...~
IEA...~
```

### Paper claim responses [#paper-claim-responses]

After you submit a paper claim through the portal, the portal displays a confirmation message with the submitted claim details. Then, Stedi returns a 277CA claim acknowledgment with category code `A1` (Acknowledgment/Receipt) and status code `19` (Acknowledged) to indicate that Stedi received the claim and forwarded it to the print-and-mail vendor. This is not confirmation that the claim has been printed or mailed.

Since payers that require paper claims typically don't support ERAs, you'll usually receive a paper Explanation of Benefits (EOB) in the mail instead of an 835 Electronic Remittance Advice (ERA).

## Download CMS-1500 PDF [#download-cms-1500-pdf]

Stedi automatically generates a [PDF CMS-1500 claim form](https://www.nucc.org/index.php/1500-claim-form-mainmenu-35) for submitted professional claims.

You can download a PDF version of professional claims in the CMS-1500 format from both the timeline view and the claim's detail page.

1. From the [claims view](https://portal.stedi.com/app/healthcare/claims), click a professional claim to open its timeline.

2. Do one of the following:
   * From the timeline view, hover over the claim and click **Download CMS-1500 claim PDF**.
   * Open the claim's detail page and click **Download CMS-1500 claim PDF**.

3. In the download menu, choose whether to **Include CMS-1500 form background**. This option is checked by default.

   The National Uniform Claim Committee (NUCC) and CMS provide exact specifications for blank CMS-1500 forms, including paper size and ink color. Many provider offices are accustomed to using these pre-printed forms, and their Practice Management System (PMS) applications are designed to print claim data onto them. Generating PDFs with no background allows you to print the claim data directly onto official pre-printed forms.

4. Click **Confirm download**. The PDF downloads to your computer.

Payers have strict requirements for submitted CMS-1500 claim forms. If you plan to send generated PDFs to payers or retain them for your records, we strongly recommend visiting [CMS-1500 Claim Form PDF](/providers/providers-cms-1500-claim-form-pdf) for information about the correct printer settings for generated PDFs and general best practices.

# Submit transaction enrollment requests
Source: https://www.stedi.com/docs/providers/providers-submit-enrollment-requests


You can submit transaction enrollment requests either individually or in bulk through CSV import.

You must create one enrollment request for each combination of payer and transaction type. For example, you'd need two separate requests to enroll for 835 Electronic Remittance Advice (ERAs) and 270/271 eligibility checks with the same payer.

<Tip>
  **835 ERAs:** Once enrollments are live, you'll no longer receive ERAs for that provider through your previous clearinghouse. If the payer supports it, you can specify a [requested effective date](#requested-effective-date) to help coordinate your migration to Stedi.
</Tip>

## Consider enrollment scope [#consider-enrollment-scope]

When you enroll a provider for 835 Electronic Remittance Advice (ERAs), payers can scope the enrollment in one of two ways:

* **NPI:** The payer registers only the specific National Provider Identifier (NPI) you submitted in the enrollment request. Other NPIs under the same Tax Identification Number (TIN) continue receiving ERAs through their existing clearinghouses.
* **TIN:** The payer registers all NPIs under the TIN. When you enroll one NPI, the payer switches the entire TIN to Stedi, affecting all NPIs that share that TIN.

Payers vary in how they manage enrollment scope, and this information isn't always disclosed to Stedi. For payers with TIN scope, enrolling one NPI may unintentionally enroll the other NPIs under that TIN. This means the ERAs for all of the associated NPIs will start flowing through Stedi - not just ERAs for the NPI you meant to enroll.

### Prevent disruptions [#prevent-disruptions]

To reduce the likelihood of unintentionally disrupting your workflows, we recommend:

* Enroll all NPIs that share the same TIN at the same time. This is common for hospital systems, clinic networks, or large medical groups that have multiple service locations operating under the same billing entity.
* If you need to keep some NPIs with your existing clearinghouse, contact Stedi support before submitting enrollment requests. We can help ensure the process goes smoothly.

## Submit enrollment requests [#submit-enrollment-requests]

Submit enrollment requests individually through the [Stedi portal](#individual-submission) or in bulk using [CSV import](#bulk-submission---csv-import).

### Individual submission [#individual-submission]

Individual submission is the simplest way to complete transaction enrollment. It involves two steps: creating a provider record and submitting enrollment requests.

#### Step 1: Create a provider record [#step-1-create-a-provider-record]

You must create a provider record with the name, tax ID, NPI, and contact information of the billing provider you plan to use in claims. Stedi submits this information to the payer as part of the enrollment process.

If you're a solo provider, this is likely your information. If you're [enrolling a group practice](#practices-and-facilities-with-multiple-providers-or-locations), you only need to create provider records for the NPIs and the tax IDs you use for billing. You don't need to create provider records for individual rendering providers.

<img alt="Provider record example" src="__img0" />

To create a provider record:

1. Go to the [Providers page](https://portal.stedi.com/app/healthcare/providers).
2. Click **New provider**.
3. Enter the required information:
   * **Display name**: A name to help you identify the provider record in your account. For example, "XYZ Medical Group". We don't share this name with payers.
   * **NPI**: The National Provider Identifier (NPI) on file with the payer that you use for billing. If you're enrolling a group practice, this is typically the group's NPI.
   * **Tax ID**: The tax ID, which can be an EIN or SSN. This should be the tax ID on file with the payer that you use for billing.
   * **Contacts**: This is where the payer will send communications about the enrollment, if needed. For many providers, Stedi can fetch contact information from the NPI registry. The name and address should exactly match what the payer has on file. However, the email and phone number can be set to wherever you want to receive payer communications.
4. Click **Create provider**.

The provider record is created and appears in the list on the [**Providers** page](https://portal.stedi.com/app/healthcare/providers).

#### Step 2: Create enrollment requests [#step-2-create-enrollment-requests]

Once you've created a provider record, you can attach it to one or more enrollment requests.

<img alt="New enrollment request" src="__img1" />

To create an enrollment request:

1. Go to the [Enrollments page](https://portal.stedi.com/app/healthcare/enrollments).

2. Click **New enrollment**.

3. Complete the required information:
   * **Payer**: Select the payer you want to enroll with. Start typing the payer's name to filter the list.

   * **Provider**: Select an existing provider record. The form automatically populates the provider's information. You can choose to use an existing contact or enter new contact information for the payer to use for communications about the enrollment. Review our guidance on [provider contact information](#provider-contact) to ensure updates go to the correct location.

   * **Transaction**: Select the transaction type you want to enroll for. The form populates the list of transaction types that the payer supports, and you'll only be able to select transaction types that require enrollment.
     * **Aggregate ERAs by (optional)**: For Electronic Remittance Advice (ERA) enrollments with supported payers, you can specify an [aggregation preference](#era-aggregation-preference).

     * **Requested effective date (optional)**: For supported payers, you can specify the date you'd like the enrollment to take effect. This is helpful for coordinating the migration from your previous clearinghouse, especially for ERA enrollments. Visit [Requested effective date](#requested-effective-date) to learn more.

   * **Stedi contact person**: This is the email address where Stedi will send updates about the enrollment request. We'll use it to notify you when there are next steps and send updates on the enrollment's status. This email address can be different from the contact information you provided in the provider record. Set it to wherever you want to receive Stedi's communications about the enrollment.

4. Click **Create enrollment**. Stedi asks you to confirm the information.

5. Review the enrollment information carefully and then click **Submit enrollment**.

The enrollment request is created and appears in the list of enrollments on the [Enrollments page](https://portal.stedi.com/app/healthcare/enrollments).

### Bulk submission - CSV import [#bulk-submission---csv-import]

You can import enrollment requests from a CSV file. This is a great option if you need to submit many requests at once.

To submit enrollment requests through bulk CSV import:

1. Go to the [Bulk imports page](https://portal.stedi.com/app/healthcare/enrollments/bulk).
2. Click **New bulk import**. The upload page contains detailed instructions for formatting the CSV file.
3. Download the CSV template and prepare your file according to the provided instructions. We also recommend reviewing the instructions about [enrollment contact information](#enrollment-contact-information) and [practices and facilities with multiple providers or locations](#practices-and-facilities-with-multiple-providers-or-locations) to ensure your file is set up correctly.
4. Click **+ Upload file** and select your file or drag and drop your file into the **Upload CSV** section.
5. Enter a **Name** for the batch. Stedi displays this batch name in the portal, so choose something descriptive.
6. Click **Verify file**. Stedi checks for errors and flags any rows that require adjustments. If there are errors, you can either fix them and re-upload the CSV file or click **Execute import without invalid rows** to proceed with importing valid rows.
7. Click **Execute import**. Stedi processes the import and creates the enrollment requests.

You can review the status of each bulk import on the [Bulk imports page](https://portal.stedi.com/app/healthcare/enrollments/bulk). The overview shows the number of rows that were successfully imported, the number of rows that were skipped due to errors or duplicates, and the date and time of the import. Click an import to view more details and download the [import status report](#import-status-report).

Imported enrollment requests appear in the list of enrollments on the [Enrollments page](https://portal.stedi.com/app/healthcare/enrollments).

#### Importing behavior [#importing-behavior]

Stedi automatically does the following when importing enrollment requests from a CSV file:

* Creates a new provider record for each unique combination of NPI and tax ID in the CSV file. For example, these two providers would be created as separate records even though they have the same name and NPI:
  * `John Doe, NPI: 1999999984, Tax ID: 987654321`
  * `John Doe, NPI: 1999999984, Tax ID: 123456789`
    <Warning>
      When a row in your CSV file contains an NPI and tax ID that match an
      existing provider record in your account, Stedi overwrites the existing
      provider record with the information in the CSV file. Any changes (such as
      updated address or contact information) aren't automatically applied to
      existing enrollment requests for that provider, only to requests created
      after Stedi updated the record.
    </Warning>
* Creates and submits enrollment requests.
* Removes duplicate rows to prevent duplicate requests.
* Skips rows that contain errors. For example, if a row contains an invalid NPI, Stedi skips that row and imports the rest of the file. Review the import status report to understand which rows were skipped and why.

#### Import status report [#import-status-report]

After importing, you can download a report that shows the status of each row in the CSV file. For example, duplicate rows are marked as `Duplicate: Enrollment already exists` in the `result` column.

To download the report:

1. Go to the [Bulk imports page](https://portal.stedi.com/app/healthcare/enrollments/bulk).
2. Click an import to view its details.
3. Click **Download full report**.

Rows with errors display a clear inline error message to help you make the necessary adjustments. You can fix rows with errors and re-upload the CSV file as many times as needed until all imports are successful.

## Enrollment contact information [#enrollment-contact-information]

When you submit an enrollment request, you'll need to provide two types of contact information. It's important to understand the difference between them.

### Provider contact [#provider-contact]

This is where the **payer** will send communications about the enrollment, if needed.

* The name and address should match exactly what the payer has on file for the provider. Some payers reject enrollment requests with addresses that don't match their records.
* However, you may want to set the phone number or email to a different contact - for example, a credentialing or general inbox - to ensure payer communications go to the right place.
* If you're enrolling a group practice, select a single administrative entity as the contact - don't use individual provider emails.

#### Where to set [#where-to-set]

You can specify contacts on both the provider record and on the enrollment request.

* **(Optional) Provider record:** These contacts are for convenience - they allow the Stedi portal to prepopulate contact information options when you create enrollment requests. They aren't required when you create provider records, and they aren't automatically added to enrollment requests.
* **(Required) Enrollment request:** You must specify a provider contact on the enrollment request. This is the information that Stedi shares with the payer when submitting the enrollment on your behalf. This contact information doesn't need to match the existing contact information on the provider record, which allows you to use different contacts for different payers as needed.

### Stedi contact email [#stedi-contact-email]

This is the email address where **Stedi** will send updates about the enrollment. It's required when you submit an enrollment request - we use it to notify you when there are next steps and send updates on the enrollment's status.

This is called the **Stedi contact person** on the enrollment request form, and it's the **user\_email** column in the CSV file for bulk imports.

This email address can be different from the contact information you provided in the provider record. Set it to wherever you want to receive Stedi's communications about the enrollment.

## Requested effective date [#requested-effective-date]

You can specify a requested effective date for transaction enrollments. This is the date you'd like the enrollment to take effect with the payer. For example, setting this for an 835 Electronic Remittance Advice (ERAs) enrollment to a future date helps you coordinate the migration from your previous clearinghouse to Stedi.

Stedi processes enrollments accordingly, but can't guarantee that the enrollment will be effective on this exact date.

### Check payer support [#check-payer-support]

You can determine which payers support requested effective dates in the [Payer Network](https://www.stedi.com/healthcare/network) by checking the **Requested effective date** field for the transaction type.

<img alt="Payer Network Aggregation Preferences" src="__img2" />

### Set requested effective date [#set-requested-effective-date]

To specify a requested effective date on enrollments:

* **Stedi portal:** Enter a date in the **Requested effective date** field when submitting enrollments. This field is visible for supported payers once you select a transaction type. You can submit today's date or a future date up to 6 months from today.
* **CSV import:** Populate the `requested_effective_date` column in YYYYMMDD format for each enrollment. Only set this for payers that support requested effective dates.

If you include a requested effective date for an unsupported payer, Stedi rejects the enrollment request. If you don't set a requested effective date, Stedi defaults to the enrollment's submission date.

## ERA aggregation preference [#era-aggregation-preference]

835 Electronic Remittance Advice (ERAs) can contain payment and adjudication details for multiple claims.

For supported payers, you can specify an aggregation preference for grouping claim information within each ERA. This helps ensure ERAs arrive in the way your billing system expects, reducing time spent matching payments to providers or practices.

### Aggregation types [#aggregation-types]

Payers use one of the following billing provider identifiers to group claim information in ERAs:

* **NPI:** The National Provider Identifier (NPI) always uniquely identifies a single provider entity, either an individual provider or an organization. For example, a doctor employed by multiple clinics may use the same NPI to submit claims across multiple TINs.
* **TIN:** The Tax Identification Number (TIN) can be the provider's Social Security Number (SSN) or Employee Identification Number (EIN). TINs are sometimes shared across multiple billing providers within the same organization. For example, a clinic may submit claims for several doctors using a single TIN.

Most payers default to TIN-based aggregation, and not all payers support both aggregation types.

### Check payer support [#check-payer-support-1]

You can determine which aggregation types your payers support through the [Payer Network](https://www.stedi.com/healthcare/network) - check the **ERA aggregation preferences** field.

<img alt="Payer Network Aggregation Preferences" src="__img3" />

### Set aggregation preference [#set-aggregation-preference]

To specify your aggregation preference on ERA enrollments:

* **Stedi portal:** Choose an identifier in the **Aggregate ERAs by** section when submitting ERA enrollments.
* **CSV import:** Populate either the `aggregationPreferenceNpi` (10 digit string) or `aggregationPreferenceTaxId` (9 digit string) column for each enrollment.

Stedi attempts to enroll with with your specified preference, but it's not guaranteed - ultimately, the payer controls how ERAs are grouped and routed. If you don't set a preference, Stedi automatically selects a default based on the payer's supported aggregation types and the available identifiers for the provider.

When available, Stedi displays the aggregation preference on the enrollment request's details page in the Stedi portal.

### Independent from scope [#independent-from-scope]

ERA aggregation preferences and [enrollment scope](#consider-enrollment-scope) are independent payer behaviors:

* **Enrollment scope:** Controls which NPIs the payer registers when you submit an enrollment request.
* **ERA aggregation:** Controls how the payer packages 835 ERAs after enrollment is complete - grouping claim information by NPI or TIN.

The payer's supported aggregation types don't indicate how they manage enrollment scope. A payer can support NPI-level aggregation preferences for 835 ERAs *and* manage enrollments at the TIN level. In these cases, specifying **NPI** as your preferred aggregation type in the enrollment request won't prevent the payer from enrolling all the NPIs associated with a specific TIN once the request is processed.

## Complete enrollment tasks [#complete-enrollment-tasks]

Tasks are actions that either the provider or Stedi need to complete to move the enrollment process forward.

When there's a new task that requires you to take action, Stedi adds a task to the enrollment request with instructions and sets the enrollment status to **Provider Action Required**. You'll [receive a notification](/providers/providers-manage-transaction-enrollments#notifications) that there's a new task to complete.

Stedi is automatically notified when you complete a task, and the enrollment process continues.

### Task types [#task-types]

Tasks fall into three categories:

* **Follow instructions:** Complete a specific action, such as logging into a payer portal or contacting a department. The task includes instructions explaining what to do.
* **Provide information:** Supply specific information or confirmation to Stedi. The task describes what information is needed.
* **Provide documentation:** Upload PDF documentation related to the enrollment.

When a task requires documentation, Stedi may ask you to:

* **Complete a template:** Stedi provides a PDF template for you to download, fill out, and upload back to Stedi.
* **Upload supporting documentation:** Stedi asks you to provide a document you already have, such as a W-9 form or voided check.

### Complete tasks [#complete-tasks]

You can review and manage tasks at the top of the enrollment request's details page in the Stedi portal. You must have the [Operator role](/providers/providers-account-settings#assign-member-roles) or above to complete enrollment tasks.

If the task requires you to complete and upload documentation, it will include instructions with a PDF template to download, fill out, and upload to Stedi.

<img alt="Enrollment task PDF upload" src="__img4" />

Once you've taken the required action, check the box next to the task to mark it as complete.

<img alt="Complete enrollment task" src="__img5" />

## Practices and facilities with multiple providers or locations [#practices-and-facilities-with-multiple-providers-or-locations]

Some healthcare organizations operate multiple facilities or practices under a shared structure. This is common in hospital systems, clinic networks, or large medical groups where multiple service locations operate under the same billing entity.

Transaction enrollment requires the billing provider's tax ID and NPI that you plan to use in claims and Electronic Remittance Advice (ERAs). When providers in a healthcare organization all use the same group NPI and tax ID for billing, we recommend:

* Create a single provider record with that NPI and the tax ID. You don't need to create provider records for individual rendering providers.
* Create enrollment requests with the billing provider record attached. You don't need to submit additional enrollment requests for individual rendering providers. Select a single administrative entity as the contact - don't include individual provider emails. This should be a credentialing or general inbox.
* Use the taxonomy code that matches the billing provider's credentials when submitting claims.

## One-click enrollment [#one-click-enrollment]

We offer one-click enrollment for eligible payers. Once you submit the enrollment request, Stedi handles the entire process without any additional action from you. These payers don't require any signatures or documentation other than what is included in the enrollment request.

To determine whether a payer is eligible for one-click enrollment:

1. Go to the [Payer Network](https://www.stedi.com/healthcare/network).
2. Search for the payer you want to enroll with.
3. Click the payer's name to view its details. Stedi lists the **Type** as **One-click** for transaction types that support one-click enrollment.

The following example shows that one-click enrollment is available for 835 ERAs with Blue Cross Blue Shield of Illinois.

<img alt="Payer Network - one-click enrollment" src="__img6" />

## Automatic enrollment requests [#automatic-enrollment-requests]

Some payers, such as the Centers for Medicare and Medicaid Services (CMS), require enrollment for eligibility checks.

Eligibility checks fail when a provider isn't properly enrolled. In these cases, Stedi automatically submits the required transaction enrollment request. Payers typically process these requests within 1-2 days.

We support automatic enrollment requests for the following payers in the [Payer Network](https://www.stedi.com/healthcare/network):

* The Centers for Medicare and Medicaid Services (CMS) (Payer ID: `CMS`)
* CMS MBI Lookup with SSN (Payer ID: `MBILU`)
* Highmark of Pennsylvania (Payer ID: `54771`)
* Highmark Senior Health Company (Payer ID: `15460`)
* Highmark Blue Cross Blue Shield of Delaware (Payer ID: `030`)
* Highmark Blue Cross Blue Shield of West Virginia (Payer ID: `54828`)

Please note:

* If the provider's NPI isn't active in the [National Plan & Provider Enumeration System (NPPES)](https://npiregistry.cms.hhs.gov/search), or if provider name information is unavailable from NPPES, Stedi won't automatically create the enrollment. Auto-enrollment requires provider name information, which is often unavailable for deactivated NPIs.
* For CMS enrollments, the provider must also complete [attestation](#cms-attestation). Stedi adds a task to the enrollment request when attestation is required.
* For CMS enrollments, the transaction enrollment request will be rejected and set to `REJECTED` status if the provider's NPI isn't active in [PECOS](https://pecos.cms.hhs.gov/pecos/login.do#headingLv1), the system CMS uses to manage active Medicare providers. In this case, we'll send you instructions explaining how to resolve the issue.
* Stedi sets the [Stedi contact email](#stedi-contact-email) to the oldest account member with the Admin role. This is where Stedi sends enrollment status notifications.

## CMS eligibility enrollment [#cms-eligibility-enrollment]

The Centers for Medicare and Medicaid Services (CMS) requires providers to complete attestation, also called HETS EDI Enrollment, before running Medicare eligibility checks. Attestation confirms that clearinghouses like Stedi have authorization to conduct eligibility checks on the provider's behalf. This requirement applies only to traditional Medicare, not Medicare Advantage (Part C) or Part D plans.

### How attestation works [#how-attestation-works]

Attestation is required for each billing National Provider Identifier (NPI) enrolled with CMS for eligibility checks. Stedi can't complete this step on the provider's behalf, and there is no bulk attestation across NPIs. The process takes approximately 5-15 minutes per NPI.

When you submit a CMS eligibility check enrollment request, Stedi moves the enrollment to the **Provider Action Required** status and adds an enrollment task to complete attestation. The task contains instructions for completing attestation. After the provider completes attestation, they can start submitting eligibility checks immediately, even if the enrollment status is not yet **Live**.

CMS rejects Medicare eligibility requests from providers who haven't completed attestation using `AAA` error code `41`.

You can view the attestation task and its status in the **Tasks** section of the enrollment request's details page in the Stedi portal.

# Support
Source: https://www.stedi.com/docs/providers/providers-support


We encourage you to contact us with questions, feedback, or for help using our products.

## Contact us [#contact-us]

We make every effort to respond as soon as possible, particularly to urgent requests. For both general support requests and billing inquiries, you can contact us through the following methods:

* [Website](https://www.stedi.com/contact) for all request types
* Email [support@stedi.com](mailto:support@stedi.com) for support requests, billing questions, and/or set up a dedicated Slack or Teams channel

When you report an issue, please include the following:

* A description of the issue, including the current behavior and the expected behavior
* Your Stedi account ID, if you submit through our website
* Screenshots showing the problem, when possible

# Supported payers
Source: https://www.stedi.com/docs/providers/providers-supported-payers


You can only submit transactions to supported payers, which means the payer is listed in Stedi's [Payer Network](https://www.stedi.com/healthcare/network). Stedi supports thousands of medical, dental, and vision payers, so most practices find that all their major payers are already in the network.

## What does "supported" mean? [#what-does-supported-mean]

When a payer is in the network, it means you can transact with them through Stedi. However, you'll also need to check:

* Whether the transaction types you want to send or receive are listed as "supported" for the payer. For example, if the Payer Network says real-time claim status checks aren't supported, you won't be able to send real-time claim status transactions to that payer through Stedi.
* Whether the payer requires [transaction enrollment](/providers/providers-transaction-enrollment-intro) to exchange the particular transaction. Transaction enrollment is the process of registering with the payer. This is always required for Electronic Remittance Advice (ERAs). It's required less often for other transaction types, like claims and eligibility checks, but there are exceptions. For example, the Centers for Medicare and Medicaid Services (CMS) requires enrollment for eligibility checks.

## What if my payer isn't available? [#what-if-my-payer-isnt-available]

If a payer you need isn't in the network, [request a payer](https://www.stedi.com/healthcare/network/request-payer) and we'll add them. We're continuously expanding our network.

## Find payer details [#find-payer-details]

The [Payer Network](https://www.stedi.com/healthcare/network) shows details about each supported payer.

To check details for a specific payer:

1. Go to the [Payer Network](https://www.stedi.com/healthcare/network).
2. Search for the payer by name and click a result to review its details.

   <img alt="Payer Network search" src="__img0" />

You can find the following details in the Payer Network:

### Payer IDs [#payer-ids]

When submitting claims and other transactions as EDI files, you'll need to include the payer ID for routing.

<Note>
  You must include leading `0` characters in payer IDs. For example, use `00540`
  for [SISCO](https://www.stedi.com/healthcare/network/sisco), not `540`.
</Note>

The Payer Network includes the following types of IDs:

* **Primary payer ID (recommended):** This is the most commonly used ID for a payer and most often corresponds to the name the payer uses internally and provides to patients on member ID cards. When you don't already have a payer ID for a particular payer, we recommend using the primary payer ID.
* **Stedi payer ID:** This is a unique identifier Stedi assigns to each payer. This ID will not change, even if the payer updates their primary payer ID. For X12 EDI file submissions, you can use either the Stedi payer ID or the primary payer ID.
* **Payer ID aliases:** These are alternative IDs associated with a payer. If a payer changes their primary payer ID, payer ID aliases ensure that you can still find the payer and continue sending transactions uninterrupted. Some payers also have different payer IDs for different plans. Payer ID aliases ensure that requests using these IDs are routed to the same payer.

### Other names [#other-names]

The Payer Network includes other names for many payers. These additional names help you search for and identify payers using the name most familiar to your organization. For example, "Eaton Benefits Ohio" is an alternative associated with "Cigna" - searching for either name returns the same payer within the database.

### Coverage types [#coverage-types]

You can determine which payers support medical use cases, dental use cases, vision use cases, or all three. Coverage types only apply to batch and real-time eligibility checks.

For example, Aetna's **Coverage types** in the network are Dental, Medical, and Vision. That means you can submit eligibility checks for medical, dental, and vision services to Aetna.

### Operating states [#operating-states]

The payer details page shows **Operating states** that list where the payer sells insurance plans.

Operating states can differ from where the payer is headquartered or where your patients live. For example, if a company is headquartered in Washington (WA), an employee in their Georgia office could still have Premera WA coverage. In this case, WA is the operating state because that's where the plan is sold.

Some payers may show **NATIONAL**, indicating they operate throughout the entire United States.

### Transactions and enrollment [#transactions-and-enrollment]

The payer's details page shows which transaction types Stedi supports for that payer. Under each transaction, we explain whether we support the transaction and whether the payer requires [transaction enrollment](/providers/providers-transaction-enrollment-intro).

If transaction enrollment is required, you'll need to complete that process before you can exchange that transaction type with the payer.

## Ask the Stedi Agent [#ask-the-stedi-agent]

You can chat with the Stedi Agent to get information about supported payers. To use it, you must be at least an [Operator](/providers/providers-account-settings#members) role within your Stedi account.

To start chatting with the Stedi Agent:

1. Go to the [Chats page](https://portal.stedi.com/app/healthcare/chats) in the Stedi portal.
2. Click **New chat** and select **Payer Finder**.
3. Type your question in the chat window and press &#x2A;*Enter.** For example, you could ask "What is the payer ID for Aetna?" or "Does Cigna support dental eligibility checks?" You can also ask more complex questions, like "Which payers support dental eligibility checks and require transaction enrollment?" Talk to Stedi Agent like you would a human support agent.
4. Ask follow-up questions as needed. You can ask multiple questions about different payers in the same chat.

The Stedi Agent will respond to your questions and display its answers in the chat window.

## Payer errors [#payer-errors]

Stedi returns the following error messages when a payer is not supported or enrolled properly.

{/* prettier-ignore-start */}

| Error message                                                                                                         | Possible causes and resolutions                                                                                                                                                                                                                     |
| --------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `Payer is not configured for {transaction type}. Please contact Stedi support to resolve.`                            | Stedi does not yet support this transaction type for this payer, or there is a mis-mapping of payer IDs. Contact us with the name of the payer, and we'll investigate the issue.                                                                    |
| `Payer connection does not support {transaction type}. Please contact Stedi support to discuss connectivity options.` | Stedi has a connection to this payer, but it doesn't currently support this functionality (real-time eligibility or claim submission). Contact us for a timeline on enabling it.                                                                    |
| `Payer is not configured. Please check our published payer list or contact Stedi support to resolve.`                 | Stedi doesn't recognize the payer ID you provided. Double-check the payer ID in the [Stedi Payer Network](https://www.stedi.com/healthcare/network), or contact us with the name of the payer, and we will help you determine the correct payer ID. |
| `Payer is not supported. Please contact Stedi support to discuss connectivity options.`                               | Stedi doesn't yet have connectivity to this payer. We're likely already working on it - contact us for details about the connectivity timeline.                                                                                                     |

{/* prettier-ignore-end */}

# Test claims workflow
Source: https://www.stedi.com/docs/providers/providers-test-claims-workflow


You can submit test professional, dental, and institutional claims to make sure your claims process is working smoothly from end to end. When you submit test claims to the [Stedi Test Payer](https://www.stedi.com/healthcare/network?search=StediTest\&entry=FRCPB), Stedi generates and returns an 835 Electronic Remittance Advice (ERA) based on the original claim.

## Submit test claims [#submit-test-claims]

You can submit test claims with any payer ID and receive test [277CA claim acknowledgments](/providers/providers-claim-acknowledgments) from Stedi. This helps you test your claim submission workflow and practice interpreting and handling 277CA responses.

To send a test claim:

* In the [1500 claim form](https://portal.stedi.com/app/healthcare/claims/create), select **Test** for the **EDI mode**.
* During [X12 EDI upload](https://portal.stedi.com/app/healthcare/claims/upload-raw-x12), select **Test** from the dropdown at the top of the text area.

Stedi processes the claim and applies our entire catalog of [edits and repairs](/providers/providers-claim-edits-and-repairs).

### Test 277CAs [#test-277cas]

When you submit a test claim to any payer, Stedi returns a test 277CA claim acknowledgment indicating whether the claim was successfully processed.

## View test claims [#view-test-claims]

When you designate a claim as test data, you can view it in test mode from the [claims view](https://portal.stedi.com/app/healthcare/claims). Toggle test mode to **ON** to review test claims and their associated responses.

## Generate test ERAs [#generate-test-eras]

When you submit test claims to the [Stedi Test Payer](https://www.stedi.com/healthcare/network?search=StediTest\&entry=FRCPB), Stedi returns a test 277CA claim acknowledgment and a test 835 Electronic Remittance Advice (ERA) based on the original claim. Only test claims you send to the Stedi Test Payer will generate a test 835 ERA.

You can use this approach to test your claims processing workflow from end to end.

### Enroll with the Stedi Test Payer [#enroll-with-the-stedi-test-payer]

You must enroll your provider with the [Stedi Test Payer](https://www.stedi.com/healthcare/network?search=StediTest\&entry=FRCPB) for **835 Claim payment**. Visit [Transaction enrollment](/providers/providers-submit-enrollment-requests) for instructions on how to submit an enrollment request.

Once submitted, the enrollment request is automatically set to `LIVE` status within one minute. You can start submitting test claims to the Stedi Test Payer immediately after enrollment.

<img alt="Stedi Test Payer enrollment" src="__img0" />

<Note>
  If you need to test ERAs for providers without an NPI, use a dummy NPI value (such as `1999999984`) to enroll with the Stedi Test Payer. You can then submit test claims with a state license number and the tax ID from your enrollment.
</Note>

### Submit a test claim [#submit-a-test-claim]

Submit a test claim to the Stedi Test Payer. Ensure that you:

* Designate the claim as test data:
  * Select **Test** for the **EDI mode** in the [1500 claim form](https://portal.stedi.com/app/healthcare/claims/create).
  * Set `ISA15` (Interchange Usage Indicator) to `T` (Test Data) during [X12 EDI upload](https://portal.stedi.com/app/healthcare/claims/upload-raw-x12).
* Set the payer to the [Stedi Test Payer](https://www.stedi.com/healthcare/network?search=StediTest\&entry=FRCPB).
* Include the billing provider identifiers you enrolled with the Stedi Test Payer. You can submit:
  * **Providers with an NPI:** NPI and tax ID
  * **Providers without an NPI:** Tax ID and state license number

The following example shows how to submit a test professional claim to the Stedi Test Payer using the CMS-1500 claim form in the Stedi portal.

<img alt="Submit claim to Stedi Test Payer" src="__img1" />

### Test responses [#test-responses]

Stedi returns the following responses within minutes of submitting a test claim to the Stedi Test Payer:

* A test 277CA claim acknowledgment response indicating whether the claim was successfully processed. Note that if Stedi rejects the claim in the 277CA, you won't receive a test 835 ERA.
* A test 835 Electronic Remittance Advice (ERA) containing information from the original claim, including the same:
  * Provider information
  * Patient information
  * Service line details
  * Charges

Test 835 ERAs identify the payee using the billing provider's tax ID from the claim submission. The ERA also includes whichever provider identifier you submitted in the 837 claim (NPI or state license number).

Test 835 ERAs always indicate that all service lines are paid, with the same charge amounts you submitted in the test claim. Note that when you submit real claims, payers may send ERAs with different outcomes, including partially paid, denied, split, or bundled claims.

## Review test responses [#review-test-responses]

You can review test 277CAs and 835 ERAs from the [claims view](https://portal.stedi.com/app/healthcare/claims) in the Stedi portal. Toggle test mode to **ON** to view test claims and responses.

#### 277CAs [#277cas]

Click **All claims** at the top of the page to view all test claims in your account.

1. Click a claim to view a timeline of its processing activity.
2. Click an **Acknowledgment** (277CA) to review its details.

Stedi displays key information about the 277CA, including the billing provider's information and status codes.

#### 835 ERAs [#835-eras]

Click **835 ERAs** at the top of the page to review all test ERAs in your account.

1. Filter by processed date, trace number, total paid, payment date, payment method, payer, payee (billing provider), payee NPI, payee Tax ID, or PCN (Patient Control Number).
2. Click an ERA to review its details.

You can also find ERAs for a specific claim from the claim's timeline:

1. Click **All claims** at the top of the page.
2. Click a claim to view its timeline.
3. Click **Find matching ERAs** in the side panel under the **PCN** to search for ERAs that match the claim's Patient Control Number (PCN). If no ERAs match, the ERA list will be empty.
4. Click an ERA to review its details.

Both the test 277CA and the test 835 ERA will include the Patient Control Number you specified in the claim submission, which is what Stedi uses to match these responses to the original claim.

| Response type | How to find Patient Control Number                                                                                                        |
| ------------- | ----------------------------------------------------------------------------------------------------------------------------------------- |
| 277CA         | On the **Overview** tab, the Patient Control Number is displayed as the **Patient account number**.                                       |
| 835 ERA       | On the **Overview** tab, the Patient Control Number is in the **Claims** section in the **Patient Control Number** column for each claim. |

# Test mode
Source: https://www.stedi.com/docs/providers/providers-test-mode


Test mode provides a separate test environment where you can realistically simulate transactions in your Stedi account without PHI/PII and without sending any data to payers.

You can access test mode in your account at any time by clicking your account name in the side navigation and toggling **Test mode** to **ON**.

## Send mock eligibility checks [#send-mock-eligibility-checks]

<Tip>
  Mock transactions you send in test mode are free for testing purposes and
  won't incur any charges from Stedi.
</Tip>

You can submit mock real-time eligibility checks through the manual [eligibility check form](https://portal.stedi.com/app/healthcare/checks/create). You can choose from a variety of predefined requests for well-known payers, including:

* Aetna
* Cigna
* UnitedHealthcare
* National Centers for Medicare & Medicaid Services (CMS)

For each mock request, Stedi returns a realistic mock benefits response for that payer so you can get a sense for the kinds of data you'll receive in production. The benefits responses include examples of copays, deductibles, and other patient payment responsibilities, as well as active coverage.

You can also submit a mock Medicare Beneficiary Identifier (MBI) lookup. MBI lookups allow you to use a patient's Social Security Number (SSN) to retrieve their MBI and complete benefits information from the Centers for Medicare and Medicaid Services (CMS).

### Test the Stedi Agent [#test-the-stedi-agent]

The [Stedi Agent](/healthcare/send-eligibility-checks-ui#retry-with-the-stedi-agent) resolves recoverable eligibility check errors automatically with the same best practices our Support team uses for troubleshooting. You can run a specific mock eligibility check to evaluate the Stedi Agent:

1. Create a new eligibility check and select **Stedi Agent** as the payer. Keep all other properties set to their defaults.
2. Submit the check. It's designed to fail so you can watch the agent resolve issues in real time. Specifically, it returns `AAA` error `73` (Invalid/Missing Subscriber/Insured Name).
3. Click **Resolve with Stedi Agent**. The agent runs in **Debug view** to fix the error and eventually produce a successful mock eligibility response.
4. Click **View check** to go to its details page and review the full mock benefits response.

## Review eligibility check results [#review-eligibility-check-results]

After you submit a mock eligibility check, you can review all of the request and response details. This includes:

* A list of historical eligibility checks that you can filter by status, payer ID, date, and error code.
* The raw API request and response.
* A user-friendly benefits view designed to help you quickly understand the patient's active coverage and payment responsibilities, such as co-pay and deductible amounts.
* Eligibility check **Debug** view, which allows you to to systematically troubleshoot failed checks until you receive a successful response from the payer.

To review an eligibility check's results:

1. Go to the [Eligibility searches page](https://portal.stedi.com/app/healthcare/eligibility).
2. Click the eligibility search with the benefits information you want to view.

Stedi opens the eligibility search's **Overview** tab. Click **Benefits** to review a table of the mock benefits data.

<img alt="Benefits table overview" src="__img0" />

## View test claims [#view-test-claims]

<Note>
  Test claim submission is only available for production accounts. If you have a sandbox account, click **Upgrade account** in the side navigation to submit test claims through the API or SFTP.
</Note>

You can submit test claims through SFTP or Stedi's APIs and view them in the [claims view](https://portal.stedi.com/app/healthcare/claims) when **Test mode** is toggled to **ON**. Submitting test claims through the claims view is not yet supported.

To submit test claims:

* **JSON endpoints:** Set the `usageIndicator` property in the test claim body to `T`.
* **X12 EDI endpoints and SFTP:** Set `ISA15` (Interchange Usage Indicator) to `T` (Test Data).

Visit the [test claims workflow](/healthcare/test-claims-workflow) page for detailed instructions on submitting test claims and generating test 835 Electronic Remittance Advice (ERA) responses from the Stedi Test Payer.

Click any test claim to view a timeline of its processing activity, including all associated test responses such as test 277CA claim acknowledgments and test 835 Electronic Remittance Advice (ERAs).

## Explore the Stedi portal [#explore-the-stedi-portal]

The test environment allows you to get familiar with Stedi's UI tools and learn more about how you can use Stedi to automate claims and eligibility check workflows.

## Not supported [#not-supported]

The following features aren't currently supported in test mode:

* Transaction enrollment
* Insurance discovery checks
* Coordination of benefits (COB) checks
* Submitting claims through the Stedi portal UI
* 275 claim attachments
* 276/277 real-time claim status
* Custom mock data or payer selection

# Transaction enrollment FAQ
Source: https://www.stedi.com/docs/providers/providers-transaction-enrollment-faq


This FAQ provides answers to the most common questions about transaction enrollment. Please contact Stedi support with additional questions.

## How do I know if I need to enroll? [#how-do-i-know-if-i-need-to-enroll]

All payers require transaction enrollment for 835 Electronic Remittance Advice (ERAs). For other transactions, like claims and eligibility checks, it depends on the payer.

Check the [Payer Network](https://www.stedi.com/healthcare/network) to determine whether your payers require enrollment for the transaction types you want to send and receive.

For transactions marked as **Supported, enrollment required**, you must complete the transaction enrollment process before you can begin exchanging that transaction type through Stedi.

## How long does transaction enrollment take? [#how-long-does-transaction-enrollment-take]

The transaction enrollment process typically takes 24-48 hours, though it can take up to 30 days for some payers.

## Do I need to enroll through Stedi if I'm already enrolled through another clearinghouse? [#do-i-need-to-enroll-through-stedi-if-im-already-enrolled-through-another-clearinghouse]

Yes. Enrollment is specific to each clearinghouse. So if a payer requires enrollment, you will need to go through the enrollment process with Stedi to begin exchanging transactions through the Stedi clearinghouse.

## What will happen to the ERAs I currently receive through a different clearinghouse? [#what-will-happen-to-the-eras-i-currently-receive-through-a-different-clearinghouse]

ERAs can only be sent to a single clearinghouse. Once you enroll for ERAs through Stedi, all ERAs from that payer to the provider you enrolled will come through Stedi. The provider will no longer receive ERAs from that payer through your previous clearinghouse.

## Does enrolling with Stedi cancel my enrollment with another clearinghouse? [#does-enrolling-with-stedi-cancel-my-enrollment-with-another-clearinghouse]

For ERAs, yes. Once you enroll for ERAs through Stedi, the payer will stop sending ERAs to your previous clearinghouse.

For other transaction types, mostly no (with a few exceptions). For most payers that require enrollment for claim submission, eligibility checks, or claim status inquiries, enrolling through Stedi won't impact your ability to send transactions to your original clearinghouse. Only a few payers require the 837 claim to be sent to the same clearinghouse as the 835 ERA enrollment. For any questions on payer nuances, contact Stedi's support team.

## Can a provider be enrolled through multiple clearinghouses at the same time? [#can-a-provider-be-enrolled-through-multiple-clearinghouses-at-the-same-time]

Yes, for eligibility checks, claims, and claim status checks. For most payers that require enrollment for claim submission, eligibility checks, or claim status inquiries, enrolling through Stedi will not impact your ability to send transactions to your original clearinghouse. Only a few payers require the 837 claim to be sent to the same clearinghouse as the 835 ERA enrollment. For any questions on payer nuances, contact Stedi's support team.

No, for ERAs. As soon as an ERA enrollment in Stedi is processed with the payer, you won't receive ERAs through your previous clearinghouse.

## Can I send claims through Stedi without switching my ERA enrollments? [#can-i-send-claims-through-stedi-without-switching-my-era-enrollments]

Yes, you can start sending claims through Stedi without enrolling for ERAs. The ERAs will still go to your current clearinghouse. In Stedi, you'll see the claim and the 277CA claim acknowledgment from the payer, but you won't see ERAs until you switch those enrollments to Stedi.

## Can I enroll one NPI without affecting others associated with the same TIN (tax ID)? [#can-i-enroll-one-npi-without-affecting-others-associated-with-the-same-tin-tax-id]

It depends on how the payer manages enrollment scope.

Some payers manage enrollments at the NPI level - when you enroll one NPI, only that NPI switches to Stedi. Other payers manage enrollments at the Tax Identification Number (TIN) level - when you enroll one NPI, all NPIs under that TIN switch to Stedi.

Payers vary in how they manage enrollment scope, and this information isn't always disclosed to Stedi. If you have multiple NPIs that share the same TIN and you want to keep some with your existing clearinghouse, contact Stedi support before submitting enrollment requests to discuss your specific situation.

# Transaction enrollment overview
Source: https://www.stedi.com/docs/providers/providers-transaction-enrollment-intro


Transaction enrollment is the process of registering a provider to exchange:

* a specific healthcare transaction (like 835 Electronic Remittance Advice ERAs)
* with a specific payer (like Cigna or UnitedHealthcare)
* through a specific clearinghouse (Stedi).

When a payer requires transaction enrollment, you **must** complete the process before you can begin exchanging that transaction type through Stedi. It typically takes 24-48 hours.

## Do I need to enroll? [#do-i-need-to-enroll]

<Tip>
  All payers require transaction enrollment for 835 Electronic Remittance Advice
  (ERAs). For other transactions, like claims and eligibility checks, it depends
  on the payer.
</Tip>

Check the [Payer Network](https://www.stedi.com/healthcare/network) to determine whether your payers require enrollment for the transaction types you want to send and receive. For transactions marked as **Supported, enrollment required**, you must complete the transaction enrollment process before you can begin exchanging that transaction type through Stedi.

<img alt="Payer Network - enrollment required for ERAs" src="__img0" />

Transaction enrollment is specific to each clearinghouse. If you're already enrolled with a payer through another clearinghouse, you still need to complete enrollment with Stedi.

Don't enroll for 835 ERAs until you're ready to switch to Stedi. Once you enroll, all ERAs from that payer will come through Stedi exclusively. You'll no longer receive ERAs from that payer through your previous clearinghouse.

## Transaction enrollment process [#transaction-enrollment-process]

Stedi handles most of the transaction enrollment process for you. Here's how it works:

<Steps>
  <Step title="Submit transaction enrollment requests to Stedi.">
    You can submit transaction enrollment requests either individually or in bulk through CSV import. With both methods, you'll:

    1. Create a provider record with the billing provider's tax ID, NPI, and contact information.
    2. Submit enrollment requests containing the provider record, the payer, and the transaction type.
  </Step>

  <Step title="Stedi begins the enrollment process with the payer.">
    When we begin the enrollment process with the payer, we'll set the enrollment status to **PROVISIONING** and send you notifications. You can manage your [notification preferences](/providers/providers-account-settings#notification-preferences) to control which notifications you receive.
  </Step>

  <Step title="Complete any payer-specific requirements.">
    For some payers, such as those with [one-click enrollment](/providers/providers-submit-enrollment-requests#one-click-enrollment), Stedi can complete the entire enrollment process for you. We sign enrollment PDF forms on your behalf, when possible, to speed up the process and eliminate extra work for your team.

    Some enrollments may require you to complete additional steps. If there are additional steps, we'll set the enrollment status to **PROVIDER ACTION REQUIRED** and add a task to the enrollment request with clear instructions. The enrollment process continues once you complete the required tasks.
  </Step>

  <Step title="Enrollment is live.">
    Once a transaction enrollment request is in **LIVE** status, you can start exchanging that transaction type through Stedi.

        <img alt="Enrollment status LIVE" src="__img1" />

    ERAs can only be sent to one clearinghouse, so you'll start receiving them through Stedi exclusively. Your enrollment with any other clearinghouses will be canceled.

    For most payers that require enrollment for claim submission, eligibility checks, or claim status checks, enrolling through Stedi won't impact your ability to send transactions to your original clearinghouse. Only a few payers require the 837 claim to be sent to the same clearinghouse as the 835 ERA enrollment. For any questions on payer nuances, contact Stedi's support team.

    <Tip>
      Check out our [Enrollment FAQ](/providers/providers-transaction-enrollment-faq) for answers to common
      questions.
    </Tip>
  </Step>
</Steps>

# Trust Center
Source: https://www.stedi.com/docs/providers/providers-trust-center


Visit our [Trust Center](https://trust.stedi.com/) for complete trust and compliance information for all Stedi products and APIs, including our:

* Privacy policy
* Data management policy
* Access control policy
* HIPAA compliance policy
* Certifications, including SOC 2 Type II and HIPAA
* Security and privacy controls

# Delete Enrollment Document
Source: https://www.stedi.com/docs/healthcare/api-reference/delete-enrollment-document


This endpoint deletes the specified PDF document associated with a [transaction enrollment](/healthcare/transaction-enrollment).

1. Call this endpoint with the document ID for the PDF document you want to delete. The document ID is returned in the responses for the [Retrieve Enrollment](/healthcare/api-reference/get-enrollment) and [List Enrollments](/healthcare/api-reference/get-enrollment-list-enrollments) endpoints.
2. The endpoint returns an empty response to indicate that the document has been successfully deleted.

You can also delete enrollment documents manually from the enrollment's details page in the Stedi portal.

## API Specification

Deletes the specified PDF document associated with a transaction enrollment.

**Endpoint:** `DELETE /documents/{documentId}`

**Base URL:** `https://enrollments.us.stedi.com/2024-09-01`

### Parameters

- **`documentId`** (path) (required): The document ID for the PDF document you want to delete. The document ID is returned in the responses for the [Retrieve Enrollment](/healthcare/api-reference/get-enrollment) and [List Enrollments](/healthcare/api-reference/get-enrollment-list-enrollments) endpoints.
  - Type: `string`

### Responses

#### 200

DeleteEnrollmentDocument 200 response

#### 400

ValidationException 400 response

**Schema:** `ValidationExceptionResponseContent`

**Properties:**

- **`fieldList`** (`array of ValidationExceptionField objects`): A list of specific failures encountered while validating the input.
A member can appear in this list more than once if it failed to satisfy multiple constraints.
- **`fieldList[].message`** (`string`) (required): A detailed description of the validation failure.
- **`fieldList[].path`** (`string`) (required): A JSONPointer expression to the structure member whose value failed to satisfy the modeled constraints.
- **`message`** (`string`) (required): A summary of the validation failure.
#### 401

UnauthorizedException 401 response

**Schema:** `UnauthorizedExceptionResponseContent`

**Properties:**

- **`code`** (`string`): Error classification code
- **`message`** (`string`) (required): Human-readable error message
#### 403

AccessDeniedException 403 response

**Schema:** `AccessDeniedExceptionResponseContent`

**Properties:**

- **`code`** (`string`): Error classification code
- **`message`** (`string`) (required): Human-readable error message
#### 404

ResourceNotFoundException 404 response

**Schema:** `ResourceNotFoundExceptionResponseContent`

**Properties:**

- **`code`** (`string`): Error classification code
- **`message`** (`string`) (required): Human-readable error message
#### 429

QuotaExceededException 429 response

**Schema:** `QuotaExceededExceptionResponseContent`

**Properties:**

- **`code`** (`string`): Error classification code
- **`message`** (`string`) (required): Human-readable error message
#### 500

InternalFailureException 500 response

**Schema:** `InternalFailureExceptionResponseContent`

**Properties:**

- **`code`** (`string`): Error classification code
- **`message`** (`string`) (required): Human-readable error message
#### 503

ServiceUnavailableException 503 response

**Schema:** `ServiceUnavailableExceptionResponseContent`

**Properties:**

- **`code`** (`string`): Error classification code
- **`message`** (`string`) (required): Human-readable error message
#### 504

GatewayTimeoutException 504 response

**Schema:** `GatewayTimeoutExceptionResponseContent`

**Properties:**

- **`code`** (`string`): Error classification code
- **`message`** (`string`) (required): Human-readable error message


# Delete Provider
Source: https://www.stedi.com/docs/healthcare/api-reference/delete-enrollment-provider


This endpoint allows you to delete providers without associated [transaction enrollments](/healthcare/transaction-enrollment). If you need to delete a provider that has associated enrollments, contact support.

## API Specification

Deletes a provider record. Providers can only be deleted if they have no associated enrollments. This operation is idempotent.

**Endpoint:** `DELETE /providers/{providerId}`

**Base URL:** `https://enrollments.us.stedi.com/2024-09-01`

### Parameters

- **`providerId`** (path) (required): The Stedi-assigned identifier for the provider you want to delete.
  - Type: `string`

### Responses

#### 200

DeleteProvider 200 response

#### 400

ValidationException 400 response

**Schema:** `ValidationExceptionResponseContent`

**Properties:**

- **`fieldList`** (`array of ValidationExceptionField objects`): A list of specific failures encountered while validating the input.
A member can appear in this list more than once if it failed to satisfy multiple constraints.
- **`fieldList[].message`** (`string`) (required): A detailed description of the validation failure.
- **`fieldList[].path`** (`string`) (required): A JSONPointer expression to the structure member whose value failed to satisfy the modeled constraints.
- **`message`** (`string`) (required): A summary of the validation failure.
#### 401

UnauthorizedException 401 response

**Schema:** `UnauthorizedExceptionResponseContent`

**Properties:**

- **`code`** (`string`): Error classification code
- **`message`** (`string`) (required): Human-readable error message
#### 403

AccessDeniedException 403 response

**Schema:** `AccessDeniedExceptionResponseContent`

**Properties:**

- **`code`** (`string`): Error classification code
- **`message`** (`string`) (required): Human-readable error message
#### 404

ResourceNotFoundException 404 response

**Schema:** `ResourceNotFoundExceptionResponseContent`

**Properties:**

- **`code`** (`string`): Error classification code
- **`message`** (`string`) (required): Human-readable error message
#### 429

QuotaExceededException 429 response

**Schema:** `QuotaExceededExceptionResponseContent`

**Properties:**

- **`code`** (`string`): Error classification code
- **`message`** (`string`) (required): Human-readable error message
#### 500

InternalFailureException 500 response

**Schema:** `InternalFailureExceptionResponseContent`

**Properties:**

- **`code`** (`string`): Error classification code
- **`message`** (`string`) (required): Human-readable error message
#### 503

ServiceUnavailableException 503 response

**Schema:** `ServiceUnavailableExceptionResponseContent`

**Properties:**

- **`code`** (`string`): Error classification code
- **`message`** (`string`) (required): Human-readable error message
#### 504

GatewayTimeoutException 504 response

**Schema:** `GatewayTimeoutExceptionResponseContent`

**Properties:**

- **`code`** (`string`): Error classification code
- **`message`** (`string`) (required): Human-readable error message


# Delete Enrollment
Source: https://www.stedi.com/docs/healthcare/api-reference/delete-enrollment


This endpoint allows you to delete a [transaction enrollment](/healthcare/transaction-enrollment) that is still in `DRAFT` status.

## API Specification

Deletes an enrollment request. Only enrollments in DRAFT status can be deleted. This operation is idempotent.

**Endpoint:** `DELETE /enrollments/{enrollmentId}`

**Base URL:** `https://enrollments.us.stedi.com/2024-09-01`

### Parameters

- **`enrollmentId`** (path) (required): The Stedi-assigned identifier for the enrollment you want to delete.
  - Type: `string`

### Responses

#### 200

DeleteEnrollment 200 response

#### 400

ValidationException 400 response

**Schema:** `ValidationExceptionResponseContent`

**Properties:**

- **`fieldList`** (`array of ValidationExceptionField objects`): A list of specific failures encountered while validating the input.
A member can appear in this list more than once if it failed to satisfy multiple constraints.
- **`fieldList[].message`** (`string`) (required): A detailed description of the validation failure.
- **`fieldList[].path`** (`string`) (required): A JSONPointer expression to the structure member whose value failed to satisfy the modeled constraints.
- **`message`** (`string`) (required): A summary of the validation failure.
#### 401

UnauthorizedException 401 response

**Schema:** `UnauthorizedExceptionResponseContent`

**Properties:**

- **`code`** (`string`): Error classification code
- **`message`** (`string`) (required): Human-readable error message
#### 403

AccessDeniedException 403 response

**Schema:** `AccessDeniedExceptionResponseContent`

**Properties:**

- **`code`** (`string`): Error classification code
- **`message`** (`string`) (required): Human-readable error message
#### 404

ResourceNotFoundException 404 response

**Schema:** `ResourceNotFoundExceptionResponseContent`

**Properties:**

- **`code`** (`string`): Error classification code
- **`message`** (`string`) (required): Human-readable error message
#### 429

QuotaExceededException 429 response

**Schema:** `QuotaExceededExceptionResponseContent`

**Properties:**

- **`code`** (`string`): Error classification code
- **`message`** (`string`) (required): Human-readable error message
#### 500

InternalFailureException 500 response

**Schema:** `InternalFailureExceptionResponseContent`

**Properties:**

- **`code`** (`string`): Error classification code
- **`message`** (`string`) (required): Human-readable error message
#### 503

ServiceUnavailableException 503 response

**Schema:** `ServiceUnavailableExceptionResponseContent`

**Properties:**

- **`code`** (`string`): Error classification code
- **`message`** (`string`) (required): Human-readable error message
#### 504

GatewayTimeoutException 504 response

**Schema:** `GatewayTimeoutExceptionResponseContent`

**Properties:**

- **`code`** (`string`): Error classification code
- **`message`** (`string`) (required): Human-readable error message


# Retrieve Eligibility PDF (271)
Source: https://www.stedi.com/docs/healthcare/api-reference/get-eligibility-pdf


This endpoint retrieves the [eligibility PDF](/healthcare/eligibility-pdf) for a 270/271 eligibility check. Stedi generates a PDF for eligibility checks with valid 271 responses. The PDF contains a summary of the request details and a human-readable version of the 271 response.

1. Call this endpoint with the `eligibilityCheckId` path parameter set to the eligibility check's ID. You can retrieve this ID from the:
   * `id` property of the real-time JSON, Raw X12, and SOAP eligibility check endpoint responses.
   * `items.id` property of the Poll Batch Eligibility Checks endpoint response.
   * Eligibility check's details page within the [Stedi portal](https://portal.stedi.com/app/healthcare/eligibility).

2. The endpoint returns the PDF as a base64-encoded string by default. To receive unencoded binary PDF data instead, include the `Accept: application/pdf` request header.

   To view the PDF, save the unencoded response body to a file with a `.pdf` extension.

   ```bash
   curl --request GET \
    --url "https://manager.us.stedi.com/2024-04-01/eligibility-manager/eligibility-checks/{eligibilityCheckId}/pdf" \
    --header "Accept: application/pdf" \
    --header "Authorization: <api_key>" \
    --output ~/Desktop/eligibility.pdf
   ```

## API Specification

Retrieve a PDF version of the 271 benefits response for the specified eligibility check

**Endpoint:** `GET /eligibility-manager/eligibility-checks/{eligibilityCheckId}/pdf`

**Base URL:** `https://manager.us.stedi.com/2024-04-01`

### Parameters

- **`eligibilityCheckId`** (path) (required): The globally unique identifier for this eligibility check across all Stedi accounts. It's formatted as `ec_<uuid>`. For example: `ec_550e8400-e29b-41d4-a716-446655440000`. You can find it:
  - In the `id` property of the real-time JSON, Raw X12, and SOAP eligibility check endpoint responses.
  - In the `items[].id` property of the Poll Batch Eligibility Checks endpoint response.
  - On the eligibility check's details page within the Stedi portal.
  - Type: `string`

### Responses

#### 200

GetEligibilityCheckPdf 200 response

#### 400

PdfRenderLimitExceededException 400 response

**Schema:** `PdfRenderLimitExceededExceptionResponseContent`

**Properties:**

- **`code`** (`string`)
- **`message`** (`string`) (required)
#### 401

UnauthorizedException 401 response

**Schema:** `UnauthorizedExceptionResponseContent`

**Properties:**

- **`code`** (`string`): Error classification code
- **`message`** (`string`) (required): Human-readable error message
#### 403

AccessDeniedException 403 response

**Schema:** `AccessDeniedExceptionResponseContent`

**Properties:**

- **`code`** (`string`): Error classification code
- **`message`** (`string`) (required): Human-readable error message
#### 404

ResourceNotFoundException 404 response

**Schema:** `ResourceNotFoundExceptionResponseContent`

**Properties:**

- **`code`** (`string`): Error classification code
- **`message`** (`string`) (required): Human-readable error message
#### 500

InternalFailureException 500 response

**Schema:** `InternalFailureExceptionResponseContent`

**Properties:**

- **`code`** (`string`): Error classification code
- **`message`** (`string`) (required): Human-readable error message
#### 504

GatewayTimeoutException 504 response

**Schema:** `GatewayTimeoutExceptionResponseContent`

**Properties:**

- **`code`** (`string`)
- **`message`** (`string`) (required)


# Download Enrollment Document
Source: https://www.stedi.com/docs/healthcare/api-reference/get-enrollment-document-download


This endpoint returns a pre-signed URL that you can use to download a PDF document related to the specified [transaction enrollment](/healthcare/transaction-enrollment).

1. Call this endpoint with the document ID for the PDF document you want to download. The document ID is returned in the responses for the [Retrieve Enrollment](/healthcare/api-reference/get-enrollment) and [List Enrollments](/healthcare/api-reference/get-enrollment-list-enrollments) endpoints.
2. The endpoint returns a pre-signed URL that you can use to download the specified PDF document.
3. Use a `GET` request to download the PDF document from the pre-signed URL.

   ```bash
   curl --request GET \
   --url "<downloadUrl>" \
   --output /path/to/file.pdf
   ```

You can also download enrollment documents manually from the enrollment's details page in the Stedi portal.

## API Specification

Returns a pre-signed URL to download the specified enrollment document.

**Endpoint:** `GET /documents/{documentId}/download`

**Base URL:** `https://enrollments.us.stedi.com/2024-09-01`

### Parameters

- **`documentId`** (path) (required): The document ID for the PDF document you want to download. The document ID is returned in the responses for the [Retrieve Enrollment](/healthcare/api-reference/get-enrollment) and [List Enrollments](/healthcare/api-reference/get-enrollment-list-enrollments) endpoints.
  - Type: `string`

### Responses

#### 200

CreateEnrollmentDocumentDownload 200 response

**Schema:** `CreateEnrollmentDocumentDownloadResponseContent`

**Properties:**

- **`documentId`** (`string`) (required): The document ID for the PDF document associated with the `downloadUrl`.
- **`downloadUrl`** (`string`) (required): The pre-signed URL to download the document.

**Example:**

```json
{
  "documentId": "doc-123e4567-e89b-12d3-a456-426614174000",
  "downloadUrl": "https://s3.amazonaws.com/enrollment-documents/doc-123e4567-e89b-12d3-a456-426614174000/provider-license.pdf?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=..."
}
```

#### 400

ValidationException 400 response

**Schema:** `ValidationExceptionResponseContent`

**Properties:**

- **`fieldList`** (`array of ValidationExceptionField objects`): A list of specific failures encountered while validating the input.
A member can appear in this list more than once if it failed to satisfy multiple constraints.
- **`fieldList[].message`** (`string`) (required): A detailed description of the validation failure.
- **`fieldList[].path`** (`string`) (required): A JSONPointer expression to the structure member whose value failed to satisfy the modeled constraints.
- **`message`** (`string`) (required): A summary of the validation failure.
#### 401

UnauthorizedException 401 response

**Schema:** `UnauthorizedExceptionResponseContent`

**Properties:**

- **`code`** (`string`): Error classification code
- **`message`** (`string`) (required): Human-readable error message
#### 403

AccessDeniedException 403 response

**Schema:** `AccessDeniedExceptionResponseContent`

**Properties:**

- **`code`** (`string`): Error classification code
- **`message`** (`string`) (required): Human-readable error message
#### 404

ResourceNotFoundException 404 response

**Schema:** `ResourceNotFoundExceptionResponseContent`

**Properties:**

- **`code`** (`string`): Error classification code
- **`message`** (`string`) (required): Human-readable error message
#### 429

QuotaExceededException 429 response

**Schema:** `QuotaExceededExceptionResponseContent`

**Properties:**

- **`code`** (`string`): Error classification code
- **`message`** (`string`) (required): Human-readable error message
#### 500

InternalFailureException 500 response

**Schema:** `InternalFailureExceptionResponseContent`

**Properties:**

- **`code`** (`string`): Error classification code
- **`message`** (`string`) (required): Human-readable error message
#### 503

ServiceUnavailableException 503 response

**Schema:** `ServiceUnavailableExceptionResponseContent`

**Properties:**

- **`code`** (`string`): Error classification code
- **`message`** (`string`) (required): Human-readable error message
#### 504

GatewayTimeoutException 504 response

**Schema:** `GatewayTimeoutExceptionResponseContent`

**Properties:**

- **`code`** (`string`): Error classification code
- **`message`** (`string`) (required): Human-readable error message


# List Enrollments
Source: https://www.stedi.com/docs/healthcare/api-reference/get-enrollment-list-enrollments


This endpoint retrieves a list of all [transaction enrollments](/healthcare/transaction-enrollment) in your Stedi account.

You can filter the results by various criteria, such as a query string (fuzzy matching is supported), enrollment status, creation date, provider names, provider NPIs, provider tax IDs, and Stedi payer IDs. When a query parameter is an array, you can include it more than once in the URL to filter by multiple values.

| Query parameters                                     | Endpoint returns                                                                                                                                                                                                                                            |
| ---------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `?providerNames=John%20Doe&providerNames=Jane%20Doe` | Enrollments associated with either John Doe or Jane Doe.                                                                                                                                                                                                    |
| `?status=LIVE`                                       | Enrollments in `LIVE` status.                                                                                                                                                                                                                               |
| `?filter=OS&createdFrom=2025-01-01T00:00:00Z`        | <ul><li>Enrollments with provider names, provider NPIs, provider tax IDs, or Stedi payer IDs containing `os` or `OS`. The search is case-insensitive, and fuzzy matching is supported. </li><li>Enrollments created after `2025-01-01T00:00:00Z`.</li></ul> |

## API Specification

Lists transaction enrollment records with optional filtering and pagination.

**Endpoint:** `GET /enrollments`

**Base URL:** `https://enrollments.us.stedi.com/2024-09-01`

### Parameters

- **`pageSize`** (query): The maximum number of elements to return in a page. If not specified, the default is 100.
  - Type: `number`
- **`pageToken`** (query): The `nextPageToken` value from a previous response. You can use this to get the next page of results. If not set, Stedi returns the first page of results.
  - Type: `string`
- **`filter`** (query): Filter for enrollments with properties matching a query string.

You can provide all or part of a provider name, NPI, or tax ID. You can also provide all or part of a payer's [Stedi payer ID](https://www.stedi.com/docs/healthcare/supported-payers#stedi-payer-id) - primary payer IDs and aliases aren't supported. The search is case-insensitive and supports fuzzy matching.

For example, providing `?filter=OS` returns enrollments with `provider.name` containing `os` or `OS` (such as `Joseph`) and Stedi payer IDs containing `OS`, such as `OSBLI` for OptumHealth Salt Lake County.
  - Type: `string`
- **`status`** (query): Filter for enrollments with specific statuses.

You can include this parameter multiple times to filter for multiple statuses. For example, `?status=LIVE&status=REJECTED` returns enrollments that are in either `LIVE` or `REJECTED` status.
  - Type: `array`
- **`providerNpis`** (query): Filter for enrollments associated with specific provider NPIs.

You can include this parameter multiple times to filter for multiple NPIs. For example, `?providerNpis=1234567890&providerNpis=0987654321` returns enrollments associated with either of the specified NPIs.
  - Type: `array`
- **`providerTaxIds`** (query): Filter for enrollments associated with specific provider tax IDs.

You can include this parameter multiple times to filter for multiple tax IDs. For example, `?providerTaxIds=123456789&providerTaxIds=987654321` returns enrollments associated with either of the specified tax IDs.
  - Type: `array`
- **`providerNames`** (query): Filter for enrollments associated with specific provider names.

This search is case-insensitive but doesn't support fuzzy matching. The name you provide must match the provider's name exactly, including spaces, but capitalization is ignored.

You can include this parameter multiple times to filter for multiple names. For example, `?providerNames=John%20Doe&providerNames=Jane%20Doe` returns enrollments associated with either John Doe or Jane Doe.
  - Type: `array`
- **`providerIds`** (query): Filter for enrollments associated with specific provider IDs.

The provider ID is a UUID Stedi assigns to each provider record upon creation, allowing you to differentiate between provider records that share the same NPI. It's returned in the `id` property of the [Create Provider](/healthcare/api-reference/post-enrollment-create-provider#response.id) and [Retrieve Provider](/healthcare/api-reference/get-enrollment-provider#response.id) responses.

You can include this parameter multiple times to filter for multiple providers. For example, `?providerIds=10334e76-f073-4b5d-8984-81d8e5107857&providerIds=10234e76-f067-4b5d-8984-81d8e5107123` returns enrollments associated with either of the specified providers.
  - Type: `array`
- **`payerIds`** (query): Filter for enrollments associated with specific [Stedi payer IDs](https://www.stedi.com/docs/healthcare/supported-payers#stedi-payer-id).

This parameter only supports Stedi payer IDs, not primary payer IDs or aliases. It also doesn't support fuzzy matching. The payer ID you provide must match the Stedi payer ID exactly, including capitalization. You must include leading `0` characters - for example, use `00540` for SISCO, not `540`. 

You can include this parameter multiple times to filter for multiple payer IDs. For example, `?payerIds=HGJLR&payerIds=EWDCI` returns enrollments associated with either of the specified payer IDs.
  - Type: `array`
- **`sources`** (query): Filter for enrollments submitted through specific sources, such as the API or UI.

You can include this parameter multiple times to filter for multiple sources. For example, `?sources=API&sources=UI` returns enrollments submitted through either of the specified sources.
  - Type: `array`
- **`transactions`** (query): Filter for enrollments for specific transaction types.

You can include this parameter multiple times to filter for multiple types. For example, `?transactions=eligibilityCheck&transactions=claimStatus` returns enrollments for both 270/271 eligibility checks and 276/277 real-time claim status.
  - Type: `array`
- **`createdFrom`** (query): Filter for enrollments created from a specific date.

For example, if you set this to `2025-01-01T00:00:00Z`, Stedi returns enrollments with a `createdAt` timestamp on or after this date.
  - Type: `string`
- **`createdTo`** (query): Filter for enrollments created before a specific date. The time must be later than `createdFrom`, if present.

For example, if you set this to `2025-01-01T00:00:00Z`, Stedi only returns enrollments with a `createdAt` timestamp before this date.
  - Type: `string`
- **`statusUpdatedFrom`** (query): Filter for enrollments whose status was last updated from a specific date.

For example, if you set this to `2025-01-01T00:00:00Z`, Stedi returns enrollments with a `statusLastUpdatedAt` timestamp on or after this date.
  - Type: `string`
- **`statusUpdatedTo`** (query): Filter for enrollments whose status was last updated before a specific date. The time must be later than `statusUpdatedFrom`, if present.

For example, if you set this to `2025-01-01T00:00:00Z`, Stedi only returns enrollments with a `statusLastUpdatedAt` before this date.
  - Type: `string`
- **`importId`** (query): The import ID associated with an enrollment through a CSV bulk import. This ID is only available for enrollments created through the CSV import process.
  - Type: `string`
- **`requestedEffectiveDateFrom`** (query): Filter for enrollments with a requested effective date on or after this date, in YYYYMMDD format.

For example, `?requestedEffectiveDateFrom=20260101` returns enrollments with a `requestedEffectiveDate` of `20260101` or later.
  - Type: `string`
- **`requestedEffectiveDateTo`** (query): Filter for enrollments with a requested effective date on or before this date, in YYYYMMDD format. The date must be the same as or later than `requestedEffectiveDateFrom`, if present.

For example, `?requestedEffectiveDateTo=20261231` returns enrollments with a `requestedEffectiveDate` of `20261231` or earlier.
  - Type: `string`
- **`lastEraReceivedFrom`** (query): Filter for enrollments with a `lastEraReceivedAt` timestamp on or after this value. Only enrollments with an ERA are included.

You can use this filter with `lastEraReceivedTo` to define a date range. For example, setting this to `2025-01-01T00:00:00Z` returns enrollments with a `lastEraReceivedAt` on or after that date.
  - Type: `string`
- **`lastEraReceivedTo`** (query): Filter for enrollments with a `lastEraReceivedAt` timestamp on or before this value. Only enrollments with an ERA are included. This value must be later than `lastEraReceivedFrom`, if present.

For example, setting this to `2025-01-01T00:00:00Z` returns enrollments with a `lastEraReceivedAt` on or before that date.
  - Type: `string`
- **`userEmails`** (query): Filter for enrollments associated with specific submitter emails. This is the `userEmail` property in [Create Enrollment](https://www.stedi.com/docs/healthcare/api-reference/post-enrollment-create-enrollment) requests, or the **Stedi contact person** in the portal.

This search is case-insensitive but doesn't support fuzzy matching. The email you provide must match the submitter's email exactly, but capitalization is ignored.

You can include this parameter multiple times to filter for multiple submitter emails. For example, `?userEmails=alice%40example.com&userEmails=bob%40example.com` returns enrollments submitted by either `alice@example.com` or `bob@example.com`.
  - Type: `array`
- **`sortBy`** (query): Sort the results by one or more properties. By default, Stedi sorts results by the `createdAt` property in descending order.

Supply a query string with each property appended using `&`. Each property must be provided in a `property:direction` format, where `property` is the name of the property to sort by and `direction` is the sort direction, either `asc` (ascending) or `desc` (descending).
  - When you don't include `id`, Stedi automatically adds it as the final sort criterion to ensure deterministic results.
  - When you provide multiple properties, Stedi sorts by their order in the query string. For example, if you provide `?sortBy=updatedAt:desc&sortBy=id:asc`, Stedi sorts first by `updatedAt` in descending order. If multiple records share the same `updatedAt` date, Stedi then sorts those records by `id` in ascending order.

**Supported properties:** `updatedAt`, `statusLastUpdatedAt`, `id`, `requestedEffectiveDate`, `lastEraReceivedAt`

Examples:
  - Sort by `updatedAt` in descending order: `?sortBy=updatedAt:desc`
  - Sort by `statusLastUpdatedAt` in ascending order: `?sortBy=statusLastUpdatedAt:asc`
  - Sort by `updatedAt` and then by `id`: `?sortBy=updatedAt:desc&sortBy=id:asc`
  - Type: `array`

### Responses

#### 200

ListEnrollments 200 response

**Schema:** `ListEnrollmentsResponseContent`

**Properties:**

- **`items`** (`array of EnrollmentSummary objects`): Details about the enrollments matching the search criteria.
- **`items[].aggregationPreference`** (`any`): Preference for how the payer should group 835 Electronic Remittance Advice (ERA) transactions. Only set this property for 835 ERA enrollments.
  - If you include this property for a non-ERA enrollment, Stedi rejects the enrollment request with an HTTP `400` error.
  - If the payer doesn't support the requested aggregation type, Stedi rejects the enrollment request with an HTTP `400` error.
  - If not set, Stedi automatically selects a default based on the payer's supported aggregation types and the available identifiers for the provider.
  - Stedi will attempt to enroll with this preference, but it's not guaranteed. Each payer has its own restrictions and behaviors.
- **`items[].aggregationPreference (variant 1).taxId`** (`string`) (required): The Taxpayer Identification Number (TIN) the payer should use for aggregation.
- **`items[].aggregationPreference (variant 2).npi`** (`string`) (required): The National Provider Identifier (NPI) the payer should use for aggregation.
- **`items[].createdAt`** (`string`) (required): The date and time when the enrollment was created within Stedi.
- **`items[].documents`** (`array of EnrollmentDocument objects`): Documents associated with this enrollment, such as signed enrollment forms. This list doesn't include deleted documents.

Each document object contains metadata such as the document's name, status, and timestamps for creation and last update.
- **`items[].documents[].contentType`** (`string`): The content type of the document.
- **`items[].documents[].createdAt`** (`string`) (required): The date and time when the document was created.
- **`items[].documents[].enrollmentId`** (`string`) (required): The enrollment ID this document is associated with.
- **`items[].documents[].id`** (`string`) (required): The unique identifier for the document.
- **`items[].documents[].name`** (`string`) (required): The name of the document.
- **`items[].documents[].size`** (`number`): The size of the document in bytes.
- **`items[].documents[].status`** (`string`) (required): Indicates whether the document file has been successfully uploaded to Stedi.
  - Allowed values: `PENDING`, `UPLOADED`, `FAILED`, `DELETED`
- **`items[].documents[].taskId`** (`string`): The task ID associated with this document, if it was created or processed as part of a task.
- **`items[].documents[].updatedAt`** (`string`) (required): The date and time when the document was last updated.
- **`items[].history`** (`array of EnrollmentHistoryEntry objects`): The history of updates to this enrollment, such as status changes. This property is experimental and may change in the future.
- **`items[].history[].changedAt`** (`string`) (required): The date and time when this change occurred.
- **`items[].history[].changedBy`** (`string`) (required): The source or system that triggered this change.
- **`items[].history[].newStatus`** (`string`) (required): The status of the enrollment. You can submit enrollments with either `DRAFT` or `STEDI_ACTION_REQUIRED` status - the default is `DRAFT` if not included. Set this to `STEDI_ACTION_REQUIRED` when you're ready for Stedi to begin processing the enrollment. Once an enrollment is `STEDI_ACTION_REQUIRED`, only Stedi can set or update its status.
  - Allowed values: `DRAFT`, `SUBMITTED`, `PROVISIONING`, `LIVE`, `REJECTED`, `CANCELED`, `STEDI_ACTION_REQUIRED`, `PROVIDER_ACTION_REQUIRED`
- **`items[].history[].previousStatus`** (`string`): The status of the enrollment. You can submit enrollments with either `DRAFT` or `STEDI_ACTION_REQUIRED` status - the default is `DRAFT` if not included. Set this to `STEDI_ACTION_REQUIRED` when you're ready for Stedi to begin processing the enrollment. Once an enrollment is `STEDI_ACTION_REQUIRED`, only Stedi can set or update its status.
  - Allowed values: `DRAFT`, `SUBMITTED`, `PROVISIONING`, `LIVE`, `REJECTED`, `CANCELED`, `STEDI_ACTION_REQUIRED`, `PROVIDER_ACTION_REQUIRED`
- **`items[].history[].type`** (`string`) (required): The type of change recorded in the enrollment history.
  - Allowed values: `STATUS_CHANGE`
- **`items[].id`** (`string`) (required): The Stedi-assigned identifier for the enrollment.
- **`items[].importId`** (`string`): The import ID associated with the enrollment if it was created through a CSV bulk import (`source` is set to `IMPORT`). This property is only present for enrollments created through the CSV import process.
- **`items[].lastEraReceivedAt`** (`string`): The timestamp of the most recent 835 ERA (Electronic Remittance Advice) Stedi received for this enrollment, based on the enrollment's payer ID, provider NPI, and provider tax ID. Stedi automatically updates this property for each new ERA.
  - This property is only returned for ERA enrollments in `LIVE` status with at least one matching ERA from the payer.
  - If this timestamp doesn't match your expected timeline for ERA processing, there may be an upstream issue. Contact Stedi support for assistance.
- **`items[].payer`** (`object`) (required): Output structure containing payer information in enrollment responses.
- **`items[].payer.name`** (`string`): The payer's name, such as `Cigna` or `UnitedHealthcare`.
- **`items[].payer.stediPayerId`** (`string`) (required): The unique Stedi assigned identifier for the payer.
- **`items[].payer.submittedPayerIdOrAlias`** (`string`): The payer ID or alias used when creating the enrollment request. For example, `62308` and `CIGNA` are both supported for Cigna. You can find a list of all supported payer IDs and aliases in the [Payer Network](https://www.stedi.com/healthcare/network).
- **`items[].provider`** (`object`) (required): Complete provider information including both read-only and mutable fields.
- **`items[].provider.id`** (`string`) (required): The Stedi-assigned identifier for the provider. The [Create Provider](https://www.stedi.com/docs/api-reference/healthcare/post-enrollment-create-provider) endpoint returns this as the `id` property.
- **`items[].provider.name`** (`string`) (required): The provider's name, such as `Example Dental Associates, LLC`.
- **`items[].provider.npi`** (`string`) (required): The provider's National Provider Identifier (NPI). This is a 10-digit number assigned by the Centers for Medicare & Medicaid Services (CMS) to healthcare providers in the United States. It is used to identify providers in healthcare transactions.
- **`items[].provider.taxId`** (`string`) (required): The provider's tax identification number (SSN or EIN). This is used to identify the provider for tax and administrative purposes.
- **`items[].provider.taxIdType`** (`string`) (required): The type of tax identification number. This indicates whether the tax ID is a Social Security Number (SSN) or Employer Identification Number (EIN).
- **`items[].reason`** (`string`): Reasons why the enrollment request is still in `PROVISIONING` status, may take additional time to process, or was rejected by the payer. Only Stedi can set or update this property.
- **`items[].requestedEffectiveDate`** (`string`): The requested effective date for the enrollment in YYYYMMDD format. This is the date the submitter would like the enrollment to take effect with the payer. If not provided during submission, Stedi defaults to the enrollment's submission date.

Not all payers support requested effective dates. Stedi can't guarantee that the enrollment will be effective with the payer on this exact date.
- **`items[].source`** (`string`) (required): The source of the enrollment.
  - Allowed values: `API`, `UI`, `IMPORT`, `AUTO_ENROLLMENT`, `AUTOMATED_TASK`
- **`items[].status`** (`string`) (required): The status of the enrollment. You can submit enrollments with either `DRAFT` or `STEDI_ACTION_REQUIRED` status - the default is `DRAFT` if not included. Set this to `STEDI_ACTION_REQUIRED` when you're ready for Stedi to begin processing the enrollment. Once an enrollment is `STEDI_ACTION_REQUIRED`, only Stedi can set or update its status.
  - Allowed values: `DRAFT`, `SUBMITTED`, `PROVISIONING`, `LIVE`, `REJECTED`, `CANCELED`, `STEDI_ACTION_REQUIRED`, `PROVIDER_ACTION_REQUIRED`
- **`items[].statusLastUpdatedAt`** (`string`) (required): The date and time when the enrollment status was last updated. This timestamp is used to track enrollment processing durations and enables filtering to identify recently changed enrollments. It automatically updates whenever an enrollment's status changes but remains unchanged during other updates.
- **`items[].submittedAt`** (`string`): The date and time when the enrollment was submitted. If the enrollment is in draft status, `submittedAt` is not present. When the enrollment transitions from draft to submitted, `submittedAt` will be updated to the submission time. If the enrollment was created and submitted immediately, `submittedAt` will be equal or close to `createdAt`.
- **`items[].tasks`** (`array of Task objects`): Tasks associated with this enrollment, such as reminders or follow-ups.
- **`items[].tasks[].completedAt`** (`string`): The timestamp when the task was completed.
- **`items[].tasks[].definition`** (`any`) (required): A discriminated union of task definitions. Supports multiple task types with future extensibility.
- **`items[].tasks[].definition (variant 1).manualTask`** (`object`) (required): A task assigned to a responsible party that requires them to collect and submit a defined set of fields. The task is completed by supplying a `ManualTaskResponse` whose values satisfy the declared `fields`.
- **`items[].tasks[].definition (variant 1).manualTask.fields`** (`array of ManualTaskField objects`) (required): Fields required to complete the task. Each entry defines the key, human-readable label, optional description, and type for values in the response. Can be empty for instruction-only tasks.
- **`items[].tasks[].definition (variant 1).manualTask.fields[].description`** (`string`): Additional context explaining what to provide in the response. For example, details about what supporting documentation (such as the provider's W-9 form) is required.
- **`items[].tasks[].definition (variant 1).manualTask.fields[].fieldType`** (`string`) (required): The accepted field types for a manual task.
  - Allowed values: `TEXT`, `DOCUMENT`
- **`items[].tasks[].definition (variant 1).manualTask.fields[].key`** (`string`) (required): A unique identifier for this field within the task, such as `ENROLLMENT_FORM`.
- **`items[].tasks[].definition (variant 1).manualTask.fields[].label`** (`string`) (required): Human-readable label for this field, such as `Provider NPI` or `Tax ID`.
- **`items[].tasks[].definition (variant 1).manualTask.instructions`** (`string`) (required): Instructions for completing the task.
- **`items[].tasks[].definition (variant 1).manualTask.links`** (`array of TaskLink objects`): Links to help complete the task. This can include payer portals, reference documentation, or document download links for Stedi-provided template PDFs.
- **`items[].tasks[].definition (variant 1).manualTask.links[].label`** (`string`) (required): Descriptive label for the URL, such as `Provider Portal` or `W-9 Template`.
- **`items[].tasks[].definition (variant 1).manualTask.links[].url`** (`string`) (required): The URL for the resource.
- **`items[].tasks[].id`** (`string`) (required): The unique, Stedi-assigned identifier for the task.
- **`items[].tasks[].isComplete`** (`boolean`) (required): Whether the task has been marked as complete through either the API or the Stedi portal.
- **`items[].tasks[].rank`** (`number`) (required): The rank order of this task. Tasks with lower numbers must be completed first. For example, a task with rank `1` must be completed before a task with rank `2`.
- **`items[].tasks[].responseData`** (`any`): A discriminated union of task response data. Contains structured data collected when completing specific task types.
- **`items[].tasks[].responseData (variant 1).manualTask`** (`object`) (required): Values provided when updating or completing a manual task. Visit [Manage enrollment tasks](https://www.stedi.com/docs/healthcare/transaction-enrollment-tasks-documents#api) for details.
- **`items[].tasks[].responseData (variant 1).manualTask.values`** (`array of ManualTaskResponseKeyValue objects`) (required): Values for fields in the task definition. Each value's `key` must have a corresponding field `key`. When updating a task without completing it, you can submit a subset of fields; the supplied values are merged into any previously saved values. Completing a task (`completed: true`) requires a value for every field.
- **`items[].tasks[].responseData (variant 1).manualTask.values[].key`** (`string`) (required): Identifier that matches a field `key` in the task definition.
- **`items[].tasks[].responseData (variant 1).manualTask.values[].value`** (`any`) (required): The value supplied for a `ManualTaskField`. The variant used must match the field's declared `FieldType`. Supply multiple entries with distinct keys to capture multiple documents or values.
- **`items[].tasks[].responseData (variant 1).manualTask.values[].value (variant 1).text`** (`string`) (required): Free-form text when the `fieldType` is `TEXT`.
- **`items[].tasks[].responseData (variant 1).manualTask.values[].value (variant 2).document`** (`object`) (required): A reference to a document uploaded to enrollment, supplied as the `document` variant of a `ManualTaskResponseValue`.
- **`items[].tasks[].responseData (variant 1).manualTask.values[].value (variant 2).document.documentId`** (`string`) (required): The `documentId` returned for a file uploaded through the [Upload Enrollment Document](https://www.stedi.com/docs/healthcare/api-reference/post-enrollment-document-upload) endpoint.
- **`items[].tasks[].responsibleParty`** (`string`) (required): The party responsible for completing a task.
  - Allowed values: `PROVIDER`, `STEDI`
- **`items[].transactions`** (`any`) (required): Specifies which transaction types are included in the enrollment.
- **`items[].transactions (variant 1).eligibilityCheck`** (`object`) (required): Represents the enrollment status for a specific transaction type.
- **`items[].transactions (variant 1).eligibilityCheck.enroll`** (`boolean`) (required)
- **`items[].transactions (variant 2).claimStatus`** (`object`) (required): Represents the enrollment status for a specific transaction type.
- **`items[].transactions (variant 2).claimStatus.enroll`** (`boolean`) (required)
- **`items[].transactions (variant 3).professionalClaimSubmission`** (`object`) (required): Represents the enrollment status for a specific transaction type.
- **`items[].transactions (variant 3).professionalClaimSubmission.enroll`** (`boolean`) (required)
- **`items[].transactions (variant 4).institutionalClaimSubmission`** (`object`) (required): Represents the enrollment status for a specific transaction type.
- **`items[].transactions (variant 4).institutionalClaimSubmission.enroll`** (`boolean`) (required)
- **`items[].transactions (variant 5).dentalClaimSubmission`** (`object`) (required): Represents the enrollment status for a specific transaction type.
- **`items[].transactions (variant 5).dentalClaimSubmission.enroll`** (`boolean`) (required)
- **`items[].transactions (variant 6).claimPayment`** (`object`) (required): Represents the enrollment status for a specific transaction type.
- **`items[].transactions (variant 6).claimPayment.enroll`** (`boolean`) (required)
- **`items[].transactions (variant 7).solicitedClaimAttachment`** (`object`) (required): Represents the enrollment status for a specific transaction type.
- **`items[].transactions (variant 7).solicitedClaimAttachment.enroll`** (`boolean`) (required)
- **`items[].transactions (variant 8).unsolicitedClaimAttachment`** (`object`) (required): Represents the enrollment status for a specific transaction type.
- **`items[].transactions (variant 8).unsolicitedClaimAttachment.enroll`** (`boolean`) (required)
- **`items[].updatedAt`** (`string`) (required): The date and time when the enrollment was updated.
- **`nextPageToken`** (`string`): Token that you can supply in subsequent requests to retrieve the next page of results. If not returned, there are no more results.
- **`totalCount`** (`number`): The total count of enrollments matching the filter criteria, regardless of pagination.

**Example:**

```json
{
  "items": [
    {
      "aggregationPreference": {
        "taxId": "123456789"
      },
      "createdAt": "2025-04-01T12:00:00Z",
      "documents": [
        {
          "createdAt": "2025-04-01T12:00:00Z",
          "enrollmentId": "db6675c5-7bg7-4af9-8c68-a54a336d2911",
          "id": "dc6665a5-7b97-4agh-8c74-a00a336c2989",
          "name": "pdf-agreement.pdf",
          "status": "UPLOADED",
          "updatedAt": "2025-04-02T12:00:00Z"
        }
      ],
      "history": [
        {
          "changedAt": "2025-04-15T09:00:00Z",
          "changedBy": "user@example.com",
          "newStatus": "DRAFT",
          "type": "STATUS_CHANGE"
        },
        {
          "changedAt": "2025-04-15T09:05:00Z",
          "changedBy": "user@example.com",
          "newStatus": "STEDI_ACTION_REQUIRED",
          "previousStatus": "DRAFT",
          "type": "STATUS_CHANGE"
        },
        {
          "changedAt": "2025-04-20T14:30:00Z",
          "changedBy": "system",
          "newStatus": "PROVIDER_ACTION_REQUIRED",
          "previousStatus": "STEDI_ACTION_REQUIRED",
          "type": "STATUS_CHANGE"
        },
        {
          "changedAt": "2025-05-02T12:00:00Z",
          "changedBy": "system",
          "newStatus": "PROVISIONING",
          "previousStatus": "PROVIDER_ACTION_REQUIRED",
          "type": "STATUS_CHANGE"
        },
        {
          "changedAt": "2025-05-10T15:30:00Z",
          "changedBy": "system",
          "newStatus": "LIVE",
          "previousStatus": "PROVISIONING",
          "type": "STATUS_CHANGE"
        }
      ],
      "id": "db6675c5-7bg7-4af9-8c68-a54a336d2911",
      "lastEraReceivedAt": "2025-05-02T12:00:00Z",
      "payer": {
        "name": "UnitedHealthcare",
        "stediPayerId": "KMQTZ",
        "submittedPayerIdOrAlias": "87726"
      },
      "provider": {
        "id": "db6665c5-7b97-4af9-8c68-a00a336c2998",
        "name": "Test Medical Provider",
        "npi": "1234567890",
        "taxId": "123456789",
        "taxIdType": "EIN"
      },
      "requestedEffectiveDate": "20250415",
      "source": "API",
      "status": "LIVE",
      "statusLastUpdatedAt": "2025-05-01T12:00:00Z",
      "tasks": [
        {
          "definition": {
            "manualTask": {
              "fields": [],
              "instructions": "Visit the payer portal to complete your enrollment setup.",
              "links": [
                {
                  "label": "Payer Portal",
                  "url": "https://example.com/portal"
                }
              ]
            }
          },
          "id": "ac6665a5-7b97-4agh-8c74-a00a336c2989",
          "isComplete": true,
          "rank": 0,
          "responsibleParty": "PROVIDER"
        }
      ],
      "transactions": {
        "claimPayment": {
          "enroll": true
        }
      },
      "updatedAt": "2025-05-01T12:00:00Z"
    },
    {
      "createdAt": "2025-04-20T08:15:00Z",
      "documents": [
        {
          "createdAt": "2026-11-08T12:00:00Z",
          "enrollmentId": "db6675c5-7bg7-4af9-8c68-a54a336d2911",
          "id": "dc6665a5-7b97-4agh-8c74-a00a336c2989",
          "name": "pdf-agreement.pdf",
          "status": "UPLOADED",
          "updatedAt": "2026-11-08T12:05:00Z"
        }
      ],
      "history": [
        {
          "changedAt": "2026-11-07T05:31:56Z",
          "changedBy": "user@example.com",
          "newStatus": "DRAFT",
          "type": "STATUS_CHANGE"
        },
        {
          "changedAt": "2026-11-07T05:31:56Z",
          "changedBy": "user@example.com",
          "newStatus": "STEDI_ACTION_REQUIRED",
          "previousStatus": "DRAFT",
          "type": "STATUS_CHANGE"
        },
        {
          "changedAt": "2026-11-07T06:15:22Z",
          "changedBy": "system",
          "newStatus": "PROVIDER_ACTION_REQUIRED",
          "previousStatus": "STEDI_ACTION_REQUIRED",
          "type": "STATUS_CHANGE"
        },
        {
          "changedAt": "2026-11-08T06:15:22Z",
          "changedBy": "system",
          "newStatus": "STEDI_ACTION_REQUIRED",
          "previousStatus": "PROVIDER_ACTION_REQUIRED",
          "type": "STATUS_CHANGE"
        },
        {
          "changedAt": "2026-11-10T06:15:22Z",
          "changedBy": "system",
          "newStatus": "PROVIDER_ACTION_REQUIRED",
          "previousStatus": "STEDI_ACTION_REQUIRED",
          "type": "STATUS_CHANGE"
        }
      ],
      "id": "e9a8b7c6-d5f4-3e2d-1c0b-a9876543210f",
      "payer": {
        "name": "Aetna",
        "stediPayerId": "AETNA",
        "submittedPayerIdOrAlias": "60054"
      },
      "provider": {
        "id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
        "name": "Test Medical Provider",
        "npi": "9876543210",
        "taxId": "987654321",
        "taxIdType": "EIN"
      },
      "reason": "Waiting for provider action",
      "requestedEffectiveDate": "20250801",
      "source": "API",
      "status": "PROVIDER_ACTION_REQUIRED",
      "statusLastUpdatedAt": "2025-04-22T14:45:00Z",
      "submittedAt": "2025-04-20T08:20:00Z",
      "tasks": [
        {
          "definition": {
            "manualTask": {
              "fields": [],
              "instructions": "Log in to your Authority's portal and request clearinghouse access for Stedi."
            }
          },
          "id": "f8e7d6c5-b4a3-9281-7654-321098765432",
          "isComplete": false,
          "rank": 1,
          "responsibleParty": "PROVIDER"
        },
        {
          "completedAt": "2026-11-08T06:14:22Z",
          "definition": {
            "manualTask": {
              "fields": [
                {
                  "description": "Your filled-in and signed enrollment form, as a PDF",
                  "fieldType": "DOCUMENT",
                  "key": "ENROLLMENT_FORM",
                  "label": "Signed PDF"
                }
              ],
              "instructions": "Download the enrollment form, sign it, and upload the completed PDF.",
              "links": [
                {
                  "label": "Enrollment Form",
                  "url": "https://enrollments.us.stedi.com/2024-09-01/documents/019375d0-9876-7890-abcd-567890fedcba/download"
                }
              ]
            }
          },
          "id": "019ce833-b234-75f1-9599-0f14ba643709",
          "isComplete": true,
          "rank": 0,
          "responseData": {
            "manualTask": {
              "values": [
                {
                  "key": "ENROLLMENT_FORM",
                  "value": {
                    "document": {
                      "documentId": "dc6665a5-7b97-4af9-8c74-a00a336c2989"
                    }
                  }
                }
              ]
            }
          },
          "responsibleParty": "PROVIDER"
        }
      ],
      "transactions": {
        "eligibilityCheck": {
          "enroll": true
        }
      },
      "updatedAt": "2025-04-25T10:30:00Z"
    }
  ],
  "nextPageToken": "945ff6de213d3ef481d028065d4c12fb996a166a3a90ef98564318decfae50ce4b36d74b7e9d9bafa6e1d169",
  "totalCount": 42
}
```

#### 400

ValidationException 400 response

**Schema:** `ValidationExceptionResponseContent`

**Properties:**

- **`fieldList`** (`array of ValidationExceptionField objects`): A list of specific failures encountered while validating the input.
A member can appear in this list more than once if it failed to satisfy multiple constraints.
- **`fieldList[].message`** (`string`) (required): A detailed description of the validation failure.
- **`fieldList[].path`** (`string`) (required): A JSONPointer expression to the structure member whose value failed to satisfy the modeled constraints.
- **`message`** (`string`) (required): A summary of the validation failure.
#### 401

UnauthorizedException 401 response

**Schema:** `UnauthorizedExceptionResponseContent`

**Properties:**

- **`code`** (`string`): Error classification code
- **`message`** (`string`) (required): Human-readable error message
#### 403

AccessDeniedException 403 response

**Schema:** `AccessDeniedExceptionResponseContent`

**Properties:**

- **`code`** (`string`): Error classification code
- **`message`** (`string`) (required): Human-readable error message
#### 429

QuotaExceededException 429 response

**Schema:** `QuotaExceededExceptionResponseContent`

**Properties:**

- **`code`** (`string`): Error classification code
- **`message`** (`string`) (required): Human-readable error message
#### 500

InternalFailureException 500 response

**Schema:** `InternalFailureExceptionResponseContent`

**Properties:**

- **`code`** (`string`): Error classification code
- **`message`** (`string`) (required): Human-readable error message
#### 503

ServiceUnavailableException 503 response

**Schema:** `ServiceUnavailableExceptionResponseContent`

**Properties:**

- **`code`** (`string`): Error classification code
- **`message`** (`string`) (required): Human-readable error message
#### 504

GatewayTimeoutException 504 response

**Schema:** `GatewayTimeoutExceptionResponseContent`

**Properties:**

- **`code`** (`string`): Error classification code
- **`message`** (`string`) (required): Human-readable error message


# List Providers
Source: https://www.stedi.com/docs/healthcare/api-reference/get-enrollment-list-providers


This endpoint retrieves all of the provider records in your Stedi account. You can filter the results by the provider's name, NPI, or tax ID.

This endpoint returns only the provider record. It doesn't include information about associated [transaction enrollments](/healthcare/transaction-enrollment). To retrieve enrollment information, use the [List Enrollments](/healthcare/api-reference/get-enrollment-list-enrollments) endpoint.

## API Specification

Lists providers with optional filtering and pagination.

**Endpoint:** `GET /providers`

**Base URL:** `https://enrollments.us.stedi.com/2024-09-01`

### Parameters

- **`pageSize`** (query): The maximum number of elements to return in a page. If not specified, the default is 100.
  - Type: `number`
- **`pageToken`** (query): The `nextPageToken` value from a previous response. You can use this to get the next page of results. If not set, Stedi returns the first page of results.
  - Type: `string`
- **`filter`** (query): Filter for providers with properties matching a query string. You can provide all or part of a provider name, NPI, or tax ID. The search is case-insensitive and supports fuzzy matching.

For example, providing `?filter=OS` returns providers with names containing `os` (such as `Joseph`).
  - Type: `string`
- **`providerNpis`** (query): Filter for providers with NPIs matching any value in this list.
  - Type: `array`
- **`providerTaxIds`** (query): Filter for providers with tax IDs matching any value in this list.
  - Type: `array`

### Responses

#### 200

ListProviders 200 response

**Schema:** `ListProvidersResponseContent`

**Properties:**

- **`items`** (`array of ProviderSummary objects`): Details about every provider your organization has created within Stedi.
- **`items[].id`** (`string`) (required): A unique identifier Stedi assigns to this provider internally.
- **`items[].name`** (`string`) (required): The provider's business name. This is typically the provider's practice name, such as `Dental Associates, LLC`, but it can also be the provider's first and last name.
- **`items[].npi`** (`string`) (required): The provider's [National Provider Identifier (NPI)](https://npiregistry.cms.hhs.gov/search).
- **`items[].taxId`** (`string`): The provider's tax ID, as specified by `taxIdType`. This identifier is formatted without any separators, such as dashes or spaces. For example 111-22-3333 is represented as `111223333`.
- **`items[].taxIdType`** (`string`): The type of tax identification number. Organizations (Type 2 NPIs) must use `EIN`, while individual providers (Type 1 NPIs) can use either `EIN` or `SSN`.
  - Allowed values: `EIN`, `SSN`
- **`nextPageToken`** (`string`): Token that you can supply in subsequent requests to retrieve the next page of results. If not returned, there are no more results.

**Example:**

```json
{
  "items": [
    {
      "id": "10334e76-f073-4b5d-8984-81d8e5107857",
      "name": "BDQ Dental Inc",
      "npi": "1999999992",
      "taxId": "555123456",
      "taxIdType": "EIN"
    },
    {
      "id": "10234e76-f067-4b5d-8984-81d8e5107123",
      "name": "Example Medical Associates",
      "npi": "1999999984",
      "taxId": "100100111",
      "taxIdType": "EIN"
    }
  ]
}
```

#### 400

ValidationException 400 response

**Schema:** `ValidationExceptionResponseContent`

**Properties:**

- **`fieldList`** (`array of ValidationExceptionField objects`): A list of specific failures encountered while validating the input.
A member can appear in this list more than once if it failed to satisfy multiple constraints.
- **`fieldList[].message`** (`string`) (required): A detailed description of the validation failure.
- **`fieldList[].path`** (`string`) (required): A JSONPointer expression to the structure member whose value failed to satisfy the modeled constraints.
- **`message`** (`string`) (required): A summary of the validation failure.
#### 401

UnauthorizedException 401 response

**Schema:** `UnauthorizedExceptionResponseContent`

**Properties:**

- **`code`** (`string`): Error classification code
- **`message`** (`string`) (required): Human-readable error message
#### 403

AccessDeniedException 403 response

**Schema:** `AccessDeniedExceptionResponseContent`

**Properties:**

- **`code`** (`string`): Error classification code
- **`message`** (`string`) (required): Human-readable error message
#### 429

QuotaExceededException 429 response

**Schema:** `QuotaExceededExceptionResponseContent`

**Properties:**

- **`code`** (`string`): Error classification code
- **`message`** (`string`) (required): Human-readable error message
#### 500

InternalFailureException 500 response

**Schema:** `InternalFailureExceptionResponseContent`

**Properties:**

- **`code`** (`string`): Error classification code
- **`message`** (`string`) (required): Human-readable error message
#### 503

ServiceUnavailableException 503 response

**Schema:** `ServiceUnavailableExceptionResponseContent`

**Properties:**

- **`code`** (`string`): Error classification code
- **`message`** (`string`) (required): Human-readable error message
#### 504

GatewayTimeoutException 504 response

**Schema:** `GatewayTimeoutExceptionResponseContent`

**Properties:**

- **`code`** (`string`): Error classification code
- **`message`** (`string`) (required): Human-readable error message


# Retrieve Provider
Source: https://www.stedi.com/docs/healthcare/api-reference/get-enrollment-provider


This endpoint allows you to retrieve details for the specified provider.

## API Specification

Retrieves a provider record by its ID. This operation returns the complete provider details including contact information.

**Endpoint:** `GET /providers/{providerId}`

**Base URL:** `https://enrollments.us.stedi.com/2024-09-01`

### Parameters

- **`providerId`** (path) (required): The unique ID Stedi assigned to the provider when it was created in the system.
  - Type: `string`

### Responses

#### 200

GetProvider 200 response

**Schema:** `GetProviderResponseContent`

**Properties:**

- **`contacts`** (`array of ProviderContact objects`): The contact information for the provider. These contacts appear as prepopulated options for contact information when creating enrollment requests for this provider in the Stedi portal. They aren't automatically added to enrollment requests.

These contacts should specify where payers should send communications about the enrollment, if needed.
- **`contacts[].city`** (`string`) (required): The contact's city. This should match exactly what the payer has on file for the provider.
- **`contacts[].email`** (`string`) (required): The contact's email address. Set this to where you want the payer to send communications regarding the enrollment. This can be different from the provider's email if needed.
- **`contacts[].firstName`** (`string`): The contact's first name. This should match exactly what the payer has on file for the provider.
- **`contacts[].lastName`** (`string`): The contact's last name. This should match exactly what the payer has on file for the provider.
- **`contacts[].organizationName`** (`string`): The contact's business name. This should match exactly what the payer has on file for the provider.
- **`contacts[].phone`** (`string`) (required): The contact's phone number. Set this to where you want the payer to direct communications regarding the enrollment. This can be different from the provider's phone number if needed.
- **`contacts[].state`** (`string`) (required): United States state and territory codes using standard two-letter abbreviations.
  - Allowed values: `AA`, `AE`, `AK`, `AL`, `AP`, `AR`, `AS`, `AZ`, `CA`, `CO`, `CT`, `DC`, `DE`, `FL`, `FM`, `GA`, `GU`, `HI`, `IA`, `ID`, `IL`, `IN`, `KS`, `KY`, `LA`, `MA`, `MD`, `ME`, `MH`, `MI`, `MN`, `MO`, `MP`, `MS`, `MT`, `NC`, `ND`, `NE`, `NH`, `NJ`, `NM`, `NV`, `NY`, `OH`, `OK`, `OR`, `PA`, `PR`, `PW`, `RI`, `SC`, `SD`, `TN`, `TX`, `UT`, `VT`, `VA`, `VI`, `WA`, `WV`, `WI`, `WY`
- **`contacts[].streetAddress1`** (`string`) (required): The contact's street address, including the street number, name, and any suite or apartment number. This should match exactly what the payer has on file for the provider.
- **`contacts[].streetAddress2`** (`string`): The contact's street address continued. This should match exactly what the payer has on file for the provider.
- **`contacts[].zipCode`** (`string`) (required): The contact's five-digit ZIP code. This should match exactly what the payer has on file for the provider.
- **`createdAt`** (`string`): The date and time Stedi created the provider record.
- **`id`** (`string`) (required): A unique identifier Stedi assigns to this provider.
- **`name`** (`string`) (required): The provider's business name. This is typically the provider's practice name, such as `Dental Associates, LLC`, but it can also be the provider's first and last name.
- **`npi`** (`string`) (required): The provider's [National Provider Identifier (NPI)](https://npiregistry.cms.hhs.gov/search). This is a 10-digit number that is unique to the provider.
- **`taxId`** (`string`): The provider's tax ID, as specified by `taxIdType`. This identifier is formatted without any separators, such as dashes or spaces. For example 111-22-3333 is represented as `111223333`.
- **`taxIdType`** (`string`): The type of tax identification number. Organizations (Type 2 NPIs) must use `EIN`, while individual providers (Type 1 NPIs) can use either `EIN` or `SSN`.
  - Allowed values: `EIN`, `SSN`
- **`updatedAt`** (`string`): The date and time Stedi last updated the provider record.

**Example:**

```json
{
  "contacts": [
    {
      "city": "Chevy Chase",
      "email": "bob@fortdental.center",
      "firstName": "Bob",
      "lastName": "Dentist",
      "organizationName": "",
      "phone": "5551234567",
      "state": "MD",
      "streetAddress1": "123 Some Str",
      "zipCode": "20814"
    },
    {
      "city": "Chevy Chase",
      "email": "tom@fortdental.center",
      "firstName": "Tom",
      "lastName": "Dentist",
      "organizationName": "",
      "phone": "5551234568",
      "state": "MD",
      "streetAddress1": "123 Some Str",
      "zipCode": "20814"
    }
  ],
  "createdAt": "2024-11-18T17:39:52.406Z",
  "id": "10334e76-f073-4b5d-8984-81d8e5107857",
  "name": "BDQ Dental Inc",
  "npi": "1999999992",
  "taxId": "555123456",
  "taxIdType": "EIN",
  "updatedAt": "2024-11-18T17:39:52.406Z"
}
```

#### 400

ValidationException 400 response

**Schema:** `ValidationExceptionResponseContent`

**Properties:**

- **`fieldList`** (`array of ValidationExceptionField objects`): A list of specific failures encountered while validating the input.
A member can appear in this list more than once if it failed to satisfy multiple constraints.
- **`fieldList[].message`** (`string`) (required): A detailed description of the validation failure.
- **`fieldList[].path`** (`string`) (required): A JSONPointer expression to the structure member whose value failed to satisfy the modeled constraints.
- **`message`** (`string`) (required): A summary of the validation failure.
#### 401

UnauthorizedException 401 response

**Schema:** `UnauthorizedExceptionResponseContent`

**Properties:**

- **`code`** (`string`): Error classification code
- **`message`** (`string`) (required): Human-readable error message
#### 403

AccessDeniedException 403 response

**Schema:** `AccessDeniedExceptionResponseContent`

**Properties:**

- **`code`** (`string`): Error classification code
- **`message`** (`string`) (required): Human-readable error message
#### 404

ResourceNotFoundException 404 response

**Schema:** `ResourceNotFoundExceptionResponseContent`

**Properties:**

- **`code`** (`string`): Error classification code
- **`message`** (`string`) (required): Human-readable error message
#### 429

QuotaExceededException 429 response

**Schema:** `QuotaExceededExceptionResponseContent`

**Properties:**

- **`code`** (`string`): Error classification code
- **`message`** (`string`) (required): Human-readable error message
#### 500

InternalFailureException 500 response

**Schema:** `InternalFailureExceptionResponseContent`

**Properties:**

- **`code`** (`string`): Error classification code
- **`message`** (`string`) (required): Human-readable error message
#### 503

ServiceUnavailableException 503 response

**Schema:** `ServiceUnavailableExceptionResponseContent`

**Properties:**

- **`code`** (`string`): Error classification code
- **`message`** (`string`) (required): Human-readable error message
#### 504

GatewayTimeoutException 504 response

**Schema:** `GatewayTimeoutExceptionResponseContent`

**Properties:**

- **`code`** (`string`): Error classification code
- **`message`** (`string`) (required): Human-readable error message


# Retrieve Enrollment
Source: https://www.stedi.com/docs/healthcare/api-reference/get-enrollment


This endpoint retrieves details for the specified [transaction enrollment](/healthcare/transaction-enrollment).

## API Specification

Retrieves an enrollment request by its ID. This operation returns the complete enrollment details including provider and payer information.

**Endpoint:** `GET /enrollments/{enrollmentId}`

**Base URL:** `https://enrollments.us.stedi.com/2024-09-01`

### Parameters

- **`enrollmentId`** (path) (required): The Stedi-assigned identifier for the enrollment you want to retrieve.
  - Type: `string`

### Responses

#### 200

GetEnrollment 200 response

**Schema:** `GetEnrollmentResponseContent`

**Properties:**

- **`aggregationPreference`** (`any`): Preference for how the payer should group 835 Electronic Remittance Advice (ERA) transactions. Only set this property for 835 ERA enrollments.
  - If you include this property for a non-ERA enrollment, Stedi rejects the enrollment request with an HTTP `400` error.
  - If the payer doesn't support the requested aggregation type, Stedi rejects the enrollment request with an HTTP `400` error.
  - If not set, Stedi automatically selects a default based on the payer's supported aggregation types and the available identifiers for the provider.
  - Stedi will attempt to enroll with this preference, but it's not guaranteed. Each payer has its own restrictions and behaviors.
- **`aggregationPreference (variant 1).taxId`** (`string`) (required): The Taxpayer Identification Number (TIN) the payer should use for aggregation.
- **`aggregationPreference (variant 2).npi`** (`string`) (required): The National Provider Identifier (NPI) the payer should use for aggregation.
- **`createdAt`** (`string`) (required): The date and time when the enrollment was created within Stedi.
- **`documents`** (`array of EnrollmentDocument objects`): Documents associated with this enrollment, such as signed enrollment forms. This list doesn't include deleted documents.

Each document object contains metadata such as the document's name, status, and timestamps for creation and last update.
- **`documents[].contentType`** (`string`): The content type of the document.
- **`documents[].createdAt`** (`string`) (required): The date and time when the document was created.
- **`documents[].enrollmentId`** (`string`) (required): The enrollment ID this document is associated with.
- **`documents[].id`** (`string`) (required): The unique identifier for the document.
- **`documents[].name`** (`string`) (required): The name of the document.
- **`documents[].size`** (`number`): The size of the document in bytes.
- **`documents[].status`** (`string`) (required): Indicates whether the document file has been successfully uploaded to Stedi.
  - Allowed values: `PENDING`, `UPLOADED`, `FAILED`, `DELETED`
- **`documents[].taskId`** (`string`): The task ID associated with this document, if it was created or processed as part of a task.
- **`documents[].updatedAt`** (`string`) (required): The date and time when the document was last updated.
- **`history`** (`array of EnrollmentHistoryEntry objects`): The history of updates to this enrollment, such as status changes. This property is experimental and may change in the future.
- **`history[].changedAt`** (`string`) (required): The date and time when this change occurred.
- **`history[].changedBy`** (`string`) (required): The source or system that triggered this change.
- **`history[].newStatus`** (`string`) (required): The status of the enrollment. You can submit enrollments with either `DRAFT` or `STEDI_ACTION_REQUIRED` status - the default is `DRAFT` if not included. Set this to `STEDI_ACTION_REQUIRED` when you're ready for Stedi to begin processing the enrollment. Once an enrollment is `STEDI_ACTION_REQUIRED`, only Stedi can set or update its status.
  - Allowed values: `DRAFT`, `SUBMITTED`, `PROVISIONING`, `LIVE`, `REJECTED`, `CANCELED`, `STEDI_ACTION_REQUIRED`, `PROVIDER_ACTION_REQUIRED`
- **`history[].previousStatus`** (`string`): The status of the enrollment. You can submit enrollments with either `DRAFT` or `STEDI_ACTION_REQUIRED` status - the default is `DRAFT` if not included. Set this to `STEDI_ACTION_REQUIRED` when you're ready for Stedi to begin processing the enrollment. Once an enrollment is `STEDI_ACTION_REQUIRED`, only Stedi can set or update its status.
  - Allowed values: `DRAFT`, `SUBMITTED`, `PROVISIONING`, `LIVE`, `REJECTED`, `CANCELED`, `STEDI_ACTION_REQUIRED`, `PROVIDER_ACTION_REQUIRED`
- **`history[].type`** (`string`) (required): The type of change recorded in the enrollment history.
  - Allowed values: `STATUS_CHANGE`
- **`id`** (`string`) (required): The Stedi-assigned identifier for the enrollment request.
- **`lastEraReceivedAt`** (`string`): The timestamp of the most recent 835 ERA (Electronic Remittance Advice) Stedi received for this enrollment, based on the enrollment's payer ID, provider NPI, and provider tax ID. Stedi automatically updates this property for each new ERA.
  - This property is only returned for ERA enrollments in `LIVE` status with at least one matching ERA from the payer.
  - If this timestamp doesn't match your expected timeline for ERA processing, there may be an upstream issue. Contact Stedi support for assistance.
- **`payer`** (`object`) (required): Output structure containing payer information in enrollment responses.
- **`payer.name`** (`string`): The payer's name, such as `Cigna` or `UnitedHealthcare`.
- **`payer.stediPayerId`** (`string`) (required): The unique Stedi assigned identifier for the payer.
- **`payer.submittedPayerIdOrAlias`** (`string`): The payer ID or alias used when creating the enrollment request. For example, `62308` and `CIGNA` are both supported for Cigna. You can find a list of all supported payer IDs and aliases in the [Payer Network](https://www.stedi.com/healthcare/network).
- **`primaryContact`** (`object`) (required): The contact information for the provider. These contacts appear as prepopulated options for contact information when creating enrollment requests for this provider in the Stedi portal. They aren't automatically added to enrollment requests.

These contacts should specify where payers should send communications about the enrollment, if needed.
  - Either `organizationName` _or_ `firstName` and `lastName` are required.
  - The name and address should match exactly what the payer has on file for the provider. Some payers reject enrollment requests with addresses that don't match their records.
  - If you're submitting enrollment requests on a provider's behalf, you may want to set the phone number and email to your own contact details. Do this when you want the payer to contact you about the enrollment status instead of the provider directly.
  - These contacts are for convenience only. You can specify different contacts on enrollment requests as needed.
- **`primaryContact.city`** (`string`) (required): The contact's city. This should match exactly what the payer has on file for the provider.
- **`primaryContact.email`** (`string`) (required): The contact's email address. Set this to where you want the payer to send communications regarding the enrollment. This can be different from the provider's email if needed.
- **`primaryContact.firstName`** (`string`): The contact's first name. This should match exactly what the payer has on file for the provider.
- **`primaryContact.lastName`** (`string`): The contact's last name. This should match exactly what the payer has on file for the provider.
- **`primaryContact.organizationName`** (`string`): The contact's business name. This should match exactly what the payer has on file for the provider.
- **`primaryContact.phone`** (`string`) (required): The contact's phone number. Set this to where you want the payer to direct communications regarding the enrollment. This can be different from the provider's phone number if needed.
- **`primaryContact.state`** (`string`) (required): United States state and territory codes using standard two-letter abbreviations.
  - Allowed values: `AA`, `AE`, `AK`, `AL`, `AP`, `AR`, `AS`, `AZ`, `CA`, `CO`, `CT`, `DC`, `DE`, `FL`, `FM`, `GA`, `GU`, `HI`, `IA`, `ID`, `IL`, `IN`, `KS`, `KY`, `LA`, `MA`, `MD`, `ME`, `MH`, `MI`, `MN`, `MO`, `MP`, `MS`, `MT`, `NC`, `ND`, `NE`, `NH`, `NJ`, `NM`, `NV`, `NY`, `OH`, `OK`, `OR`, `PA`, `PR`, `PW`, `RI`, `SC`, `SD`, `TN`, `TX`, `UT`, `VT`, `VA`, `VI`, `WA`, `WV`, `WI`, `WY`
- **`primaryContact.streetAddress1`** (`string`) (required): The contact's street address, including the street number, name, and any suite or apartment number. This should match exactly what the payer has on file for the provider.
- **`primaryContact.streetAddress2`** (`string`): The contact's street address continued. This should match exactly what the payer has on file for the provider.
- **`primaryContact.zipCode`** (`string`) (required): The contact's five-digit ZIP code. This should match exactly what the payer has on file for the provider.
- **`provider`** (`object`) (required): Complete provider information including both read-only and mutable fields.
- **`provider.id`** (`string`) (required): The Stedi-assigned identifier for the provider. The [Create Provider](https://www.stedi.com/docs/api-reference/healthcare/post-enrollment-create-provider) endpoint returns this as the `id` property.
- **`provider.name`** (`string`) (required): The provider's name, such as `Example Dental Associates, LLC`.
- **`provider.npi`** (`string`) (required): The provider's National Provider Identifier (NPI). This is a 10-digit number assigned by the Centers for Medicare & Medicaid Services (CMS) to healthcare providers in the United States. It is used to identify providers in healthcare transactions.
- **`provider.taxId`** (`string`) (required): The provider's tax identification number (SSN or EIN). This is used to identify the provider for tax and administrative purposes.
- **`provider.taxIdType`** (`string`) (required): The type of tax identification number. This indicates whether the tax ID is a Social Security Number (SSN) or Employer Identification Number (EIN).
- **`providerTransactionAccessNumber`** (`string`): This property is required for payers that require a Provider Transaction Access Number (PTAN).

The PTAN is a Medicare-issued number given to providers upon enrollment with Medicare. This number is usually six digits and is assigned based on the type of service and the location of the provider. Upon enrollment, Medicare Administrating Contracting (MAC) providers should receive their assigned PTAN number in their approval letter.
- **`reason`** (`string`): Reasons why the enrollment request is still in `PROVISIONING` status, may take additional time to process, or was rejected by the payer. Only Stedi can set or update this property.
- **`requestedEffectiveDate`** (`string`): The requested effective date for the enrollment in YYYYMMDD format. This is the date the submitter would like the enrollment to take effect with the payer. If not provided during submission, Stedi defaults to the enrollment's submission date.

Not all payers support requested effective dates. Stedi can't guarantee that the enrollment will be effective with the payer on this exact date.
- **`source`** (`string`): The source of the enrollment.
  - Allowed values: `API`, `UI`, `IMPORT`, `AUTO_ENROLLMENT`, `AUTOMATED_TASK`
- **`status`** (`string`): The status of the enrollment. You can submit enrollments with either `DRAFT` or `STEDI_ACTION_REQUIRED` status - the default is `DRAFT` if not included. Set this to `STEDI_ACTION_REQUIRED` when you're ready for Stedi to begin processing the enrollment. Once an enrollment is `STEDI_ACTION_REQUIRED`, only Stedi can set or update its status.
  - Allowed values: `DRAFT`, `SUBMITTED`, `PROVISIONING`, `LIVE`, `REJECTED`, `CANCELED`, `STEDI_ACTION_REQUIRED`, `PROVIDER_ACTION_REQUIRED`
- **`statusLastUpdatedAt`** (`string`) (required): The date and time when the enrollment status was last updated. This timestamp is used to track enrollment processing durations and enables filtering to identify recently changed enrollments. It automatically updates whenever an enrollment's status changes but remains unchanged during other updates.
- **`submittedAt`** (`string`): The date and time when the enrollment was submitted. If the enrollment is in `DRAFT` status, `submittedAt` is not present. When the enrollment transitions from draft to `STEDI_ACTION_REQUIRED`, `submittedAt` is updated to the submission time. If the enrollment was created and submitted immediately, the `submittedAt` time will be equal or close to the `createdAt` time.
- **`tasks`** (`array of Task objects`): Tasks associated with this enrollment representing work that needs to be completed. Each task has a responsible party and specific definition.
- **`tasks[].completedAt`** (`string`): The timestamp when the task was completed.
- **`tasks[].definition`** (`any`) (required): A discriminated union of task definitions. Supports multiple task types with future extensibility.
- **`tasks[].definition (variant 1).manualTask`** (`object`) (required): A task assigned to a responsible party that requires them to collect and submit a defined set of fields. The task is completed by supplying a `ManualTaskResponse` whose values satisfy the declared `fields`.
- **`tasks[].definition (variant 1).manualTask.fields`** (`array of ManualTaskField objects`) (required): Fields required to complete the task. Each entry defines the key, human-readable label, optional description, and type for values in the response. Can be empty for instruction-only tasks.
- **`tasks[].definition (variant 1).manualTask.fields[].description`** (`string`): Additional context explaining what to provide in the response. For example, details about what supporting documentation (such as the provider's W-9 form) is required.
- **`tasks[].definition (variant 1).manualTask.fields[].fieldType`** (`string`) (required): The accepted field types for a manual task.
  - Allowed values: `TEXT`, `DOCUMENT`
- **`tasks[].definition (variant 1).manualTask.fields[].key`** (`string`) (required): A unique identifier for this field within the task, such as `ENROLLMENT_FORM`.
- **`tasks[].definition (variant 1).manualTask.fields[].label`** (`string`) (required): Human-readable label for this field, such as `Provider NPI` or `Tax ID`.
- **`tasks[].definition (variant 1).manualTask.instructions`** (`string`) (required): Instructions for completing the task.
- **`tasks[].definition (variant 1).manualTask.links`** (`array of TaskLink objects`): Links to help complete the task. This can include payer portals, reference documentation, or document download links for Stedi-provided template PDFs.
- **`tasks[].definition (variant 1).manualTask.links[].label`** (`string`) (required): Descriptive label for the URL, such as `Provider Portal` or `W-9 Template`.
- **`tasks[].definition (variant 1).manualTask.links[].url`** (`string`) (required): The URL for the resource.
- **`tasks[].id`** (`string`) (required): The unique, Stedi-assigned identifier for the task.
- **`tasks[].isComplete`** (`boolean`) (required): Whether the task has been marked as complete through either the API or the Stedi portal.
- **`tasks[].rank`** (`number`) (required): The rank order of this task. Tasks with lower numbers must be completed first. For example, a task with rank `1` must be completed before a task with rank `2`.
- **`tasks[].responseData`** (`any`): A discriminated union of task response data. Contains structured data collected when completing specific task types.
- **`tasks[].responseData (variant 1).manualTask`** (`object`) (required): Values provided when updating or completing a manual task. Visit [Manage enrollment tasks](https://www.stedi.com/docs/healthcare/transaction-enrollment-tasks-documents#api) for details.
- **`tasks[].responseData (variant 1).manualTask.values`** (`array of ManualTaskResponseKeyValue objects`) (required): Values for fields in the task definition. Each value's `key` must have a corresponding field `key`. When updating a task without completing it, you can submit a subset of fields; the supplied values are merged into any previously saved values. Completing a task (`completed: true`) requires a value for every field.
- **`tasks[].responseData (variant 1).manualTask.values[].key`** (`string`) (required): Identifier that matches a field `key` in the task definition.
- **`tasks[].responseData (variant 1).manualTask.values[].value`** (`any`) (required): The value supplied for a `ManualTaskField`. The variant used must match the field's declared `FieldType`. Supply multiple entries with distinct keys to capture multiple documents or values.
- **`tasks[].responseData (variant 1).manualTask.values[].value (variant 1).text`** (`string`) (required): Free-form text when the `fieldType` is `TEXT`.
- **`tasks[].responseData (variant 1).manualTask.values[].value (variant 2).document`** (`object`) (required): A reference to a document uploaded to enrollment, supplied as the `document` variant of a `ManualTaskResponseValue`.
- **`tasks[].responseData (variant 1).manualTask.values[].value (variant 2).document.documentId`** (`string`) (required): The `documentId` returned for a file uploaded through the [Upload Enrollment Document](https://www.stedi.com/docs/healthcare/api-reference/post-enrollment-document-upload) endpoint.
- **`tasks[].responsibleParty`** (`string`) (required): The party responsible for completing a task.
  - Allowed values: `PROVIDER`, `STEDI`
- **`transactions`** (`any`) (required): Specifies which transaction types are included in the enrollment.
- **`transactions (variant 1).eligibilityCheck`** (`object`) (required): Represents the enrollment status for a specific transaction type.
- **`transactions (variant 1).eligibilityCheck.enroll`** (`boolean`) (required)
- **`transactions (variant 2).claimStatus`** (`object`) (required): Represents the enrollment status for a specific transaction type.
- **`transactions (variant 2).claimStatus.enroll`** (`boolean`) (required)
- **`transactions (variant 3).professionalClaimSubmission`** (`object`) (required): Represents the enrollment status for a specific transaction type.
- **`transactions (variant 3).professionalClaimSubmission.enroll`** (`boolean`) (required)
- **`transactions (variant 4).institutionalClaimSubmission`** (`object`) (required): Represents the enrollment status for a specific transaction type.
- **`transactions (variant 4).institutionalClaimSubmission.enroll`** (`boolean`) (required)
- **`transactions (variant 5).dentalClaimSubmission`** (`object`) (required): Represents the enrollment status for a specific transaction type.
- **`transactions (variant 5).dentalClaimSubmission.enroll`** (`boolean`) (required)
- **`transactions (variant 6).claimPayment`** (`object`) (required): Represents the enrollment status for a specific transaction type.
- **`transactions (variant 6).claimPayment.enroll`** (`boolean`) (required)
- **`transactions (variant 7).solicitedClaimAttachment`** (`object`) (required): Represents the enrollment status for a specific transaction type.
- **`transactions (variant 7).solicitedClaimAttachment.enroll`** (`boolean`) (required)
- **`transactions (variant 8).unsolicitedClaimAttachment`** (`object`) (required): Represents the enrollment status for a specific transaction type.
- **`transactions (variant 8).unsolicitedClaimAttachment.enroll`** (`boolean`) (required)
- **`updatedAt`** (`string`) (required): The date and time when the enrollment was updated.
- **`userEmail`** (`string`) (required): The email address where Stedi should send updates about the enrollment. We'll use it to notify you when there are next steps and send updates on the enrollment's status.
 - This email address can be different from the `primaryContact.email` where the payer sends communications about the enrollment.
 - For [automatic enrollment requests](https://www.stedi.com/docs/healthcare/create-manage-transaction-enrollments#automatic-enrollment-requests), Stedi sets this to the oldest account member with the Admin role.

**Example:**

```json
{
  "createdAt": "2023-11-07T05:31:56Z",
  "documents": [
    {
      "createdAt": "2026-11-08T12:00:00Z",
      "enrollmentId": "db6675c5-7bg7-4af9-8c68-a54a336d2911",
      "id": "dc6665a5-7b97-4agh-8c74-a00a336c2989",
      "name": "pdf-agreement.pdf",
      "status": "UPLOADED",
      "updatedAt": "2026-11-08T12:05:00Z"
    }
  ],
  "history": [
    {
      "changedAt": "2026-11-07T05:31:56Z",
      "changedBy": "user@example.com",
      "newStatus": "DRAFT",
      "type": "STATUS_CHANGE"
    },
    {
      "changedAt": "2026-11-07T05:31:56Z",
      "changedBy": "user@example.com",
      "newStatus": "STEDI_ACTION_REQUIRED",
      "previousStatus": "DRAFT",
      "type": "STATUS_CHANGE"
    },
    {
      "changedAt": "2026-11-07T06:15:22Z",
      "changedBy": "system",
      "newStatus": "PROVIDER_ACTION_REQUIRED",
      "previousStatus": "STEDI_ACTION_REQUIRED",
      "type": "STATUS_CHANGE"
    },
    {
      "changedAt": "2026-11-08T06:15:22Z",
      "changedBy": "system",
      "newStatus": "STEDI_ACTION_REQUIRED",
      "previousStatus": "PROVIDER_ACTION_REQUIRED",
      "type": "STATUS_CHANGE"
    },
    {
      "changedAt": "2026-11-10T06:15:22Z",
      "changedBy": "system",
      "newStatus": "PROVIDER_ACTION_REQUIRED",
      "previousStatus": "STEDI_ACTION_REQUIRED",
      "type": "STATUS_CHANGE"
    }
  ],
  "id": "db6675c5-7bg7-4af9-8c68-a54a336d2911",
  "payer": {
    "name": "UnitedHealthcare",
    "stediPayerId": "KMQTZ",
    "submittedPayerIdOrAlias": "87726"
  },
  "primaryContact": {
    "city": "A City",
    "email": "test@example.com",
    "firstName": "John",
    "lastName": "Doe",
    "phone": "5551234567",
    "state": "MD",
    "streetAddress1": "123 Some Str.",
    "zipCode": "20814"
  },
  "provider": {
    "id": "db6665c5-7b97-4af9-8c68-a00a336c2998",
    "name": "Test Medical Provider",
    "npi": "1234567890",
    "taxId": "123456789",
    "taxIdType": "EIN"
  },
  "requestedEffectiveDate": "20231107",
  "source": "API",
  "status": "PROVIDER_ACTION_REQUIRED",
  "statusLastUpdatedAt": "2023-11-07T06:15:22Z",
  "submittedAt": "2023-11-07T05:31:56Z",
  "tasks": [
    {
      "definition": {
        "manualTask": {
          "fields": [],
          "instructions": "Log in to your Authority's portal and request clearinghouse access for Stedi."
        }
      },
      "id": "ac6665a5-7b97-4agh-8c74-a00a336c2989",
      "isComplete": false,
      "rank": 1,
      "responsibleParty": "PROVIDER"
    },
    {
      "completedAt": "2026-06-01T12:00:00Z",
      "definition": {
        "manualTask": {
          "fields": [
            {
              "description": "Your filled-in and signed enrollment form, as a PDF",
              "fieldType": "DOCUMENT",
              "key": "ENROLLMENT_FORM",
              "label": "Signed PDF"
            }
          ],
          "instructions": "Download the enrollment form, sign it, and upload the completed PDF.",
          "links": [
            {
              "label": "Enrollment Form",
              "url": "https://enrollments.us.stedi.com/2024-09-01/documents/019375d0-9876-7890-abcd-567890fedcba/download"
            }
          ]
        }
      },
      "id": "019ce833-b234-75f1-9599-0f14ba643709",
      "isComplete": true,
      "rank": 0,
      "responseData": {
        "manualTask": {
          "values": [
            {
              "key": "ENROLLMENT_FORM",
              "value": {
                "document": {
                  "documentId": "dc6665a5-7b97-4af9-8c74-a00a336c2989"
                }
              }
            }
          ]
        }
      },
      "responsibleParty": "PROVIDER"
    }
  ],
  "transactions": {
    "professionalClaimSubmission": {
      "enroll": true
    }
  },
  "updatedAt": "2023-11-07T05:31:56Z",
  "userEmail": "test@example.com"
}
```

#### 400

ValidationException 400 response

**Schema:** `ValidationExceptionResponseContent`

**Properties:**

- **`fieldList`** (`array of ValidationExceptionField objects`): A list of specific failures encountered while validating the input.
A member can appear in this list more than once if it failed to satisfy multiple constraints.
- **`fieldList[].message`** (`string`) (required): A detailed description of the validation failure.
- **`fieldList[].path`** (`string`) (required): A JSONPointer expression to the structure member whose value failed to satisfy the modeled constraints.
- **`message`** (`string`) (required): A summary of the validation failure.
#### 401

UnauthorizedException 401 response

**Schema:** `UnauthorizedExceptionResponseContent`

**Properties:**

- **`code`** (`string`): Error classification code
- **`message`** (`string`) (required): Human-readable error message
#### 403

AccessDeniedException 403 response

**Schema:** `AccessDeniedExceptionResponseContent`

**Properties:**

- **`code`** (`string`): Error classification code
- **`message`** (`string`) (required): Human-readable error message
#### 404

ResourceNotFoundException 404 response

**Schema:** `ResourceNotFoundExceptionResponseContent`

**Properties:**

- **`code`** (`string`): Error classification code
- **`message`** (`string`) (required): Human-readable error message
#### 429

QuotaExceededException 429 response

**Schema:** `QuotaExceededExceptionResponseContent`

**Properties:**

- **`code`** (`string`): Error classification code
- **`message`** (`string`) (required): Human-readable error message
#### 500

InternalFailureException 500 response

**Schema:** `InternalFailureExceptionResponseContent`

**Properties:**

- **`code`** (`string`): Error classification code
- **`message`** (`string`) (required): Human-readable error message
#### 503

ServiceUnavailableException 503 response

**Schema:** `ServiceUnavailableExceptionResponseContent`

**Properties:**

- **`code`** (`string`): Error classification code
- **`message`** (`string`) (required): Human-readable error message
#### 504

GatewayTimeoutException 504 response

**Schema:** `GatewayTimeoutExceptionResponseContent`

**Properties:**

- **`code`** (`string`): Error classification code
- **`message`** (`string`) (required): Human-readable error message


# 835 ERA PDF
Source: https://www.stedi.com/docs/healthcare/api-reference/get-era-pdf


This endpoint uses an 835 Electronic Remittance Advice (ERA) `transactionId` to retrieve its associated PDF file.

Stedi autogenerates a PDF file for each processed 835 ERA. The PDF contains a human-readable version of the ERA, including payment details, adjustments, and explanations for each service line. It resembles the Standard Paper Remittance (SPR) format that the Centers for Medicare and Medicaid Services (CMS) uses for ERA PDFs, regardless of which payer sent the ERA.

1. Call this endpoint with the `transactionId` path parameter set to the 835 ERA's transaction ID. This ID is included in the transaction processed event for the 835 ERA, which you can receive automatically through Stedi [webhooks](/healthcare/configure-webhooks). You can also retrieve this ID through the [Poll Transactions](/healthcare/api-reference/get-poll-transactions) endpoint.
2. By default, the endpoint returns the PDF as a base64-encoded string. To receive the unencoded PDF data, include the `Accept: application/pdf` request header.

To view the PDF, save the PDF data to a file with a `.pdf` extension.

<Note>
  This is a PDF representation of the 835 ERA - it's not the same as an Explanation of Benefits (EOB) that you may receive from the payer.
</Note>

## API Specification

Retrieve the generated PDF of an 835 Electronic Remittance Advice (ERA).

**Endpoint:** `GET /electronic-remittance-advice/{transactionId}/pdf`

**Base URL:** `https://healthcare.us.stedi.com/2024-04-01`

### Parameters

- **`transactionId`** (path) (required): A unique identifier for the Electronic Remittance Advice (ERA) within Stedi. This ID is included in the transaction processed event for the ERA, which you can receive automatically through Stedi [webhooks](https://www.stedi.com/docs/healthcare/configure-webhooks). You can also retrieve this ID through the [Poll Transactions endpoint](https://www.stedi.com/docs/healthcare/api-reference/get-poll-transactions).
  - Type: `string`
- **`logo`** (query): If false, the generated PDF will not include the Stedi logo in the footer. The default is true.
  - Type: `boolean`

### Responses

#### 200

GetElectronicRemittanceAdvicePdf 200 response

#### 400

ValidationException 400 response

**Schema:** `ValidationExceptionResponseContent`

**Properties:**

- **`code`** (`string`): A code describing the type of validation failure.
- **`message`** (`string`) (required): A message describing the causes of the validation failure. There may be more than one.
#### 403

AccessDeniedException 403 response

**Schema:** `AccessDeniedExceptionResponseContent`

**Properties:**

- **`code`** (`string`): Error classification code
- **`message`** (`string`) (required): Human-readable error message
#### 404

ResourceNotFoundException 404 response

**Schema:** `ResourceNotFoundExceptionResponseContent`

**Properties:**

- **`code`** (`string`): Error classification code
- **`message`** (`string`) (required): Human-readable error message
#### 429

ThrottlingException 429 response

**Schema:** `ThrottlingExceptionResponseContent`

**Properties:**

- **`code`** (`string`): Error classification code
- **`message`** (`string`) (required): Human-readable error message
#### 500

InternalFailureException 500 response

**Schema:** `InternalFailureExceptionResponseContent`

**Properties:**

- **`code`** (`string`): Error classification code
- **`message`** (`string`) (required): Human-readable error message
#### 503

ServiceUnavailableException 503 response

**Schema:** `ServiceUnavailableExceptionResponseContent`

**Properties:**

- **`code`** (`string`)
- **`message`** (`string`) (required)
#### 504

GatewayTimeoutException 504 response

**Schema:** `GatewayTimeoutExceptionResponseContent`

**Properties:**

- **`code`** (`string`)
- **`message`** (`string`) (required)


# Retrieve Event
Source: https://www.stedi.com/docs/healthcare/api-reference/get-event-destinations-event


This endpoint retrieves the full details of the specified event. You can use it as part of your workflow to [manually process undelivered events](/healthcare/event-destinations-message-handling#process-undelivered-events) as needed.

1. Call this endpoint with the event's ID. This ID returned as the `items[].id` property in the [List Events](/healthcare/api-reference/get-event-destinations-list-events) endpoint response.
2. Stedi returns the event details, including the event type, event status, creation date, and full event payload.

## API Specification

Retrieves the details of an existing event by its identifier.

**Endpoint:** `GET /events/{eventId}`

**Base URL:** `https://events.us.stedi.com/2026-02-01`

### Parameters

- **`eventId`** (path) (required): The unique identifier for the event, formatted as `evt_{UUID}`.
  - Type: `string`

### Responses

#### 200

EventDestinationsGetEvent 200 response

**Schema:** `EventDestinationsGetEventResponseContent`

**Properties:**

- **`createdAt`** (`string`) (required): An ISO 8601 timestamp of when the event was created.
- **`eventPayload`** (`any`) (required): The event payload, discriminated by object type. Each variant corresponds to a versioned event schema.
- **`eventPayload (variant 1).v1Event`** (`object`) (required): A v1 thin event envelope that signals a state change. Consumers fetch current resource state via API using the resource reference. This is the exact payload delivered to webhook destinations.
- **`eventPayload (variant 1).v1Event.account`** (`string`) (required): Stedi account identifier (UUID).
- **`eventPayload (variant 1).v1Event.created`** (`string`) (required): An ISO 8601 timestamp of when the event was created.
- **`eventPayload (variant 1).v1Event.environment`** (`string`) (required): The environment in which an event was produced.
  - Allowed values: `TEST`, `PRODUCTION`
- **`eventPayload (variant 1).v1Event.id`** (`string`): An identifier for the event, formatted as `evt_{UUID}`.
- **`eventPayload (variant 1).v1Event.object`** (`string`) (required): Object type discriminator for event payloads.
  - Allowed values: `v1.event`
- **`eventPayload (variant 1).v1Event.relatedResources`** (`array of EventPayloadResourceRef objects`): Other resources related to the event. Only present when there are related resources.
- **`eventPayload (variant 1).v1Event.relatedResources[].id`** (`string`) (required): The resource identifier.
- **`eventPayload (variant 1).v1Event.relatedResources[].type`** (`string`) (required): The resource type. Uses dot notation to indicate nested resources. For example, `enrollment.document` indicates a document associated with a transaction enrollment request.
- **`eventPayload (variant 1).v1Event.resource`** (`object`) (required): A reference to a resource affected by an event.
- **`eventPayload (variant 1).v1Event.resource.id`** (`string`) (required): The resource identifier.
- **`eventPayload (variant 1).v1Event.resource.type`** (`string`) (required): The resource type. Uses dot notation to indicate nested resources. For example, `enrollment.document` indicates a document associated with a transaction enrollment request.
- **`eventPayload (variant 1).v1Event.type`** (`string`): The event type in dot notation, such as `enrollment.activated`.
- **`eventType`** (`string`) (required): The type of event, such as `enrollment.activated`.
- **`id`** (`string`) (required): The unique identifier for the event, formatted as `evt_{UUID}`.
- **`status`** (`string`) (required): The current status of an event.
  - Allowed values: `PENDING`, `DELIVERED`, `FAILED`

**Example:**

```json
{
  "createdAt": "2026-02-01T12:00:00Z",
  "eventPayload": {
    "v1Event": {
      "account": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
      "created": "2026-02-01T12:00:00.000Z",
      "environment": "PRODUCTION",
      "id": "evt_550e8400-e29b-41d4-a716-446655440000",
      "object": "v1.event",
      "resource": {
        "id": "enr_661f9511-f3ac-52e5-b827-557766551111",
        "type": "enrollment"
      },
      "type": "enrollment.activated"
    }
  },
  "eventType": "enrollment.activated",
  "id": "evt_550e8400-e29b-41d4-a716-446655440000",
  "status": "DELIVERED"
}
```

#### 400

InvalidRequestException 400 response

**Schema:** `InvalidRequestExceptionResponseContent`

**Properties:**

- **`errors`** (`array of ValidationFailure objects`): Each part of the request that was rejected. Absent when the failure is not specific to any part.
- **`errors[].message`** (`string`) (required): What was wrong with this part of the request
- **`errors[].path`** (`string`): A JSON pointer to the part of the request that failed validation
- **`message`** (`string`) (required): Why the request failed. The wording can change, so branch on the exception type, not this text.
#### 401

AuthenticationFailedException 401 response

**Schema:** `AuthenticationFailedExceptionResponseContent`

**Properties:**

- **`message`** (`string`) (required): Why the request failed. The wording can change, so branch on the exception type, not this text.
#### 403

ForbiddenException 403 response

**Schema:** `ForbiddenExceptionResponseContent`

**Properties:**

- **`message`** (`string`) (required): Why the request failed. The wording can change, so branch on the exception type, not this text.
#### 404

NotFoundException 404 response

**Schema:** `NotFoundExceptionResponseContent`

**Properties:**

- **`message`** (`string`) (required): Why the request failed. The wording can change, so branch on the exception type, not this text.
#### 500

InternalServerException 500 response

**Schema:** `InternalServerExceptionResponseContent`

**Properties:**

- **`message`** (`string`) (required): Why the request failed. The wording can change, so branch on the exception type, not this text.


# List Events
Source: https://www.stedi.com/docs/healthcare/api-reference/get-event-destinations-list-events


This endpoint retrieves a list of events generated within your Stedi account. By default, it returns all events regardless of delivery status for the past 30 days. You can use it to [recover from delivery failures](/healthcare/event-destinations-message-handling#process-undelivered-events) and [check for processing errors](/healthcare/event-destinations-message-handling#check-for-processing-errors).

1. Call this endpoint with one or more query parameters to filter the results. You can filter by event type, delivery status, or created date.
2. Stedi returns the a list of events matching the criteria. You can use the `items[].id` value with the [Retrieve Event](/healthcare/api-reference/get-event-destinations-event) endpoint to retrieve the full payload for each event.

## API Specification

Lists all events for your account. Results are paginated.

**Endpoint:** `GET /events`

**Base URL:** `https://events.us.stedi.com/2026-02-01`

### Parameters

- **`pageSize`** (query): The maximum number of elements to return in a page. If not specified, the default is 100.
  - Type: `number`
- **`pageToken`** (query): The `nextPageToken` value from a previous response. You can use this to get the next page of results. If not set, Stedi returns the first page of results.
  - Type: `string`
- **`eventId`** (query): Filter results by event ID, such as `evt_019d554b-311b-7813-b491-0a8973762eae`.
  - Type: `string`
- **`status`** (query): Filter results by one or more event statuses. Can be:
  - `DELIVERED`: Stedi successfully delivered the event to all relevant event destinations.
  - `PENDING`: Stedi is still trying to deliver the event to one or more event destinations.
  - `FAILED`: Stedi couldn't deliver the event to at least one event destination and is no longer retrying.
  - Type: `array`
- **`eventType`** (query): Filter results by event type, such as `enrollment.activated`.
  - Type: `string`
- **`created`** (query): Filter results by their `createdAt` timestamp. Each value is in the format `operator:ISO-8601-timestamp`.
  - The supported operators are `gt` (after), `gte` (at or after), `lt` (before), and `lte` (at or before). For example: Setting this to `lt:2024-02-01T00:00:00Z` filters for events created before the specified timestamp.
  - Combine multiple values with `&` to specify a date range. For example: `created=gt:2026-01-01T00:00:00Z&created=lt:2026-02-01T00:00:00Z`.
  - Type: `array`

### Responses

#### 200

EventDestinationsListEvents 200 response

**Schema:** `EventDestinationsListEventsResponseContent`

**Properties:**

- **`items`** (`array of EventSummary objects`) (required): The list of event summaries.
- **`items[].createdAt`** (`string`) (required): An ISO 8601 timestamp of when the event was created.
- **`items[].eventType`** (`string`) (required): The type of event, such as `enrollment.activated`.
- **`items[].id`** (`string`) (required): The unique identifier for the event, formatted as `evt_{UUID}`.
- **`items[].status`** (`string`) (required): The current status of an event.
  - Allowed values: `PENDING`, `DELIVERED`, `FAILED`
- **`nextPageToken`** (`string`): Token that you can supply in subsequent requests to retrieve the next page of results. If not returned, there are no more results.

**Example:**

```json
{
  "items": [
    {
      "createdAt": "2026-02-01T12:00:00Z",
      "eventType": "enrollment.activated",
      "id": "evt_550e8400-e29b-41d4-a716-446655440000",
      "status": "DELIVERED"
    }
  ]
}
```

#### 400

InvalidRequestException 400 response

**Schema:** `InvalidRequestExceptionResponseContent`

**Properties:**

- **`errors`** (`array of ValidationFailure objects`): Each part of the request that was rejected. Absent when the failure is not specific to any part.
- **`errors[].message`** (`string`) (required): What was wrong with this part of the request
- **`errors[].path`** (`string`): A JSON pointer to the part of the request that failed validation
- **`message`** (`string`) (required): Why the request failed. The wording can change, so branch on the exception type, not this text.
#### 401

AuthenticationFailedException 401 response

**Schema:** `AuthenticationFailedExceptionResponseContent`

**Properties:**

- **`message`** (`string`) (required): Why the request failed. The wording can change, so branch on the exception type, not this text.
#### 403

ForbiddenException 403 response

**Schema:** `ForbiddenExceptionResponseContent`

**Properties:**

- **`message`** (`string`) (required): Why the request failed. The wording can change, so branch on the exception type, not this text.
#### 500

InternalServerException 500 response

**Schema:** `InternalServerExceptionResponseContent`

**Properties:**

- **`message`** (`string`) (required): Why the request failed. The wording can change, so branch on the exception type, not this text.


# Retrieve File Execution Input
Source: https://www.stedi.com/docs/healthcare/api-reference/get-execution-input


This endpoint retrieves a file execution's input document before it passes through any translation or mappings. You can use it to retrieve 277CA claim acknowledgments or 835 Electronic Remittance Advice (ERAs) in X12 EDI format.

1. Call this endpoint with the file execution ID for the transaction you want to retrieve. This is returned as the `items[].fileExecutionId` in the [List Transactions](/healthcare/api-reference/get-list-transactions) and [Poll Transactions](/healthcare/api-reference/get-poll-transactions) endpoint responses.

2. The endpoint returns a `302` temporary redirect to the document download URL. Many HTTP clients will automatically follow this redirect, or have a simple follow redirects configuration to set. For example, the `-L` or `--location` flags in cURL requests will automatically follow the redirect. In this case, the response contains the full input document.

   If your implementation doesn't automatically follow the redirect, the response body contains a pre-signed URL in the `documentDownloadUrl` property. The URL expires after 60 minutes.

3. If required, make a `GET` request to download the input document from the `documentDownloadUrl`.

   ```bash
   curl --request GET \
   --url "<documentDownloadUrl>" \
   --output /path/to/file.txt
   ```

There are no size restrictions on documents when fetching from this endpoint.

## Input document format [#input-document-format]

The input document can be in either X12 EDI or JSON format, depending on the source. For example:

* If you send an 837 claim to one of Stedi's JSON endpoints, the input document will be in JSON format.
* If a payer sends you a 277CA claim acknowledgment or an 835 Electronic Remittance Advice (ERA), the input document will be in the original X12 EDI format, including the envelope.

<Accordion title="Example 277CA and 835 ERA input documents" id="example-277ca-and-835-era-input-documents">
  <Tabs items="[&#x22;277CA&#x22;, &#x22;835 ERA&#x22;]">
    <Tab value="277CA">
      ```txt
      ISA*00*          *00*          *ZZ*STEDITEST      *ZZ*599264680681   *260403*2042*^*00501*000001520*0*T*`~GS*HN*STEDITEST*599264680681*20260403*204210*1520*X*005010X214~ST*277*0001*005010X214~BHT*0085*08*01KNAH9X25NM7JFSDAV1D5MXTW*20260403*204209*TH~HL*1**20*1~NM1*AY*2*STEDI INC*****46*117151744~TRN*1*01KNAH9X25NM7JFSDAV1D5MXTW~DTP*050*D8*20260403~DTP*009*D8*20260403~HL*2*1*21*1~NM1*41*2*Test Data Health Services, Inc.*****46*123435~TRN*2*01KHCBK84E40QQYJVXA5VVXG54~STC*A0`17`AY*20260403*WQ*109.2~QTY*90*1.0~AMT*YU*109.2~HL*3*2*19*1~NM1*85*2*Therapy Associates*****XX*1999999984~TRN*1*0~REF*TJ*123456789~QTY*QA*1.0~AMT*YU*109.2~HL*4*3*PT*0~NM1*QC*1*Anon*John****MI*U7777788888~TRN*2*123456789~STC*A1`20*20260403*WQ*109.2~REF*D9*DO68G47DYWKAUD72Y6U7~DTP*472*RD8*20240101-20240101~SE*26*0001~GE*1*1520~IEA*1*000001520~
      ```
    </Tab>

    <Tab value="835 ERA">
      ```txt
      ISA*00*          *00*          *ZZ*STEDITEST      *ZZ*599264680681   *260403*1853*^*00501*000001519*0*T*>~GS*HP*STEDITEST*599264680681*20260403*185323*1519*X*005010X221A1~ST*835*0001~BPR*I*109.2*C*ACH************20260403~TRN*1*01KNAB2Q1HV0NV9PSFSEW8YBKS*1234567890~DTM*405*20260403~N1*PR*Stedi Test Payer*XV*STEDI~N3*228 PARK AVE S*STE 58460~N4*NEW YORK*NY*10003-1502~REF*EO*234567890~PER*BL~N1*PE*Therapy Associates*XX*1999999984~N3*123 Some St*Floor 1~N4*A City*NY*123450000~REF*TJ*333445678~LX*1~CLP*1111222223333*1*109.2*109.2*.0*ZZ*01KNAB2Q1HHKVCDS6T205GF09J*02*1~NM1*QC*1*Anon*John****MI*U7777788888~DTM*232*20240101~SVC*HC>90837>95*109.2*109.2**1.0*HC>90837>95*1.0~DTM*472*20240101~REF*6R*111222333~SE*21*0001~GE*1*1519~IEA*1*000001519~
      ```
    </Tab>
  </Tabs>
</Accordion>

## API Specification

Fetch a file execution's input document before any translation and mappings.

**Endpoint:** `GET /executions/{executionId}/input`

**Base URL:** `https://core.us.stedi.com/2023-08-01`

### Parameters

- **`executionId`** (path) (required): A unique identifier for the file execution within Stedi. This ID is included in the file processed event, or you can retrieve it manually from the file's details page within the Stedi portal.
  - Type: `string`

### Responses

#### 302

GetExecutionInputDocument 302 response

**Schema:** `GetExecutionInputDocumentResponseContent`

**Properties:**

- **`documentDownloadUrl`** (`string`): A URL to download the document. This URL is available for 60 minutes.

**Example:**

```json
{
  "documentDownloadUrl": "https://stedi-default-core-artifacts.s3.us-east-1.amazonaws.com/write/input/06bdccdc-4aaa-4aaa..."
}
```

#### 400

BadRequestException 400 response

**Schema:** `BadRequestExceptionResponseContent`

**Properties:**

- **`message`** (`string`) (required)
- **`code`** (`string`)
#### 401

UnauthorizedException 401 response

**Schema:** `UnauthorizedExceptionResponseContent`

**Properties:**

- **`message`** (`string`) (required)
- **`code`** (`string`)
#### 403

AccessDeniedException 403 response

**Schema:** `AccessDeniedExceptionResponseContent`

**Properties:**

- **`message`** (`string`) (required)
- **`code`** (`string`)
#### 404

ResourceNotFoundException 404 response

**Schema:** `ResourceNotFoundExceptionResponseContent`

**Properties:**

- **`message`** (`string`) (required)
- **`code`** (`string`)
#### 409

ResourceUnderChangeException 409 response

**Schema:** `ResourceUnderChangeExceptionResponseContent`

**Properties:**

- **`message`** (`string`) (required)
#### 422

UnprocessableEntityException 422 response

**Schema:** `UnprocessableEntityExceptionResponseContent`

**Properties:**

- **`message`** (`string`) (required)
- **`code`** (`string`)
#### 429

ThrottlingException 429 response

**Schema:** `ThrottlingExceptionResponseContent`

**Properties:**

- **`message`** (`string`) (required)
- **`code`** (`string`)
#### 500

ServiceException 500 response

**Schema:** `ServiceExceptionResponseContent`

**Properties:**

- **`message`** (`string`) (required)
- **`exceptionCause`** (`object`)
- **`exceptionCause.name`** (`string`)
- **`exceptionCause.message`** (`string`)
- **`exceptionCause.stack`** (`string`)
#### 503

ServiceUnavailableException 503 response

**Schema:** `ServiceUnavailableExceptionResponseContent`

**Properties:**

- **`message`** (`string`) (required)
- **`code`** (`string`)
#### 504

GatewayTimeoutException 504 response

**Schema:** `GatewayTimeoutExceptionResponseContent`

**Properties:**

- **`message`** (`string`) (required)
- **`code`** (`string`)


# Retrieve Batch Check Statuses
Source: https://www.stedi.com/docs/healthcare/api-reference/get-healthcare-batch-eligibility-check-statuses


This endpoint retrieves the processing status and other summary information for all of the eligibility checks in the specified batch. It doesn't include the complete eligibility response. For the full results of each eligibility check, call the [Poll Batch Checks](/healthcare/api-reference/get-healthcare-polling-eligibility) endpoint instead.

You can use this endpoint to determine whether specific eligibility checks within a batch have completed. You can also use the response to determine whether patients have active or inactive coverage without having to poll.

1. Call this endpoint with the batch ID for the eligibility check batch. This is the `batchId` Stedi returned in the [Batch Eligibility Checks](/healthcare/api-reference/post-healthcare-batch-eligibility) endpoint response. It's also available on the batch's details page in the Stedi portal.
2. Stedi returns information about the processing status of each eligibility check within the batch, including whether the check completed successfully and information about the patient's coverage result (`eligibilityCheckResult`). Each `item` in the response corresponds to one eligibility check within the batch.

## API Specification

Retrieve status information for all eligibility checks within a batch, regardless of processing status

**Endpoint:** `GET /eligibility-manager/batch/{batchId}/items`

**Base URL:** `https://manager.us.stedi.com/2024-04-01`

### Parameters

- **`batchId`** (path) (required): The unique identifier for the batch. This is the `batchId` returned in the Batch Eligibility Check endpoint response. It's also listed as the **Batch ID** in the Stedi portal.
  - Type: `string`
- **`pageSize`** (query): The maximum number of elements to return in a page. If not specified, the default is 100.
  - Type: `integer`
- **`pageToken`** (query): A token returned by a previous call to this operation in the `nextPageToken` property. If not specified, Stedi returns the first page of results.
  - Type: `string`
- **`state`** (query): Filter for batch items in the specified states. Can be set to one or more of the following states:
  - `PENDING`: Stedi hasn't begun processing the eligibility check.
  - `VALIDATED`: Stedi finished validating the eligibility check and is ready to execute it.
  - `VALIDATION_FAILED`: Stedi found errors in the eligibility check that you need to fix before processing can continue.
  - `STARTED`: Stedi has begun processing the eligibility check.
  - `RETRYING`: Stedi is retrying the eligibility check. Stedi retries eligibility checks that fail due to payer connectivity issues for up to 8 hours.
  - `COMPLETED`: Stedi successfully processed the eligibility check and received a response from the payer. This doesn't indicate that the payer has active coverage, only that Stedi was able to get a response.
  - `COMPLETED_WITH_ERRORS`: Stedi finished processing the eligibility check, but couldn't get a response from the payer.
  - Type: `array`
- **`eligibilityCheckResult`** (query): Filter for batch items with the specified eligibility check results. Can be set to one or more of the following results:
  - `ACTIVE`: The payer's response contains an active eligibility and benefit type. Visit [Eligibility and benefit type codes](https://www.stedi.com/docs/healthcare/supported-features/eligibility-and-benefit-type-codes) for a complete list of valid code values.
  - `INACTIVE`: The payer's response doesn't contain an active eligibility and benefit type.
  - `INVESTIGATE`: The payer returned an unexpected eligibility or benefit type code. Review the response and contact the payer if you have questions.
  - `FAILED`: The payer returned an error code in the response. Review the error code and retry the eligibility check.
  - Type: `array`

### Responses

#### 200

GetBatchItems 200 response

**Schema:** `GetBatchItemsResponseContent`

**Properties:**

- **`items`** (`array of BatchItem objects`): A list of batch items. Each `item` represents a single eligibility check in the batch. Unlike the polling endpoint, which only returns results for completed eligibility checks, this endpoint returns results for all eligibility checks in the batch, regardless of their processing status.

All batch items may not be returned in a single response; use the `nextPageToken` to retrieve subsequent pages of results.
- **`items[].additionalInfo`** (`any`): Additional information about the batch item, based on the batch type.
- **`items[].additionalInfo (variant 1).eligibility`** (`object`) (required): Additional information specific to eligibility batch items.
- **`items[].additionalInfo (variant 1).eligibility.aaaErrors`** (`array of EligibilityCheckError objects`): When a payer rejects your eligibility check, the response contains one or more [`AAA` errors](https://www.stedi.com/docs/healthcare/eligibility-troubleshooting#payer-aaa-errors) that specify the reasons for the rejection and any recommended follow-up actions.

Any errors that occur at the `payer`, `provider`, `subscriber`, or `dependents` levels are also included in this array, allowing you to review all errors in a central location. If there are no `AAA` errors, this array will be empty.
- **`items[].additionalInfo (variant 1).eligibility.aaaErrors[].code`** (`string`): This is a superset of all the possible codes in the sub-loops, as all errors are bubbled up to the top level of the response

Payers may sometimes return other non-compliant values.
  - Allowed values: `04`, `15`, `33`, `35`, `41`, `42`, `43`, `44`, `45`, `46`, `47`, `48`, `49`, `50`, `51`, `52`, `53`, `54`, `55`, `56`, `57`, `58`, `60`, `61`, `62`, `63`, `64`, `65`, `66`, `67`, `68`, `69`, `70`, `71`, `72`, `73`, `74`, `75`, `76`, `77`, `78`, `79`, `80`, `97`, `98`, `AA`, `AE`, `AF`, `AG`, `AO`, `CI`, `E8`, `IA`, `MA`, `T4`
- **`items[].additionalInfo (variant 1).eligibility.aaaErrors[].description`** (`string`): The error description.
- **`items[].additionalInfo (variant 1).eligibility.aaaErrors[].field`** (`string`): The error type, `AAA`.
- **`items[].additionalInfo (variant 1).eligibility.aaaErrors[].followupAction`** (`string`): Payers may sometimes return other non-compliant values.
  - Allowed values: `Please Correct and Resubmit`, `Resubmission Not Allowed`, `Please Resubmit Original Transaction`, `Resubmission Allowed`, `Do Not Resubmit; Inquiry Initiated to a Third Party`, `Please Wait 30 Days and Resubmit`, `Please Wait 10 Days and Resubmit`, `Do Not Resubmit; We Will Hold Your Request and Respond Again Shortly`
- **`items[].additionalInfo (variant 1).eligibility.aaaErrors[].location`** (`string`): The location of the error within the original X12 EDI response.
- **`items[].additionalInfo (variant 1).eligibility.aaaErrors[].possibleResolutions`** (`string`): Information to help you correct the error.

We periodically update this guidance, so these strings may change at any time and may differ between eligibility responses. **Don't build programmatic logic that depends on matching these strings exactly.**
- **`items[].additionalInfo (variant 1).eligibility.eligibilityCheckResult`** (`string`)
  - Allowed values: `ACTIVE`, `INACTIVE`, `INVESTIGATE`, `FAILED`
- **`items[].additionalInfo (variant 1).eligibility.eligibilitySearchId`** (`string`): The eligibility search ID for this eligibility check. This is an identifier that allows Stedi to group eligibility checks for the same patient into a unified record in the Stedi portal called an [eligibility search](https://www.stedi.com/docs/healthcare/eligibility-searches-view).

This property is for use by Stedi tools only, such as Stedi's MCP server.
- **`items[].additionalInfo (variant 1).eligibility.id`** (`string`): The unique identifier for this eligibility check. This is the ID of the specific eligibility check request within the batch.
- **`items[].additionalInfo (variant 1).eligibility.outboundTraceId`** (`string`): A unique Stedi-generated identifier for the eligibility check. It's required for the generated X12 EDI transaction Stedi sends to payers. This identifier is different from the `requestId` and the `submitterTransactionIdentifier`.
  - You can use this identifier to find an eligibility check in the Stedi portal. Click **Find by ID** in the navigation bar and enter the `outboundTraceId` to go directly to the eligibility check's details page.
  - Don't use this ID to correlate eligibility check requests and responses. Use the `submitterTransactionIdentifier` property for correlation and tracking instead.
- **`items[].additionalInfo (variant 1).eligibility.payerId`** (`string`): The payer ID for this eligibility check.
- **`items[].additionalInfo (variant 1).eligibility.providerName`** (`string`): The provider's name as provided in the eligibility check.
- **`items[].additionalInfo (variant 1).eligibility.providerNpi`** (`string`): The provider's NPI as provided in the eligibility check.
- **`items[].additionalInfo (variant 1).eligibility.submitterTransactionIdentifier`** (`string`): The unique identifier you assigned to the eligibility check when you submitted the batch. Stedi also returns this identifier in the [Poll Batch Eligibility Checks](https://www.stedi.com/docs/healthcare/api-reference/get-healthcare-polling-eligibility) endpoint response, allowing you to correlate eligibility check requests and responses.
- **`items[].additionalInfo (variant 1).eligibility.subscriberFirstName`** (`string`): The subscriber's first name as provided in the eligibility check.
- **`items[].additionalInfo (variant 1).eligibility.subscriberLastName`** (`string`): The subscriber's last name as provided in the eligibility check.
- **`items[].additionalInfo (variant 1).eligibility.subscriberMemberId`** (`string`): The subscriber's member ID as provided in the eligibility check.
- **`items[].batchId`** (`string`) (required): The ID for the batch containing this eligibility check.
- **`items[].createdAt`** (`string`) (required): The date and time when the eligibility check was created.
- **`items[].index`** (`integer`): Only relevant for batches submitted through the JSON API. This is the index of the item in the batch. It starts at 0.
- **`items[].requestId`** (`string`): A globally unique identifier for this eligibility check within Stedi. Stedi uses this identifier to construct the URL for the eligibility check's detail pages within the Stedi portal.

Don't use this ID to correlate eligibility check requests and responses. Use the `additionalInfo.eligibility.submitterTransactionIdentifier` property for correlation and tracking instead.
- **`items[].rowNumber`** (`integer`): Only relevant for batches submitted through CSV upload. This is the row number for this eligibility check in the CSV file. It starts at 2 because the first row of the CSV file is the header.
- **`items[].state`** (`string`) (required): The current state of a batch item, which represents an eligibility check within a batch.
  - Allowed values: `PENDING`, `VALIDATED`, `VALIDATION_FAILED`, `STARTED`, `RETRYING`, `COMPLETED`, `COMPLETED_WITH_ERRORS`
- **`items[].updatedAt`** (`string`) (required): The date and time when the eligibility check was last updated.
- **`nextPageToken`** (`string`): Token that you can supply in subsequent requests to retrieve the next page of results. If not returned, there are no more results.

**Example:**

```json
{
  "items": [
    {
      "additionalInfo": {
        "eligibility": {
          "eligibilityCheckResult": "ACTIVE",
          "eligibilitySearchId": "01932c61-2d4f-7d22-85fa-c7db2e13e771",
          "payerId": "BCBS",
          "submitterTransactionIdentifier": "ABC123456789",
          "subscriberFirstName": "John",
          "subscriberLastName": "Doe",
          "subscriberMemberId": "123456789"
        }
      },
      "batchId": "01932c61-2d4f-7d22-85fa-c7db2e13e771",
      "createdAt": "2025-03-31T14:25:30Z",
      "requestId": "req-01a2b3c4-d5e6-7f89-0123-456789abcdef",
      "rowNumber": 1,
      "state": "COMPLETED",
      "updatedAt": "2025-03-31T14:26:45Z"
    },
    {
      "additionalInfo": {
        "eligibility": {
          "eligibilityCheckResult": "FAILED",
          "eligibilitySearchId": "01932c61-2d4f-7d22-85fa-c7db2e13e772",
          "payerId": "AETNA",
          "submitterTransactionIdentifier": "GHJ987654321",
          "subscriberFirstName": "Jane",
          "subscriberLastName": "Smith",
          "subscriberMemberId": "987654321"
        }
      },
      "batchId": "01932c61-2d4f-7d22-85fa-c7db2e13e771",
      "createdAt": "2025-03-31T14:25:30Z",
      "requestId": "req-02a2b3c4-d5e6-7f89-0123-456789abcdef",
      "rowNumber": 2,
      "state": "COMPLETED_WITH_ERRORS",
      "updatedAt": "2025-03-31T14:27:15Z"
    }
  ],
  "nextPageToken": "945ff6de213d3ef481d028065d4c12fb996a166a3a90ef98564318decfae50ce4b36d74b7e9d9bafa6e1d169"
}
```

#### 400

ValidationException 400 response

**Schema:** `ValidationExceptionResponseContent`

**Properties:**

- **`fieldList`** (`array of ValidationExceptionField objects`): A list of specific failures encountered while validating the input.
A member can appear in this list more than once if it failed to satisfy multiple constraints.
- **`fieldList[].message`** (`string`) (required): A detailed description of the validation failure.
- **`fieldList[].path`** (`string`) (required): A JSONPointer expression to the structure member whose value failed to satisfy the modeled constraints.
- **`message`** (`string`) (required): A summary of the validation failure.
#### 401

UnauthorizedException 401 response

**Schema:** `UnauthorizedExceptionResponseContent`

**Properties:**

- **`code`** (`string`): Error classification code
- **`message`** (`string`) (required): Human-readable error message
#### 403

AccessDeniedException 403 response

**Schema:** `AccessDeniedExceptionResponseContent`

**Properties:**

- **`code`** (`string`): Error classification code
- **`message`** (`string`) (required): Human-readable error message
#### 404

ResourceNotFoundException 404 response

**Schema:** `ResourceNotFoundExceptionResponseContent`

**Properties:**

- **`code`** (`string`): Error classification code
- **`message`** (`string`) (required): Human-readable error message
#### 500

InternalFailureException 500 response

**Schema:** `InternalFailureExceptionResponseContent`

**Properties:**

- **`code`** (`string`): Error classification code
- **`message`** (`string`) (required): Human-readable error message


# Retrieve Batch Status
Source: https://www.stedi.com/docs/healthcare/api-reference/get-healthcare-batch-eligibility-status


This endpoint retrieves the processing status of an eligibility check batch you submitted through the asynchronous [Batch Eligibility Checks](/healthcare/api-reference/post-healthcare-batch-eligibility) endpoint or through [CSV upload](/healthcare/batch-refresh-eligibility-checks#manual-submission) in the Stedi portal.

You can use this endpoint to determine when to start polling for the results of the eligibility checks within the batch. For example, don't start polling until either the `successCount` or the `errorCount` are greater than zero because these indicate checks that Stedi has finished processing. You can also use this endpoint to monitor the progress of large batches and confirm that all checks have been completed.

1. Call this endpoint with the batch ID for the eligibility check batch. This is the `batchId` Stedi returned in the [Batch Eligibility Checks](/healthcare/api-reference/post-healthcare-batch-eligibility) endpoint response. It's also available on the batch's details page in the Stedi portal.
2. Stedi returns a summary of the batch's processing status, including the number of completed checks, the error count, and the overall batch status.

## API Specification

Retrieve the status of an eligibility check batch submitted through the API or CSV upload

**Endpoint:** `GET /eligibility-manager/batch/{batchId}`

**Base URL:** `https://manager.us.stedi.com/2024-04-01`

### Parameters

- **`batchId`** (path) (required): The unique identifier for the batch. This is the `batchId` returned in the Batch Eligibility Check endpoint response. It's also listed as the **Batch ID** in the Stedi portal.
  - Type: `string`

### Responses

#### 200

GetBatch 200 response

**Schema:** `GetBatchResponseContent`

**Properties:**

- **`batchType`** (`string`) (required): The type of batch.
  - Allowed values: `ELIGIBILITY`
- **`createdAt`** (`string`) (required): The date and time when the batch was created.
- **`errorCount`** (`integer`): The number of eligibility checks that failed during processing. A failure means that Stedi successfully processed the check but didn't receive a response from the payer, even after retrying. A common reason for failure is payer connectivity issues.
- **`id`** (`string`) (required): The unique identifier for the batch. This is the `batchId` returned in the Batch Eligibility Check endpoint response. It's also listed as the **Batch ID** in the Stedi portal.
- **`importUrl`** (`string`): The URL to download the original CSV file. Only relevant for batches submitted through CSV upload in the Stedi portal.
- **`inProgressCount`** (`integer`): The number of eligibility checks that are currently in progress (started or retrying).
- **`maxRetryHours`** (`integer`): The maximum number of hours that Stedi will retry eligibility checks in this batch that fail due to payer connectivity issues. This is the value that was set when the batch was created. Only applicable to batches submitted through the API.
- **`name`** (`string`) (required): The name assigned to the batch upon creation. For CSV uploads, this is the name you provided when uploading the file. For API submissions, this is the same as the `batchId`.
- **`source`** (`string`)
  - Allowed values: `CSV_IMPORT`, `API`
- **`status`** (`string`) (required): The status of the batch.
  - Allowed values: `PENDING`, `VALIDATED`, `VALIDATION_FAILED`, `IN_PROGRESS`, `COMPLETED`, `COMPLETED_WITH_ERRORS`
- **`successCount`** (`integer`): The number of eligibility checks that were successfully completed. This means that Stedi successfully sent the check to the payer and received a response, but doesn't indicate whether the payer returned benefits information.
- **`totalCount`** (`integer`): The total number of eligibility checks in the batch. In the case of CSV uploads, one row in the CSV file corresponds to one eligibility check.
- **`updatedAt`** (`string`) (required): The date and time when the batch was last updated.
- **`validatedCount`** (`integer`): The number of eligibility checks that Stedi has validated.
- **`validationFailedCount`** (`integer`): The number of eligibility checks that failed validation. This is relevant to CSV uploads, where Stedi validates each row in the CSV file before processing it.

**Example:**

```json
{
  "batchType": "ELIGIBILITY",
  "createdAt": "2025-06-13T21:00:52.496Z",
  "errorCount": 5,
  "id": "01976b18-6d90-71d1-b27b-2556a9fbf837",
  "importUrl": "https://s3.amazonaws.com/bucket/key",
  "inProgressCount": 0,
  "name": "test_CSV_upload",
  "source": "CSV_IMPORT",
  "status": "COMPLETED_WITH_ERRORS",
  "successCount": 245,
  "totalCount": 250,
  "updatedAt": "2025-06-16T15:59:20.312Z"
}
```

#### 400

ValidationException 400 response

**Schema:** `ValidationExceptionResponseContent`

**Properties:**

- **`fieldList`** (`array of ValidationExceptionField objects`): A list of specific failures encountered while validating the input.
A member can appear in this list more than once if it failed to satisfy multiple constraints.
- **`fieldList[].message`** (`string`) (required): A detailed description of the validation failure.
- **`fieldList[].path`** (`string`) (required): A JSONPointer expression to the structure member whose value failed to satisfy the modeled constraints.
- **`message`** (`string`) (required): A summary of the validation failure.
#### 401

UnauthorizedException 401 response

**Schema:** `UnauthorizedExceptionResponseContent`

**Properties:**

- **`code`** (`string`): Error classification code
- **`message`** (`string`) (required): Human-readable error message
#### 403

AccessDeniedException 403 response

**Schema:** `AccessDeniedExceptionResponseContent`

**Properties:**

- **`code`** (`string`): Error classification code
- **`message`** (`string`) (required): Human-readable error message
#### 404

ResourceNotFoundException 404 response

**Schema:** `ResourceNotFoundExceptionResponseContent`

**Properties:**

- **`code`** (`string`): Error classification code
- **`message`** (`string`) (required): Human-readable error message
#### 500

InternalFailureException 500 response

**Schema:** `InternalFailureExceptionResponseContent`

**Properties:**

- **`code`** (`string`): Error classification code
- **`message`** (`string`) (required): Human-readable error message


# Poll Batch Eligibility Checks (271)
Source: https://www.stedi.com/docs/healthcare/api-reference/get-healthcare-polling-eligibility


This endpoint retrieves the results of asynchronous eligibility checks you submitted through the asynchronous [Batch Eligibility Checks](/healthcare/api-reference/post-healthcare-batch-eligibility) endpoint or through [CSV upload](/healthcare/batch-refresh-eligibility-checks#manual-submission) in the Stedi portal. It doesn't return results for real-time eligibility checks.

1. Call this endpoint. You can optionally add one or more query parameters to filter the results you want to retrieve.
2. The endpoint returns completed checks matching the criteria. Stedi retries checks that fail due to [payer connectivity issues](/healthcare/eligibility-troubleshooting#payer-connectivity-issues) for 8 - 24 hours. It can take up to the configured retry period for all checks in a batch to return results.

Each `item` in the response contains the benefits information for a completed eligibility check. Note that our documentation lists all enums officially allowed in the eligibility response. Some payers return non-compliant values, which Stedi passes through as is.

## Pagination [#pagination]

By default, the response includes the results for up to 10 eligibility checks within a single page - each eligibility response is represented as one item in the `items` array. You can control the number of results returned per page using the `pageSize` query parameter, which accepts a value between 1 and 200.

When there are additional pages of results, the response includes the `nextPageToken` property. To retrieve the next page of results, call the endpoint with the same `batchId` and other query parameters, and set the `pageToken` query parameter to the `nextPageToken` value. Repeat this process until the response doesn't include a `nextPageToken` property.

If you set the page size to a value > 20, Stedi returns the requested batch check results in `gzip` format to reduce the size. Many common HTTP clients accept `gzip` by default, but if not, you must add the `Accept-Encoding: gzip` header to your request and resubmit.

## API Specification

Retrieve batch eligibility check results

**Endpoint:** `GET /eligibility-manager/polling/batch-eligibility`

**Base URL:** `https://manager.us.stedi.com/2024-04-01`

### Parameters

- **`pageSize`** (query): The maximum number of check results to return in a page - each check is represented as one item in the `items` array. If not specified, the default is 10.
  - If you set the page size to a value > 20, Stedi returns the requested batch check results in `gzip` format to reduce the size. Many common HTTP clients accept `gzip` by default, but if not, you must add the `Accept-Encoding: gzip` header to your request and resubmit.
  - When check results are especially large, Stedi may return fewer than the requested number per page. In these cases, you can use the `nextPageToken` property to retrieve the rest of the requested results.
  - Type: `integer`
- **`pageToken`** (query): A token returned by a previous call to this operation in the `nextPageToken` property. If not specified, Stedi returns the first page of results.
  - Type: `string`
- **`batchId`** (query): An identifier for a batch of eligibility checks submitted through the [Batch Eligibility Check](https://www.stedi.com/docs/healthcare/api-reference/post-healthcare-batch-eligibility) endpoint. Use this to retrieve results for eligibility checks in the batch.
  - Type: `string`
- **`startDateTime`** (query): An ISO 8601 formatted string. For example `2023-08-28T00:00:00Z`. Stedi returns asynchronous eligibility checks that have completed processing after this time. Completed means that the payer has successfully returned a benefits response, the check has failed due to errors in the request, or that the payer has been unavailable for 8 hours and Stedi will no longer attempt to retry.
  - Type: `string`

### Responses

#### 200

BatchEligibilityPolling 200 response

**Schema:** `BatchEligibilityPollingResponseContent`

**Properties:**

- **`items`** (`array of BatchEligibilityResultItem objects`) (required): Each eligibility check response is included as a separate item in this array. The response shape is identical to the shape of the response for the [Real-Time Eligibility Check](https://www.stedi.com/docs/healthcare/api-reference/post-healthcare-eligibility) endpoint, with the addition of two new properties that help you correlate the results with individual eligibility checks.
    - `batchId` contains the `batchId` Stedi returned from the [Batch Eligibility Check](https://www.stedi.com/docs/healthcare/api-reference/post-healthcare-batch-eligibility) endpoint when making the request.
    - `submitterTransactionIdentifier` contains the unique identifier for the eligibility check that you submitted in the request.
- **`items[].batchId`** (`string`): The `batchId` Stedi returned from the [Batch Eligibility Check](https://www.stedi.com/docs/healthcare/api-reference/post-healthcare-batch-eligibility) endpoint.
- **`items[].batchName`** (`string`): The name Stedi uses when displaying this batch on the [Eligibility check batches page](https://portal.stedi.com/app/healthcare/checks/batch). If you didn't specify a name when submitting the batch, this is the same as the `batchId`.
- **`items[].benefitsInformation`** (`array of BenefitsInformation objects`): Information about the patient's healthcare benefits, such as coverage level (individual vs. family), coverage type (deductibles, co-pays, etc.), out of pocket maximums, and more. 
 
 Payers typically return at least the following properties: `code`, `coverageLevelCode`, `serviceTypeCodes`, and either `benefitAmount` or `benefitPercent`. However, the exact properties returned in this object are up to the payer's discretion.

The payer may send benefits information for service type codes (STCs) you didn't request - this is expected. The STC you send in the request tells the payer the types of benefits information you want, but they aren't required to respond with exactly the same STC(s) in the response. Receiving different STCs than you requested can also mean that the payer is ignoring the STC you sent, which is why we recommend [testing payers](https://www.stedi.com/docs/healthcare/eligibility-stc-procedure-codes#test-payer-stc-support) to determine their support for specific STCs.

Visit [Determine patient benefits](https://www.stedi.com/docs/healthcare/eligibility-active-coverage-benefits) for more information about benefit types, details about how to interpret the `benefitsInformation` array, and additional examples.
- **`items[].benefitsInformation[].additionalInformation`** (`array of AdditionalInformation objects`): A free-form message containing additional information about the benefits in the response.
- **`items[].benefitsInformation[].additionalInformation[].description`** (`string`): A free-form message containing additional information about the benefits in the response.
- **`items[].benefitsInformation[].authOrCertIndicator`** (`string`): Code indicating whether the benefit is subject to prior authorization or certification.

Payers may sometimes return other non-compliant values.
  - Allowed values: `N`, `U`, `Y`
- **`items[].benefitsInformation[].benefitAmount`** (`string`): The monetary benefit amount, such as a patient's co-pay or deductible. This value is expressed as a decimal, such as 100.00. 
 
 The payer will always send a value in this property when the `benefitsInformation[].code` = `B` - Co-Payment, `C` - Deductible, `G` - Out of Pocket (Stop Loss), `J` - Cost Containment, or `Y` - Spend Down. For those codes, this value represents the patient's portion of responsibility. 
 
 The payer will **never** send this value when `benefitsInformation[].code` = `A` - Co-Insurance. This property can contain zero when the patient has no responsibility. 
 
 Learn more about [patient costs](https://www.stedi.com/docs/healthcare/eligibility-patient-responsibility-benefits).
- **`items[].benefitsInformation[].benefitPercent`** (`string`): The percentage of the benefit, such as co-insurance. This property can contain zero when the patient has no responsibility. 
 
 The payer will always send a value in this property when `benefitsInformation[].code` = `A` - Co-Insurance. For this code, this value represents the patient's portion of the responsibility. The percentage is expressed as a decimal, such as `0.80` represents 80%. 
 
 The payer will **never** send a value in this property when `benefitsInformation[].code` = `B` - Co-Payment, `C` - Deductible, `G` - Out of Pocket (Stop Loss), `J` - Cost Containment, or `Y` - Spend Down. 
 
 Learn more about [patient costs](https://www.stedi.com/docs/healthcare/eligibility-patient-responsibility-benefits).
- **`items[].benefitsInformation[].benefitQuantity`** (`string`): The quantity of the benefit, qualified by the type specified in `quantityQualifier`. For example, `10` when the `quantityQualifier` is `Visits`.
- **`items[].benefitsInformation[].benefitsAdditionalInformation`** (`object`): Identifying information specific to this type of benefit.
- **`items[].benefitsInformation[].benefitsAdditionalInformation.alternativeListId`** (`string`): The alternative list ID. This identifier allows the payer to specify a list of drugs and its alternative drugs with the associated formulary status for the patient.
- **`items[].benefitsInformation[].benefitsAdditionalInformation.coverageListId`** (`string`): The coverage list ID. This identifier allows the payer to specify the identifier of a list of drugs that have coverage limitations for the associated patient.
- **`items[].benefitsInformation[].benefitsAdditionalInformation.drugFormularyNumber`** (`string`): The drug formulary number.
- **`items[].benefitsInformation[].benefitsAdditionalInformation.familyUnitNumber`** (`string`): The family unit number. This is returned when the payer is a pharmacy benefits manager (PBM) and the patient has a suffix to their member ID number that is used in the NCPDP Telecom Standard Insurance Segment, in field `303-C3` (Person Code). For all other uses, the family unit number (suffix) is considered part of the patient's member ID number.
- **`items[].benefitsInformation[].benefitsAdditionalInformation.groupDescription`** (`string`): Group name
- **`items[].benefitsInformation[].benefitsAdditionalInformation.groupNumber`** (`string`): The group number for the patient's health insurance plan.
- **`items[].benefitsInformation[].benefitsAdditionalInformation.hicNumber`** (`string`): The health insurance claim number (HICN). Note that CMS previously used the HICN to uniquely identify Medicare beneficiaries. However, they have since transitioned to a new, randomized Medicare Beneficiary Identifier (MBI) format. The HICN is no longer used for Medicare transactions but this property is now used by some payers to return MBI. If you receive a value in this property that matches the format specified in the [Medicare Beneficiary Identifier documentation](https://www.cms.gov/training-education/partner-outreach-resources/new-medicare-card/medical-beneficiary-identifiers-mbis), the number is likely an MBI and we recommend sending a follow-up eligibility check to CMS for additional benefits data. This most commonly occurs with patients who are covered by both Medicare and Medicaid.
- **`items[].benefitsInformation[].benefitsAdditionalInformation.insurancePolicyNumber`** (`string`): The insurance policy number.
- **`items[].benefitsInformation[].benefitsAdditionalInformation.medicaidRecepientIdNumber`** (`string`): Deprecated (misspelled): use medicaidRecipientIdNumber. The Medicaid Recipient Identification number.
This shape is deprecated: Misspelled. Use medicaidRecipientIdNumber instead. Still populated for backward compatibility.
- **`items[].benefitsInformation[].benefitsAdditionalInformation.medicaidRecipientIdNumber`** (`string`): The Medicaid Recipient Identification number.
- **`items[].benefitsInformation[].benefitsAdditionalInformation.medicalAssistanceCategory`** (`string`): The medical assistance category.
- **`items[].benefitsInformation[].benefitsAdditionalInformation.memberId`** (`string`): The patient's member ID.
- **`items[].benefitsInformation[].benefitsAdditionalInformation.planDescription`** (`string`): Plan name
- **`items[].benefitsInformation[].benefitsAdditionalInformation.planNetworkDescription`** (`string`): Plan network name
- **`items[].benefitsInformation[].benefitsAdditionalInformation.planNetworkIdNumber`** (`string`): The plan network identification number.
- **`items[].benefitsInformation[].benefitsAdditionalInformation.planNumber`** (`string`): The insurance plan number.
- **`items[].benefitsInformation[].benefitsAdditionalInformation.policyNumber`** (`string`): The patient's policy number.
- **`items[].benefitsInformation[].benefitsAdditionalInformation.priorAuthorizationNumber`** (`string`): The prior authorization number.
- **`items[].benefitsInformation[].benefitsAdditionalInformation.referralNumber`** (`string`): The referral number.
- **`items[].benefitsInformation[].benefitsDateInformation`** (`object`): Dates associated with the benefits.
  - This is where you can find benefit-specific eligibility dates, if provided. These dates override dates provided in `planDateInformation` for this benefit type.
  - This is where the payer may specify the last time the service was rendered (`latestVisitOrConsultation`), which you can use to determine whether the patient has already reached the allowed frequency, if applicable. For example, this object could contain the date when the patient received their last dental cleaning.
  - These dates only apply to the `benefitsInformation` object in which this `benefitsDateInformation` is provided.
- **`items[].benefitsInformation[].benefitsDateInformation.added`** (`string`): Added date. Payers may return this information in the case of retroactive eligibility.
- **`items[].benefitsInformation[].benefitsDateInformation.admission`** (`string`): The admission date or dates.
- **`items[].benefitsInformation[].benefitsDateInformation.admissions`** (`array of DtpDate objects`): The date(s) for admission.
- **`items[].benefitsInformation[].benefitsDateInformation.admissions[].date`** (`string`): A single date.
- **`items[].benefitsInformation[].benefitsDateInformation.admissions[].endDate`** (`string`): The end date of a range.
- **`items[].benefitsInformation[].benefitsDateInformation.admissions[].startDate`** (`string`): The beginning date of a range.
- **`items[].benefitsInformation[].benefitsDateInformation.benefit`** (`string`): The benefit date.
- **`items[].benefitsInformation[].benefitsDateInformation.benefitBegin`** (`string`): The date when the benefit begins.
- **`items[].benefitsInformation[].benefitsDateInformation.benefitEnd`** (`string`): The date when the benefit ends.
- **`items[].benefitsInformation[].benefitsDateInformation.certification`** (`string`): The certification date.
- **`items[].benefitsInformation[].benefitsDateInformation.cobraBegin`** (`string`): The date when COBRA coverage begins.
- **`items[].benefitsInformation[].benefitsDateInformation.cobraEnd`** (`string`): The date when COBRA coverage ends.
- **`items[].benefitsInformation[].benefitsDateInformation.completion`** (`string`): The completion date.
- **`items[].benefitsInformation[].benefitsDateInformation.coordinationOfBenefits`** (`string`): The coordination of benefits date.
- **`items[].benefitsInformation[].benefitsDateInformation.dateOfDeath`** (`string`): The date of death.
- **`items[].benefitsInformation[].benefitsDateInformation.dateOfLastUpdate`** (`string`): The date when the plan information was last updated.
- **`items[].benefitsInformation[].benefitsDateInformation.discharge`** (`string`): The discharge date.
- **`items[].benefitsInformation[].benefitsDateInformation.discharges`** (`array of DtpDate objects`): The date(s) when the patient was discharged.
- **`items[].benefitsInformation[].benefitsDateInformation.discharges[].date`** (`string`): A single date.
- **`items[].benefitsInformation[].benefitsDateInformation.discharges[].endDate`** (`string`): The end date of a range.
- **`items[].benefitsInformation[].benefitsDateInformation.discharges[].startDate`** (`string`): The beginning date of a range.
- **`items[].benefitsInformation[].benefitsDateInformation.effectiveDateOfChange`** (`string`): The effective date of change.
- **`items[].benefitsInformation[].benefitsDateInformation.eligibility`** (`string`): Plan eligibility dates.
- **`items[].benefitsInformation[].benefitsDateInformation.eligibilityBegin`** (`string`): The date when the patient is first eligible for benefits under the plan.
- **`items[].benefitsInformation[].benefitsDateInformation.eligibilityEnd`** (`string`): The date when the patient is no longer eligible for benefits under the plan.
- **`items[].benefitsInformation[].benefitsDateInformation.enrollment`** (`string`): The date when the patient is enrolled in the plan.
- **`items[].benefitsInformation[].benefitsDateInformation.issue`** (`string`): The issue date.
- **`items[].benefitsInformation[].benefitsDateInformation.latestVisitOrConsultation`** (`string`): The latest visit or consultation date. This date may be used to determine whether the patient has already reached the allowed frequency for a specific benefit.
- **`items[].benefitsInformation[].benefitsDateInformation.periodEnd`** (`string`): The end of a period.
- **`items[].benefitsInformation[].benefitsDateInformation.periodStart`** (`string`): The start of a period.
- **`items[].benefitsInformation[].benefitsDateInformation.plan`** (`string`): Only included when multiple plans apply to the patient or multiple plan periods apply.
- **`items[].benefitsInformation[].benefitsDateInformation.planBegin`** (`string`): Only included when multiple plans apply to the patient or multiple plan periods apply.
- **`items[].benefitsInformation[].benefitsDateInformation.planEnd`** (`string`): The date coverage from the plan ends.
- **`items[].benefitsInformation[].benefitsDateInformation.policyEffective`** (`string`): The date when the policy becomes effective.
- **`items[].benefitsInformation[].benefitsDateInformation.policyExpiration`** (`string`): The date when the policy expires.
- **`items[].benefitsInformation[].benefitsDateInformation.premiumPaidToDateEnd`** (`string`): The end of period when the plan premium payments are up-to-date.
- **`items[].benefitsInformation[].benefitsDateInformation.premiumPaidtoDateBegin`** (`string`): The start of the period when the plan premium was paid in full.
- **`items[].benefitsInformation[].benefitsDateInformation.primaryCareProvider`** (`string`): The primary care provider date.
- **`items[].benefitsInformation[].benefitsDateInformation.service`** (`string`): The service date or dates.
- **`items[].benefitsInformation[].benefitsDateInformation.status`** (`string`): The status date.
- **`items[].benefitsInformation[].benefitsRelatedEntities`** (`array of BenefitsRelatedEntity objects`): Other entities associated with the eligibility or benefits. This could be a provider, an individual, an organization, or another payer. When present, this array typically contains information about the patient's primary care provider (PCP), another organization that handles a specific benefit type (such as telehealth mental health services), or another health plan for the patient (coordination of benefits scenarios).
- This is where information for a crossover carrier such as Medicaid or Medicare is provided, if it's applicable to the patient and the payer supports it.
- For Blue Cross Blue Shield (BCBS) payers, Stedi returns an entry containing information about the patient's home plan - the plan that actually verified the coverage. In this object, the `entityIdentifier` property is set to `Party Performing Verification`. [Learn more](https://www.stedi.com/docs/healthcare/eligibility-active-coverage-benefits#bcbs-home-plan)
- **`items[].benefitsInformation[].benefitsRelatedEntities[].address`** (`object`)
- **`items[].benefitsInformation[].benefitsRelatedEntities[].address.address1`** (`string`): The first line of the address.
- **`items[].benefitsInformation[].benefitsRelatedEntities[].address.address2`** (`string`): The second line of the address.
- **`items[].benefitsInformation[].benefitsRelatedEntities[].address.city`** (`string`): The city.
- **`items[].benefitsInformation[].benefitsRelatedEntities[].address.countryCode`** (`string`): The two-letter country code from [Part 1 of ISO 3166](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2).
- **`items[].benefitsInformation[].benefitsRelatedEntities[].address.countrySubDivisionCode`** (`string`): The country subdivision code from [Part 2 of ISO 3166](https://en.wikipedia.org/wiki/ISO_3166-2).
- **`items[].benefitsInformation[].benefitsRelatedEntities[].address.postalCode`** (`string`): The United States or Canadian postal code, excluding punctuation and blanks.
- **`items[].benefitsInformation[].benefitsRelatedEntities[].address.state`** (`string`): The US state or Canadian province code with unknown option. For example, `TN` for Tennessee or `NB` for New Brunswick.

Payers may sometimes return other non-compliant values.
  - Allowed values: `NL`, `PE`, `NS`, `NB`, `QC`, `ON`, `MB`, `SK`, `AB`, `BC`, `YT`, `NT`, `NU`, `DC`, `AS`, `GU`, `MP`, `PR`, `UM`, `VI`, `AA`, `AE`, `AP`, `AK`, `AL`, `AR`, `AZ`, `CA`, `CO`, `CT`, `DE`, `FL`, `GA`, `HI`, `IA`, `ID`, `IL`, `IN`, `KS`, `KY`, `LA`, `MA`, `MD`, `ME`, `MI`, `MN`, `MO`, `MS`, `MT`, `NC`, `ND`, `NE`, `NH`, `NJ`, `NM`, `NV`, `NY`, `OH`, `OK`, `OR`, `PA`, `RI`, `SC`, `SD`, `TN`, `TX`, `UT`, `VA`, `VT`, `WA`, `WI`, `WV`, `WY`
- **`items[].benefitsInformation[].benefitsRelatedEntities[].contactInformation`** (`object`)
- **`items[].benefitsInformation[].benefitsRelatedEntities[].contactInformation.contacts`** (`array of Contacts objects`): The contact information.
- **`items[].benefitsInformation[].benefitsRelatedEntities[].contactInformation.contacts[].communicationMode`** (`string`): Payers may sometimes return other non-compliant values.
  - Allowed values: `Electronic Data Interchange Access Number`, `Electronic Mail`, `Facsimile`, `Telephone`, `Uniform Resource Locator (URL)`, `Telephone Extension`, `Work Phone Number`
- **`items[].benefitsInformation[].benefitsRelatedEntities[].contactInformation.contacts[].communicationNumber`** (`string`): The communication number referenced in `communicationMode`. It includes the country or area code when applicable. 
 
 Note that phone numbers are formatted as AAABBBCCCC, where AAA represents the area code, BBB represents the telephone number prefix, and CCCC represents the telephone number. Phone numbers are provided without separators, such as dashes or parentheses. For example, `5551123345` for `555-112-3345`.
- **`items[].benefitsInformation[].benefitsRelatedEntities[].contactInformation.name`** (`string`): The name of the contact person.
- **`items[].benefitsInformation[].benefitsRelatedEntities[].entityFirstname`** (`string`): The first name of the entity, if the entity is a person.
- **`items[].benefitsInformation[].benefitsRelatedEntities[].entityIdentification`** (`string`): Code identifying the type of value provided in `entityIdentificationValue`. For example, `FI` - Federal Taxpayer's Identification Number.

Payers may sometimes return other non-compliant values.
  - Allowed values: `24`, `34`, `46`, `FA`, `FI`, `II`, `MI`, `NI`, `PI`, `PP`, `SV`, `XV`, `XX`
- **`items[].benefitsInformation[].benefitsRelatedEntities[].entityIdentificationValue`** (`string`): The identification number for the entity, qualified by the code in `entityIdentification`.
- **`items[].benefitsInformation[].benefitsRelatedEntities[].entityIdentifier`** (`string`): Code identifying an organizational entity, a physical location, property or an individual. 
  - `PPO` is used to identify a PPO by name or identification number, and also may also be used if identifying the Network that benefits are restricted to for In-Network benefits.

Payers may sometimes return other non-compliant values.
  - Allowed values: `Contracted Service Provider`, `Preferred Provider Organization (PPO)`, `Provider`, `Third-Party Administrator`, `Employer`, `Other Physician`, `Facility`, `Gateway Provider`, `Group`, `Independent Physicians Association (IPA)`, `Insured or Subscriber`, `Legal Representative`, `Origin Carrier`, `Primary Care Provider`, `Prior Insurance Carrier`, `Plan Sponsor`, `Payer`, `Primary Payer`, `Secondary Payer`, `Tertiary Payer`, `Party Performing Verification`, `Vendor`, `Organization Completing Configuration Change`, `Utilization Management Organization`, `Managed Care Organization`
- **`items[].benefitsInformation[].benefitsRelatedEntities[].entityMiddlename`** (`string`): The middle name or initial of the entity, if the entity is a person.
- **`items[].benefitsInformation[].benefitsRelatedEntities[].entityName`** (`string`): The last name (if the entity is a person) or the business name (if the entity is an organization).
- **`items[].benefitsInformation[].benefitsRelatedEntities[].entityRelationship`** (`string`): Code specifying the relationship between the entity and the patient.

Payers may sometimes return other non-compliant values.
  - Allowed values: `01`, `02`, `27`, `41`, `48`, `65`, `72`
- **`items[].benefitsInformation[].benefitsRelatedEntities[].entitySuffix`** (`string`): The name suffix, such as Sr. Jr. or III.
- **`items[].benefitsInformation[].benefitsRelatedEntities[].entityType`** (`string`): The type of entity.

Payers may sometimes return other non-compliant values.
  - Allowed values: `Person`, `Non-Person Entity`
- **`items[].benefitsInformation[].benefitsRelatedEntities[].providerInformation`** (`object`)
- **`items[].benefitsInformation[].benefitsRelatedEntities[].providerInformation.providerCode`** (`string`): A code indicating the type of provider. Visit [Eligibility code lists](https://www.stedi.com/docs/healthcare/eligibility-code-lists#provider-codes) for a complete list.

Payers may sometimes return other non-compliant values.
  - Allowed values: `AD`, `AT`, `BI`, `CO`, `CV`, `H`, `HH`, `LA`, `OT`, `P1`, `P2`, `PC`, `PE`, `R`, `RF`, `SB`, `SK`, `SU`
- **`items[].benefitsInformation[].benefitsRelatedEntities[].providerInformation.referenceIdentification`** (`string`): The provider's taxonomy code.
- **`items[].benefitsInformation[].benefitsRelatedEntity`** (`object`): Identify another entity associated with the eligibility or benefits. This could be a provider, an individual, an organization, or another payer.

This array is commonly used to designate the patient's primary care provider (PCP), another organization that handles a specific carveout benefit type, or another health plan for the patient (coordination of benefits scenarios).

This is where information for a crossover carrier such as Medicaid or Medicare is provided, if it's applicable to the patient and the payer supports it.
- **`items[].benefitsInformation[].benefitsRelatedEntity.address`** (`object`)
- **`items[].benefitsInformation[].benefitsRelatedEntity.address.address1`** (`string`): The first line of the address.
- **`items[].benefitsInformation[].benefitsRelatedEntity.address.address2`** (`string`): The second line of the address.
- **`items[].benefitsInformation[].benefitsRelatedEntity.address.city`** (`string`): The city.
- **`items[].benefitsInformation[].benefitsRelatedEntity.address.countryCode`** (`string`): The two-letter country code from [Part 1 of ISO 3166](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2).
- **`items[].benefitsInformation[].benefitsRelatedEntity.address.countrySubDivisionCode`** (`string`): The country subdivision code from [Part 2 of ISO 3166](https://en.wikipedia.org/wiki/ISO_3166-2).
- **`items[].benefitsInformation[].benefitsRelatedEntity.address.postalCode`** (`string`): The United States or Canadian postal code, excluding punctuation and blanks.
- **`items[].benefitsInformation[].benefitsRelatedEntity.address.state`** (`string`): The US state or Canadian province code with unknown option. For example, `TN` for Tennessee or `NB` for New Brunswick.

Payers may sometimes return other non-compliant values.
  - Allowed values: `NL`, `PE`, `NS`, `NB`, `QC`, `ON`, `MB`, `SK`, `AB`, `BC`, `YT`, `NT`, `NU`, `DC`, `AS`, `GU`, `MP`, `PR`, `UM`, `VI`, `AA`, `AE`, `AP`, `AK`, `AL`, `AR`, `AZ`, `CA`, `CO`, `CT`, `DE`, `FL`, `GA`, `HI`, `IA`, `ID`, `IL`, `IN`, `KS`, `KY`, `LA`, `MA`, `MD`, `ME`, `MI`, `MN`, `MO`, `MS`, `MT`, `NC`, `ND`, `NE`, `NH`, `NJ`, `NM`, `NV`, `NY`, `OH`, `OK`, `OR`, `PA`, `RI`, `SC`, `SD`, `TN`, `TX`, `UT`, `VA`, `VT`, `WA`, `WI`, `WV`, `WY`
- **`items[].benefitsInformation[].benefitsRelatedEntity.contactInformation`** (`object`)
- **`items[].benefitsInformation[].benefitsRelatedEntity.contactInformation.contacts`** (`array of Contacts objects`): The contact information.
- **`items[].benefitsInformation[].benefitsRelatedEntity.contactInformation.contacts[].communicationMode`** (`string`): Payers may sometimes return other non-compliant values.
  - Allowed values: `Electronic Data Interchange Access Number`, `Electronic Mail`, `Facsimile`, `Telephone`, `Uniform Resource Locator (URL)`, `Telephone Extension`, `Work Phone Number`
- **`items[].benefitsInformation[].benefitsRelatedEntity.contactInformation.contacts[].communicationNumber`** (`string`): The communication number referenced in `communicationMode`. It includes the country or area code when applicable. 
 
 Note that phone numbers are formatted as AAABBBCCCC, where AAA represents the area code, BBB represents the telephone number prefix, and CCCC represents the telephone number. Phone numbers are provided without separators, such as dashes or parentheses. For example, `5551123345` for `555-112-3345`.
- **`items[].benefitsInformation[].benefitsRelatedEntity.contactInformation.name`** (`string`): The name of the contact person.
- **`items[].benefitsInformation[].benefitsRelatedEntity.entityFirstname`** (`string`): The first name of the entity, if the entity is a person.
- **`items[].benefitsInformation[].benefitsRelatedEntity.entityIdentification`** (`string`): Code identifying the type of value provided in `entityIdentificationValue`. For example, `FI` - Federal Taxpayer's Identification Number.

Payers may sometimes return other non-compliant values.
  - Allowed values: `24`, `34`, `46`, `FA`, `FI`, `II`, `MI`, `NI`, `PI`, `PP`, `SV`, `XV`, `XX`
- **`items[].benefitsInformation[].benefitsRelatedEntity.entityIdentificationValue`** (`string`): The identification number for the entity, qualified by the code in `entityIdentification`.
- **`items[].benefitsInformation[].benefitsRelatedEntity.entityIdentifier`** (`string`): Code identifying an organizational entity, a physical location, property or an individual. 
  - `PPO` is used to identify a PPO by name or identification number, and also may also be used if identifying the Network that benefits are restricted to for In-Network benefits.

Payers may sometimes return other non-compliant values.
  - Allowed values: `Contracted Service Provider`, `Preferred Provider Organization (PPO)`, `Provider`, `Third-Party Administrator`, `Employer`, `Other Physician`, `Facility`, `Gateway Provider`, `Group`, `Independent Physicians Association (IPA)`, `Insured or Subscriber`, `Legal Representative`, `Origin Carrier`, `Primary Care Provider`, `Prior Insurance Carrier`, `Plan Sponsor`, `Payer`, `Primary Payer`, `Secondary Payer`, `Tertiary Payer`, `Party Performing Verification`, `Vendor`, `Organization Completing Configuration Change`, `Utilization Management Organization`, `Managed Care Organization`
- **`items[].benefitsInformation[].benefitsRelatedEntity.entityMiddlename`** (`string`): The middle name or initial of the entity, if the entity is a person.
- **`items[].benefitsInformation[].benefitsRelatedEntity.entityName`** (`string`): The last name (if the entity is a person) or the business name (if the entity is an organization).
- **`items[].benefitsInformation[].benefitsRelatedEntity.entityRelationship`** (`string`): Code specifying the relationship between the entity and the patient.

Payers may sometimes return other non-compliant values.
  - Allowed values: `01`, `02`, `27`, `41`, `48`, `65`, `72`
- **`items[].benefitsInformation[].benefitsRelatedEntity.entitySuffix`** (`string`): The name suffix, such as Sr. Jr. or III.
- **`items[].benefitsInformation[].benefitsRelatedEntity.entityType`** (`string`): The type of entity.

Payers may sometimes return other non-compliant values.
  - Allowed values: `Person`, `Non-Person Entity`
- **`items[].benefitsInformation[].benefitsRelatedEntity.providerInformation`** (`object`)
- **`items[].benefitsInformation[].benefitsRelatedEntity.providerInformation.providerCode`** (`string`): A code indicating the type of provider. Visit [Eligibility code lists](https://www.stedi.com/docs/healthcare/eligibility-code-lists#provider-codes) for a complete list.

Payers may sometimes return other non-compliant values.
  - Allowed values: `AD`, `AT`, `BI`, `CO`, `CV`, `H`, `HH`, `LA`, `OT`, `P1`, `P2`, `PC`, `PE`, `R`, `RF`, `SB`, `SK`, `SU`
- **`items[].benefitsInformation[].benefitsRelatedEntity.providerInformation.referenceIdentification`** (`string`): The provider's taxonomy code.
- **`items[].benefitsInformation[].benefitsServiceDelivery`** (`array of BenefitsServiceDelivery objects`)
- **`items[].benefitsInformation[].benefitsServiceDelivery[].deliveryOrCalendarPatternCode`** (`string`): The name of the `deliveryOrCalendarPatternCode`. For example, `Last Working Day of Period`.

Payers may sometimes return other non-compliant values.
  - Allowed values: `1st Week of the Month`, `2nd Week of the Month`, `3rd Week of the Month`, `4th Week of the Month`, `5th Week of the Month`, `1st & 3rd Week of the Month`, `2nd & 4th Week of the Month`, `1st Working Day of Period`, `Last Working Day of Period`, `Monday through Friday`, `Monday through Saturday`, `Monday through Sunday`, `Monday`, `Tuesday`, `Wednesday`, `Thursday`, `Friday`, `Saturday`, `Sunday`, `Monday through Thursday`, `Immediately`, `As Directed`, `Daily Mon. Through Fri.`, `1/2 Mon. & 1/2 Tues.`, `1/2 Tues. & 1/2 Thurs.`, `1/2 Wed. & 1/2 Fri.`, `Once Anytime Mon. through Fri.`, `Tuesday through Friday`, `Monday, Tuesday and Thursday`, `Monday, Tuesday and Friday`, `Wednesday and Thursday`, `Monday, Wednesday and Thursday`, `Tuesday, Thursday and Friday`, `1/2 Tues. & 1/2 Fri.`, `1/2 Mon. & 1/2 Wed.`, `1/3 Mon., 1/3 Wed., 1/3 Fri.`, `Whenever Necessary`, `1/2 By Wed. Bal. By Fri.`, `None (Also Used to Cancel or Override a Previous Pattern)`
- **`items[].benefitsInformation[].benefitsServiceDelivery[].deliveryOrCalendarPatternQualifier`** (`string`): The name of the `deliveryOrCalendarPatternCode`. For example, `Last Working Day of Period`.

Payers may sometimes return other non-compliant values.
  - Allowed values: `1st Week of the Month`, `2nd Week of the Month`, `3rd Week of the Month`, `4th Week of the Month`, `5th Week of the Month`, `1st & 3rd Week of the Month`, `2nd & 4th Week of the Month`, `1st Working Day of Period`, `Last Working Day of Period`, `Monday through Friday`, `Monday through Saturday`, `Monday through Sunday`, `Monday`, `Tuesday`, `Wednesday`, `Thursday`, `Friday`, `Saturday`, `Sunday`, `Monday through Thursday`, `Immediately`, `As Directed`, `Daily Mon. Through Fri.`, `1/2 Mon. & 1/2 Tues.`, `1/2 Tues. & 1/2 Thurs.`, `1/2 Wed. & 1/2 Fri.`, `Once Anytime Mon. through Fri.`, `Tuesday through Friday`, `Monday, Tuesday and Thursday`, `Monday, Tuesday and Friday`, `Wednesday and Thursday`, `Monday, Wednesday and Thursday`, `Tuesday, Thursday and Friday`, `1/2 Tues. & 1/2 Fri.`, `1/2 Mon. & 1/2 Wed.`, `1/3 Mon., 1/3 Wed., 1/3 Fri.`, `Whenever Necessary`, `1/2 By Wed. Bal. By Fri.`, `None (Also Used to Cancel or Override a Previous Pattern)`
- **`items[].benefitsInformation[].benefitsServiceDelivery[].deliveryOrCalendarPatternQualifierCode`** (`string`): Code that specifies the routine shipments, deliveries, or calendar pattern. For example `9` - Last Working Day of Period. Visit [Eligibility code lists](https://www.stedi.com/docs/healthcare/eligibility-code-lists#delivery-frequency-codes) for a complete list.

Payers may sometimes return other non-compliant values.
  - Allowed values: `1`, `2`, `3`, `4`, `5`, `6`, `7`, `8`, `9`, `A`, `B`, `C`, `D`, `E`, `F`, `G`, `H`, `J`, `K`, `L`, `M`, `N`, `O`, `P`, `Q`, `R`, `S`, `SG`, `SL`, `SP`, `SX`, `SY`, `SZ`, `T`, `U`, `V`, `W`, `X`, `Y`
- **`items[].benefitsInformation[].benefitsServiceDelivery[].deliveryPatternTimeCode`** (`string`): The name of the `deliveryPatternTimeCode`.

Payers may sometimes return other non-compliant values.
  - Allowed values: `1st Shift (Normal Working Hours)`, `2nd Shift`, `3rd Shift`, `A.M.`, `P.M.`, `As Directed`, `Any Shift`, `None (Also Used to Cancel or Override a Previous Pattern)`
- **`items[].benefitsInformation[].benefitsServiceDelivery[].deliveryPatternTimeQualifier`** (`string`): The name of the `deliveryPatternTimeCode`.

Payers may sometimes return other non-compliant values.
  - Allowed values: `1st Shift (Normal Working Hours)`, `2nd Shift`, `3rd Shift`, `A.M.`, `P.M.`, `As Directed`, `Any Shift`, `None (Also Used to Cancel or Override a Previous Pattern)`
- **`items[].benefitsInformation[].benefitsServiceDelivery[].deliveryPatternTimeQualifierCode`** (`string`): A code specifying the time for routine shipments or deliveries.

Payers may sometimes return other non-compliant values.
  - Allowed values: `A`, `B`, `C`, `D`, `E`, `F`, `G`, `Y`
- **`items[].benefitsInformation[].benefitsServiceDelivery[].numOfPeriods`** (`string`): The number of periods in the time period. For example, `12` when the `timePeriodQualifier` is `Hour`.
- **`items[].benefitsInformation[].benefitsServiceDelivery[].quantity`** (`string`): The quantity of the benefit. For example, `10` when the `quantityQualifier` is `Visits`.
- **`items[].benefitsInformation[].benefitsServiceDelivery[].quantityQualifier`** (`string`): The name of the `quantityQualifierCode`. For example, `Days`.

Payers may sometimes return other non-compliant values.
  - Allowed values: `Days`, `Units`, `Hours`, `Month`, `Visits`
- **`items[].benefitsInformation[].benefitsServiceDelivery[].quantityQualifierCode`** (`string`): Code specifying the type of quantity.

Payers may sometimes return other non-compliant values.
  - Allowed values: `DY`, `FL`, `HS`, `MN`, `VS`
- **`items[].benefitsInformation[].benefitsServiceDelivery[].sampleSelectionModulus`** (`string`): Specifies the sampling frequency, based on the unit of measure. For example `every 2 months` or `once per calendar year`.
- **`items[].benefitsInformation[].benefitsServiceDelivery[].timePeriodQualifier`** (`string`): The name of the `timePeriodQualifierCode`. For example, `Calendar Year`.

Payers may sometimes return other non-compliant values.
  - Allowed values: `Hour`, `Day`, `Years`, `Service Year`, `Calendar Year`, `Year to Date`, `Contract`, `Episode`, `Visit`, `Outlier`, `Remaining`, `Exceeded`, `Not Exceeded`, `Lifetime`, `Lifetime Remaining`, `Month`, `Week`
- **`items[].benefitsInformation[].benefitsServiceDelivery[].timePeriodQualifierCode`** (`string`): Code specifying the time period for the benefit information.

Payers may sometimes return other non-compliant values.
  - Allowed values: `6`, `7`, `21`, `22`, `23`, `24`, `25`, `26`, `27`, `28`, `29`, `30`, `31`, `32`, `33`, `34`, `35`
- **`items[].benefitsInformation[].benefitsServiceDelivery[].unitForMeasurementCode`** (`string`): The name of the `unitForMeasurementQualifierCode`. For example, `Days`.

Payers may sometimes return other non-compliant values.
  - Allowed values: `Days`, `Months`, `Visits`, `Week`, `Years`
- **`items[].benefitsInformation[].benefitsServiceDelivery[].unitForMeasurementQualifier`** (`string`): The name of the `unitForMeasurementQualifierCode`. For example, `Days`.

Payers may sometimes return other non-compliant values.
  - Allowed values: `Days`, `Months`, `Visits`, `Week`, `Years`
- **`items[].benefitsInformation[].benefitsServiceDelivery[].unitForMeasurementQualifierCode`** (`string`): Code specifying the unit of measurement for the quantity.

Payers may sometimes return other non-compliant values.
  - Allowed values: `DA`, `MO`, `VS`, `WK`, `YR`
- **`items[].benefitsInformation[].code`** (`string`): The code indicating the type of benefits information. Visit [Eligibility and benefit codes](https://www.stedi.com/docs/healthcare/eligibility-active-coverage-benefits#benefit-type-codes) for more information.

Payers may sometimes return other non-compliant values.
  - Allowed values: `1`, `2`, `3`, `4`, `5`, `6`, `7`, `8`, `A`, `B`, `C`, `CB`, `D`, `E`, `F`, `G`, `H`, `I`, `J`, `K`, `L`, `M`, `MC`, `N`, `O`, `P`, `Q`, `R`, `S`, `T`, `U`, `V`, `W`, `X`, `Y`
- **`items[].benefitsInformation[].compositeMedicalProcedureIdentifier`** (`object`): Identifies relevant medical procedures by their standard codes and modifiers (if applicable).
- **`items[].benefitsInformation[].compositeMedicalProcedureIdentifier.diagnosisCodePointer`** (`array of strings`): The diagnosis code pointer.
- **`items[].benefitsInformation[].compositeMedicalProcedureIdentifier.procedureCode`** (`string`): The procedure code. Many payers do not support eligibility checks for specific procedure codes. If the payer does not support procedure codes, they return a generic benefits response for the service type code `30`.
- **`items[].benefitsInformation[].compositeMedicalProcedureIdentifier.procedureModifiers`** (`array of strings`): Procedure modifiers that provides additional information related to the performance of the service.
- **`items[].benefitsInformation[].compositeMedicalProcedureIdentifier.productOrServiceID`** (`string`): The product or service ID. This value represents the end of the range of applicable procedure codes. The beginning of the range is listed in `procedureCode`.
- **`items[].benefitsInformation[].compositeMedicalProcedureIdentifier.productOrServiceIDQualifier`** (`string`): The name of the `productOrServiceIDQualifierCode`. For example, `American Dental Association`.
- **`items[].benefitsInformation[].compositeMedicalProcedureIdentifier.productOrServiceIDQualifierCode`** (`string`): Identifies the external code list used to provide the specified procedure or service codes. Can be `AD` - American Dental Association, `CJ` - Current Procedural Terminology (CPT) codes, `HC` - Health Care Financing Administration Common Procedural Coding System (HCPCS) Codes, `ID` - International Classification of Diseases 9th Revision, Clinical Modification (ICD-9-CM) - Procedure, `IV` - Home Infusion EDI Coalition (HIEC) Product/Service Code, `N4` - National Drug Code in 5-4-2 Format, or `ZZ` - Mutually Defined
- **`items[].benefitsInformation[].coverageLevel`** (`string`): The full name of the coverage level code.

Payers may sometimes return other non-compliant values.
  - Allowed values: `Children Only`, `Dependents Only`, `Employee and Children`, `Employee Only`, `Employee and Spouse`, `Family`, `Individual`, `Spouse and Children`, `Spouse Only`
- **`items[].benefitsInformation[].coverageLevelCode`** (`string`): Code indicating the level of coverage for the patient. 

This will either be `CHD` - Children Only, `DEP` - Dependents Only, `ECH` - Employee and Children, `EMP` - Employee Only, `ESP` - Employee and Spouse, `FAM` - Family, `IND` - Individual, `SPC` - Spouse and Children, `SPO` - Spouse Only, or `Unknown`.

Payers may sometimes return other non-compliant values.
  - Allowed values: `CHD`, `DEP`, `ECH`, `EMP`, `ESP`, `FAM`, `IND`, `SPC`, `SPO`
- **`items[].benefitsInformation[].eligibilityAdditionalInformation`** (`object`)
- **`items[].benefitsInformation[].eligibilityAdditionalInformation.codeCategory`** (`string`): Payers may sometimes return other non-compliant values.
  - Allowed values: `44`
- **`items[].benefitsInformation[].eligibilityAdditionalInformation.codeListQualifier`** (`string`): The name of the `codeListQualifierCode`. For example `Mutually Defined` when the code is set to `ZZ`.
- **`items[].benefitsInformation[].eligibilityAdditionalInformation.codeListQualifierCode`** (`string`): Payers may sometimes return other non-compliant values.
  - Allowed values: `GR`, `NI`, `ZZ`
- **`items[].benefitsInformation[].eligibilityAdditionalInformation.industry`** (`string`): The name of the `industryCode`. For example `Pharmacy` when the code is `01`.
- **`items[].benefitsInformation[].eligibilityAdditionalInformation.industryCode`** (`string`): The specific industry code. When `codeListQualifierCode` is set to `ZZ` - Mutually Defined, this property will be set to a place of service code. Visit the [Place of Service Code Set](https://www.cms.gov/medicare/coding-billing/place-of-service-codes/code-sets) for a complete list of these codes and their descriptions.
- **`items[].benefitsInformation[].eligibilityAdditionalInformation.injuredBodyPartName`** (`string`): Description of injured body parts.
- **`items[].benefitsInformation[].eligibilityAdditionalInformationList`** (`array of EligibilityAdditionalInformation objects`): Used when there are multiple Nature of Injury Codes or a Facility Type Codes included in the response.
- **`items[].benefitsInformation[].eligibilityAdditionalInformationList[].codeCategory`** (`string`): Payers may sometimes return other non-compliant values.
  - Allowed values: `44`
- **`items[].benefitsInformation[].eligibilityAdditionalInformationList[].codeListQualifier`** (`string`): The name of the `codeListQualifierCode`. For example `Mutually Defined` when the code is set to `ZZ`.
- **`items[].benefitsInformation[].eligibilityAdditionalInformationList[].codeListQualifierCode`** (`string`): Payers may sometimes return other non-compliant values.
  - Allowed values: `GR`, `NI`, `ZZ`
- **`items[].benefitsInformation[].eligibilityAdditionalInformationList[].industry`** (`string`): The name of the `industryCode`. For example `Pharmacy` when the code is `01`.
- **`items[].benefitsInformation[].eligibilityAdditionalInformationList[].industryCode`** (`string`): The specific industry code. When `codeListQualifierCode` is set to `ZZ` - Mutually Defined, this property will be set to a place of service code. Visit the [Place of Service Code Set](https://www.cms.gov/medicare/coding-billing/place-of-service-codes/code-sets) for a complete list of these codes and their descriptions.
- **`items[].benefitsInformation[].eligibilityAdditionalInformationList[].injuredBodyPartName`** (`string`): Description of injured body parts.
- **`items[].benefitsInformation[].headerLoopIdentifierCode`** (`string`): The loop header identifier number in the `LS` segment of the original X12 EDI transaction.
- **`items[].benefitsInformation[].inPlanNetworkIndicator`** (`string`): The name of the in-plan network indicator code.

Payers may sometimes return other non-compliant values.
  - Allowed values: `Yes`, `No`, `Unknown`, `Not Applicable`
- **`items[].benefitsInformation[].inPlanNetworkIndicatorCode`** (`string`): Code indicating whether the benefit is in-network or out-of-network. Can be `Y` - Yes, `N` - No, `U` - Unknown, or `W` - Not Applicable

 Code `U` indicates that it is unknown whether the benefits are in or out-of-network. Code `W` indicates that the benefit applies to both in and out-of-network providers. 
 
 Note that this property **doesn't indicate** whether the provider is in or out-of-network for the patient. To determine that, you must check with the payer directly.

Payers may sometimes return other non-compliant values.
  - Allowed values: `Y`, `N`, `U`, `W`
- **`items[].benefitsInformation[].insuranceType`** (`string`): The full name of the insurance type code.

Payers may sometimes return other non-compliant values.
  - Allowed values: `Medicare Secondary Working Aged Beneficiary or Spouse with Employer Group Health Plan`, `Medicare Secondary End-Stage Renal Disease Beneficiary in the Mandated Coordination Period with an Employer's Group Health Plan`, `Medicare Secondary, No-fault Insurance including Auto is Primary`, `Medicare Secondary Worker's Compensation`, `Medicare Secondary Public Health Service (PHS)or Other Federal Agency`, `Medicare Secondary Black Lung`, `Medicare Secondary Veteran's Administration`, `Medicare Secondary Disabled Beneficiary Under Age 65 with Large Group Health Plan (LGHP)`, `Medicare Secondary, Other Liability Insurance is Primary`, `Auto Insurance Policy`, `Commercial`, `Consolidated Omnibus Budget Reconciliation Act (COBRA)`, `Medicare Conditionally Primary`, `Disability`, `Disability Benefits`, `Exclusive Provider Organization`, `Family or Friends`, `Group Policy`, `Health Maintenance Organization (HMO)`, `Health Maintenance Organization (HMO) - Medicare Risk`, `Special Low Income Medicare Beneficiary`, `Indemnity`, `Individual Policy`, `Long Term Care`, `Long Term Policy`, `Life Insurance`, `Litigation`, `Medicare Part A`, `Medicare Part B`, `Medicaid`, `Medigap Part A`, `Medigap Part B`, `Medicare Primary`, `Other`, `Property Insurance - Personal`, `Personal`, `Personal Payment (Cash - No Insurance)`, `Preferred Provider Organization (PPO)`, `Point of Service (POS)`, `Qualified Medicare Beneficiary`, `Property Insurance - Real`, `Supplemental Policy`, `Tax Equity Fiscal Responsibility Act (TEFRA)`, `Workers Compensation`, `Wrap Up Policy`
- **`items[].benefitsInformation[].insuranceTypeCode`** (`string`): Code identifying the type of insurance policy.

Payers may sometimes return other non-compliant values.
  - Allowed values: `12`, `13`, `14`, `15`, `16`, `41`, `42`, `43`, `47`, `AP`, `C1`, `CO`, `CP`, `D`, `DB`, `EP`, `FF`, `GP`, `HM`, `HN`, `HS`, `IN`, `IP`, `LC`, `LD`, `LI`, `LT`, `MA`, `MB`, `MC`, `MH`, `MI`, `MP`, `OT`, `PE`, `PL`, `PP`, `PR`, `PS`, `QM`, `RP`, `SP`, `TF`, `WC`, `WU`
- **`items[].benefitsInformation[].name`** (`string`): The full name of the benefits information code.

Payers may sometimes return other non-compliant values.
  - Allowed values: `Active Coverage`, `Active - Full Risk Capitation`, `Active - Services Capitated`, `Active - Services Capitated to Primary Care Physician`, `Active - Pending Investigation`, `Inactive`, `Inactive - Pending Eligibility Update`, `Inactive - Pending Investigation`, `Co-Insurance`, `Co-Payment`, `Deductible`, `Coverage Basis`, `Benefit Description`, `Exclusions`, `Limitations`, `Out of Pocket (Stop Loss)`, `Unlimited`, `Non-Covered`, `Cost Containment`, `Reserve`, `Primary Care Provider`, `Pre-existing Condition`, `Managed Care Coordinator`, `Services Restricted to Following Provider`, `Not Deemed a Medical Necessity`, `Benefit Disclaimer`, `Second Surgical Opinion Required`, `Other or Additional Payor`, `Prior Year(s) History`, `Card(s) Reported Lost/Stolen`, `Contact Following Entity for Eligibility or Benefit Information`, `Cannot Process`, `Other Source of Data`, `Health Care Facility`, `Spend Down`
- **`items[].benefitsInformation[].planCoverage`** (`string`): The specific product name or special program name for an insurance plan. For example `Gold 1-2-3`.

Payers are normally required to send the plan name when `benefitsInformation[].code` is set to values `1` - `8` and the `benefitsInformation[].serviceTypeCodes` contains `30` (Health Benefit Plan Coverage). However, behavior may vary by payer, so don't rely on this information being present in the response. Note that the plan name returned in this property may not exactly match the name the payer uses in official plan documents or marketing literature.

Visit [What's the plan name?](https://www.stedi.com/docs/healthcare/eligibility-active-coverage-benefits#what’s-the-plan-name%3F) in the benefits response documentation for more details.
- **`items[].benefitsInformation[].quantityQualifier`** (`string`): The name of the quantity qualifier code.

Payers may sometimes return other non-compliant values.
  - Allowed values: `Minimum`, `Quantity Used`, `Covered - Actual`, `Covered - Estimated`, `Number of Co-insurance Days`, `Deductible Blood Units`, `Days`, `Hours`, `Life-time Reserve - Actual`, `Life-time Reserve - Estimated`, `Maximum`, `Month`, `Number of Services or Procedures`, `Quantity Approved`, `Age, High Value`, `Age, Low Value`, `Visits`, `Years`
- **`items[].benefitsInformation[].quantityQualifierCode`** (`string`): Code indicating the type of quantity for the benefit.

Payers may sometimes return other non-compliant values.
  - Allowed values: `8H`, `99`, `CA`, `CE`, `D3`, `DB`, `DY`, `HS`, `LA`, `LE`, `M2`, `MN`, `P6`, `QA`, `S7`, `S8`, `VS`, `YY`
- **`items[].benefitsInformation[].serviceTypeCodes`** (`array of strings`): Service Type Codes (STCs) related to the benefit type. For example, `7` - Anesthesia. Visit [Service Type Codes](https://www.stedi.com/docs/healthcare/send-eligibility-checks#service-type-codes) for a complete list.

This list is specific to X12 version 005010, which is the mandated version for eligibility checks. It differs from the current [X12 Service Type Codes](https://x12.org/codes/service-type-codes) list, which applies to X12 versions later than 005010.

Payers may sometimes return other non-compliant values.
- **`items[].benefitsInformation[].serviceTypes`** (`array of strings`): The names of the Service Type Codes listed in the `serviceTypeCodes` array. Visit [Service Type Codes](https://www.stedi.com/docs/healthcare/send-eligibility-checks#service-type-codes) for a complete list of codes and their names.

The word physician in service type codes refers to any healthcare provider, including physician assistants, nurse practitioners, and other types of healthcare professionals.

Payers may sometimes return other non-compliant values.
- **`items[].benefitsInformation[].timeQualifier`** (`string`): The name of the time period qualifier code. 
 
 Note that for the patient's deductible, `Calendar Year` indicates the patient's total deductible amount for the year, while `Remaining` indicates the amount left to meet the deductible. Visit [Payer benefit response](https://www.stedi.com/docs/healthcare/eligibility-patient-responsibility-benefits#deductible) to learn more about deductibles.

Payers may sometimes return other non-compliant values.
  - Allowed values: `Hour`, `Day`, `24 Hours`, `Years`, `Service Year`, `Calendar Year`, `Year to Date`, `Contract`, `Episode`, `Visit`, `Outlier`, `Remaining`, `Exceeded`, `Not Exceeded`, `Lifetime`, `Lifetime Remaining`, `Month`, `Week`, `Admission`
- **`items[].benefitsInformation[].timeQualifierCode`** (`string`): Code indicating the time period for the benefit information.

Payers may sometimes return other non-compliant values.
  - Allowed values: `6`, `7`, `13`, `21`, `22`, `23`, `24`, `25`, `26`, `27`, `28`, `29`, `30`, `31`, `32`, `33`, `34`, `35`, `36`
- **`items[].benefitsInformation[].trailerLoopIdentifierCode`** (`string`): The loop trailer identifier number in the `LE` segment of the original X12 EDI transaction.
- **`items[].controlNumber`** (`string`): An identifier for the payer's response.
- **`items[].dependents`** (`array of ResponseDependent objects`): Information about the patient when they are a dependent. When the patient is a dependent, this array will contain a single object with the patient's information. When the patient is a subscriber, or considered to be a subscriber because they have a unique member ID, their information is returned in the `subscriber` object, and this array will be empty.

 When present, this object will always include the dependent's name for identification, but many payers will also return the date of birth and other identifying information.
- **`items[].dependents[].aaaErrors`** (`array of EligibilityCheckDependentError objects`)
- **`items[].dependents[].aaaErrors[].code`** (`string`): Payers may sometimes return other non-compliant values.
  - Allowed values: `15`, `33`, `35`, `42`, `43`, `45`, `47`, `48`, `49`, `51`, `52`, `53`, `54`, `55`, `56`, `57`, `58`, `60`, `61`, `62`, `63`, `64`, `65`, `66`, `67`, `68`, `69`, `70`, `71`, `77`, `98`, `AA`, `AE`, `AF`, `AG`, `AO`, `CI`, `E8`, `IA`, `MA`
- **`items[].dependents[].aaaErrors[].description`** (`string`): The error description.
- **`items[].dependents[].aaaErrors[].field`** (`string`): The error type, `AAA`.
- **`items[].dependents[].aaaErrors[].followupAction`** (`string`): Payers may sometimes return other non-compliant values.
  - Allowed values: `Please Correct and Resubmit`, `Resubmission Not Allowed`, `Resubmission Allowed`, `Do Not Resubmit; Inquiry Initiated to a Third Party`, `Please Wait 30 Days and Resubmit`, `Please Wait 10 Days and Resubmit`, `Do Not Resubmit; We Will Hold Your Request and Respond Again Shortly`
- **`items[].dependents[].aaaErrors[].location`** (`string`): The location of the error within the original X12 EDI response.
- **`items[].dependents[].aaaErrors[].possibleResolutions`** (`string`): Information to help you correct the error.

We periodically update this guidance, so these strings may change at any time and may differ between eligibility responses. **Don't build programmatic logic that depends on matching these strings exactly.**
- **`items[].dependents[].address`** (`object`)
- **`items[].dependents[].address.address1`** (`string`): The first line of the address.
- **`items[].dependents[].address.address2`** (`string`): The second line of the address.
- **`items[].dependents[].address.city`** (`string`): The city.
- **`items[].dependents[].address.countryCode`** (`string`): The two-letter country code from [Part 1 of ISO 3166](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2).
- **`items[].dependents[].address.countrySubDivisionCode`** (`string`): The country subdivision code from [Part 2 of ISO 3166](https://en.wikipedia.org/wiki/ISO_3166-2).
- **`items[].dependents[].address.postalCode`** (`string`): The United States or Canadian postal code, excluding punctuation and blanks.
- **`items[].dependents[].address.state`** (`string`): The US state or Canadian province code with unknown option. For example, `TN` for Tennessee or `NB` for New Brunswick.

Payers may sometimes return other non-compliant values.
  - Allowed values: `NL`, `PE`, `NS`, `NB`, `QC`, `ON`, `MB`, `SK`, `AB`, `BC`, `YT`, `NT`, `NU`, `DC`, `AS`, `GU`, `MP`, `PR`, `UM`, `VI`, `AA`, `AE`, `AP`, `AK`, `AL`, `AR`, `AZ`, `CA`, `CO`, `CT`, `DE`, `FL`, `GA`, `HI`, `IA`, `ID`, `IL`, `IN`, `KS`, `KY`, `LA`, `MA`, `MD`, `ME`, `MI`, `MN`, `MO`, `MS`, `MT`, `NC`, `ND`, `NE`, `NH`, `NJ`, `NM`, `NV`, `NY`, `OH`, `OK`, `OR`, `PA`, `RI`, `SC`, `SD`, `TN`, `TX`, `UT`, `VA`, `VT`, `WA`, `WI`, `WV`, `WY`
- **`items[].dependents[].birthSequenceNumber`** (`string`): The number assigned to each family member born with the same birth date, such as twins or triplets. Indicates the birth order when there are multiple births associated with the provided birth date.
- **`items[].dependents[].dateOfBirth`** (`string`): The member's date of birth.
- **`items[].dependents[].dateTimePeriod`** (`string`): The military service date.
- **`items[].dependents[].dateTimePeriodFormatQualifier`** (`string`): Payers may sometimes return other non-compliant values.
  - Allowed values: `D8`, `RD8`
- **`items[].dependents[].description`** (`string`): Context that identifies the exact military unit. Used to report military service data.
- **`items[].dependents[].employmentStatusCode`** (`string`): Payers may sometimes return other non-compliant values.
  - Allowed values: `AE`, `AO`, `AS`, `AT`, `AU`, `CC`, `DD`, `HD`, `IR`, `LX`, `PE`, `RE`, `RM`, `RR`, `RU`
- **`items[].dependents[].endDateTimePeriod`** (`string`): The military service end date.
- **`items[].dependents[].entityIdentifier`** (`string`): The entity identifier for the dependent.
  - Allowed values: `Dependent`
- **`items[].dependents[].entityType`** (`string`): The type of entity.

Payers may sometimes return other non-compliant values.
  - Allowed values: `Person`, `Non-Person Entity`
- **`items[].dependents[].firstName`** (`string`): The member's first name.
- **`items[].dependents[].gender`** (`string`)
  - Allowed values: `M`, `F`, `U`
- **`items[].dependents[].governmentServiceAffiliationCode`** (`string`): Payers may sometimes return other non-compliant values.
  - Allowed values: `A`, `B`, `C`, `D`, `E`, `F`, `G`, `H`, `I`, `J`, `K`, `L`, `M`, `N`, `O`, `Q`, `R`, `S`, `U`, `W`
- **`items[].dependents[].groupDescription`** (`string`): Group name
- **`items[].dependents[].groupNumber`** (`string`): The group number associated with the insurance policy.
- **`items[].dependents[].healthCareDiagnosisCodes`** (`array of HealthCareDiagnosisCode objects`)
- **`items[].dependents[].healthCareDiagnosisCodes[].diagnosisCode`** (`string`): The diagnosis code. The decimal points are omitted in diagnosis codes - the decimal point is assumed.
- **`items[].dependents[].healthCareDiagnosisCodes[].diagnosisTypeCode`** (`string`): The type of diagnosis code provided. It can be `ABK` - International Classification of Diseases Clinical Modification (ICD-10-CM) Principal Diagnosis or `BK` - International Classification of Diseases Clinical Modification (ICD-9-CM) Principal Diagnosis.
- **`items[].dependents[].informationStatusCode`** (`string`): Payers may sometimes return other non-compliant values.
  - Allowed values: `A`, `C`, `L`, `O`, `P`, `S`, `T`
- **`items[].dependents[].insuredIndicator`** (`string`): Indicates the status of the insured. For the dependent, this is always `N`.
  - Allowed values: `N`
- **`items[].dependents[].lastName`** (`string`): The member's last name.
- **`items[].dependents[].maintenanceReasonCode`** (`string`): Code identifying the reason for the changes to subscriber identifying information, such as name, date of birth, or address. This is always `25`

Payers may sometimes return other non-compliant values.
  - Allowed values: `25`
- **`items[].dependents[].maintenanceTypeCode`** (`string`): The maintenance type code. Used to acknowledge a change in the identifying elements for the subscriber from those submitted in the original eligibility check request. It can also be included when the payer used the birth sequence number from the original request to locate the subscriber in their system. This is always `001`

Payers may sometimes return other non-compliant values.
  - Allowed values: `001`
- **`items[].dependents[].memberId`** (`string`): This property will never be populated. Please use `subscriber.memberId` instead.
- **`items[].dependents[].middleName`** (`string`): The member's middle name or initial.
- **`items[].dependents[].militaryServiceRankCode`** (`string`): Payers may sometimes return other non-compliant values.
  - Allowed values: `A1`, `A2`, `A3`, `B1`, `B2`, `C1`, `C2`, `C3`, `C4`, `C5`, `C6`, `C7`, `C8`, `C9`, `E1`, `F1`, `F2`, `F3`, `F4`, `G1`, `G4`, `L1`, `L2`, `L3`, `L4`, `L5`, `L6`, `M1`, `M2`, `M3`, `M4`, `M5`, `M6`, `P1`, `P2`, `P3`, `P4`, `P5`, `R1`, `R2`, `S1`, `S2`, `S3`, `S4`, `S5`, `S6`, `S7`, `S8`, `S9`, `SA`, `SB`, `SC`, `T1`, `V1`, `W1`
- **`items[].dependents[].planDescription`** (`string`): Plan name
- **`items[].dependents[].planNetworkDescription`** (`string`): Plan network name
- **`items[].dependents[].planNetworkIdNumber`** (`string`): The network identification number associated with the insurance policy.
- **`items[].dependents[].planNumber`** (`string`): The plan number associated with the insurance policy.
- **`items[].dependents[].relationToSubscriber`** (`string`): The name of the `relationToSubscriberCode`. For example, `Child` when the code is `19`.
  - Allowed values: `Spouse`, `Child`, `Employee`, `Unknown`, `Organ Donor`, `Cadaver Donor`, `Life Partner`, `Other Relationship`
- **`items[].dependents[].relationToSubscriberCode`** (`string`): For the dependent, this can be `01` - Spouse, `19` - Child, `20` Employee, `21` - Unknown, `39` - Organ Donor, `40` - Cadaver Donor, `53` - Life Partner, or `G8` - Other Relationship.
  - Allowed values: `01`, `19`, `20`, `21`, `39`, `40`, `53`, `G8`, `Unknown`
- **`items[].dependents[].responseProvider`** (`object`): Information about the entity that submitted the original eligibility check request. This may be an individual practitioner, a medical group, a hospital, or another type of healthcare provider. This object will always include at least one identifier, such as the provider's [NPI](https://www.stedi.com/docs/healthcare/national-provider-identifier), tax ID, or EIN.
- **`items[].dependents[].responseProvider.aaaErrors`** (`array of EligibilityCheckProviderError objects`)
- **`items[].dependents[].responseProvider.aaaErrors[].code`** (`string`): Payers may sometimes return other non-compliant values.
  - Allowed values: `15`, `41`, `43`, `44`, `45`, `46`, `47`, `48`, `50`, `51`, `79`, `97`, `T4`
- **`items[].dependents[].responseProvider.aaaErrors[].description`** (`string`): The error description.
- **`items[].dependents[].responseProvider.aaaErrors[].field`** (`string`): The error type, `AAA`.
- **`items[].dependents[].responseProvider.aaaErrors[].followupAction`** (`string`): Payers may sometimes return other non-compliant values.
  - Allowed values: `Please Correct and Resubmit`, `Resubmission Not Allowed`, `Resubmission Allowed`, `Do Not Resubmit; Inquiry Initiated to a Third Party`, `Please Wait 30 Days and Resubmit`, `Please Wait 10 Days and Resubmit`, `Do Not Resubmit; We Will Hold Your Request and Respond Again Shortly`
- **`items[].dependents[].responseProvider.aaaErrors[].location`** (`string`): The location of the error within the original X12 EDI response.
- **`items[].dependents[].responseProvider.aaaErrors[].possibleResolutions`** (`string`): Information to help you correct the error.

We periodically update this guidance, so these strings may change at any time and may differ between eligibility responses. **Don't build programmatic logic that depends on matching these strings exactly.**
- **`items[].dependents[].responseProvider.address`** (`object`)
- **`items[].dependents[].responseProvider.address.address1`** (`string`): The first line of the address.
- **`items[].dependents[].responseProvider.address.address2`** (`string`): The second line of the address.
- **`items[].dependents[].responseProvider.address.city`** (`string`): The city.
- **`items[].dependents[].responseProvider.address.countryCode`** (`string`): The two-letter country code from [Part 1 of ISO 3166](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2).
- **`items[].dependents[].responseProvider.address.countrySubDivisionCode`** (`string`): The country subdivision code from [Part 2 of ISO 3166](https://en.wikipedia.org/wiki/ISO_3166-2).
- **`items[].dependents[].responseProvider.address.postalCode`** (`string`): The United States or Canadian postal code, excluding punctuation and blanks.
- **`items[].dependents[].responseProvider.address.state`** (`string`): The US state or Canadian province code with unknown option. For example, `TN` for Tennessee or `NB` for New Brunswick.

Payers may sometimes return other non-compliant values.
  - Allowed values: `NL`, `PE`, `NS`, `NB`, `QC`, `ON`, `MB`, `SK`, `AB`, `BC`, `YT`, `NT`, `NU`, `DC`, `AS`, `GU`, `MP`, `PR`, `UM`, `VI`, `AA`, `AE`, `AP`, `AK`, `AL`, `AR`, `AZ`, `CA`, `CO`, `CT`, `DE`, `FL`, `GA`, `HI`, `IA`, `ID`, `IL`, `IN`, `KS`, `KY`, `LA`, `MA`, `MD`, `ME`, `MI`, `MN`, `MO`, `MS`, `MT`, `NC`, `ND`, `NE`, `NH`, `NJ`, `NM`, `NV`, `NY`, `OH`, `OK`, `OR`, `PA`, `RI`, `SC`, `SD`, `TN`, `TX`, `UT`, `VA`, `VT`, `WA`, `WI`, `WV`, `WY`
- **`items[].dependents[].responseProvider.employersId`** (`string`): Deprecated; The provider's identification number for the entity receiving the benefits information.
This shape is deprecated: This property is no longer used.
- **`items[].dependents[].responseProvider.entityIdentifier`** (`string`): A code identifying the type of provider.

Payers may sometimes return other non-compliant values.
  - Allowed values: `Provider`, `Third-Party Administrator`, `Employer`, `Hospital`, `Facility`, `Gateway Provider`, `Plan Sponsor`, `Payer`
- **`items[].dependents[].responseProvider.entityType`** (`string`): The type of entity.

Payers may sometimes return other non-compliant values.
  - Allowed values: `Person`, `Non-Person Entity`
- **`items[].dependents[].responseProvider.federalTaxpayersIdNumber`** (`string`): The Federal Taxpayer Identification Number (also known as an EIN).
- **`items[].dependents[].responseProvider.middleName`** (`string`): The provider's middle name. This applies to providers that are an individual.
- **`items[].dependents[].responseProvider.npi`** (`string`): The provider's [National Provider Identifier (NPI)](https://www.stedi.com/docs/healthcare/national-provider-identifier).
- **`items[].dependents[].responseProvider.payorIdentification`** (`string`): The payer identification.
- **`items[].dependents[].responseProvider.pharmacyProcessorNumber`** (`string`): The pharmacy processor number.
- **`items[].dependents[].responseProvider.providerCode`** (`string`): A code indicating the type of provider. Visit [Eligibility code lists](https://www.stedi.com/docs/healthcare/eligibility-code-lists#provider-codes) for a complete list.

Payers may sometimes return other non-compliant values.
  - Allowed values: `AD`, `AT`, `BI`, `CO`, `CV`, `H`, `HH`, `LA`, `OT`, `P1`, `P2`, `PC`, `PE`, `R`, `RF`, `SB`, `SK`, `SU`
- **`items[].dependents[].responseProvider.providerFirstName`** (`string`): The provider's first name. This applies to providers that are an individual.
- **`items[].dependents[].responseProvider.providerName`** (`string`): The provider's last name. This applies to providers that are an individual.
- **`items[].dependents[].responseProvider.providerOrgName`** (`string`): The provider's organization name.
- **`items[].dependents[].responseProvider.referenceIdentification`** (`string`): The Health Care Provider Taxonomy Code.
- **`items[].dependents[].responseProvider.serviceProviderNumber`** (`string`): The service provider number. This is an identification number assigned by the payer.
- **`items[].dependents[].responseProvider.servicesPlanID`** (`string`): The Centers for Medicare and Medicaid Services (CMS) Plan ID.
- **`items[].dependents[].responseProvider.ssn`** (`string`): The Social Security Number (SSN).
- **`items[].dependents[].responseProvider.suffix`** (`string`): The provider's name suffix, such as Jr., Sr., or III.
- **`items[].dependents[].ssn`** (`string`): The member's Social Security Number (SSN).
- **`items[].dependents[].startDateTimePeriod`** (`string`): The military service start date.
- **`items[].dependents[].suffix`** (`string`): The name suffix, such as Jr., Sr., or III.
- **`items[].dependents[].uniqueHealthIdentifier`** (`string`): The member's unique health identifier.
- **`items[].eligibilitySearchId`** (`string`): An identifier that allows Stedi to group eligibility checks for the same patient into a unified record in the Stedi portal called an [eligibility search](https://www.stedi.com/docs/healthcare/eligibility-searches-view).

This property is for use by Stedi tools only, such as Stedi's MCP server.
- **`items[].errors`** (`array of EligibilityCheckError objects`): When a payer rejects your eligibility check, the response contains one or more [`AAA` errors](https://www.stedi.com/docs/healthcare/eligibility-troubleshooting#payer-aaa-errors) that specify the reasons for the rejection and any recommended follow-up actions.

Any errors that occur at the `payer`, `provider`, `subscriber`, or `dependents` levels are also included in this array, allowing you to review all errors in a central location. If there are no `AAA` errors, this array will be empty.
- **`items[].errors[].code`** (`string`): This is a superset of all the possible codes in the sub-loops, as all errors are bubbled up to the top level of the response

Payers may sometimes return other non-compliant values.
  - Allowed values: `04`, `15`, `33`, `35`, `41`, `42`, `43`, `44`, `45`, `46`, `47`, `48`, `49`, `50`, `51`, `52`, `53`, `54`, `55`, `56`, `57`, `58`, `60`, `61`, `62`, `63`, `64`, `65`, `66`, `67`, `68`, `69`, `70`, `71`, `72`, `73`, `74`, `75`, `76`, `77`, `78`, `79`, `80`, `97`, `98`, `AA`, `AE`, `AF`, `AG`, `AO`, `CI`, `E8`, `IA`, `MA`, `T4`
- **`items[].errors[].description`** (`string`): The error description.
- **`items[].errors[].field`** (`string`): The error type, `AAA`.
- **`items[].errors[].followupAction`** (`string`): Payers may sometimes return other non-compliant values.
  - Allowed values: `Please Correct and Resubmit`, `Resubmission Not Allowed`, `Please Resubmit Original Transaction`, `Resubmission Allowed`, `Do Not Resubmit; Inquiry Initiated to a Third Party`, `Please Wait 30 Days and Resubmit`, `Please Wait 10 Days and Resubmit`, `Do Not Resubmit; We Will Hold Your Request and Respond Again Shortly`
- **`items[].errors[].location`** (`string`): The location of the error within the original X12 EDI response.
- **`items[].errors[].possibleResolutions`** (`string`): Information to help you correct the error.

We periodically update this guidance, so these strings may change at any time and may differ between eligibility responses. **Don't build programmatic logic that depends on matching these strings exactly.**
- **`items[].id`** (`string`): A globally unique identifier for this eligibility check across all Stedi accounts. It's formatted as `ec_<uuid>`. For example: `ec_550e8400-e29b-41d4-a716-446655440000`. You can use this ID to track this eligibility check and to construct deep links to eligibility checks in the Stedi portal.
- **`items[].implementationTransactionSetSyntaxError`** (`string`): The implementation transaction set error code provided in `IK502` of the 999 transaction.
- **`items[].meta`** (`object`): Metadata about the response. Stedi uses this data for tracking and troubleshooting.
- **`items[].meta.applicationMode`** (`string`): The type of data in the request. This is either `production` when you send a request with a standard API key or `test` when you send a request in test mode with a [test API key](https://www.stedi.com/docs/api-reference/index#api-key-types). The `information` value is not currently used.

Payers may sometimes return other non-compliant values.
  - Allowed values: `production`, `test`, `information`
- **`items[].meta.billerId`** (`string`): The biller ID Stedi assigns to this request.
- **`items[].meta.outboundTraceId`** (`string`): A unique identifier Stedi assigns to this check.

Instead of this property, we recommend using `id` to identify and track eligibility checks. An eligibility check's `id` is guaranteed to be globally unique, and you can use it to deep link to the eligibility check's results within the Stedi portal.
- **`items[].meta.senderId`** (`string`): The sender ID Stedi assigns to this request.
- **`items[].meta.submitterId`** (`string`): The submitter ID Stedi assigns to this request.
- **`items[].meta.traceId`** (`string`): The transaction identifier the payer sends in the response. This should be the same as the `outboundTraceId`.
- **`items[].payer`** (`object`): Information about the payer providing the benefits information. The response will always include the payer's business name and an identifier, such as the payer's tax ID. Most payers also include contact information.
- **`items[].payer.aaaErrors`** (`array of EligibilityCheckPayerError objects`)
- **`items[].payer.aaaErrors[].code`** (`string`): Payers may sometimes return other non-compliant values.
  - Allowed values: `04`, `41`, `42`, `79`, `80`, `T4`
- **`items[].payer.aaaErrors[].description`** (`string`): The error description.
- **`items[].payer.aaaErrors[].field`** (`string`): The error type, `AAA`.
- **`items[].payer.aaaErrors[].followupAction`** (`string`): Payers may sometimes return other non-compliant values.
  - Allowed values: `Please Correct and Resubmit`, `Resubmission Not Allowed`, `Please Resubmit Original Transaction`, `Resubmission Allowed`, `Do Not Resubmit; Inquiry Initiated to a Third Party`, `Please Wait 30 Days and Resubmit`, `Please Wait 10 Days and Resubmit`, `Do Not Resubmit; We Will Hold Your Request and Respond Again Shortly`
- **`items[].payer.aaaErrors[].location`** (`string`): The location of the error within the original X12 EDI response.
- **`items[].payer.aaaErrors[].possibleResolutions`** (`string`): Information to help you correct the error.

We periodically update this guidance, so these strings may change at any time and may differ between eligibility responses. **Don't build programmatic logic that depends on matching these strings exactly.**
- **`items[].payer.centersForMedicareAndMedicaidPlanId`** (`string`): The payer's Centers for Medicare and Medicaid Services PlanID.
- **`items[].payer.contactInformation`** (`object`)
- **`items[].payer.contactInformation.contacts`** (`array of Contacts objects`): The contact information.
- **`items[].payer.contactInformation.contacts[].communicationMode`** (`string`): Payers may sometimes return other non-compliant values.
  - Allowed values: `Electronic Data Interchange Access Number`, `Electronic Mail`, `Facsimile`, `Telephone`, `Uniform Resource Locator (URL)`, `Telephone Extension`, `Work Phone Number`
- **`items[].payer.contactInformation.contacts[].communicationNumber`** (`string`): The communication number referenced in `communicationMode`. It includes the country or area code when applicable. 
 
 Note that phone numbers are formatted as AAABBBCCCC, where AAA represents the area code, BBB represents the telephone number prefix, and CCCC represents the telephone number. Phone numbers are provided without separators, such as dashes or parentheses. For example, `5551123345` for `555-112-3345`.
- **`items[].payer.contactInformation.name`** (`string`): The name of the contact person.
- **`items[].payer.employersId`** (`string`): Deprecated; The payer's identification number for the entity receiving the benefits information.
This shape is deprecated: This property is no longer used.
- **`items[].payer.entityIdentifier`** (`string`): The entity identifier code for the payer.

Payers may sometimes return other non-compliant values.
  - Allowed values: `Third-Party Administrator`, `Employer`, `Gateway Provider`, `Plan Sponsor`, `Payer`
- **`items[].payer.entityType`** (`string`): The type of entity.

Payers may sometimes return other non-compliant values.
  - Allowed values: `Person`, `Non-Person Entity`
- **`items[].payer.etin`** (`string`): The payer's Electronic Transmitter Identification Number (ETIN).
- **`items[].payer.federalTaxpayersIdNumber`** (`string`): The payer's federal taxpayer's identification number.
- **`items[].payer.firstName`** (`string`): The payer's first name, when the payer is an individual (not commonly used).
- **`items[].payer.lastName`** (`string`): The payer's last name. Used when the payer is an individual (not commonly used).
- **`items[].payer.middleName`** (`string`): The payer's middle name or initial, when the payer is an individual (not commonly used).
- **`items[].payer.naic`** (`string`): The payer's National Association of Insurance Commissioners (NAIC) identification number.
- **`items[].payer.name`** (`string`): The payer's business name, when the payer is not a person.
- **`items[].payer.npi`** (`string`): The payer's [National Provider Identifier (NPI)](https://www.stedi.com/docs/healthcare/national-provider-identifier).
- **`items[].payer.payorIdentification`** (`string`): The payer identification.
- **`items[].payer.suffix`** (`string`): The payer's name suffix, such as Jr. or III. Used when the payer is an individual (not commonly used).
- **`items[].planDateInformation`** (`object`): Contains the dates associated with the subscriber and dependents' (if applicable) insurance plan. This information is used to determine their eligibility for benefits.
- Most fields contain a single date, but some can contain either a single date or a date range. Each field's documentation specifies its format.
- Fields that can contain either a single date or date range include: `plan`, `eligibility`, `planBegin`, `admission`, and `service`.
- The provided dates apply to every benefit within the patient's health plan unless specifically noted within a `benefitsInformation[].benefitsDateInformation` object.
- If the payer sends back date(s) that are different for the subscriber and dependents, Stedi includes only the dates for the dependent in this object and omits the subscriber's date(s). Dependents can have different coverage dates than the subscriber due to qualifying life events, such as starting a new job or passing the age limit for coverage through their parent's plan.
- Most payers return either `plan` or `planBegin` and `planEnd`, but the exact dates returned depend on the payer's discretion and the patient's insurance plan.
- If the date of service is after the earliest ending `plan`, `eligibility`, `planEnd`, `eligibilityEnd`, `policyEffective`, or `policyExpiration` value, the patient likely doesn't have active coverage.
- **`items[].planDateInformation.added`** (`string`): Added date. Payers may return this information in the case of retroactive eligibility.
- **`items[].planDateInformation.admission`** (`string`): The admission date or dates.
- **`items[].planDateInformation.benefit`** (`string`): The benefit date.
- **`items[].planDateInformation.benefitBegin`** (`string`): The benefit begin date.
- **`items[].planDateInformation.benefitEnd`** (`string`): The benefit end date.
- **`items[].planDateInformation.certification`** (`string`): The certification date.
- **`items[].planDateInformation.cobraBegin`** (`string`): The date when COBRA coverage begins.
- **`items[].planDateInformation.cobraEnd`** (`string`): The date when COBRA coverage ends.
- **`items[].planDateInformation.completion`** (`string`): The completion date.
- **`items[].planDateInformation.coordinationOfBenefits`** (`string`): The coordination of benefits date.
- **`items[].planDateInformation.dateOfDeath`** (`string`): The date of death. Payers may return this information in the case of a deceased subscriber or dependent.
- **`items[].planDateInformation.dateOfLastUpdate`** (`string`): The date when the plan information was last updated.
- **`items[].planDateInformation.discharge`** (`string`): The discharge date.
- **`items[].planDateInformation.effectiveDateOfChange`** (`string`): The effective date of change.
- **`items[].planDateInformation.eligibility`** (`string`): Plan eligibility dates.
- **`items[].planDateInformation.eligibilityBegin`** (`string`): The date when the patient is first eligible for benefits under the plan.
- **`items[].planDateInformation.eligibilityEnd`** (`string`): The date when the patient is no longer eligible for benefits under the plan.
- **`items[].planDateInformation.enrollment`** (`string`): The date when the patient is enrolled in the plan.
- **`items[].planDateInformation.issue`** (`string`): The issue date.
- **`items[].planDateInformation.latestVisitOrConsultation`** (`string`): The latest visit or consultation date.
- **`items[].planDateInformation.periodEnd`** (`string`): The end of a period.
- **`items[].planDateInformation.periodStart`** (`string`): The start of a period.
- **`items[].planDateInformation.plan`** (`string`): Plan effective dates.
- **`items[].planDateInformation.planBegin`** (`string`): The date coverage from the plan begins.
- **`items[].planDateInformation.planEnd`** (`string`): The date coverage from the plan ends.
- **`items[].planDateInformation.policyEffective`** (`string`): The date when the policy becomes effective.
- **`items[].planDateInformation.policyExpiration`** (`string`): The date when the policy expires.
- **`items[].planDateInformation.premiumPaidToDateBegin`** (`string`): The start of the period when the plan premium was paid in full.
- **`items[].planDateInformation.premiumPaidToDateEnd`** (`string`): The end of period when the plan premium payments are up-to-date.
- **`items[].planDateInformation.primaryCareProvider`** (`string`): The primary care provider date.
- **`items[].planDateInformation.service`** (`string`): The service date or dates.
- **`items[].planDateInformation.status`** (`string`): The status date.
- **`items[].planInformation`** (`object`): Additional identification for the subscriber's healthcare plan.
- **`items[].planInformation.agencyClaimNumber`** (`string`): The agency claim number, only used when the information source is a Property and Casualty payer.
- **`items[].planInformation.alternativeListId`** (`string`): The alternative list ID - identifies a list of alternative drugs with the associated formulary status for the patient.
- **`items[].planInformation.caseNumber`** (`string`): The case number
- **`items[].planInformation.centersForMedicareAndMedicaidServicesNPI`** (`string`): The [National Provider Identifier (NPI)](https://www.stedi.com/docs/healthcare/national-provider-identifier) assigned by the Centers for Medicare and Medicaid Services
- **`items[].planInformation.classOfContractCode`** (`string`): The class of contract code - used to identify the applicable class of contract for claims processing.
- **`items[].planInformation.contractNumber`** (`string`): The contract number of a contract between the payer and the provider that requested the eligibility check.
- **`items[].planInformation.coverageListId`** (`string`): The coverage list ID - identifies a list of drugs that have coverage limitations for the patient.
- **`items[].planInformation.drugFormularyNumber`** (`string`): The drug formulary number
- **`items[].planInformation.electronicDevicePin`** (`string`): The electronic device pin number
- **`items[].planInformation.eligibilityCategory`** (`string`): The eligibility category
- **`items[].planInformation.facilityIdNumber`** (`string`): The facility ID number
- **`items[].planInformation.facilityNetworkIdentificationNumber`** (`string`): The facility network identification number
- **`items[].planInformation.familyUnitNumber`** (`string`): The family unit number
- **`items[].planInformation.federalTaxpayersIdentificationNumber`** (`string`): The federal taxpayer's identification number
- **`items[].planInformation.groupDescription`** (`string`): The group description
- **`items[].planInformation.groupNumber`** (`string`): The group number
- **`items[].planInformation.hicNumber`** (`string`): The health insurance claim number (HICN). Note that CMS previously used the HICN to uniquely identify Medicare beneficiaries. However, they have since transitioned to a new, randomized Medicare Beneficiary Identifier (MBI) format. The HICN is no longer used for Medicare transactions but this property is now used by some payers to return MBI. If you receive a value in this property that matches the format specified in the [Medicare Beneficiary Identifier documentation](https://www.cms.gov/training-education/partner-outreach-resources/new-medicare-card/medical-beneficiary-identifiers-mbis), the number is likely an MBI and we recommend sending a follow-up eligibility check to CMS for additional benefits data. This most commonly occurs with patients who are covered by both Medicare and Medicaid.
- **`items[].planInformation.idCardNumber`** (`string`): The identity card number, used when the Identity Card Number is different than the Member Identification Number.
- **`items[].planInformation.idCardSerialNumber`** (`string`): The identification card serial number. The Identification Card Serial Number uniquely identifies the identification card when multiple cards have been or will be issued to a member, such as a replacement card.
- **`items[].planInformation.insurancePolicyNumber`** (`string`): The insurance policy number
- **`items[].planInformation.issueNumber`** (`string`): The issue number
- **`items[].planInformation.medicaidProviderNumber`** (`string`): The Medicaid provider number
- **`items[].planInformation.medicaidRecipientIdNumber`** (`string`): The Medicaid recipient identification number
- **`items[].planInformation.medicalAssistanceCategory`** (`string`): The medical assistance category
- **`items[].planInformation.medicalRecordIdentificationNumber`** (`string`): The medical record identification number
- **`items[].planInformation.medicareProviderNumber`** (`string`): The Medicare provider number
- **`items[].planInformation.memberId`** (`string`): The member identification number - only used when checking eligibility with a Workers' Compensation or Property and Casualty insurer.
- **`items[].planInformation.patientAccountNumber`** (`string`): The patient account number. If you included this value in the original eligibility request, the payer will return the same value here in the response.
- **`items[].planInformation.personalIdentificationNumber`** (`string`): The personal identification number (PIN)
- **`items[].planInformation.planDescription`** (`string`): The plan description
- **`items[].planInformation.planNetworkIdDescription`** (`string`): The plan, group, or plan network name
- **`items[].planInformation.planNetworkIdNumber`** (`string`): The plan network identification number
- **`items[].planInformation.planNumber`** (`string`): The plan number
- **`items[].planInformation.policyNumber`** (`string`): The group or policy number
- **`items[].planInformation.priorAuthorizationNumber`** (`string`): The prior authorization number
- **`items[].planInformation.priorIdNumber`** (`string`): The prior identifier number
- **`items[].planInformation.referralNumber`** (`string`): The referral number
- **`items[].planInformation.socialSecurityNumber`** (`string`): The social security number
- **`items[].planInformation.stateLicenseNumber`** (`string`): The state license number
- **`items[].planInformation.submitterIdentificationNumber`** (`string`): The submitter identification number
- **`items[].planInformation.userIdentification`** (`string`): The user identification
- **`items[].planStatus`** (`array of PlanStatus objects`): Please use `benefitsInformation` instead.
- **`items[].planStatus[].planDetails`** (`string`)
- **`items[].planStatus[].serviceTypeCodes`** (`array of strings`): Service Type Codes (STCs) related to the benefit type. For example, `7` - Anesthesia. Visit [Service Type Codes](https://www.stedi.com/docs/healthcare/send-eligibility-checks#service-type-codes) for a complete list.

This list is specific to X12 version 005010, which is the mandated version for eligibility checks. It differs from the current [X12 Service Type Codes](https://x12.org/codes/service-type-codes) list, which applies to X12 versions later than 005010.

Payers may sometimes return other non-compliant values.
- **`items[].planStatus[].status`** (`string`)
- **`items[].planStatus[].statusCode`** (`string`)
- **`items[].provider`** (`object`): Information about the entity that submitted the original eligibility check request. This may be an individual practitioner, a medical group, a hospital, or another type of healthcare provider. This object will always include at least one identifier, such as the provider's [NPI](https://www.stedi.com/docs/healthcare/national-provider-identifier), tax ID, or EIN.
- **`items[].provider.aaaErrors`** (`array of EligibilityCheckProviderError objects`)
- **`items[].provider.aaaErrors[].code`** (`string`): Payers may sometimes return other non-compliant values.
  - Allowed values: `15`, `41`, `43`, `44`, `45`, `46`, `47`, `48`, `50`, `51`, `79`, `97`, `T4`
- **`items[].provider.aaaErrors[].description`** (`string`): The error description.
- **`items[].provider.aaaErrors[].field`** (`string`): The error type, `AAA`.
- **`items[].provider.aaaErrors[].followupAction`** (`string`): Payers may sometimes return other non-compliant values.
  - Allowed values: `Please Correct and Resubmit`, `Resubmission Not Allowed`, `Resubmission Allowed`, `Do Not Resubmit; Inquiry Initiated to a Third Party`, `Please Wait 30 Days and Resubmit`, `Please Wait 10 Days and Resubmit`, `Do Not Resubmit; We Will Hold Your Request and Respond Again Shortly`
- **`items[].provider.aaaErrors[].location`** (`string`): The location of the error within the original X12 EDI response.
- **`items[].provider.aaaErrors[].possibleResolutions`** (`string`): Information to help you correct the error.

We periodically update this guidance, so these strings may change at any time and may differ between eligibility responses. **Don't build programmatic logic that depends on matching these strings exactly.**
- **`items[].provider.address`** (`object`)
- **`items[].provider.address.address1`** (`string`): The first line of the address.
- **`items[].provider.address.address2`** (`string`): The second line of the address.
- **`items[].provider.address.city`** (`string`): The city.
- **`items[].provider.address.countryCode`** (`string`): The two-letter country code from [Part 1 of ISO 3166](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2).
- **`items[].provider.address.countrySubDivisionCode`** (`string`): The country subdivision code from [Part 2 of ISO 3166](https://en.wikipedia.org/wiki/ISO_3166-2).
- **`items[].provider.address.postalCode`** (`string`): The United States or Canadian postal code, excluding punctuation and blanks.
- **`items[].provider.address.state`** (`string`): The US state or Canadian province code with unknown option. For example, `TN` for Tennessee or `NB` for New Brunswick.

Payers may sometimes return other non-compliant values.
  - Allowed values: `NL`, `PE`, `NS`, `NB`, `QC`, `ON`, `MB`, `SK`, `AB`, `BC`, `YT`, `NT`, `NU`, `DC`, `AS`, `GU`, `MP`, `PR`, `UM`, `VI`, `AA`, `AE`, `AP`, `AK`, `AL`, `AR`, `AZ`, `CA`, `CO`, `CT`, `DE`, `FL`, `GA`, `HI`, `IA`, `ID`, `IL`, `IN`, `KS`, `KY`, `LA`, `MA`, `MD`, `ME`, `MI`, `MN`, `MO`, `MS`, `MT`, `NC`, `ND`, `NE`, `NH`, `NJ`, `NM`, `NV`, `NY`, `OH`, `OK`, `OR`, `PA`, `RI`, `SC`, `SD`, `TN`, `TX`, `UT`, `VA`, `VT`, `WA`, `WI`, `WV`, `WY`
- **`items[].provider.employersId`** (`string`): Deprecated; The provider's identification number for the entity receiving the benefits information.
This shape is deprecated: This property is no longer used.
- **`items[].provider.entityIdentifier`** (`string`): A code identifying the type of provider.

Payers may sometimes return other non-compliant values.
  - Allowed values: `Provider`, `Third-Party Administrator`, `Employer`, `Hospital`, `Facility`, `Gateway Provider`, `Plan Sponsor`, `Payer`
- **`items[].provider.entityType`** (`string`): The type of entity.

Payers may sometimes return other non-compliant values.
  - Allowed values: `Person`, `Non-Person Entity`
- **`items[].provider.federalTaxpayersIdNumber`** (`string`): The Federal Taxpayer Identification Number (also known as an EIN).
- **`items[].provider.middleName`** (`string`): The provider's middle name. This applies to providers that are an individual.
- **`items[].provider.npi`** (`string`): The provider's [National Provider Identifier (NPI)](https://www.stedi.com/docs/healthcare/national-provider-identifier).
- **`items[].provider.payorIdentification`** (`string`): The payer identification.
- **`items[].provider.pharmacyProcessorNumber`** (`string`): The pharmacy processor number.
- **`items[].provider.providerCode`** (`string`): A code indicating the type of provider. Visit [Eligibility code lists](https://www.stedi.com/docs/healthcare/eligibility-code-lists#provider-codes) for a complete list.

Payers may sometimes return other non-compliant values.
  - Allowed values: `AD`, `AT`, `BI`, `CO`, `CV`, `H`, `HH`, `LA`, `OT`, `P1`, `P2`, `PC`, `PE`, `R`, `RF`, `SB`, `SK`, `SU`
- **`items[].provider.providerFirstName`** (`string`): The provider's first name. This applies to providers that are an individual.
- **`items[].provider.providerName`** (`string`): The provider's last name. This applies to providers that are an individual.
- **`items[].provider.providerOrgName`** (`string`): The provider's organization name.
- **`items[].provider.referenceIdentification`** (`string`): The Health Care Provider Taxonomy Code.
- **`items[].provider.serviceProviderNumber`** (`string`): The service provider number. This is an identification number assigned by the payer.
- **`items[].provider.servicesPlanID`** (`string`): The Centers for Medicare and Medicaid Services (CMS) Plan ID.
- **`items[].provider.ssn`** (`string`): The Social Security Number (SSN).
- **`items[].provider.suffix`** (`string`): The provider's name suffix, such as Jr., Sr., or III.
- **`items[].reassociationKey`** (`string`)
- **`items[].status`** (`string`): Errors Stedi encountered when generating or sending the final X12 EDI transaction to the payer. These can include validation errors and payer unavailable errors that prevent delivery.
- **`items[].submitterTransactionIdentifier`** (`string`): The unique identifier for the eligibility check that you submitted in the original batch request.
- **`items[].subscriber`** (`object`): Information about the primary policyholder for the insurance plan listed in the original eligibility check request. The response will always include either the subscriber's name or member ID for identification, but most payers will also return the subscriber's date of birth and other identifying information.
- **`items[].subscriber.aaaErrors`** (`array of EligibilityCheckSubscriberError objects`)
- **`items[].subscriber.aaaErrors[].code`** (`string`): Payers may sometimes return other non-compliant values.
  - Allowed values: `15`, `33`, `35`, `42`, `43`, `45`, `47`, `48`, `49`, `51`, `52`, `53`, `54`, `55`, `56`, `57`, `58`, `60`, `61`, `62`, `63`, `69`, `70`, `71`, `72`, `73`, `74`, `75`, `76`, `78`, `98`, `AA`, `AE`, `AF`, `AG`, `AO`, `CI`, `E8`, `IA`, `MA`
- **`items[].subscriber.aaaErrors[].description`** (`string`): The error description.
- **`items[].subscriber.aaaErrors[].field`** (`string`): The error type, `AAA`.
- **`items[].subscriber.aaaErrors[].followupAction`** (`string`): Payers may sometimes return other non-compliant values.
  - Allowed values: `Please Correct and Resubmit`, `Resubmission Not Allowed`, `Resubmission Allowed`, `Do Not Resubmit; Inquiry Initiated to a Third Party`, `Please Wait 30 Days and Resubmit`, `Please Wait 10 Days and Resubmit`, `Do Not Resubmit; We Will Hold Your Request and Respond Again Shortly`
- **`items[].subscriber.aaaErrors[].location`** (`string`): The location of the error within the original X12 EDI response.
- **`items[].subscriber.aaaErrors[].possibleResolutions`** (`string`): Information to help you correct the error.

We periodically update this guidance, so these strings may change at any time and may differ between eligibility responses. **Don't build programmatic logic that depends on matching these strings exactly.**
- **`items[].subscriber.address`** (`object`)
- **`items[].subscriber.address.address1`** (`string`): The first line of the address.
- **`items[].subscriber.address.address2`** (`string`): The second line of the address.
- **`items[].subscriber.address.city`** (`string`): The city.
- **`items[].subscriber.address.countryCode`** (`string`): The two-letter country code from [Part 1 of ISO 3166](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2).
- **`items[].subscriber.address.countrySubDivisionCode`** (`string`): The country subdivision code from [Part 2 of ISO 3166](https://en.wikipedia.org/wiki/ISO_3166-2).
- **`items[].subscriber.address.postalCode`** (`string`): The United States or Canadian postal code, excluding punctuation and blanks.
- **`items[].subscriber.address.state`** (`string`): The US state or Canadian province code with unknown option. For example, `TN` for Tennessee or `NB` for New Brunswick.

Payers may sometimes return other non-compliant values.
  - Allowed values: `NL`, `PE`, `NS`, `NB`, `QC`, `ON`, `MB`, `SK`, `AB`, `BC`, `YT`, `NT`, `NU`, `DC`, `AS`, `GU`, `MP`, `PR`, `UM`, `VI`, `AA`, `AE`, `AP`, `AK`, `AL`, `AR`, `AZ`, `CA`, `CO`, `CT`, `DE`, `FL`, `GA`, `HI`, `IA`, `ID`, `IL`, `IN`, `KS`, `KY`, `LA`, `MA`, `MD`, `ME`, `MI`, `MN`, `MO`, `MS`, `MT`, `NC`, `ND`, `NE`, `NH`, `NJ`, `NM`, `NV`, `NY`, `OH`, `OK`, `OR`, `PA`, `RI`, `SC`, `SD`, `TN`, `TX`, `UT`, `VA`, `VT`, `WA`, `WI`, `WV`, `WY`
- **`items[].subscriber.birthSequenceNumber`** (`string`): The number assigned to each family member born with the same birth date, such as twins or triplets. Indicates the birth order when there are multiple births associated with the provided birth date.
- **`items[].subscriber.dateOfBirth`** (`string`): The member's date of birth.
- **`items[].subscriber.dateTimePeriod`** (`string`): The military service date.
- **`items[].subscriber.dateTimePeriodFormatQualifier`** (`string`): Payers may sometimes return other non-compliant values.
  - Allowed values: `D8`, `RD8`
- **`items[].subscriber.description`** (`string`): Context that identifies the exact military unit. Used to report military service data.
- **`items[].subscriber.employmentStatusCode`** (`string`): Payers may sometimes return other non-compliant values.
  - Allowed values: `AE`, `AO`, `AS`, `AT`, `AU`, `CC`, `DD`, `HD`, `IR`, `LX`, `PE`, `RE`, `RM`, `RR`, `RU`
- **`items[].subscriber.endDateTimePeriod`** (`string`): The military service end date.
- **`items[].subscriber.entityIdentifier`** (`string`): The entity identifier for the subscriber.
  - Allowed values: `Insured or Subscriber`
- **`items[].subscriber.entityType`** (`string`): The type of entity.

Payers may sometimes return other non-compliant values.
  - Allowed values: `Person`, `Non-Person Entity`
- **`items[].subscriber.firstName`** (`string`): The member's first name.
- **`items[].subscriber.gender`** (`string`)
  - Allowed values: `M`, `F`, `U`
- **`items[].subscriber.governmentServiceAffiliationCode`** (`string`): Payers may sometimes return other non-compliant values.
  - Allowed values: `A`, `B`, `C`, `D`, `E`, `F`, `G`, `H`, `I`, `J`, `K`, `L`, `M`, `N`, `O`, `Q`, `R`, `S`, `U`, `W`
- **`items[].subscriber.groupDescription`** (`string`): Group name
- **`items[].subscriber.groupNumber`** (`string`): The group number associated with the insurance policy.
- **`items[].subscriber.healthCareDiagnosisCodes`** (`array of HealthCareDiagnosisCode objects`)
- **`items[].subscriber.healthCareDiagnosisCodes[].diagnosisCode`** (`string`): The diagnosis code. The decimal points are omitted in diagnosis codes - the decimal point is assumed.
- **`items[].subscriber.healthCareDiagnosisCodes[].diagnosisTypeCode`** (`string`): The type of diagnosis code provided. It can be `ABK` - International Classification of Diseases Clinical Modification (ICD-10-CM) Principal Diagnosis or `BK` - International Classification of Diseases Clinical Modification (ICD-9-CM) Principal Diagnosis.
- **`items[].subscriber.informationStatusCode`** (`string`): Payers may sometimes return other non-compliant values.
  - Allowed values: `A`, `C`, `L`, `O`, `P`, `S`, `T`
- **`items[].subscriber.insuredIndicator`** (`string`): Indicates the status of the insured. For the subscriber, this is always `Y`.
  - Allowed values: `Y`
- **`items[].subscriber.lastName`** (`string`): The member's last name.
- **`items[].subscriber.maintenanceReasonCode`** (`string`): Code identifying the reason for the changes to subscriber identifying information, such as name, date of birth, or address. This is always `25`

Payers may sometimes return other non-compliant values.
  - Allowed values: `25`
- **`items[].subscriber.maintenanceTypeCode`** (`string`): The maintenance type code. Used to acknowledge a change in the identifying elements for the subscriber from those submitted in the original eligibility check request. It can also be included when the payer used the birth sequence number from the original request to locate the subscriber in their system. This is always `001`

Payers may sometimes return other non-compliant values.
  - Allowed values: `001`
- **`items[].subscriber.memberId`** (`string`): The member ID for the insurance policy.
- **`items[].subscriber.middleName`** (`string`): The member's middle name or initial.
- **`items[].subscriber.militaryServiceRankCode`** (`string`): Payers may sometimes return other non-compliant values.
  - Allowed values: `A1`, `A2`, `A3`, `B1`, `B2`, `C1`, `C2`, `C3`, `C4`, `C5`, `C6`, `C7`, `C8`, `C9`, `E1`, `F1`, `F2`, `F3`, `F4`, `G1`, `G4`, `L1`, `L2`, `L3`, `L4`, `L5`, `L6`, `M1`, `M2`, `M3`, `M4`, `M5`, `M6`, `P1`, `P2`, `P3`, `P4`, `P5`, `R1`, `R2`, `S1`, `S2`, `S3`, `S4`, `S5`, `S6`, `S7`, `S8`, `S9`, `SA`, `SB`, `SC`, `T1`, `V1`, `W1`
- **`items[].subscriber.planDescription`** (`string`): Plan name
- **`items[].subscriber.planNetworkDescription`** (`string`): Plan network name
- **`items[].subscriber.planNetworkIdNumber`** (`string`): The network identification number associated with the insurance policy.
- **`items[].subscriber.planNumber`** (`string`): The plan number associated with the insurance policy.
- **`items[].subscriber.relationToSubscriber`** (`string`): The name of the `relationToSubscriberCode`. For the subscriber, this is always `Self`.
  - Allowed values: `Self`
- **`items[].subscriber.relationToSubscriberCode`** (`string`): For the subscriber, this is always `18` for Self.
  - Allowed values: `18`
- **`items[].subscriber.responseProvider`** (`object`): Information about the entity that submitted the original eligibility check request. This may be an individual practitioner, a medical group, a hospital, or another type of healthcare provider. This object will always include at least one identifier, such as the provider's [NPI](https://www.stedi.com/docs/healthcare/national-provider-identifier), tax ID, or EIN.
- **`items[].subscriber.responseProvider.aaaErrors`** (`array of EligibilityCheckProviderError objects`)
- **`items[].subscriber.responseProvider.aaaErrors[].code`** (`string`): Payers may sometimes return other non-compliant values.
  - Allowed values: `15`, `41`, `43`, `44`, `45`, `46`, `47`, `48`, `50`, `51`, `79`, `97`, `T4`
- **`items[].subscriber.responseProvider.aaaErrors[].description`** (`string`): The error description.
- **`items[].subscriber.responseProvider.aaaErrors[].field`** (`string`): The error type, `AAA`.
- **`items[].subscriber.responseProvider.aaaErrors[].followupAction`** (`string`): Payers may sometimes return other non-compliant values.
  - Allowed values: `Please Correct and Resubmit`, `Resubmission Not Allowed`, `Resubmission Allowed`, `Do Not Resubmit; Inquiry Initiated to a Third Party`, `Please Wait 30 Days and Resubmit`, `Please Wait 10 Days and Resubmit`, `Do Not Resubmit; We Will Hold Your Request and Respond Again Shortly`
- **`items[].subscriber.responseProvider.aaaErrors[].location`** (`string`): The location of the error within the original X12 EDI response.
- **`items[].subscriber.responseProvider.aaaErrors[].possibleResolutions`** (`string`): Information to help you correct the error.

We periodically update this guidance, so these strings may change at any time and may differ between eligibility responses. **Don't build programmatic logic that depends on matching these strings exactly.**
- **`items[].subscriber.responseProvider.address`** (`object`)
- **`items[].subscriber.responseProvider.address.address1`** (`string`): The first line of the address.
- **`items[].subscriber.responseProvider.address.address2`** (`string`): The second line of the address.
- **`items[].subscriber.responseProvider.address.city`** (`string`): The city.
- **`items[].subscriber.responseProvider.address.countryCode`** (`string`): The two-letter country code from [Part 1 of ISO 3166](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2).
- **`items[].subscriber.responseProvider.address.countrySubDivisionCode`** (`string`): The country subdivision code from [Part 2 of ISO 3166](https://en.wikipedia.org/wiki/ISO_3166-2).
- **`items[].subscriber.responseProvider.address.postalCode`** (`string`): The United States or Canadian postal code, excluding punctuation and blanks.
- **`items[].subscriber.responseProvider.address.state`** (`string`): The US state or Canadian province code with unknown option. For example, `TN` for Tennessee or `NB` for New Brunswick.

Payers may sometimes return other non-compliant values.
  - Allowed values: `NL`, `PE`, `NS`, `NB`, `QC`, `ON`, `MB`, `SK`, `AB`, `BC`, `YT`, `NT`, `NU`, `DC`, `AS`, `GU`, `MP`, `PR`, `UM`, `VI`, `AA`, `AE`, `AP`, `AK`, `AL`, `AR`, `AZ`, `CA`, `CO`, `CT`, `DE`, `FL`, `GA`, `HI`, `IA`, `ID`, `IL`, `IN`, `KS`, `KY`, `LA`, `MA`, `MD`, `ME`, `MI`, `MN`, `MO`, `MS`, `MT`, `NC`, `ND`, `NE`, `NH`, `NJ`, `NM`, `NV`, `NY`, `OH`, `OK`, `OR`, `PA`, `RI`, `SC`, `SD`, `TN`, `TX`, `UT`, `VA`, `VT`, `WA`, `WI`, `WV`, `WY`
- **`items[].subscriber.responseProvider.employersId`** (`string`): Deprecated; The provider's identification number for the entity receiving the benefits information.
This shape is deprecated: This property is no longer used.
- **`items[].subscriber.responseProvider.entityIdentifier`** (`string`): A code identifying the type of provider.

Payers may sometimes return other non-compliant values.
  - Allowed values: `Provider`, `Third-Party Administrator`, `Employer`, `Hospital`, `Facility`, `Gateway Provider`, `Plan Sponsor`, `Payer`
- **`items[].subscriber.responseProvider.entityType`** (`string`): The type of entity.

Payers may sometimes return other non-compliant values.
  - Allowed values: `Person`, `Non-Person Entity`
- **`items[].subscriber.responseProvider.federalTaxpayersIdNumber`** (`string`): The Federal Taxpayer Identification Number (also known as an EIN).
- **`items[].subscriber.responseProvider.middleName`** (`string`): The provider's middle name. This applies to providers that are an individual.
- **`items[].subscriber.responseProvider.npi`** (`string`): The provider's [National Provider Identifier (NPI)](https://www.stedi.com/docs/healthcare/national-provider-identifier).
- **`items[].subscriber.responseProvider.payorIdentification`** (`string`): The payer identification.
- **`items[].subscriber.responseProvider.pharmacyProcessorNumber`** (`string`): The pharmacy processor number.
- **`items[].subscriber.responseProvider.providerCode`** (`string`): A code indicating the type of provider. Visit [Eligibility code lists](https://www.stedi.com/docs/healthcare/eligibility-code-lists#provider-codes) for a complete list.

Payers may sometimes return other non-compliant values.
  - Allowed values: `AD`, `AT`, `BI`, `CO`, `CV`, `H`, `HH`, `LA`, `OT`, `P1`, `P2`, `PC`, `PE`, `R`, `RF`, `SB`, `SK`, `SU`
- **`items[].subscriber.responseProvider.providerFirstName`** (`string`): The provider's first name. This applies to providers that are an individual.
- **`items[].subscriber.responseProvider.providerName`** (`string`): The provider's last name. This applies to providers that are an individual.
- **`items[].subscriber.responseProvider.providerOrgName`** (`string`): The provider's organization name.
- **`items[].subscriber.responseProvider.referenceIdentification`** (`string`): The Health Care Provider Taxonomy Code.
- **`items[].subscriber.responseProvider.serviceProviderNumber`** (`string`): The service provider number. This is an identification number assigned by the payer.
- **`items[].subscriber.responseProvider.servicesPlanID`** (`string`): The Centers for Medicare and Medicaid Services (CMS) Plan ID.
- **`items[].subscriber.responseProvider.ssn`** (`string`): The Social Security Number (SSN).
- **`items[].subscriber.responseProvider.suffix`** (`string`): The provider's name suffix, such as Jr., Sr., or III.
- **`items[].subscriber.ssn`** (`string`): The member's Social Security Number (SSN).
- **`items[].subscriber.startDateTimePeriod`** (`string`): The military service start date.
- **`items[].subscriber.suffix`** (`string`): The name suffix, such as Jr., Sr., or III.
- **`items[].subscriber.uniqueHealthIdentifier`** (`string`): The member's unique health identifier.
- **`items[].subscriberTraceNumbers`** (`array of SubscriberTraceNumber objects`): A unique identifier for the eligibility request. It's used to trace the transaction. Stedi always generates a trace number for internal tracking, and the payer may generate one as well. Stedi returns both its internal trace number and the payer's trace number (if present) in this array.

You can't set your own trace number when submitting eligibility checks through this endpoint.
- **`items[].subscriberTraceNumbers[].originatingCompanyIdentifier`** (`string`): The identifier of the organization that assigned the trace number.
- **`items[].subscriberTraceNumbers[].referenceIdentification`** (`string`): The unique trace number assigned to the transaction.
- **`items[].subscriberTraceNumbers[].secondaryReferenceIdentification`** (`string`): Identifies a subdivision within the organization that assigned the trace number.
- **`items[].subscriberTraceNumbers[].traceType`** (`string`): The full name of the `traceTypeCode`. For example `Current Transaction Trace Numbers`.
- **`items[].subscriberTraceNumbers[].traceTypeCode`** (`string`): The code that identifies the type of trace number. Can be `1` - Current Transaction Trace Numbers (refers to trace numbers assigned by the payer) or `2` - Referenced Trace Numbers (refers to numbers sent in the original eligibility check request).
- **`items[].tradingPartnerServiceId`** (`string`): An ID for the payer you identified in the original eligibility check request. This value may differ from the `tradingPartnerServiceId` you submitted in the original request because it reflects the payer's internal concept of their ID, not necessarily the ID Stedi uses to route requests to this payer.
- **`items[].transactionSetAcknowledgement`** (`string`): The transaction set acknowledgment code provided in in the [X12 EDI 999 response](https://portal.stedi.com/app/guides/view/hipaa/implementation-acknowledgment-x231/01HRF41ES1DVGCA6X1EHSRPFXZ#properties.heading.properties.transaction_set_response_header_AK2_loop.items.properties.transaction_set_response_trailer_IK5).
- **`items[].warnings`** (`array of Warning objects`): Issues with your eligibility request that could affect the results, or information about the response. For example, warnings can help explain why the request was rejected.
- **`items[].warnings[].code`** (`string`): The warning code.
- **`items[].warnings[].description`** (`string`): The warning description.
- **`items[].x12`** (`string`): Typically this property contains the raw X12 EDI [271 Eligibility Benefit Response](https://portal.stedi.com/app/guides/view/hipaa/health-care-eligibility-benefit-response-x279a1/01GS66YHZPB37ABF34DBPSR213) from the payer.

In some circumstances, this property may contain a [999 Implementation Acknowledgment](https://portal.stedi.com/app/guides/view/hipaa/implementation-acknowledgment-x231a1/01HMRQV0N8SPHG58M4ZG1CRHH0) instead of a 271. A 999 indicates validation errors in the X12 EDI transaction, such as improper formatting or missing or invalid values.

If the 999 is returned in this property, many of the other response properties will be empty, as they are mapped to information in the 271.
- **`nextPageToken`** (`string`): A Stedi-generated token that you can submit in the `pageToken` query parameter to retrieve the next page of results. If there are no more results, this property is not included in the response.

**Example:**

```json
{
  "items": [
    {
      "batchId": "01932c61-2d4f-7d22-85fa-c7db2e13e771",
      "controlNumber": "000022222",
      "eligibilitySearchId": "06956c88-a177-5252-b868-ju4974dd54gh",
      "errors": [
        {
          "code": "79",
          "description": "Invalid Participant Identification",
          "followupAction": "Please Correct and Resubmit",
          "location": "2100A",
          "possibleResolutions": "Payer TEST is not configured. Please check our published payer list or contact Stedi support to resolve."
        }
      ],
      "id": "ec_750e8400-e29b-41d4-a716-446655440002",
      "meta": {
        "outboundTraceId": "01JCP62EYY1N6PZABF9Q45EN5Y"
      },
      "status": "ERROR",
      "submitterTransactionIdentifier": "ABC123456789",
      "tradingPartnerServiceId": "TEST"
    },
    {
      "batchId": "01932c61-2d4f-7d22-85fa-c7db2e13e771",
      "benefitsInformation": [
        {
          "additionalInformation": [
            {
              "description": "Complete Care Management"
            }
          ],
          "code": "1",
          "name": "Active Coverage",
          "planCoverage": "Open Access Plus",
          "serviceTypeCodes": [
            "30"
          ],
          "serviceTypes": [
            "Health Benefit Plan Coverage"
          ]
        },
        {
          "additionalInformation": [
            {
              "description": "Includes services provided by Client Specific Network"
            },
            {
              "description": "Coinsurance does apply to member's out-of-pocket maximum"
            },
            {
              "description": "Copay does apply to member's out-of-pocket maximum"
            },
            {
              "description": "Deductible does apply to member's out-of-pocket maximum"
            }
          ],
          "benefitAmount": "6000",
          "code": "G",
          "coverageLevel": "Family",
          "coverageLevelCode": "FAM",
          "inPlanNetworkIndicator": "Yes",
          "inPlanNetworkIndicatorCode": "Y",
          "name": "Out of Pocket (Stop Loss)",
          "serviceTypeCodes": [
            "30"
          ],
          "serviceTypes": [
            "Health Benefit Plan Coverage"
          ],
          "timeQualifier": "Calendar Year",
          "timeQualifierCode": "23"
        },
        {
          "additionalInformation": [
            {
              "description": "Includes services provided by Client Specific Network"
            }
          ],
          "benefitAmount": "500",
          "code": "C",
          "coverageLevel": "Family",
          "coverageLevelCode": "FAM",
          "inPlanNetworkIndicator": "Yes",
          "inPlanNetworkIndicatorCode": "Y",
          "name": "Deductible",
          "serviceTypeCodes": [
            "30"
          ],
          "serviceTypes": [
            "Health Benefit Plan Coverage"
          ],
          "timeQualifier": "Calendar Year",
          "timeQualifierCode": "23"
        },
        {
          "additionalInformation": [
            {
              "description": "Includes services provided by Client Specific Network"
            },
            {
              "description": "Copay does apply to member's out-of-pocket maximum"
            },
            {
              "description": "Coinsurance does apply to member's out-of-pocket maximum"
            },
            {
              "description": "Deductible does apply to member's out-of-pocket maximum"
            }
          ],
          "benefitAmount": "3000",
          "code": "G",
          "coverageLevel": "Individual",
          "coverageLevelCode": "IND",
          "inPlanNetworkIndicator": "Yes",
          "inPlanNetworkIndicatorCode": "Y",
          "name": "Out of Pocket (Stop Loss)",
          "serviceTypeCodes": [
            "30"
          ],
          "serviceTypes": [
            "Health Benefit Plan Coverage"
          ],
          "timeQualifier": "Calendar Year",
          "timeQualifierCode": "23"
        },
        {
          "additionalInformation": [
            {
              "description": "Includes services provided by Client Specific Network"
            }
          ],
          "benefitAmount": "250",
          "code": "C",
          "coverageLevel": "Individual",
          "coverageLevelCode": "IND",
          "inPlanNetworkIndicator": "Yes",
          "inPlanNetworkIndicatorCode": "Y",
          "name": "Deductible",
          "serviceTypeCodes": [
            "30"
          ],
          "serviceTypes": [
            "Health Benefit Plan Coverage"
          ],
          "timeQualifier": "Calendar Year",
          "timeQualifierCode": "23"
        },
        {
          "benefitAmount": "15000",
          "code": "C",
          "coverageLevel": "Family",
          "coverageLevelCode": "FAM",
          "inPlanNetworkIndicator": "No",
          "inPlanNetworkIndicatorCode": "N",
          "name": "Deductible",
          "serviceTypeCodes": [
            "30"
          ],
          "serviceTypes": [
            "Health Benefit Plan Coverage"
          ],
          "timeQualifier": "Calendar Year",
          "timeQualifierCode": "23"
        },
        {
          "additionalInformation": [
            {
              "description": "Coinsurance does apply to member's out-of-pocket maximum"
            },
            {
              "description": "Deductible does apply to member's out-of-pocket maximum"
            }
          ],
          "benefitAmount": "30000",
          "code": "G",
          "coverageLevel": "Family",
          "coverageLevelCode": "FAM",
          "inPlanNetworkIndicator": "No",
          "inPlanNetworkIndicatorCode": "N",
          "name": "Out of Pocket (Stop Loss)",
          "serviceTypeCodes": [
            "30"
          ],
          "serviceTypes": [
            "Health Benefit Plan Coverage"
          ],
          "timeQualifier": "Calendar Year",
          "timeQualifierCode": "23"
        },
        {
          "benefitPercent": "0.1",
          "code": "A",
          "coverageLevel": "Individual",
          "coverageLevelCode": "IND",
          "inPlanNetworkIndicator": "Yes",
          "inPlanNetworkIndicatorCode": "Y",
          "name": "Co-Insurance",
          "serviceTypeCodes": [
            "30"
          ],
          "serviceTypes": [
            "Health Benefit Plan Coverage"
          ]
        },
        {
          "benefitAmount": "7500",
          "code": "C",
          "coverageLevel": "Individual",
          "coverageLevelCode": "IND",
          "inPlanNetworkIndicator": "No",
          "inPlanNetworkIndicatorCode": "N",
          "name": "Deductible",
          "serviceTypeCodes": [
            "30"
          ],
          "serviceTypes": [
            "Health Benefit Plan Coverage"
          ],
          "timeQualifier": "Calendar Year",
          "timeQualifierCode": "23"
        },
        {
          "additionalInformation": [
            {
              "description": "Deductible does apply to member's out-of-pocket maximum"
            },
            {
              "description": "Coinsurance does apply to member's out-of-pocket maximum"
            }
          ],
          "benefitAmount": "15000",
          "code": "G",
          "coverageLevel": "Individual",
          "coverageLevelCode": "IND",
          "inPlanNetworkIndicator": "No",
          "inPlanNetworkIndicatorCode": "N",
          "name": "Out of Pocket (Stop Loss)",
          "serviceTypeCodes": [
            "30"
          ],
          "serviceTypes": [
            "Health Benefit Plan Coverage"
          ],
          "timeQualifier": "Calendar Year",
          "timeQualifierCode": "23"
        },
        {
          "benefitPercent": "0.5",
          "code": "A",
          "coverageLevel": "Individual",
          "coverageLevelCode": "IND",
          "inPlanNetworkIndicator": "No",
          "inPlanNetworkIndicatorCode": "N",
          "name": "Co-Insurance",
          "serviceTypeCodes": [
            "30"
          ],
          "serviceTypes": [
            "Health Benefit Plan Coverage"
          ]
        },
        {
          "code": "1",
          "inPlanNetworkIndicator": "Not Applicable",
          "inPlanNetworkIndicatorCode": "W",
          "name": "Active Coverage",
          "serviceTypeCodes": [
            "A7",
            "BC",
            "A8",
            "A4",
            "A5",
            "A6",
            "7",
            "4",
            "BB",
            "22"
          ],
          "serviceTypes": [
            "Psychiatric - Inpatient",
            "Day Care (Psychiatric)",
            "Psychiatric - Outpatient",
            "Psychiatric",
            "Psychiatric - Room and Board",
            "Psychotherapy",
            "Anesthesia",
            "Diagnostic X-Ray",
            "Partial Hospitalization (Psychiatric)",
            "Social Work"
          ]
        },
        {
          "additionalInformation": [
            {
              "description": "Includes services provided by Client Specific Network"
            }
          ],
          "authOrCertIndicator": "N",
          "benefitAmount": "0",
          "code": "C",
          "coverageLevel": "Individual",
          "coverageLevelCode": "IND",
          "eligibilityAdditionalInformation": {
            "codeListQualifier": "Mutually Defined",
            "codeListQualifierCode": "ZZ",
            "industry": "Outpatient Hospital",
            "industryCode": "22"
          },
          "eligibilityAdditionalInformationList": [
            {
              "codeListQualifier": "Mutually Defined",
              "codeListQualifierCode": "ZZ",
              "industry": "Outpatient Hospital",
              "industryCode": "22"
            }
          ],
          "inPlanNetworkIndicator": "Yes",
          "inPlanNetworkIndicatorCode": "Y",
          "name": "Deductible",
          "serviceTypeCodes": [
            "BC",
            "A4",
            "A6",
            "4",
            "22"
          ],
          "serviceTypes": [
            "Day Care (Psychiatric)",
            "Psychiatric",
            "Psychotherapy",
            "Diagnostic X-Ray",
            "Social Work"
          ]
        },
        {
          "additionalInformation": [
            {
              "description": "Includes services provided by Client Specific Network"
            }
          ],
          "authOrCertIndicator": "N",
          "benefitAmount": "0",
          "code": "C",
          "coverageLevel": "Individual",
          "coverageLevelCode": "IND",
          "inPlanNetworkIndicator": "Yes",
          "inPlanNetworkIndicatorCode": "Y",
          "name": "Deductible",
          "serviceTypeCodes": [
            "A8"
          ],
          "serviceTypes": [
            "Psychiatric - Outpatient"
          ]
        },
        {
          "additionalInformation": [
            {
              "description": "Includes services provided by Client Specific Network"
            }
          ],
          "authOrCertIndicator": "N",
          "benefitAmount": "0",
          "code": "C",
          "coverageLevel": "Individual",
          "coverageLevelCode": "IND",
          "eligibilityAdditionalInformation": {
            "codeListQualifier": "Mutually Defined",
            "codeListQualifierCode": "ZZ",
            "industry": "Office",
            "industryCode": "11"
          },
          "eligibilityAdditionalInformationList": [
            {
              "codeListQualifier": "Mutually Defined",
              "codeListQualifierCode": "ZZ",
              "industry": "Office",
              "industryCode": "11"
            }
          ],
          "inPlanNetworkIndicator": "Yes",
          "inPlanNetworkIndicatorCode": "Y",
          "name": "Deductible",
          "serviceTypeCodes": [
            "A4",
            "A6",
            "4",
            "22"
          ],
          "serviceTypes": [
            "Psychiatric",
            "Psychotherapy",
            "Diagnostic X-Ray",
            "Social Work"
          ]
        },
        {
          "additionalInformation": [
            {
              "description": "Includes services provided by Client Specific Network"
            }
          ],
          "authOrCertIndicator": "N",
          "benefitAmount": "0",
          "code": "C",
          "coverageLevel": "Individual",
          "coverageLevelCode": "IND",
          "eligibilityAdditionalInformation": {
            "codeListQualifier": "Mutually Defined",
            "codeListQualifierCode": "ZZ",
            "industry": "Telehealth Provided Other than in Patient’s Home",
            "industryCode": "02"
          },
          "eligibilityAdditionalInformationList": [
            {
              "codeListQualifier": "Mutually Defined",
              "codeListQualifierCode": "ZZ",
              "industry": "Telehealth Provided Other than in Patient’s Home",
              "industryCode": "02"
            }
          ],
          "inPlanNetworkIndicator": "Yes",
          "inPlanNetworkIndicatorCode": "Y",
          "name": "Deductible",
          "serviceTypeCodes": [
            "A4",
            "A6",
            "22"
          ],
          "serviceTypes": [
            "Psychiatric",
            "Psychotherapy",
            "Social Work"
          ]
        },
        {
          "authOrCertIndicator": "N",
          "benefitAmount": "20",
          "code": "B",
          "coverageLevel": "Individual",
          "coverageLevelCode": "IND",
          "eligibilityAdditionalInformation": {
            "codeListQualifier": "Mutually Defined",
            "codeListQualifierCode": "ZZ",
            "industry": "Office",
            "industryCode": "11"
          },
          "eligibilityAdditionalInformationList": [
            {
              "codeListQualifier": "Mutually Defined",
              "codeListQualifierCode": "ZZ",
              "industry": "Office",
              "industryCode": "11"
            }
          ],
          "inPlanNetworkIndicator": "Yes",
          "inPlanNetworkIndicatorCode": "Y",
          "name": "Co-Payment",
          "serviceTypeCodes": [
            "A4",
            "A6",
            "22"
          ],
          "serviceTypes": [
            "Psychiatric",
            "Psychotherapy",
            "Social Work"
          ],
          "timeQualifier": "Visit",
          "timeQualifierCode": "27"
        },
        {
          "authOrCertIndicator": "N",
          "benefitPercent": "0",
          "code": "A",
          "coverageLevel": "Individual",
          "coverageLevelCode": "IND",
          "eligibilityAdditionalInformation": {
            "codeListQualifier": "Mutually Defined",
            "codeListQualifierCode": "ZZ",
            "industry": "Office",
            "industryCode": "11"
          },
          "eligibilityAdditionalInformationList": [
            {
              "codeListQualifier": "Mutually Defined",
              "codeListQualifierCode": "ZZ",
              "industry": "Office",
              "industryCode": "11"
            }
          ],
          "inPlanNetworkIndicator": "Yes",
          "inPlanNetworkIndicatorCode": "Y",
          "name": "Co-Insurance",
          "serviceTypeCodes": [
            "A4",
            "A6",
            "4",
            "22"
          ],
          "serviceTypes": [
            "Psychiatric",
            "Psychotherapy",
            "Diagnostic X-Ray",
            "Social Work"
          ]
        },
        {
          "additionalInformation": [
            {
              "description": "Included For Specific Services"
            }
          ],
          "authOrCertIndicator": "N",
          "benefitAmount": "20",
          "code": "B",
          "coverageLevel": "Individual",
          "coverageLevelCode": "IND",
          "eligibilityAdditionalInformation": {
            "codeListQualifier": "Mutually Defined",
            "codeListQualifierCode": "ZZ",
            "industry": "Telehealth Provided Other than in Patient’s Home",
            "industryCode": "02"
          },
          "eligibilityAdditionalInformationList": [
            {
              "codeListQualifier": "Mutually Defined",
              "codeListQualifierCode": "ZZ",
              "industry": "Telehealth Provided Other than in Patient’s Home",
              "industryCode": "02"
            }
          ],
          "inPlanNetworkIndicator": "Yes",
          "inPlanNetworkIndicatorCode": "Y",
          "name": "Co-Payment",
          "serviceTypeCodes": [
            "A4",
            "A6",
            "22"
          ],
          "serviceTypes": [
            "Psychiatric",
            "Psychotherapy",
            "Social Work"
          ],
          "timeQualifier": "Visit",
          "timeQualifierCode": "27"
        },
        {
          "additionalInformation": [
            {
              "description": "Included For Specific Services"
            }
          ],
          "authOrCertIndicator": "N",
          "benefitPercent": "0",
          "code": "A",
          "coverageLevel": "Individual",
          "coverageLevelCode": "IND",
          "eligibilityAdditionalInformation": {
            "codeListQualifier": "Mutually Defined",
            "codeListQualifierCode": "ZZ",
            "industry": "Telehealth Provided Other than in Patient’s Home",
            "industryCode": "02"
          },
          "eligibilityAdditionalInformationList": [
            {
              "codeListQualifier": "Mutually Defined",
              "codeListQualifierCode": "ZZ",
              "industry": "Telehealth Provided Other than in Patient’s Home",
              "industryCode": "02"
            }
          ],
          "inPlanNetworkIndicator": "Yes",
          "inPlanNetworkIndicatorCode": "Y",
          "name": "Co-Insurance",
          "serviceTypeCodes": [
            "A4",
            "A6",
            "22"
          ],
          "serviceTypes": [
            "Psychiatric",
            "Psychotherapy",
            "Social Work"
          ]
        },
        {
          "additionalInformation": [
            {
              "description": "Services rendered thru Client Specific Network"
            }
          ],
          "authOrCertIndicator": "N",
          "benefitPercent": "0",
          "code": "A",
          "coverageLevel": "Individual",
          "coverageLevelCode": "IND",
          "eligibilityAdditionalInformation": {
            "codeListQualifier": "Mutually Defined",
            "codeListQualifierCode": "ZZ",
            "industry": "Telehealth Provided Other than in Patient’s Home",
            "industryCode": "02"
          },
          "eligibilityAdditionalInformationList": [
            {
              "codeListQualifier": "Mutually Defined",
              "codeListQualifierCode": "ZZ",
              "industry": "Telehealth Provided Other than in Patient’s Home",
              "industryCode": "02"
            }
          ],
          "inPlanNetworkIndicator": "Yes",
          "inPlanNetworkIndicatorCode": "Y",
          "name": "Co-Insurance",
          "serviceTypeCodes": [
            "A4",
            "A6",
            "22"
          ],
          "serviceTypes": [
            "Psychiatric",
            "Psychotherapy",
            "Social Work"
          ]
        },
        {
          "additionalInformation": [
            {
              "description": "Services rendered thru Client Specific Network"
            }
          ],
          "authOrCertIndicator": "N",
          "benefitPercent": "0",
          "code": "A",
          "coverageLevel": "Individual",
          "coverageLevelCode": "IND",
          "eligibilityAdditionalInformation": {
            "codeListQualifier": "Mutually Defined",
            "codeListQualifierCode": "ZZ",
            "industry": "Office",
            "industryCode": "11"
          },
          "eligibilityAdditionalInformationList": [
            {
              "codeListQualifier": "Mutually Defined",
              "codeListQualifierCode": "ZZ",
              "industry": "Office",
              "industryCode": "11"
            }
          ],
          "inPlanNetworkIndicator": "Yes",
          "inPlanNetworkIndicatorCode": "Y",
          "name": "Co-Insurance",
          "serviceTypeCodes": [
            "A4",
            "A6",
            "4",
            "22"
          ],
          "serviceTypes": [
            "Psychiatric",
            "Psychotherapy",
            "Diagnostic X-Ray",
            "Social Work"
          ]
        },
        {
          "additionalInformation": [
            {
              "description": "Services rendered thru Client Specific Network"
            }
          ],
          "authOrCertIndicator": "N",
          "benefitAmount": "20",
          "code": "B",
          "coverageLevel": "Individual",
          "coverageLevelCode": "IND",
          "eligibilityAdditionalInformation": {
            "codeListQualifier": "Mutually Defined",
            "codeListQualifierCode": "ZZ",
            "industry": "Telehealth Provided Other than in Patient’s Home",
            "industryCode": "02"
          },
          "eligibilityAdditionalInformationList": [
            {
              "codeListQualifier": "Mutually Defined",
              "codeListQualifierCode": "ZZ",
              "industry": "Telehealth Provided Other than in Patient’s Home",
              "industryCode": "02"
            }
          ],
          "inPlanNetworkIndicator": "Yes",
          "inPlanNetworkIndicatorCode": "Y",
          "name": "Co-Payment",
          "serviceTypeCodes": [
            "A4",
            "A6",
            "22"
          ],
          "serviceTypes": [
            "Psychiatric",
            "Psychotherapy",
            "Social Work"
          ],
          "timeQualifier": "Visit",
          "timeQualifierCode": "27"
        },
        {
          "additionalInformation": [
            {
              "description": "Services rendered thru Client Specific Network"
            }
          ],
          "authOrCertIndicator": "N",
          "benefitAmount": "20",
          "code": "B",
          "coverageLevel": "Individual",
          "coverageLevelCode": "IND",
          "eligibilityAdditionalInformation": {
            "codeListQualifier": "Mutually Defined",
            "codeListQualifierCode": "ZZ",
            "industry": "Office",
            "industryCode": "11"
          },
          "eligibilityAdditionalInformationList": [
            {
              "codeListQualifier": "Mutually Defined",
              "codeListQualifierCode": "ZZ",
              "industry": "Office",
              "industryCode": "11"
            }
          ],
          "inPlanNetworkIndicator": "Yes",
          "inPlanNetworkIndicatorCode": "Y",
          "name": "Co-Payment",
          "serviceTypeCodes": [
            "A4",
            "A6",
            "22"
          ],
          "serviceTypes": [
            "Psychiatric",
            "Psychotherapy",
            "Social Work"
          ],
          "timeQualifier": "Visit",
          "timeQualifierCode": "27"
        },
        {
          "additionalInformation": [
            {
              "description": "Services rendered thru Client Specific Network"
            }
          ],
          "authOrCertIndicator": "Y",
          "benefitPercent": "0",
          "code": "A",
          "coverageLevel": "Individual",
          "coverageLevelCode": "IND",
          "eligibilityAdditionalInformation": {
            "codeListQualifier": "Mutually Defined",
            "codeListQualifierCode": "ZZ",
            "industry": "Office",
            "industryCode": "11"
          },
          "eligibilityAdditionalInformationList": [
            {
              "codeListQualifier": "Mutually Defined",
              "codeListQualifierCode": "ZZ",
              "industry": "Office",
              "industryCode": "11"
            }
          ],
          "inPlanNetworkIndicator": "Yes",
          "inPlanNetworkIndicatorCode": "Y",
          "name": "Co-Insurance",
          "serviceTypeCodes": [
            "7"
          ],
          "serviceTypes": [
            "Anesthesia"
          ]
        },
        {
          "authOrCertIndicator": "Y",
          "code": "CB",
          "inPlanNetworkIndicator": "Yes",
          "inPlanNetworkIndicatorCode": "Y",
          "name": "Coverage Basis",
          "serviceTypeCodes": [
            "7",
            "BB"
          ],
          "serviceTypes": [
            "Anesthesia",
            "Partial Hospitalization (Psychiatric)"
          ]
        },
        {
          "additionalInformation": [
            {
              "description": "Includes services provided by Client Specific Network"
            }
          ],
          "authOrCertIndicator": "Y",
          "benefitAmount": "0",
          "code": "C",
          "coverageLevel": "Individual",
          "coverageLevelCode": "IND",
          "eligibilityAdditionalInformation": {
            "codeListQualifier": "Mutually Defined",
            "codeListQualifierCode": "ZZ",
            "industry": "Office",
            "industryCode": "11"
          },
          "eligibilityAdditionalInformationList": [
            {
              "codeListQualifier": "Mutually Defined",
              "codeListQualifierCode": "ZZ",
              "industry": "Office",
              "industryCode": "11"
            }
          ],
          "inPlanNetworkIndicator": "Yes",
          "inPlanNetworkIndicatorCode": "Y",
          "name": "Deductible",
          "serviceTypeCodes": [
            "7"
          ],
          "serviceTypes": [
            "Anesthesia"
          ]
        },
        {
          "authOrCertIndicator": "Y",
          "benefitPercent": "0",
          "code": "A",
          "coverageLevel": "Individual",
          "coverageLevelCode": "IND",
          "eligibilityAdditionalInformation": {
            "codeListQualifier": "Mutually Defined",
            "codeListQualifierCode": "ZZ",
            "industry": "Office",
            "industryCode": "11"
          },
          "eligibilityAdditionalInformationList": [
            {
              "codeListQualifier": "Mutually Defined",
              "codeListQualifierCode": "ZZ",
              "industry": "Office",
              "industryCode": "11"
            }
          ],
          "inPlanNetworkIndicator": "Yes",
          "inPlanNetworkIndicatorCode": "Y",
          "name": "Co-Insurance",
          "serviceTypeCodes": [
            "7"
          ],
          "serviceTypes": [
            "Anesthesia"
          ]
        },
        {
          "authOrCertIndicator": "N",
          "benefitPercent": "0",
          "code": "A",
          "coverageLevel": "Individual",
          "coverageLevelCode": "IND",
          "eligibilityAdditionalInformation": {
            "codeListQualifier": "Mutually Defined",
            "codeListQualifierCode": "ZZ",
            "industry": "Outpatient Hospital",
            "industryCode": "22"
          },
          "eligibilityAdditionalInformationList": [
            {
              "codeListQualifier": "Mutually Defined",
              "codeListQualifierCode": "ZZ",
              "industry": "Outpatient Hospital",
              "industryCode": "22"
            }
          ],
          "inPlanNetworkIndicator": "Yes",
          "inPlanNetworkIndicatorCode": "Y",
          "name": "Co-Insurance",
          "serviceTypeCodes": [
            "4"
          ],
          "serviceTypes": [
            "Diagnostic X-Ray"
          ]
        },
        {
          "additionalInformation": [
            {
              "description": "Services rendered thru Client Specific Network"
            }
          ],
          "authOrCertIndicator": "N",
          "benefitPercent": "0",
          "code": "A",
          "coverageLevel": "Individual",
          "coverageLevelCode": "IND",
          "eligibilityAdditionalInformation": {
            "codeListQualifier": "Mutually Defined",
            "codeListQualifierCode": "ZZ",
            "industry": "Outpatient Hospital",
            "industryCode": "22"
          },
          "eligibilityAdditionalInformationList": [
            {
              "codeListQualifier": "Mutually Defined",
              "codeListQualifierCode": "ZZ",
              "industry": "Outpatient Hospital",
              "industryCode": "22"
            }
          ],
          "inPlanNetworkIndicator": "Yes",
          "inPlanNetworkIndicatorCode": "Y",
          "name": "Co-Insurance",
          "serviceTypeCodes": [
            "4"
          ],
          "serviceTypes": [
            "Diagnostic X-Ray"
          ]
        },
        {
          "additionalInformation": [
            {
              "description": "Includes services provided by Client Specific Network"
            }
          ],
          "authOrCertIndicator": "Y",
          "benefitAmount": "0",
          "code": "C",
          "coverageLevel": "Individual",
          "coverageLevelCode": "IND",
          "inPlanNetworkIndicator": "Yes",
          "inPlanNetworkIndicatorCode": "Y",
          "name": "Deductible",
          "serviceTypeCodes": [
            "BB"
          ],
          "serviceTypes": [
            "Partial Hospitalization (Psychiatric)"
          ]
        },
        {
          "additionalInformation": [
            {
              "description": " Provider is out of network based on NPI ID provided in request."
            }
          ],
          "code": "1",
          "name": "Active Coverage",
          "serviceTypeCodes": [
            "MH"
          ],
          "serviceTypes": [
            "Mental Health"
          ]
        },
        {
          "additionalInformation": [
            {
              "description": "Includes services provided by Client Specific Network"
            },
            {
              "description": "Coinsurance does apply to member's out-of-pocket maximum"
            },
            {
              "description": "Copay does apply to member's out-of-pocket maximum"
            },
            {
              "description": "Deductible does apply to member's out-of-pocket maximum"
            }
          ],
          "benefitAmount": "5760",
          "code": "G",
          "coverageLevel": "Family",
          "coverageLevelCode": "FAM",
          "inPlanNetworkIndicator": "Yes",
          "inPlanNetworkIndicatorCode": "Y",
          "name": "Out of Pocket (Stop Loss)",
          "serviceTypeCodes": [
            "30"
          ],
          "serviceTypes": [
            "Health Benefit Plan Coverage"
          ],
          "timeQualifier": "Remaining",
          "timeQualifierCode": "29"
        },
        {
          "additionalInformation": [
            {
              "description": "Includes services provided by Client Specific Network"
            }
          ],
          "benefitAmount": "500",
          "code": "C",
          "coverageLevel": "Family",
          "coverageLevelCode": "FAM",
          "inPlanNetworkIndicator": "Yes",
          "inPlanNetworkIndicatorCode": "Y",
          "name": "Deductible",
          "serviceTypeCodes": [
            "30"
          ],
          "serviceTypes": [
            "Health Benefit Plan Coverage"
          ],
          "timeQualifier": "Remaining",
          "timeQualifierCode": "29"
        },
        {
          "additionalInformation": [
            {
              "description": "Includes services provided by Client Specific Network"
            },
            {
              "description": "Copay does apply to member's out-of-pocket maximum"
            },
            {
              "description": "Coinsurance does apply to member's out-of-pocket maximum"
            },
            {
              "description": "Deductible does apply to member's out-of-pocket maximum"
            }
          ],
          "benefitAmount": "2760",
          "code": "G",
          "coverageLevel": "Individual",
          "coverageLevelCode": "IND",
          "inPlanNetworkIndicator": "Yes",
          "inPlanNetworkIndicatorCode": "Y",
          "name": "Out of Pocket (Stop Loss)",
          "serviceTypeCodes": [
            "30"
          ],
          "serviceTypes": [
            "Health Benefit Plan Coverage"
          ],
          "timeQualifier": "Remaining",
          "timeQualifierCode": "29"
        },
        {
          "additionalInformation": [
            {
              "description": "Includes services provided by Client Specific Network"
            }
          ],
          "benefitAmount": "250",
          "code": "C",
          "coverageLevel": "Individual",
          "coverageLevelCode": "IND",
          "inPlanNetworkIndicator": "Yes",
          "inPlanNetworkIndicatorCode": "Y",
          "name": "Deductible",
          "serviceTypeCodes": [
            "30"
          ],
          "serviceTypes": [
            "Health Benefit Plan Coverage"
          ],
          "timeQualifier": "Remaining",
          "timeQualifierCode": "29"
        },
        {
          "benefitAmount": "15000",
          "code": "C",
          "coverageLevel": "Family",
          "coverageLevelCode": "FAM",
          "inPlanNetworkIndicator": "No",
          "inPlanNetworkIndicatorCode": "N",
          "name": "Deductible",
          "serviceTypeCodes": [
            "30"
          ],
          "serviceTypes": [
            "Health Benefit Plan Coverage"
          ],
          "timeQualifier": "Remaining",
          "timeQualifierCode": "29"
        },
        {
          "additionalInformation": [
            {
              "description": "Coinsurance does apply to member's out-of-pocket maximum"
            },
            {
              "description": "Deductible does apply to member's out-of-pocket maximum"
            }
          ],
          "benefitAmount": "30000",
          "code": "G",
          "coverageLevel": "Family",
          "coverageLevelCode": "FAM",
          "inPlanNetworkIndicator": "No",
          "inPlanNetworkIndicatorCode": "N",
          "name": "Out of Pocket (Stop Loss)",
          "serviceTypeCodes": [
            "30"
          ],
          "serviceTypes": [
            "Health Benefit Plan Coverage"
          ],
          "timeQualifier": "Remaining",
          "timeQualifierCode": "29"
        },
        {
          "benefitAmount": "7500",
          "code": "C",
          "coverageLevel": "Individual",
          "coverageLevelCode": "IND",
          "inPlanNetworkIndicator": "No",
          "inPlanNetworkIndicatorCode": "N",
          "name": "Deductible",
          "serviceTypeCodes": [
            "30"
          ],
          "serviceTypes": [
            "Health Benefit Plan Coverage"
          ],
          "timeQualifier": "Remaining",
          "timeQualifierCode": "29"
        },
        {
          "additionalInformation": [
            {
              "description": "Deductible does apply to member's out-of-pocket maximum"
            },
            {
              "description": "Coinsurance does apply to member's out-of-pocket maximum"
            }
          ],
          "benefitAmount": "15000",
          "code": "G",
          "coverageLevel": "Individual",
          "coverageLevelCode": "IND",
          "inPlanNetworkIndicator": "No",
          "inPlanNetworkIndicatorCode": "N",
          "name": "Out of Pocket (Stop Loss)",
          "serviceTypeCodes": [
            "30"
          ],
          "serviceTypes": [
            "Health Benefit Plan Coverage"
          ],
          "timeQualifier": "Remaining",
          "timeQualifierCode": "29"
        }
      ],
      "controlNumber": "333344444",
      "eligibilitySearchId": "01922a35-a177-7171-b868-cd4974dd54df",
      "errors": [],
      "id": "ec_850e8400-e29b-41d4-a716-446655440003",
      "meta": {
        "applicationMode": "production",
        "outboundTraceId": "01J2VZA127GH93JT74HJU",
        "senderId": "030240928",
        "submitterId": "117151744",
        "traceId": "01J2VZA127GH93JT74HJU"
      },
      "payer": {
        "contactInformation": {
          "contacts": [
            {
              "communicationMode": "Telephone",
              "communicationNumber": "1234567890"
            },
            {
              "communicationMode": "Uniform Resource Locator (URL)",
              "communicationNumber": "website.company.com"
            }
          ]
        },
        "entityIdentifier": "Payer",
        "entityType": "Non-Person Entity",
        "federalTaxpayersIdNumber": "123412345",
        "name": "ABCDE"
      },
      "planDateInformation": {
        "eligibilityBegin": "20220102",
        "planBegin": "20240101",
        "planEnd": "20241231"
      },
      "planInformation": {
        "groupDescription": "ABCDE",
        "groupNumber": "12341234",
        "priorIdNumber": "1234567890"
      },
      "planStatus": [
        {
          "planDetails": "Open Access Plus",
          "serviceTypeCodes": [
            "30"
          ],
          "status": "Active Coverage",
          "statusCode": "1"
        },
        {
          "serviceTypeCodes": [
            "A7",
            "BC",
            "A8",
            "A4",
            "A5",
            "A6",
            "7",
            "4",
            "BB",
            "22"
          ],
          "status": "Active Coverage",
          "statusCode": "1"
        },
        {
          "serviceTypeCodes": [
            "MH"
          ],
          "status": "Active Coverage",
          "statusCode": "1"
        }
      ],
      "provider": {
        "entityIdentifier": "Provider",
        "entityType": "Non-Person Entity",
        "npi": "1234567890",
        "providerName": "ACME HEALTH SERVICES"
      },
      "reassociationKey": "123456789",
      "submitterTransactionIdentifier": "DEF123456799",
      "subscriber": {
        "address": {
          "address1": "1234 FIRST ST",
          "city": "NEW YORK",
          "postalCode": "123451111",
          "state": "WV"
        },
        "dateOfBirth": "19750101",
        "entityIdentifier": "Insured or Subscriber",
        "entityType": "Person",
        "firstName": "JANE",
        "gender": "F",
        "groupNumber": "123456789",
        "lastName": "DOE",
        "memberId": "1234567892",
        "middleName": "A"
      },
      "tradingPartnerServiceId": "123456789",
      "x12": "ISA*00*          *00*          *ZZ*STEDI          *01*117151744      *111111*1234*^*00501*123456782*0*P*>~GS*HB*STEDI*117151744*20240326*111000*1*X*005010X279A1~ST*271*1001*005010X279A1~BHT*0022*11*01J2VZA127GH93JT74HJU*20240326*1514~HL*1**20*1~NM1*PR*2*ABCDE*****FI*111000123~PER*IC**TE*123456789*UR*website.company.com~HL*2*1*21*1~NM1*1P*2*ACME HEALTH SERVICES*****XX*11234567890~HL*3*2*22*0~NM1*IL*1*DOE*JANE*A***MI*123456789~REF*6P*123456789*ABCDE~REF*Q4*123456789~N3*1234 FIRST ST~N4*NEW YORK*WV*123451111~DMG*D8*19750101*F~INS*Y*18*001*25~DTP*356*D8*20220102~DTP*346*D8*20240101~DTP*347*D8*20241231~EB*1**30**Open Access Plus~MSG*Complete Care Management~EB*G*FAM*30***23*6000.00*****Y~MSG*Includes services provided by Client Specific Network~MSG*Coinsurance does apply to member's out-of-pocket maximum~MSG*Copay does apply to member's out-of-pocket maximum~MSG*Deductible does apply to member's out-of-pocket maximum~EB*C*FAM*30***23*500.00*****Y~MSG*Includes services provided by Client Specific Network~EB*G*IND*30***23*3000.00*****Y~MSG*Includes services provided by Client Specific Network~MSG*Copay does apply to member's out-of-pocket maximum~MSG*Coinsurance does apply to member's out-of-pocket maximum~MSG*Deductible does apply to member's out-of-pocket maximum~EB*C*IND*30***23*250.00*****Y~MSG*Includes services provided by Client Specific Network~EB*C*FAM*30***23*15000.00*****N~EB*G*FAM*30***23*30000.00*****N~MSG*Coinsurance does apply to member's out-of-pocket maximum~MSG*Deductible does apply to member's out-of-pocket maximum~EB*A*IND*30*****.10****Y~EB*C*IND*30***23*7500.00*****N~EB*G*IND*30***23*15000.00*****N~MSG*Deductible does apply to member's out-of-pocket maximum~MSG*Coinsurance does apply to member's out-of-pocket maximum~EB*A*IND*30*****.50****N~EB*1**A7^BC^A8^A4^A5^A6^7^4^BB^22*********W~EB*C*IND*BC^A4^A6^4^22****0.00****N*Y~MSG*Includes services provided by Client Specific Network~III*ZZ*22~EB*C*IND*A8****0.00****N*Y~MSG*Includes services provided by Client Specific Network~EB*C*IND*A4^A6^4^22****0.00****N*Y~MSG*Includes services provided by Client Specific Network~III*ZZ*11~EB*C*IND*A4^A6^22****0.00****N*Y~MSG*Includes services provided by Client Specific Network~III*ZZ*02~EB*B*IND*A4^A6^22***27*20.00****N*Y~III*ZZ*11~EB*A*IND*A4^A6^4^22*****.00***N*Y~III*ZZ*11~EB*B*IND*A4^A6^22***27*20.00****N*Y~MSG*Included For Specific Services~III*ZZ*02~EB*A*IND*A4^A6^22*****.00***N*Y~MSG*Included For Specific Services~III*ZZ*02~EB*A*IND*A4^A6^22*****.00***N*Y~MSG*Services rendered thru Client Specific Network~III*ZZ*02~EB*A*IND*A4^A6^4^22*****.00***N*Y~MSG*Services rendered thru Client Specific Network~III*ZZ*11~EB*B*IND*A4^A6^22***27*20.00****N*Y~MSG*Services rendered thru Client Specific Network~III*ZZ*02~EB*B*IND*A4^A6^22***27*20.00****N*Y~MSG*Services rendered thru Client Specific Network~III*ZZ*11~EB*A*IND*7*****.00***Y*Y~MSG*Services rendered thru Client Specific Network~III*ZZ*11~EB*CB**7^BB********Y*Y~EB*C*IND*7****0.00****Y*Y~MSG*Includes services provided by Client Specific Network~III*ZZ*11~EB*A*IND*7*****.00***Y*Y~III*ZZ*11~EB*A*IND*4*****.00***N*Y~III*ZZ*22~EB*A*IND*4*****.00***N*Y~MSG*Services rendered thru Client Specific Network~III*ZZ*22~EB*C*IND*BB****0.00****Y*Y~MSG*Includes services provided by Client Specific Network~EB*1**MH~MSG* Provider is out of network based on NPI ID provided in request.~EB*G*FAM*30***29*5760.00*****Y~MSG*Includes services provided by Client Specific Network~MSG*Coinsurance does apply to member's out-of-pocket maximum~MSG*Copay does apply to member's out-of-pocket maximum~MSG*Deductible does apply to member's out-of-pocket maximum~EB*C*FAM*30***29*500.00*****Y~MSG*Includes services provided by Client Specific Network~EB*G*IND*30***29*2760.00*****Y~MSG*Includes services provided by Client Specific Network~MSG*Copay does apply to member's out-of-pocket maximum~MSG*Coinsurance does apply to member's out-of-pocket maximum~MSG*Deductible does apply to member's out-of-pocket maximum~EB*C*IND*30***29*250.00*****Y~MSG*Includes services provided by Client Specific Network~EB*C*FAM*30***29*15000.00*****N~EB*G*FAM*30***29*30000.00*****N~MSG*Coinsurance does apply to member's out-of-pocket maximum~MSG*Deductible does apply to member's out-of-pocket maximum~EB*C*IND*30***29*7500.00*****N~EB*G*IND*30***29*15000.00*****N~MSG*Deductible does apply to member's out-of-pocket maximum~MSG*Coinsurance does apply to member's out-of-pocket maximum~SE*119*1001~GE*1*1~IEA*1*123456782~"
    }
  ],
  "nextPageToken": "01932c61-2d4f-7d22-85fa-c7db2e13e771"
}
```

#### 400

ValidationException 400 response

**Schema:** `ValidationExceptionResponseContent`

**Properties:**

- **`fieldList`** (`array of ValidationExceptionField objects`): A list of specific failures encountered while validating the input.
A member can appear in this list more than once if it failed to satisfy multiple constraints.
- **`fieldList[].message`** (`string`) (required): A detailed description of the validation failure.
- **`fieldList[].path`** (`string`) (required): A JSONPointer expression to the structure member whose value failed to satisfy the modeled constraints.
- **`message`** (`string`) (required): A summary of the validation failure.
#### 401

UnauthorizedException 401 response

**Schema:** `UnauthorizedExceptionResponseContent`

**Properties:**

- **`code`** (`string`): Error classification code
- **`message`** (`string`) (required): Human-readable error message
#### 403

AccessDeniedException 403 response

**Schema:** `AccessDeniedExceptionResponseContent`

**Properties:**

- **`code`** (`string`): Error classification code
- **`message`** (`string`) (required): Human-readable error message
#### 404

ResourceNotFoundException 404 response

**Schema:** `ResourceNotFoundExceptionResponseContent`

**Properties:**

- **`code`** (`string`): Error classification code
- **`message`** (`string`) (required): Human-readable error message
#### 500

InternalFailureException 500 response

**Schema:** `InternalFailureExceptionResponseContent`

**Properties:**

- **`code`** (`string`): Error classification code
- **`message`** (`string`) (required): Human-readable error message


# 277CA Report
Source: https://www.stedi.com/docs/healthcare/api-reference/get-healthcare-reports-277


The 277CA claim acknowledgment indicates whether a claim was accepted or rejected and (if relevant) the reasons for rejection. This endpoint retrieves processed 277CA transactions from Stedi.

1. Call this endpoint with the `transactionId` of the 277CA you want to retrieve. You can retrieve the transaction ID through webhooks or through Stedi's API. [Learn more](/healthcare/receive-claim-responses#discover-processed-responses)
2. The endpoint returns the 277CA in JSON format.

## API Specification

Retrieve a 277CA claim acknowledgment in JSON format

**Endpoint:** `GET /change/medicalnetwork/reports/v2/{transactionId}/277`

**Base URL:** `https://healthcare.us.stedi.com/2024-04-01`

### Parameters

- **`transactionId`** (path) (required): A unique identifier for the processed 277 transaction within Stedi. This ID is included in the transaction processed event, which you can receive automatically through Stedi [webhooks](https://www.stedi.com/docs/healthcare/configure-webhooks). You can also retrieve it through the [Poll Transactions endpoint](https://www.stedi.com/docs/healthcare/api-reference/get-poll-transactions).
  - Type: `string`

### Responses

#### 200

ConvertReport277 200 response

**Schema:** `ConvertReport277ResponseContent`

**Properties:**

- **`meta`** (`object`) (required): Metadata that helps Stedi track and debug the response.
- **`meta.applicationMode`** (`string`): Whether this is a test or production ERA.
- **`meta.senderId`** (`string`): An identifier for the most recent sender of the ERA. This is usually not the original sender, so this value is unlikely to be a payer ID. When Stedi processes and delivers ERAs through the clearinghouse, this value is always `STEDI`.
- **`meta.traceId`** (`string`): Not currently used.
- **`meta.transactionId`** (`string`): The Stedi transaction identifier.
- **`transactions`** (`array of ReportsClaimAcknowledgmentResponse objects`): The payer's 277 response.
- **`transactions[].controlNumber`** (`string`): The control number the payer provided in the claim status response. This is used to identify the transaction.
- **`transactions[].payers`** (`array of ClaimAcknowledgmentPayer objects`): Information about the payer (or intermediary clearinghouse) and the claim status transactions included in the response.
- **`transactions[].payers[].centersForMedicareAndMedicaidServicePlanId`** (`string`): The payer's Centers for Medicare and Medicaid Services Plan ID. This is specifically for Health Plan ID (HPID) or Other Entity Identifier (OEID), both of which are no longer mandated for use.
- **`transactions[].payers[].claimStatusTransactions`** (`array of ClaimAcknowledgmentTransactions objects`): Claim status details.
- **`transactions[].payers[].claimStatusTransactions[].claimStatusDetails`** (`array of ClaimAcknowledgmentDetails objects`): More detailed status information. This includes information about the patient, provider, and services rendered.
- **`transactions[].payers[].claimStatusTransactions[].claimStatusDetails[].patientClaimStatusDetails`** (`array of PatientClaimStatusDetails objects`): Patient information and the status of claims related to the patient. You can use the `claims[].claimStatus.referencedTransactionTraceNumber` in this object to correlate the 277CA with the original claim.

Some payers batch acknowledgments for multiple claims into a single 277CA. In these cases, the 277CA will contain multiple `patientClaimStatusDetails` objects, each with its own `referencedTransactionTraceNumber` for the corresponding claim.
- **`transactions[].payers[].claimStatusTransactions[].claimStatusDetails[].patientClaimStatusDetails[].claims`** (`array of ReportsClaims objects`): Status information for the claim or service line.
- **`transactions[].payers[].claimStatusTransactions[].claimStatusDetails[].patientClaimStatusDetails[].claims[].claimStatus`** (`object`)
- **`transactions[].payers[].claimStatusTransactions[].claimStatusDetails[].patientClaimStatusDetails[].claims[].claimStatus.billTypeIdentifier`** (`string`): The bill type identification.
- **`transactions[].payers[].claimStatusTransactions[].claimStatusDetails[].patientClaimStatusDetails[].claims[].claimStatus.claimServiceBeginDate`** (`string`): The starting date of the service.
- **`transactions[].payers[].claimStatusTransactions[].claimStatusDetails[].patientClaimStatusDetails[].claims[].claimStatus.claimServiceDate`** (`string`): The date of the service.
- **`transactions[].payers[].claimStatusTransactions[].claimStatusDetails[].patientClaimStatusDetails[].claims[].claimStatus.claimServiceEndDate`** (`string`): The ending date of the service.
- **`transactions[].payers[].claimStatusTransactions[].claimStatusDetails[].patientClaimStatusDetails[].claims[].claimStatus.clearinghouseTraceNumber`** (`string`): The identifier the clearinghouse assigned to the original claim.
- **`transactions[].payers[].claimStatusTransactions[].claimStatusDetails[].patientClaimStatusDetails[].claims[].claimStatus.informationClaimStatuses`** (`array of InformationClaimStatus objects`): Claim status information.
- **`transactions[].payers[].claimStatusTransactions[].claimStatusDetails[].patientClaimStatusDetails[].claims[].claimStatus.informationClaimStatuses[].adjudicatedFinalizedDate`** (`string`): Not used.
- **`transactions[].payers[].claimStatusTransactions[].claimStatusDetails[].patientClaimStatusDetails[].claims[].claimStatus.informationClaimStatuses[].claimPaymentAmount`** (`string`): Not used.
- **`transactions[].payers[].claimStatusTransactions[].claimStatusDetails[].patientClaimStatusDetails[].claims[].claimStatus.informationClaimStatuses[].informationStatuses`** (`array of ClaimLevelStatus objects`)
- **`transactions[].payers[].claimStatusTransactions[].claimStatusDetails[].patientClaimStatusDetails[].claims[].claimStatus.informationClaimStatuses[].remittanceDate`** (`string`): Not used.
- **`transactions[].payers[].claimStatusTransactions[].claimStatusDetails[].patientClaimStatusDetails[].claims[].claimStatus.informationClaimStatuses[].remittanceTraceNumber`** (`string`): Not used.
- **`transactions[].payers[].claimStatusTransactions[].claimStatusDetails[].patientClaimStatusDetails[].claims[].claimStatus.informationClaimStatuses[].statusInformationActionCode`** (`string`): Code indicating the action the payer took on the claim in claim status reports
  - Allowed values: `U`, `WQ`
- **`transactions[].payers[].claimStatusTransactions[].claimStatusDetails[].patientClaimStatusDetails[].claims[].claimStatus.informationClaimStatuses[].statusInformationActionCodeValue`** (`string`): Human-readable descriptions for claim level status information action codes
  - Allowed values: `Reject`, `Accept`
- **`transactions[].payers[].claimStatusTransactions[].claimStatusDetails[].patientClaimStatusDetails[].claims[].claimStatus.informationClaimStatuses[].statusInformationEffectiveDate`** (`string`): The effective date of the status information.
- **`transactions[].payers[].claimStatusTransactions[].claimStatusDetails[].patientClaimStatusDetails[].claims[].claimStatus.informationClaimStatuses[].statusMessage`** (`string`): Additional free-form information about the claim status.
- **`transactions[].payers[].claimStatusTransactions[].claimStatusDetails[].patientClaimStatusDetails[].claims[].claimStatus.informationClaimStatuses[].totalClaimChargeAmount`** (`string`): The total amount of charges in the original claim, expressed as a decimal. This may differ from the total charges submitted due to claims processing instructions, such as claim splitting. Note that some HMO encounters supply zero as the amount of original charges.
- **`transactions[].payers[].claimStatusTransactions[].claimStatusDetails[].patientClaimStatusDetails[].claims[].claimStatus.patientAccountNumber`** (`string`): The patient control number provided in the original claim. Please use `referencedTransactionTraceNumber` to correlate the payer's response with the original claim.
- **`transactions[].payers[].claimStatusTransactions[].claimStatusDetails[].patientClaimStatusDetails[].claims[].claimStatus.pharmacyPrescriptionNumber`** (`string`): Not used.
- **`transactions[].payers[].claimStatusTransactions[].claimStatusDetails[].patientClaimStatusDetails[].claims[].claimStatus.referencedTransactionTraceNumber`** (`string`): The patient control number provided in the original claim. It's the same as:
   - Box 26 (Patient's Account No.) on the CMS-1500 submission form.
  - The `claimInformation.patientControlNumber` in JSON claim submissions.

We recommend using this value to correlate the payer's response with the original claim. When matching transactions, treat the patient control number as case-insensitive, even if the submitted value included both lower and uppercase characters.
- **`transactions[].payers[].claimStatusTransactions[].claimStatusDetails[].patientClaimStatusDetails[].claims[].claimStatus.tradingPartnerClaimNumber`** (`string`): The payer's unique identifier for the claim.
- **`transactions[].payers[].claimStatusTransactions[].claimStatusDetails[].patientClaimStatusDetails[].claims[].claimStatus.voucherIdentifier`** (`string`): Not used.
- **`transactions[].payers[].claimStatusTransactions[].claimStatusDetails[].patientClaimStatusDetails[].claims[].serviceLines`** (`array of ClaimAcknowledgmentServiceLines objects`): Information about specific services within a claim. This object is only included in the 277CA when the claim is rejected because of errors with the service line information provided.
- **`transactions[].payers[].claimStatusTransactions[].claimStatusDetails[].patientClaimStatusDetails[].claims[].serviceLines[].beginServiceLineDate`** (`string`): The starting date of the service.
- **`transactions[].payers[].claimStatusTransactions[].claimStatusDetails[].patientClaimStatusDetails[].claims[].serviceLines[].endServiceLineDate`** (`string`): The ending date of the service.
- **`transactions[].payers[].claimStatusTransactions[].claimStatusDetails[].patientClaimStatusDetails[].claims[].serviceLines[].lineItemControlNumber`** (`string`): A unique identifier for the service line that matches the `providerControlNumber` submitted in the original claim. You can use this value to correlate the payer's response with specific service lines from the original claim.
- **`transactions[].payers[].claimStatusTransactions[].claimStatusDetails[].patientClaimStatusDetails[].claims[].serviceLines[].service`** (`object`): Information about the service provided.
- **`transactions[].payers[].claimStatusTransactions[].claimStatusDetails[].patientClaimStatusDetails[].claims[].serviceLines[].service.amountPaid`** (`string`): The amount paid for the service, expressed as a decimal.
- **`transactions[].payers[].claimStatusTransactions[].claimStatusDetails[].patientClaimStatusDetails[].claims[].serviceLines[].service.chargeAmount`** (`string`): The submitted service charge, expressed as a decimal.
- **`transactions[].payers[].claimStatusTransactions[].claimStatusDetails[].patientClaimStatusDetails[].claims[].serviceLines[].service.procedureCode`** (`string`): The identifying code for the product or service.
- **`transactions[].payers[].claimStatusTransactions[].claimStatusDetails[].patientClaimStatusDetails[].claims[].serviceLines[].service.procedureModifiers`** (`array of strings`): Identifies special circumstances related to the performance of the service.
- **`transactions[].payers[].claimStatusTransactions[].claimStatusDetails[].patientClaimStatusDetails[].claims[].serviceLines[].service.revenueCode`** (`string`): The National Uniform Billing Committee Revenue Code.
- **`transactions[].payers[].claimStatusTransactions[].claimStatusDetails[].patientClaimStatusDetails[].claims[].serviceLines[].service.serviceIdQualifierCode`** (`string`): Code identifying the source of the procedure code in claim status reports.
  - Allowed values: `AD`, `ER`, `HC`, `HP`, `IV`, `NU`, `WK`
- **`transactions[].payers[].claimStatusTransactions[].claimStatusDetails[].patientClaimStatusDetails[].claims[].serviceLines[].service.serviceIdQualifierCodeValue`** (`string`): Human-readable descriptions for service ID qualifier codes.
  - Allowed values: `American Dental Association Codes`, `Jurisdiction Specific Procedure and Supply Codes`, `Health Care Financing Administration Common Procedural Coding System (HCPCS) Codes`, `Health Insurance Prospective Payment System (HIPPS) Skilled Nursing Facility Rate Code`, `Home Infusion EDI Coalition (HIEC) Product/Service Code`, `National Uniform Billing Committee (NUBC) UB92 Codes`, `Advanced Billing Concepts (ABC) Codes`
- **`transactions[].payers[].claimStatusTransactions[].claimStatusDetails[].patientClaimStatusDetails[].claims[].serviceLines[].service.submittedUnits`** (`string`): The number of units of service that were submitted, expressed as a decimal.
- **`transactions[].payers[].claimStatusTransactions[].claimStatusDetails[].patientClaimStatusDetails[].claims[].serviceLines[].serviceClaimStatuses`** (`array of ServiceClaimStatus objects`): The status of the specific service line.
- **`transactions[].payers[].claimStatusTransactions[].claimStatusDetails[].patientClaimStatusDetails[].claims[].serviceLines[].serviceClaimStatuses[].effectiveDate`** (`string`): The date the status information is effective.
- **`transactions[].payers[].claimStatusTransactions[].claimStatusDetails[].patientClaimStatusDetails[].claims[].serviceLines[].serviceClaimStatuses[].serviceStatuses`** (`array of ServiceLineStatus objects`): The status of the service.
- **`transactions[].payers[].claimStatusTransactions[].claimStatusDetails[].patientClaimStatusDetails[].claims[].serviceLines[].serviceLineDate`** (`string`): The date of the service.
- **`transactions[].payers[].claimStatusTransactions[].claimStatusDetails[].patientClaimStatusDetails[].dependent`** (`object`): Information about a dependent who received services related to the claim.
- **`transactions[].payers[].claimStatusTransactions[].claimStatusDetails[].patientClaimStatusDetails[].dependent.firstName`** (`string`): The first name of the dependent. Can be up to 35 characters.
- **`transactions[].payers[].claimStatusTransactions[].claimStatusDetails[].patientClaimStatusDetails[].dependent.lastName`** (`string`): The last name of the dependent. Can be up to 60 characters.
- **`transactions[].payers[].claimStatusTransactions[].claimStatusDetails[].patientClaimStatusDetails[].dependent.middleName`** (`string`): The middle name or initial of the dependent. Can be up to 25 characters.
- **`transactions[].payers[].claimStatusTransactions[].claimStatusDetails[].patientClaimStatusDetails[].dependent.suffix`** (`string`): The suffix of the dependent, such as Jr or III. Can be up to 10 characters.
- **`transactions[].payers[].claimStatusTransactions[].claimStatusDetails[].patientClaimStatusDetails[].subscriber`** (`object`): Information about the primary policy holder for the health plan.
- **`transactions[].payers[].claimStatusTransactions[].claimStatusDetails[].patientClaimStatusDetails[].subscriber.employerIdentificationNumber`** (`string`): The subscriber's employer identification number. This may be used in conjunction with a worker's compensation claim.
- **`transactions[].payers[].claimStatusTransactions[].claimStatusDetails[].patientClaimStatusDetails[].subscriber.firstName`** (`string`): The first name of the subscriber. Can be up to 35 characters.
- **`transactions[].payers[].claimStatusTransactions[].claimStatusDetails[].patientClaimStatusDetails[].subscriber.lastName`** (`string`): The last name of the subscriber. Can be up to 60 characters.
- **`transactions[].payers[].claimStatusTransactions[].claimStatusDetails[].patientClaimStatusDetails[].subscriber.memberId`** (`string`): The subscriber's member ID for their health plan.
- **`transactions[].payers[].claimStatusTransactions[].claimStatusDetails[].patientClaimStatusDetails[].subscriber.middleName`** (`string`): The middle name or initial of the subscriber. Can be up to 25 characters.
- **`transactions[].payers[].claimStatusTransactions[].claimStatusDetails[].patientClaimStatusDetails[].subscriber.organizationName`** (`string`): The subscriber's business name. Applicable when an employer submitted a worker's compensation claim, or other situations when an employer is the subscriber.
- **`transactions[].payers[].claimStatusTransactions[].claimStatusDetails[].patientClaimStatusDetails[].subscriber.standardUniqueHealthIdentifierForEachIndividualInTheUnitedStates`** (`string`): Deprecated; do not use.
- **`transactions[].payers[].claimStatusTransactions[].claimStatusDetails[].patientClaimStatusDetails[].subscriber.suffix`** (`string`): The suffix of the subscriber, such as Jr or III. Can be up to 10 characters.
- **`transactions[].payers[].claimStatusTransactions[].claimStatusDetails[].providerOFServiceInformationTraceIdentifier`** (`string`): An identifier for claims related to this provider.
- **`transactions[].payers[].claimStatusTransactions[].claimStatusDetails[].serviceProvider`** (`object`): Information about the service provider.
- **`transactions[].payers[].claimStatusTransactions[].claimStatusDetails[].serviceProvider.firstName`** (`string`): The provider's first name, when the provider is an individual. Can be up to 35 characters.
- **`transactions[].payers[].claimStatusTransactions[].claimStatusDetails[].serviceProvider.lastName`** (`string`): The provider's last name, when the provider is an individual. Can be up to 60 characters.
- **`transactions[].payers[].claimStatusTransactions[].claimStatusDetails[].serviceProvider.middleName`** (`string`): The provider's middle name or initial, when the provider is an individual. Can be up to 25 characters.
- **`transactions[].payers[].claimStatusTransactions[].claimStatusDetails[].serviceProvider.npi`** (`string`): The provider's National Provider Identifier.
- **`transactions[].payers[].claimStatusTransactions[].claimStatusDetails[].serviceProvider.organizationName`** (`string`): The provider's business name. Can be up to 60 characters.
- **`transactions[].payers[].claimStatusTransactions[].claimStatusDetails[].serviceProvider.spn`** (`string`): The provider's service provider number.
- **`transactions[].payers[].claimStatusTransactions[].claimStatusDetails[].serviceProvider.suffix`** (`string`): The provider's name suffix, when the provider is an individual. Can be up to 10 characters.
- **`transactions[].payers[].claimStatusTransactions[].claimStatusDetails[].serviceProvider.tin`** (`string`): The provider's tax identification number.
- **`transactions[].payers[].claimStatusTransactions[].claimStatusDetails[].serviceProviderClaimStatuses`** (`array of ServiceProviderClaimStatus objects`): Status information for claims related to the provider.
- **`transactions[].payers[].claimStatusTransactions[].claimStatusDetails[].serviceProviderClaimStatuses[].serviceProviderStatuses`** (`array of ProviderStatus objects`): The status of claims related to this provider.
- **`transactions[].payers[].claimStatusTransactions[].claimStatusDetails[].serviceProviderClaimStatuses[].serviceProviderStatuses[].entityIdentifierCode`** (`string`): Entity identifier code for providers in claim status reports
  - Allowed values: `36`, `40`, `41`, `AY`, `PR`
- **`transactions[].payers[].claimStatusTransactions[].claimStatusDetails[].serviceProviderClaimStatuses[].serviceProviderStatuses[].entityIdentifierCodeValue`** (`string`): Human-readable descriptions for provider entity identifier codes
  - Allowed values: `Employer`, `Receiver`, `Submitter`, `Clearinghouse`, `Payer`
- **`transactions[].payers[].claimStatusTransactions[].claimStatusDetails[].serviceProviderClaimStatuses[].serviceProviderStatuses[].healthCareClaimStatusCategoryCode`** (`string`): Code indicating the status category of the `statusCode` property. Visit [277CA code lists](https://www.stedi.com/docs/healthcare/claims-code-lists#claim-status-category-code) for a complete list.
  - Allowed values: `A0`, `A1`, `A2`, `A3`, `A4`, `A5`, `A6`, `A7`, `A8`, `DR01`, `DR02`, `DR03`, `DR04`, `DR05`, `DR06`, `DR07`, `DR08`, `P0`, `P1`, `P2`, `P3`, `P4`, `P5`, `F0`, `F1`, `F2`, `F3`, `F3F`, `F3N`, `F4`, `R0`, `R1`, `R3`, `R4`, `R5`, `R6`, `R7`, `R8`, `R9`, `R10`, `R11`, `R12`, `R13`, `R14`, `R15`, `R16`, `R17`, `E0`, `E1`, `E2`, `E3`, `E4`, `D0`
- **`transactions[].payers[].claimStatusTransactions[].claimStatusDetails[].serviceProviderClaimStatuses[].serviceProviderStatuses[].healthCareClaimStatusCategoryCodeValue`** (`string`): Description of the `healthCareClaimStatusCategoryCode` property. Visit [277CA code lists](https://www.stedi.com/docs/healthcare/claims-code-lists#claim-status-category-code) for a complete list.
- **`transactions[].payers[].claimStatusTransactions[].claimStatusDetails[].serviceProviderClaimStatuses[].serviceProviderStatuses[].statusCode`** (`string`)
  - Allowed values: `0`, `1`, `2`, `3`, `6`, `12`, `15`, `16`, `17`, `18`, `19`, `20`, `21`, `23`, `24`, `25`, `26`, `27`, `29`, `30`, `31`, `32`, `33`, `34`, `35`, `37`, `38`, `39`, `40`, `41`, `42`, `44`, `45`, `46`, `47`, `49`, `50`, `51`, `52`, `53`, `54`, `55`, `56`, `57`, `59`, `60`, `61`, `64`, `65`, `66`, `72`, `73`, `78`, `81`, `83`, `84`, `85`, `86`, `88`, `89`, `90`, `91`, `92`, `93`, `94`, `95`, `96`, `97`, `98`, `99`, `100`, `101`, `102`, `103`, `104`, `105`, `106`, `107`, `109`, `110`, `111`, `114`, `116`, `117`, `121`, `123`, `124`, `125`, `126`, `127`, `128`, `129`, `130`, `131`, `132`, `133`, `134`, `135`, `136`, `137`, `138`, `139`, `140`, `141`, `142`, `143`, `144`, `145`, `146`, `147`, `148`, `149`, `150`, `152`, `153`, `154`, `155`, `156`, `157`, `158`, `159`, `160`, `161`, `162`, `163`, `164`, `165`, `166`, `167`, `168`, `170`, `171`, `172`, `173`, `174`, `175`, `176`, `177`, `178`, `179`, `180`, `181`, `182`, `183`, `184`, `185`, `186`, `187`, `188`, `189`, `190`, `191`, `192`, `193`, `194`, `195`, `196`, `197`, `198`, `199`, `200`, `201`, `202`, `203`, `204`, `205`, `206`, `207`, `208`, `209`, `210`, `211`, `212`, `213`, `214`, `215`, `216`, `217`, `218`, `219`, `222`, `223`, `224`, `225`, `226`, `227`, `228`, `229`, `230`, `231`, `232`, `233`, `234`, `235`, `236`, `237`, `238`, `239`, `240`, `241`, `242`, `243`, `244`, `245`, `246`, `247`, `249`, `250`, `251`, `252`, `254`, `255`, `256`, `257`, `258`, `259`, `260`, `261`, `262`, `263`, `264`, `265`, `266`, `267`, `268`, `269`, `270`, `271`, `272`, `273`, `274`, `275`, `276`, `277`, `279`, `281`, `282`, `283`, `284`, `286`, `287`, `288`, `290`, `291`, `292`, `293`, `294`, `295`, `296`, `297`, `298`, `299`, `300`, `301`, `305`, `306`, `307`, `308`, `310`, `311`, `312`, `313`, `314`, `315`, `316`, `318`, `319`, `320`, `322`, `323`, `324`, `325`, `326`, `327`, `329`, `330`, `331`, `333`, `334`, `335`, `336`, `337`, `339`, `340`, `341`, `342`, `343`, `344`, `345`, `346`, `352`, `353`, `354`, `360`, `363`, `364`, `365`, `366`, `374`, `375`, `380`, `382`, `383`, `384`, `385`, `386`, `387`, `388`, `389`, `390`, `391`, `394`, `395`, `396`, `397`, `398`, `400`, `401`, `402`, `403`, `406`, `407`, `408`, `409`, `414`, `417`, `419`, `420`, `428`, `430`, `431`, `432`, `433`, `434`, `435`, `441`, `442`, `443`, `449`, `450`, `451`, `452`, `453`, `454`, `455`, `456`, `457`, `458`, `459`, `460`, `464`, `465`, `466`, `467`, `468`, `469`, `470`, `471`, `472`, `473`, `474`, `475`, `476`, `477`, `478`, `479`, `480`, `481`, `483`, `484`, `485`, `486`, `487`, `488`, `489`, `490`, `491`, `492`, `493`, `494`, `495`, `496`, `497`, `498`, `499`, `500`, `501`, `502`, `503`, `504`, `505`, `506`, `507`, `508`, `509`, `510`, `511`, `512`, `513`, `514`, `515`, `516`, `517`, `518`, `519`, `520`, `521`, `522`, `523`, `524`, `525`, `526`, `527`, `528`, `529`, `530`, `531`, `532`, `533`, `534`, `535`, `536`, `537`, `538`, `539`, `540`, `541`, `542`, `543`, `544`, `545`, `546`, `547`, `548`, `549`, `550`, `551`, `552`, `553`, `554`, `555`, `556`, `557`, `558`, `559`, `560`, `561`, `562`, `563`, `564`, `565`, `566`, `567`, `568`, `569`, `571`, `572`, `573`, `574`, `575`, `576`, `577`, `578`, `579`, `580`, `581`, `582`, `583`, `584`, `585`, `586`, `587`, `588`, `589`, `590`, `591`, `592`, `593`, `594`, `595`, `596`, `597`, `598`, `599`, `600`, `601`, `602`, `603`, `604`, `605`, `606`, `607`, `608`, `609`, `610`, `611`, `612`, `613`, `614`, `615`, `616`, `617`, `618`, `619`, `620`, `621`, `622`, `623`, `624`, `625`, `626`, `627`, `628`, `629`, `630`, `631`, `632`, `633`, `634`, `635`, `636`, `637`, `638`, `639`, `640`, `642`, `643`, `644`, `645`, `646`, `647`, `648`, `649`, `650`, `651`, `652`, `653`, `654`, `655`, `656`, `657`, `658`, `659`, `660`, `661`, `662`, `663`, `664`, `665`, `666`, `667`, `668`, `669`, `670`, `671`, `672`, `673`, `674`, `675`, `676`, `677`, `678`, `679`, `680`, `681`, `682`, `683`, `684`, `685`, `686`, `687`, `688`, `689`, `690`, `691`, `692`, `693`, `694`, `695`, `696`, `697`, `698`, `699`, `700`, `701`, `702`, `703`, `704`, `705`, `706`, `707`, `708`, `709`, `710`, `711`, `712`, `713`, `714`, `715`, `716`, `717`, `718`, `719`, `720`, `721`, `722`, `723`, `724`, `725`, `726`, `727`, `728`, `729`, `730`, `731`, `732`, `733`, `734`, `735`, `736`, `737`, `738`, `739`, `740`, `741`, `742`, `743`, `744`, `745`, `746`, `747`, `748`, `749`, `750`, `751`, `752`, `753`, `754`, `755`, `756`, `757`, `758`, `759`, `760`, `761`, `762`, `763`, `764`, `765`, `766`, `767`, `768`, `769`, `770`, `771`, `772`, `773`, `774`, `775`, `776`, `777`, `778`, `779`, `780`, `781`, `782`, `783`, `784`, `785`, `786`, `787`, `788`, `789`, `790`, `791`, `792`, `793`, `794`, `795`, `796`, `798`, `799`, `800`, `801`, `802`, `803`
- **`transactions[].payers[].claimStatusTransactions[].claimStatusDetails[].serviceProviderClaimStatuses[].serviceProviderStatuses[].statusCodeValue`** (`string`): The description of the `statusCode`.
- **`transactions[].payers[].claimStatusTransactions[].claimStatusDetails[].serviceProviderClaimStatuses[].statusInformationEffectiveDate`** (`string`): The date the status information is effective.
- **`transactions[].payers[].claimStatusTransactions[].claimTransactionBatchNumber`** (`string`): A tracking number Stedi assigns to the corresponding 837 claim. It's returned as the `claimReference.correlationId` in the response from our claim submission endpoints. You can use this value to correlate the 277CA with the original claim.
- **`transactions[].payers[].claimStatusTransactions[].provider`** (`object`): Information about the provider receiving the claim status details.
- **`transactions[].payers[].claimStatusTransactions[].provider.etin`** (`string`): The provider's Electronic Transmitter Identification Number.
- **`transactions[].payers[].claimStatusTransactions[].provider.firstName`** (`string`): The provider's first name. Can be up to 35 characters.
- **`transactions[].payers[].claimStatusTransactions[].provider.lastName`** (`string`): The provider's last name. Can be up to 60 characters.
- **`transactions[].payers[].claimStatusTransactions[].provider.middleName`** (`string`): The provider's middle name or initial. Can be up to 25 characters.
- **`transactions[].payers[].claimStatusTransactions[].provider.organizationName`** (`string`): The provider's business name. Can be up to 60 characters.
- **`transactions[].payers[].claimStatusTransactions[].providerClaimStatuses`** (`array of ProviderClaimStatus objects`): Overall status information for the claim.
- **`transactions[].payers[].claimStatusTransactions[].providerClaimStatuses[].providerStatuses`** (`array of ProviderStatus objects`): The status of the entire claim.
- **`transactions[].payers[].claimStatusTransactions[].providerClaimStatuses[].providerStatuses[].entityIdentifierCode`** (`string`): Entity identifier code for providers in claim status reports
  - Allowed values: `36`, `40`, `41`, `AY`, `PR`
- **`transactions[].payers[].claimStatusTransactions[].providerClaimStatuses[].providerStatuses[].entityIdentifierCodeValue`** (`string`): Human-readable descriptions for provider entity identifier codes
  - Allowed values: `Employer`, `Receiver`, `Submitter`, `Clearinghouse`, `Payer`
- **`transactions[].payers[].claimStatusTransactions[].providerClaimStatuses[].providerStatuses[].healthCareClaimStatusCategoryCode`** (`string`): Code indicating the status category of the `statusCode` property. Visit [277CA code lists](https://www.stedi.com/docs/healthcare/claims-code-lists#claim-status-category-code) for a complete list.
  - Allowed values: `A0`, `A1`, `A2`, `A3`, `A4`, `A5`, `A6`, `A7`, `A8`, `DR01`, `DR02`, `DR03`, `DR04`, `DR05`, `DR06`, `DR07`, `DR08`, `P0`, `P1`, `P2`, `P3`, `P4`, `P5`, `F0`, `F1`, `F2`, `F3`, `F3F`, `F3N`, `F4`, `R0`, `R1`, `R3`, `R4`, `R5`, `R6`, `R7`, `R8`, `R9`, `R10`, `R11`, `R12`, `R13`, `R14`, `R15`, `R16`, `R17`, `E0`, `E1`, `E2`, `E3`, `E4`, `D0`
- **`transactions[].payers[].claimStatusTransactions[].providerClaimStatuses[].providerStatuses[].healthCareClaimStatusCategoryCodeValue`** (`string`): Description of the `healthCareClaimStatusCategoryCode` property. Visit [277CA code lists](https://www.stedi.com/docs/healthcare/claims-code-lists#claim-status-category-code) for a complete list.
- **`transactions[].payers[].claimStatusTransactions[].providerClaimStatuses[].providerStatuses[].statusCode`** (`string`)
  - Allowed values: `0`, `1`, `2`, `3`, `6`, `12`, `15`, `16`, `17`, `18`, `19`, `20`, `21`, `23`, `24`, `25`, `26`, `27`, `29`, `30`, `31`, `32`, `33`, `34`, `35`, `37`, `38`, `39`, `40`, `41`, `42`, `44`, `45`, `46`, `47`, `49`, `50`, `51`, `52`, `53`, `54`, `55`, `56`, `57`, `59`, `60`, `61`, `64`, `65`, `66`, `72`, `73`, `78`, `81`, `83`, `84`, `85`, `86`, `88`, `89`, `90`, `91`, `92`, `93`, `94`, `95`, `96`, `97`, `98`, `99`, `100`, `101`, `102`, `103`, `104`, `105`, `106`, `107`, `109`, `110`, `111`, `114`, `116`, `117`, `121`, `123`, `124`, `125`, `126`, `127`, `128`, `129`, `130`, `131`, `132`, `133`, `134`, `135`, `136`, `137`, `138`, `139`, `140`, `141`, `142`, `143`, `144`, `145`, `146`, `147`, `148`, `149`, `150`, `152`, `153`, `154`, `155`, `156`, `157`, `158`, `159`, `160`, `161`, `162`, `163`, `164`, `165`, `166`, `167`, `168`, `170`, `171`, `172`, `173`, `174`, `175`, `176`, `177`, `178`, `179`, `180`, `181`, `182`, `183`, `184`, `185`, `186`, `187`, `188`, `189`, `190`, `191`, `192`, `193`, `194`, `195`, `196`, `197`, `198`, `199`, `200`, `201`, `202`, `203`, `204`, `205`, `206`, `207`, `208`, `209`, `210`, `211`, `212`, `213`, `214`, `215`, `216`, `217`, `218`, `219`, `222`, `223`, `224`, `225`, `226`, `227`, `228`, `229`, `230`, `231`, `232`, `233`, `234`, `235`, `236`, `237`, `238`, `239`, `240`, `241`, `242`, `243`, `244`, `245`, `246`, `247`, `249`, `250`, `251`, `252`, `254`, `255`, `256`, `257`, `258`, `259`, `260`, `261`, `262`, `263`, `264`, `265`, `266`, `267`, `268`, `269`, `270`, `271`, `272`, `273`, `274`, `275`, `276`, `277`, `279`, `281`, `282`, `283`, `284`, `286`, `287`, `288`, `290`, `291`, `292`, `293`, `294`, `295`, `296`, `297`, `298`, `299`, `300`, `301`, `305`, `306`, `307`, `308`, `310`, `311`, `312`, `313`, `314`, `315`, `316`, `318`, `319`, `320`, `322`, `323`, `324`, `325`, `326`, `327`, `329`, `330`, `331`, `333`, `334`, `335`, `336`, `337`, `339`, `340`, `341`, `342`, `343`, `344`, `345`, `346`, `352`, `353`, `354`, `360`, `363`, `364`, `365`, `366`, `374`, `375`, `380`, `382`, `383`, `384`, `385`, `386`, `387`, `388`, `389`, `390`, `391`, `394`, `395`, `396`, `397`, `398`, `400`, `401`, `402`, `403`, `406`, `407`, `408`, `409`, `414`, `417`, `419`, `420`, `428`, `430`, `431`, `432`, `433`, `434`, `435`, `441`, `442`, `443`, `449`, `450`, `451`, `452`, `453`, `454`, `455`, `456`, `457`, `458`, `459`, `460`, `464`, `465`, `466`, `467`, `468`, `469`, `470`, `471`, `472`, `473`, `474`, `475`, `476`, `477`, `478`, `479`, `480`, `481`, `483`, `484`, `485`, `486`, `487`, `488`, `489`, `490`, `491`, `492`, `493`, `494`, `495`, `496`, `497`, `498`, `499`, `500`, `501`, `502`, `503`, `504`, `505`, `506`, `507`, `508`, `509`, `510`, `511`, `512`, `513`, `514`, `515`, `516`, `517`, `518`, `519`, `520`, `521`, `522`, `523`, `524`, `525`, `526`, `527`, `528`, `529`, `530`, `531`, `532`, `533`, `534`, `535`, `536`, `537`, `538`, `539`, `540`, `541`, `542`, `543`, `544`, `545`, `546`, `547`, `548`, `549`, `550`, `551`, `552`, `553`, `554`, `555`, `556`, `557`, `558`, `559`, `560`, `561`, `562`, `563`, `564`, `565`, `566`, `567`, `568`, `569`, `571`, `572`, `573`, `574`, `575`, `576`, `577`, `578`, `579`, `580`, `581`, `582`, `583`, `584`, `585`, `586`, `587`, `588`, `589`, `590`, `591`, `592`, `593`, `594`, `595`, `596`, `597`, `598`, `599`, `600`, `601`, `602`, `603`, `604`, `605`, `606`, `607`, `608`, `609`, `610`, `611`, `612`, `613`, `614`, `615`, `616`, `617`, `618`, `619`, `620`, `621`, `622`, `623`, `624`, `625`, `626`, `627`, `628`, `629`, `630`, `631`, `632`, `633`, `634`, `635`, `636`, `637`, `638`, `639`, `640`, `642`, `643`, `644`, `645`, `646`, `647`, `648`, `649`, `650`, `651`, `652`, `653`, `654`, `655`, `656`, `657`, `658`, `659`, `660`, `661`, `662`, `663`, `664`, `665`, `666`, `667`, `668`, `669`, `670`, `671`, `672`, `673`, `674`, `675`, `676`, `677`, `678`, `679`, `680`, `681`, `682`, `683`, `684`, `685`, `686`, `687`, `688`, `689`, `690`, `691`, `692`, `693`, `694`, `695`, `696`, `697`, `698`, `699`, `700`, `701`, `702`, `703`, `704`, `705`, `706`, `707`, `708`, `709`, `710`, `711`, `712`, `713`, `714`, `715`, `716`, `717`, `718`, `719`, `720`, `721`, `722`, `723`, `724`, `725`, `726`, `727`, `728`, `729`, `730`, `731`, `732`, `733`, `734`, `735`, `736`, `737`, `738`, `739`, `740`, `741`, `742`, `743`, `744`, `745`, `746`, `747`, `748`, `749`, `750`, `751`, `752`, `753`, `754`, `755`, `756`, `757`, `758`, `759`, `760`, `761`, `762`, `763`, `764`, `765`, `766`, `767`, `768`, `769`, `770`, `771`, `772`, `773`, `774`, `775`, `776`, `777`, `778`, `779`, `780`, `781`, `782`, `783`, `784`, `785`, `786`, `787`, `788`, `789`, `790`, `791`, `792`, `793`, `794`, `795`, `796`, `798`, `799`, `800`, `801`, `802`, `803`
- **`transactions[].payers[].claimStatusTransactions[].providerClaimStatuses[].providerStatuses[].statusCodeValue`** (`string`): The description of the `statusCode`.
- **`transactions[].payers[].claimStatusTransactions[].providerClaimStatuses[].statusInformationEffectiveDate`** (`string`): The date the claim status information is effective.
- **`transactions[].payers[].entityIdentifierCode`** (`string`): Entity identifier code for payers in claim status reports
  - Allowed values: `AY`, `PR`
- **`transactions[].payers[].entityIdentifierCodeValue`** (`string`): Human-readable descriptions for payer entity identifier codes
  - Allowed values: `Clearinghouse`, `Payer`
- **`transactions[].payers[].etin`** (`string`): The payer's Electronic Transmitter Identification Number.
- **`transactions[].payers[].federalTaxpayerIdentificationNumber`** (`string`): The payer's Federal Taxpayer Identification Number.
- **`transactions[].payers[].organizationName`** (`string`): The payer or intermediary clearinghouse's business name.
- **`transactions[].payers[].payerContactInformation`** (`object`): The payer's business contact information.
- **`transactions[].payers[].payerContactInformation.contactMethods`** (`array of ContactMethods objects`): Each contact will have a single property set, except for phone with extension.
- **`transactions[].payers[].payerContactInformation.contactMethods[].electronicDataInterChangeAccessNumber`** (`string`): The Electronic Data Interchange Access Number.
- **`transactions[].payers[].payerContactInformation.contactMethods[].email`** (`string`): The email address.
- **`transactions[].payers[].payerContactInformation.contactMethods[].fax`** (`string`): The fax number.
- **`transactions[].payers[].payerContactInformation.contactMethods[].phone`** (`string`): The telephone number including the area code (if applicable). Phone numbers are formatted as AAABBBCCCC, where AAA represents the area code, BBB represents the telephone number prefix, and CCCC represents the telephone number. Phone numbers are provided without separators, such as dashes or parentheses. For example, `5551123345` for `555-112-3345`.
- **`transactions[].payers[].payerContactInformation.contactMethods[].phoneExtension`** (`string`): The telephone extension, if applicable.
- **`transactions[].payers[].payerContactInformation.contactName`** (`string`): The name of the contact person or entity.
- **`transactions[].payers[].payerIdentification`** (`string`): The payer's unique identifier.
- **`transactions[].referenceIdentification`** (`string`): A number the payer assigns to the transaction to identify it within their system.
- **`transactions[].transactionSetCreationDate`** (`string`): The date the payer created the transaction.
- **`transactions[].transactionSetCreationTime`** (`string`): The time the payer created the transaction, expressed in 24-hour clock time. May be formatted as HHMM, HHMMSS, HHMMSSD, or HHMMSSDD, where H = hours (00-23), M = minutes (00-59), S = integer seconds (00-59) and DD = decimal seconds; decimal seconds are expressed as follows: D = tenths (0-9) and DD = hundredths (00-99).

**Example:**

```json
{
  "meta": {
    "transactionId": "71716ec5-0e96-462f-bb77-869941bb27ab"
  },
  "transactions": [
    {
      "controlNumber": "1001",
      "payers": [
        {
          "claimStatusTransactions": [
            {
              "claimStatusDetails": [
                {
                  "patientClaimStatusDetails": [
                    {
                      "claims": [
                        {
                          "claimStatus": {
                            "claimServiceBeginDate": "20240101",
                            "claimServiceEndDate": "20240101",
                            "clearinghouseTraceNumber": "01J1SNT1FQC8ABWD44MAMBDYKA",
                            "informationClaimStatuses": [
                              {
                                "informationStatuses": [
                                  {
                                    "healthCareClaimStatusCategoryCode": "A1",
                                    "healthCareClaimStatusCategoryCodeValue": "Acknowledgement/Receipt - The claim/encounter has been received. This does not mean that the claim has been accepted for adjudication.",
                                    "statusCode": "20",
                                    "statusCodeValue": "Accepted for processing."
                                  }
                                ],
                                "statusInformationEffectiveDate": "20240702",
                                "totalClaimChargeAmount": "109.20"
                              }
                            ],
                            "patientAccountNumber": "11122233",
                            "referencedTransactionTraceNumber": "11122233"
                          }
                        }
                      ],
                      "subscriber": {
                        "firstName": "JOHN",
                        "lastName": "ANON",
                        "memberId": "U7777788888"
                      }
                    }
                  ],
                  "providerOFServiceInformationTraceIdentifier": "0",
                  "serviceProvider": {
                    "npi": "1235600834",
                    "organizationName": "THERAPY ASSOCIATES"
                  }
                }
              ],
              "claimTransactionBatchNumber": "01J1SNRJ0FP4ZE6EFWM4G4XB3N",
              "provider": {
                "etin": "1235600834",
                "organizationName": "TEST DATA HEALTH SERVICES, INC."
              },
              "providerClaimStatuses": [
                {
                  "providerStatuses": [
                    {
                      "healthCareClaimStatusCategoryCode": "A1",
                      "healthCareClaimStatusCategoryCodeValue": "Acknowledgement/Receipt - The claim/encounter has been received. This does not mean that the claim has been accepted for adjudication.",
                      "statusCode": "20",
                      "statusCodeValue": "Accepted for processing."
                    }
                  ],
                  "statusInformationEffectiveDate": "20240702"
                }
              ]
            }
          ],
          "entityIdentifierCode": "AY",
          "entityIdentifierCodeValue": "Clearinghouse",
          "organizationName": "STEDI INC"
        }
      ],
      "referenceIdentification": "1511096803",
      "transactionSetCreationDate": "20240702",
      "transactionSetCreationTime": "0815"
    }
  ]
}
```

#### 400

ValidationException 400 response

**Schema:** `ValidationExceptionResponseContent`

**Properties:**

- **`code`** (`string`): A code describing the type of validation failure.
- **`message`** (`string`) (required): A message describing the causes of the validation failure. There may be more than one.
#### 403

AccessDeniedException 403 response

**Schema:** `AccessDeniedExceptionResponseContent`

**Properties:**

- **`code`** (`string`): Error classification code
- **`message`** (`string`) (required): Human-readable error message
#### 404

ResourceNotFoundException 404 response

**Schema:** `ResourceNotFoundExceptionResponseContent`

**Properties:**

- **`code`** (`string`): Error classification code
- **`message`** (`string`) (required): Human-readable error message
#### 429

ThrottlingException 429 response

**Schema:** `ThrottlingExceptionResponseContent`

**Properties:**

- **`code`** (`string`): Error classification code
- **`message`** (`string`) (required): Human-readable error message
#### 500

InternalFailureException 500 response

**Schema:** `InternalFailureExceptionResponseContent`

**Properties:**

- **`code`** (`string`): Error classification code
- **`message`** (`string`) (required): Human-readable error message
#### 503

ServiceUnavailableException 503 response

**Schema:** `ServiceUnavailableExceptionResponseContent`

**Properties:**

- **`code`** (`string`)
- **`message`** (`string`) (required)
#### 504

GatewayTimeoutException 504 response

**Schema:** `GatewayTimeoutExceptionResponseContent`

**Properties:**

- **`code`** (`string`)
- **`message`** (`string`) (required)


# 835 ERA Report
Source: https://www.stedi.com/docs/healthcare/api-reference/get-healthcare-reports-835


The 835 Electronic Remittance Advice (ERA) contains details about payments for specific services and explanations for any adjustments or denials. This endpoint retrieves processed 835 ERA transactions from Stedi.

1. Call this endpoint with the `transactionId` of the 835 ERA you want to retrieve. You can retrieve the transaction ID through webhooks or through Stedi's API. [Learn more](/healthcare/receive-claim-responses#discover-processed-responses)
2. The endpoint returns the 835 ERA in JSON format.

Note that the payer won't send 835 ERAs for rejected claims. If a claim is rejected in a 277CA claim acknowledgment, there's no adjudication or payment information to report.

## Claim status [#claim-status]

You can't reliably determine a claim's status based on the amount paid in an 835 ERA. There are many instances in which a claim is accepted and the total amount paid is $0. For example, in Value-Based Care (VBC) scenarios, line item rates are usually $0, and providers are paid a flat rate per month or for a complete bundle of services.

Use the [Real-Time Claim Status API](/healthcare/api-reference/post-healthcare-claim-status) to check the claim's status instead.

## API Specification

Retrieve an 835 Electronic Remittance Advice (ERA) in JSON format

**Endpoint:** `GET /change/medicalnetwork/reports/v2/{transactionId}/835`

**Base URL:** `https://healthcare.us.stedi.com/2024-04-01`

### Parameters

- **`transactionId`** (path) (required): A unique identifier for the processed 835 transaction within Stedi. This ID is included in the transaction processed event, which you can receive automatically through Stedi [webhooks](https://www.stedi.com/docs/healthcare/configure-webhooks). You can also retrieve it through the [Poll Transactions endpoint](https://www.stedi.com/docs/healthcare/api-reference/get-poll-transactions).
  - Type: `string`

### Responses

#### 200

ConvertReport835 200 response

**Schema:** `ConvertReport835ResponseContent`

**Properties:**

- **`meta`** (`object`) (required): Metadata that helps Stedi track and debug the response.
- **`meta.applicationMode`** (`string`): Whether this is a test or production ERA.
- **`meta.senderId`** (`string`): An identifier for the most recent sender of the ERA. This is usually not the original sender, so this value is unlikely to be a payer ID. When Stedi processes and delivers ERAs through the clearinghouse, this value is always `STEDI`.
- **`meta.traceId`** (`string`): Not currently used.
- **`meta.transactionId`** (`string`): The Stedi transaction identifier.
- **`transactions`** (`array of ClaimPaymentAdviceResponse objects`): The payer's 835 response.
- **`transactions[].controlNumber`** (`string`): The control number the payer provided in the claim payment response. This is used to identify the transaction.
- **`transactions[].detailInfo`** (`array of DetailInfo objects`): Detailed information about claims in this payment advice.
- **`transactions[].detailInfo[].assignedNumber`** (`string`): A unique ID assigned to identify this set of claim information within the response.
- **`transactions[].detailInfo[].paymentInfo`** (`array of PaymentInfo objects`): Information relevant to the claim and claim payment, including the subscriber, providers, and service lines. Note that the amount paid may not match the claim amount, even when the claim was not denied. This can happen for several reasons, including adjustments and corrected balances due from other claims.
- **`transactions[].detailInfo[].paymentInfo[].claimAdjustments`** (`array of ClaimAdjustments objects`): Adjustments applied to this claim.
- **`transactions[].detailInfo[].paymentInfo[].claimAdjustments[].adjustmentAmount1`** (`string`): The amount of the adjustment. A negative amount increases the claim payment and a positive amount decreases the claim payment.
- **`transactions[].detailInfo[].paymentInfo[].claimAdjustments[].adjustmentAmount2`** (`string`): The amount of the adjustment. A negative amount increases the claim payment and a positive amount decreases the claim payment.
- **`transactions[].detailInfo[].paymentInfo[].claimAdjustments[].adjustmentAmount3`** (`string`): The amount of the adjustment. A negative amount increases the claim payment and a positive amount decreases the claim payment.
- **`transactions[].detailInfo[].paymentInfo[].claimAdjustments[].adjustmentAmount4`** (`string`): The amount of the adjustment. A negative amount increases the claim payment and a positive amount decreases the claim payment.
- **`transactions[].detailInfo[].paymentInfo[].claimAdjustments[].adjustmentAmount5`** (`string`): The amount of the adjustment. A negative amount increases the claim payment and a positive amount decreases the claim payment.
- **`transactions[].detailInfo[].paymentInfo[].claimAdjustments[].adjustmentAmount6`** (`string`): The amount of the adjustment. A negative amount increases the claim payment and a positive amount decreases the claim payment.
- **`transactions[].detailInfo[].paymentInfo[].claimAdjustments[].adjustmentQuantity1`** (`string`): The units of service being adjusted. A positive value decreases the covered days and a negative number increases the covered days.
- **`transactions[].detailInfo[].paymentInfo[].claimAdjustments[].adjustmentQuantity2`** (`string`): The units of service being adjusted. A positive value decreases the covered days and a negative number increases the covered days.
- **`transactions[].detailInfo[].paymentInfo[].claimAdjustments[].adjustmentQuantity3`** (`string`): The units of service being adjusted. A positive value decreases the covered days and a negative number increases the covered days.
- **`transactions[].detailInfo[].paymentInfo[].claimAdjustments[].adjustmentQuantity4`** (`string`): The units of service being adjusted. A positive value decreases the covered days and a negative number increases the covered days.
- **`transactions[].detailInfo[].paymentInfo[].claimAdjustments[].adjustmentQuantity5`** (`string`): The units of service being adjusted. A positive value decreases the covered days and a negative number increases the covered days.
- **`transactions[].detailInfo[].paymentInfo[].claimAdjustments[].adjustmentQuantity6`** (`string`): The units of service being adjusted. A positive value decreases the covered days and a negative number increases the covered days.
- **`transactions[].detailInfo[].paymentInfo[].claimAdjustments[].adjustmentReason1`** (`string`): A description identifying the detailed reason the adjustment was made.
- **`transactions[].detailInfo[].paymentInfo[].claimAdjustments[].adjustmentReason2`** (`string`): A description identifying the detailed reason the adjustment was made.
- **`transactions[].detailInfo[].paymentInfo[].claimAdjustments[].adjustmentReason3`** (`string`): A description identifying the detailed reason the adjustment was made.
- **`transactions[].detailInfo[].paymentInfo[].claimAdjustments[].adjustmentReason4`** (`string`): A description identifying the detailed reason the adjustment was made.
- **`transactions[].detailInfo[].paymentInfo[].claimAdjustments[].adjustmentReason5`** (`string`): A description identifying the detailed reason the adjustment was made.
- **`transactions[].detailInfo[].paymentInfo[].claimAdjustments[].adjustmentReason6`** (`string`): A description identifying the detailed reason the adjustment was made.
- **`transactions[].detailInfo[].paymentInfo[].claimAdjustments[].adjustmentReasonCode1`** (`string`): A code identifying the detailed reason the adjustment was made. Visit [Claim Adjustment Reason Codes](https://x12.org/codes/claim-adjustment-reason-codes) in the X12 documentation for a complete list.
- **`transactions[].detailInfo[].paymentInfo[].claimAdjustments[].adjustmentReasonCode2`** (`string`): A code identifying the detailed reason the adjustment was made. Visit [Claim Adjustment Reason Codes](https://x12.org/codes/claim-adjustment-reason-codes) in the X12 documentation for a complete list.
- **`transactions[].detailInfo[].paymentInfo[].claimAdjustments[].adjustmentReasonCode3`** (`string`): A code identifying the detailed reason the adjustment was made. Visit [Claim Adjustment Reason Codes](https://x12.org/codes/claim-adjustment-reason-codes) in the X12 documentation for a complete list.
- **`transactions[].detailInfo[].paymentInfo[].claimAdjustments[].adjustmentReasonCode4`** (`string`): A code identifying the detailed reason the adjustment was made. Visit [Claim Adjustment Reason Codes](https://x12.org/codes/claim-adjustment-reason-codes) in the X12 documentation for a complete list.
- **`transactions[].detailInfo[].paymentInfo[].claimAdjustments[].adjustmentReasonCode5`** (`string`): A code identifying the detailed reason the adjustment was made. Visit [Claim Adjustment Reason Codes](https://x12.org/codes/claim-adjustment-reason-codes) in the X12 documentation for a complete list.
- **`transactions[].detailInfo[].paymentInfo[].claimAdjustments[].adjustmentReasonCode6`** (`string`): A code identifying the detailed reason the adjustment was made. Visit [Claim Adjustment Reason Codes](https://x12.org/codes/claim-adjustment-reason-codes) in the X12 documentation for a complete list.
- **`transactions[].detailInfo[].paymentInfo[].claimAdjustments[].claimAdjustmentGroupCode`** (`string`): Defines the category of adjustment reason codes that explain why a claim payment was adjusted. These codes categorize adjustments into contractual obligations, payer-initiated reductions, patient responsibilities, and other adjustments.
  - Allowed values: `CO`, `OA`, `PI`, `PR`
- **`transactions[].detailInfo[].paymentInfo[].claimAdjustments[].claimAdjustmentGroupCodeValue`** (`string`): The description of the `claimAdjustmentGroupCode`.
- **`transactions[].detailInfo[].paymentInfo[].claimContactInformation`** (`array of ReportsContactInformation objects`): Contact information for claim-related communications.
- **`transactions[].detailInfo[].paymentInfo[].claimContactInformation[].contactMethods`** (`array of ContactMethod objects`)
- **`transactions[].detailInfo[].paymentInfo[].claimContactInformation[].contactMethods[].email`** (`string`): The email address.
- **`transactions[].detailInfo[].paymentInfo[].claimContactInformation[].contactMethods[].fax`** (`string`): The fax number.
- **`transactions[].detailInfo[].paymentInfo[].claimContactInformation[].contactMethods[].phone`** (`string`): The telephone number including the area code (if applicable). Phone numbers are formatted as AAABBBCCCC, where AAA represents the area code, BBB represents the telephone number prefix, and CCCC represents the telephone number. Phone numbers are provided without separators, such as dashes or parentheses. For example, `5551123345` for `555-112-3345`.
- **`transactions[].detailInfo[].paymentInfo[].claimContactInformation[].contactMethods[].phoneExtension`** (`string`): The telephone extension, if applicable.
- **`transactions[].detailInfo[].paymentInfo[].claimContactInformation[].contactName`** (`string`): The name of the contact person or entity.
- **`transactions[].detailInfo[].paymentInfo[].claimPaymentInfo`** (`object`): Claim payment information for the payment info structure.
- **`transactions[].detailInfo[].paymentInfo[].claimPaymentInfo.claimFilingIndicatorCode`** (`string`): Identifies the type of health plan or insurance coverage under which the claim was filed. These codes indicate the specific type of insurance arrangement, government program, or coverage type that applies to the claim.
  - Allowed values: `12`, `13`, `14`, `15`, `16`, `17`, `AM`, `CH`, `DS`, `HM`, `LI`, `LM`, `MA`, `MB`, `MC`, `OF`, `TV`, `VA`, `WC`, `ZZ`
- **`transactions[].detailInfo[].paymentInfo[].claimPaymentInfo.claimFrequencyCode`** (`string`): A code identifying the frequency of the claim. It matches what the payer received in the original claim. Visit [Bill Type Frequency Codes](https://www.nubc.org/system/files/media/file/2019/06/billTypeFrequencyCodes837.pdf) for a complete list and definitions.
- **`transactions[].detailInfo[].paymentInfo[].claimPaymentInfo.claimPaymentAmount`** (`string`): The total amount of the claim payment, expressed as a decimal. This value can be positive, zero, or negative.
- **`transactions[].detailInfo[].paymentInfo[].claimPaymentInfo.claimStatusCode`** (`string`): Indicates the status of the claim after adjudication by the payer. These codes determine whether the claim was processed as primary, secondary, tertiary, denied, forwarded to other payers, or represents special processing situations like reversals or predeterminations.
  - Allowed values: `1`, `2`, `3`, `4`, `19`, `20`, `21`, `22`, `23`, `25`
- **`transactions[].detailInfo[].paymentInfo[].claimPaymentInfo.diagnosisRelatedGroupDRGCode`** (`string`): Code indicating a patient's diagnosis group based on their medical symptoms.
- **`transactions[].detailInfo[].paymentInfo[].claimPaymentInfo.diagnosisRelatedGroupDRGWeight`** (`string`): The adjudicated diagnosis-related group (DRG) weight.
- **`transactions[].detailInfo[].paymentInfo[].claimPaymentInfo.dischargeFraction`** (`string`): The adjudicated discharge fraction.
- **`transactions[].detailInfo[].paymentInfo[].claimPaymentInfo.facilityTypeCode`** (`string`): A code identifying where services were or may be performed. This is the [Place of Service Codes](https://www.cms.gov/medicare/coding-billing/place-of-service-codes/code-sets) for Professional or Dental Services.
- **`transactions[].detailInfo[].paymentInfo[].claimPaymentInfo.patientControlNumber`** (`string`): The patient control number provided in the original claim. You can use this value to correlate the payer's response with the original claim.
- **`transactions[].detailInfo[].paymentInfo[].claimPaymentInfo.patientResponsibilityAmount`** (`string`): The amount the patient is responsible for paying. This can include the deductible, non-covered services, co-pay, and co-insurance. This is not used for reversals.
- **`transactions[].detailInfo[].paymentInfo[].claimPaymentInfo.payerClaimControlNumber`** (`string`): The payer's internal control number for the claim.
- **`transactions[].detailInfo[].paymentInfo[].claimPaymentInfo.totalClaimChargeAmount`** (`string`): The total amount of submitted charges for this claim, expressed as a decimal. This can be positive, zero, or negative. For example, this may contain a negative charge for a reversal claim.
- **`transactions[].detailInfo[].paymentInfo[].claimReceivedDate`** (`string`): The date the claim was received by the payer.
- **`transactions[].detailInfo[].paymentInfo[].claimStatementPeriodEnd`** (`string`): The claim period end date in ISO 8601 format (YYYY-MM-DD). This format is intentionally inconsistent with other date properties to maintain backwards compatibility.
- **`transactions[].detailInfo[].paymentInfo[].claimStatementPeriodStart`** (`string`): The claim period start date in ISO 8601 format (YYYY-MM-DD). This format is intentionally inconsistent with other date properties to maintain backwards compatibility.

If the response doesn’t include a `claimStatementPeriodEnd`, you should assume the end date is the same as the start date.
- **`transactions[].detailInfo[].paymentInfo[].claimSupplementalInformation`** (`object`): Additional information about the claim payment. All values are expressed as decimals.
- **`transactions[].detailInfo[].paymentInfo[].claimSupplementalInformation.coverageAmount`** (`string`): The total covered charges. This is the sum of the original submitted provider charges that are considered for payment under the health plan. This excludes charges considered not covered, but includes reductions to payments of covered services, such as patient deductibles.
- **`transactions[].detailInfo[].paymentInfo[].claimSupplementalInformation.discountAmount`** (`string`): This is the Prompt Pay Discount Amount.
- **`transactions[].detailInfo[].paymentInfo[].claimSupplementalInformation.federalMedicareOrMedicaidPaymentMandateCategory1`** (`string`): Federal Medicare or Medicaid Payment Mandate - Category 1.
- **`transactions[].detailInfo[].paymentInfo[].claimSupplementalInformation.federalMedicareOrMedicaidPaymentMandateCategory2`** (`string`): Federal Medicare or Medicaid Payment Mandate - Category 2.
- **`transactions[].detailInfo[].paymentInfo[].claimSupplementalInformation.federalMedicareOrMedicaidPaymentMandateCategory3`** (`string`): Federal Medicare or Medicaid Payment Mandate - Category 3.
- **`transactions[].detailInfo[].paymentInfo[].claimSupplementalInformation.federalMedicareOrMedicaidPaymentMandateCategory4`** (`string`): Federal Medicare or Medicaid Payment Mandate - Category 4.
- **`transactions[].detailInfo[].paymentInfo[].claimSupplementalInformation.federalMedicareOrMedicaidPaymentMandateCategory5`** (`string`): Federal Medicare or Medicaid Payment Mandate - Category 5.
- **`transactions[].detailInfo[].paymentInfo[].claimSupplementalInformation.interest`** (`string`): The interest amount.
- **`transactions[].detailInfo[].paymentInfo[].claimSupplementalInformation.negativeLedgerBalance`** (`string`): The negative ledger balance. Only used by Medicare Part A and Medicare Part B.
- **`transactions[].detailInfo[].paymentInfo[].claimSupplementalInformation.patientAmountPaid`** (`string`): The amount the patient has already paid.
- **`transactions[].detailInfo[].paymentInfo[].claimSupplementalInformation.perDayLimit`** (`string`): The per day limit.
- **`transactions[].detailInfo[].paymentInfo[].claimSupplementalInformation.tax`** (`string`): The total taxes.
- **`transactions[].detailInfo[].paymentInfo[].claimSupplementalInformation.totalClaimBeforeTaxes`** (`string`): The total claim amount before taxes.
- **`transactions[].detailInfo[].paymentInfo[].claimSupplementalInformationQuantities`** (`object`): Additional quantity information about the claim payment. All values are expressed as decimals.
- **`transactions[].detailInfo[].paymentInfo[].claimSupplementalInformationQuantities.coInsuredActual`** (`string`): The actual amount of co-insurance designated by the health plan.
- **`transactions[].detailInfo[].paymentInfo[].claimSupplementalInformationQuantities.coveredActual`** (`string`): The number of days covered.
- **`transactions[].detailInfo[].paymentInfo[].claimSupplementalInformationQuantities.federalMedicareOrMedicaidPaymentMandateCategory1`** (`string`): Federal Medicare or Medicaid Payment Mandate - Category 1.
- **`transactions[].detailInfo[].paymentInfo[].claimSupplementalInformationQuantities.federalMedicareOrMedicaidPaymentMandateCategory2`** (`string`): Federal Medicare or Medicaid Payment Mandate - Category 2.
- **`transactions[].detailInfo[].paymentInfo[].claimSupplementalInformationQuantities.federalMedicareOrMedicaidPaymentMandateCategory3`** (`string`): Federal Medicare or Medicaid Payment Mandate - Category 3.
- **`transactions[].detailInfo[].paymentInfo[].claimSupplementalInformationQuantities.federalMedicareOrMedicaidPaymentMandateCategory4`** (`string`): Federal Medicare or Medicaid Payment Mandate - Category 4.
- **`transactions[].detailInfo[].paymentInfo[].claimSupplementalInformationQuantities.federalMedicareOrMedicaidPaymentMandateCategory5`** (`string`): Federal Medicare or Medicaid Payment Mandate - Category 5.
- **`transactions[].detailInfo[].paymentInfo[].claimSupplementalInformationQuantities.lifeTimeReserveActual`** (`string`): The actual lifetime reserve days.
- **`transactions[].detailInfo[].paymentInfo[].claimSupplementalInformationQuantities.lifeTimeReserveEstimated`** (`string`): The estimated lifetime reserve days.
- **`transactions[].detailInfo[].paymentInfo[].claimSupplementalInformationQuantities.nonCoveredEstimated`** (`string`): The non-covered estimated amount.
- **`transactions[].detailInfo[].paymentInfo[].claimSupplementalInformationQuantities.notReplacedBloodUnits`** (`string`): The number of non-replaced blood units.
- **`transactions[].detailInfo[].paymentInfo[].claimSupplementalInformationQuantities.outlierDays`** (`string`): The number of outlier days.
- **`transactions[].detailInfo[].paymentInfo[].claimSupplementalInformationQuantities.prescription`** (`string`): The prescription.
- **`transactions[].detailInfo[].paymentInfo[].claimSupplementalInformationQuantities.visits`** (`string`): The number of visits.
- **`transactions[].detailInfo[].paymentInfo[].correctedPatientOrInsuredName`** (`object`): Used to provide corrected information about the insured.
- **`transactions[].detailInfo[].paymentInfo[].correctedPatientOrInsuredName.firstName`** (`string`): The insured's first name.
- **`transactions[].detailInfo[].paymentInfo[].correctedPatientOrInsuredName.insuredsChangedUniqueIdentificationNumber`** (`string`): The insured's changed unique identification number.
- **`transactions[].detailInfo[].paymentInfo[].correctedPatientOrInsuredName.lastName`** (`string`): The insured's last name.
- **`transactions[].detailInfo[].paymentInfo[].correctedPatientOrInsuredName.middleName`** (`string`): The insured's middle name or initial of the insured.
- **`transactions[].detailInfo[].paymentInfo[].correctedPatientOrInsuredName.organizationName`** (`string`): The business name of the insured when they are not an individual.
- **`transactions[].detailInfo[].paymentInfo[].correctedPatientOrInsuredName.suffix`** (`string`): The insured's name suffix, such as Jr. or III.
- **`transactions[].detailInfo[].paymentInfo[].correctedPriorityPayer`** (`object`): Information about the corrected priority payer. Used when the current payer believes that another payer has priority for making a payment and the claim is not being automatically transferred to that payer.
- **`transactions[].detailInfo[].paymentInfo[].correctedPriorityPayer.blueCrossBlueShieldAssociationPlanCode`** (`string`): The provider's Blue Cross Blue Shield Association Plan Code.
- **`transactions[].detailInfo[].paymentInfo[].correctedPriorityPayer.centersForMedicareAndMedicaidServicesPlanId`** (`string`): Used to report the provider's Health Plan ID (HPID) or Other Entity Identifier (OEID).
- **`transactions[].detailInfo[].paymentInfo[].correctedPriorityPayer.nationalAssociationOfInsuranceCommissionersIdentification`** (`string`): The provider's National Association of Insurance Commissioners (NAIC) number.
- **`transactions[].detailInfo[].paymentInfo[].correctedPriorityPayer.organizationName`** (`string`): The provider's business name (when the provider is not an individual) or the provider's last name (when the provider is an individual).
- **`transactions[].detailInfo[].paymentInfo[].correctedPriorityPayer.payorId`** (`string`): The provider's Payer Identification number.
- **`transactions[].detailInfo[].paymentInfo[].correctedPriorityPayer.pharmacyProcessorNumber`** (`string`): The provider's Pharmacy Processor Number.
- **`transactions[].detailInfo[].paymentInfo[].correctedPriorityPayer.taxId`** (`string`): The provider's Federal Tax Identification Number.
- **`transactions[].detailInfo[].paymentInfo[].coverageExpirationDate`** (`string`): The expiration date of the patient's coverage.
- **`transactions[].detailInfo[].paymentInfo[].crossoverCarrier`** (`object`): Information about the crossover carrier. The crossover carrier is defined as any payer to which the claim is transferred for further payment after the current payer has finalized it.
- **`transactions[].detailInfo[].paymentInfo[].crossoverCarrier.blueCrossBlueShieldAssociationPlanCode`** (`string`): The provider's Blue Cross Blue Shield Association Plan Code.
- **`transactions[].detailInfo[].paymentInfo[].crossoverCarrier.centersForMedicareAndMedicaidServicesPlanId`** (`string`): Used to report the provider's Health Plan ID (HPID) or Other Entity Identifier (OEID).
- **`transactions[].detailInfo[].paymentInfo[].crossoverCarrier.nationalAssociationOfInsuranceCommissionersIdentification`** (`string`): The provider's National Association of Insurance Commissioners (NAIC) number.
- **`transactions[].detailInfo[].paymentInfo[].crossoverCarrier.organizationName`** (`string`): The provider's business name (when the provider is not an individual) or the provider's last name (when the provider is an individual).
- **`transactions[].detailInfo[].paymentInfo[].crossoverCarrier.payorId`** (`string`): The provider's Payer Identification number.
- **`transactions[].detailInfo[].paymentInfo[].crossoverCarrier.pharmacyProcessorNumber`** (`string`): The provider's Pharmacy Processor Number.
- **`transactions[].detailInfo[].paymentInfo[].crossoverCarrier.taxId`** (`string`): The provider's Federal Tax Identification Number.
- **`transactions[].detailInfo[].paymentInfo[].inpatientAdjudication`** (`object`): Information about the adjudication of inpatient claims.
- **`transactions[].detailInfo[].paymentInfo[].inpatientAdjudication.claimDRGAmount`** (`string`): The Diagnosis Related Group (DRG) amount.
- **`transactions[].detailInfo[].paymentInfo[].inpatientAdjudication.claimDisproportionateShareAmount`** (`string`): The Disproportionate Share amount.
- **`transactions[].detailInfo[].paymentInfo[].inpatientAdjudication.claimIndirectTeachingAmount`** (`string`): The indirect teaching amount.
- **`transactions[].detailInfo[].paymentInfo[].inpatientAdjudication.claimMSPPassThroughAmount`** (`string`): The Medicare Secondary Payer (MSP) pass-through amount.
- **`transactions[].detailInfo[].paymentInfo[].inpatientAdjudication.claimPPSCapitalAmount`** (`string`): The total Prospective Payment System (PPS) capital amount.
- **`transactions[].detailInfo[].paymentInfo[].inpatientAdjudication.claimPPSCapitalOutlierAmount`** (`string`): The Prospective Payment System (PPS) Capital Outlier amount.
- **`transactions[].detailInfo[].paymentInfo[].inpatientAdjudication.claimPaymentRemarkCode1`** (`string`): The [Claim Payment Remark Code](https://x12.org/codes/remittance-advice-remark-codes).
- **`transactions[].detailInfo[].paymentInfo[].inpatientAdjudication.claimPaymentRemarkCode2`** (`string`): A [Claim Payment Remark Code](https://x12.org/codes/remittance-advice-remark-codes).
- **`transactions[].detailInfo[].paymentInfo[].inpatientAdjudication.claimPaymentRemarkCode3`** (`string`): A [Claim Payment Remark Code](https://x12.org/codes/remittance-advice-remark-codes).
- **`transactions[].detailInfo[].paymentInfo[].inpatientAdjudication.claimPaymentRemarkCode4`** (`string`): A [Claim Payment Remark Code](https://x12.org/codes/remittance-advice-remark-codes).
- **`transactions[].detailInfo[].paymentInfo[].inpatientAdjudication.claimPaymentRemarkCode5`** (`string`): A [Claim Payment Remark Code](https://x12.org/codes/remittance-advice-remark-codes).
- **`transactions[].detailInfo[].paymentInfo[].inpatientAdjudication.costReportDayCount`** (`string`): The number of cost report days.
- **`transactions[].detailInfo[].paymentInfo[].inpatientAdjudication.coveredDaysOrVisitsCount`** (`string`): The number of days or visits covered by the health plan.
- **`transactions[].detailInfo[].paymentInfo[].inpatientAdjudication.lifetimePsychiatricDaysCount`** (`string`): The number of psychiatric days for the patient's lifetime.
- **`transactions[].detailInfo[].paymentInfo[].inpatientAdjudication.nonPayableProfessionalComponentAmount`** (`string`): The professional component amount billed but not payable.
- **`transactions[].detailInfo[].paymentInfo[].inpatientAdjudication.oldCapitalAmount`** (`string`): The old capital amount.
- **`transactions[].detailInfo[].paymentInfo[].inpatientAdjudication.ppsCapitalDSHDRGAmount`** (`string`): The Prospective Payment System (PPS) capital, disproportionate share, hospital Diagnosis Related Group (DRG) amount.
- **`transactions[].detailInfo[].paymentInfo[].inpatientAdjudication.ppsCapitalExceptionAmount`** (`string`): The capital exception amount.
- **`transactions[].detailInfo[].paymentInfo[].inpatientAdjudication.ppsCapitalFSPDRGAmount`** (`string`): The Prospective Payment System (PPS) capital, federal specific portion, Diagnosis Related Group (DRG) amount.
- **`transactions[].detailInfo[].paymentInfo[].inpatientAdjudication.ppsCapitalHSPDRGAmount`** (`string`): The Prospective Payment System (PPS) capital, hospital specific portion, Diagnosis Related Group (DRG), amount.
- **`transactions[].detailInfo[].paymentInfo[].inpatientAdjudication.ppsCapitalIMEAmount`** (`string`): The Prospective Payment System (PPS) capital indirect medical education claim amount.
- **`transactions[].detailInfo[].paymentInfo[].inpatientAdjudication.ppsOperatingFederalSpecificDRGAmount`** (`string`): The federal specific Diagnosis Related Group (DRG) amount.
- **`transactions[].detailInfo[].paymentInfo[].inpatientAdjudication.ppsOperatingHospitalSpecificDRGAmount`** (`string`): The hospital specific Diagnosis Related Group (DRG) Amount.
- **`transactions[].detailInfo[].paymentInfo[].inpatientAdjudication.ppsOperatingOutlierAmount`** (`string`): The Prospective Payment System (PPS) Operating Outlier amount, expressed as a decimal.
- **`transactions[].detailInfo[].paymentInfo[].otherClaimRelatedIdentification`** (`object`): Additional reference numbers to identify the specific claim.
- **`transactions[].detailInfo[].paymentInfo[].otherClaimRelatedIdentification.adjustedRePricedClaimReferenceNumber`** (`string`): The adjusted repriced claim reference number.
- **`transactions[].detailInfo[].paymentInfo[].otherClaimRelatedIdentification.authorizationNumber`** (`string`): An authorization number assigned by the adjudication process that was not provided prior to the services.
- **`transactions[].detailInfo[].paymentInfo[].otherClaimRelatedIdentification.classOfContractCode`** (`string`): The class of contract code.
- **`transactions[].detailInfo[].paymentInfo[].otherClaimRelatedIdentification.classOfContractCodes`** (`array of strings`): A list of class of contract codes when multiple codes are applicable.
- **`transactions[].detailInfo[].paymentInfo[].otherClaimRelatedIdentification.employeeIdentificationNumber`** (`string`): The employee identification number.
- **`transactions[].detailInfo[].paymentInfo[].otherClaimRelatedIdentification.groupNumber`** (`string`): The other insured group number.
- **`transactions[].detailInfo[].paymentInfo[].otherClaimRelatedIdentification.groupOrPolicyNumber`** (`string`): The group or policy number for the health plan.
- **`transactions[].detailInfo[].paymentInfo[].otherClaimRelatedIdentification.insurancePolicyNumber`** (`string`): The insurance policy number.
- **`transactions[].detailInfo[].paymentInfo[].otherClaimRelatedIdentification.medicalRecordIdentificationNumber`** (`string`): The medical record identification number.
- **`transactions[].detailInfo[].paymentInfo[].otherClaimRelatedIdentification.memberIdentificationNumber`** (`string`): The health plan member identification number.
- **`transactions[].detailInfo[].paymentInfo[].otherClaimRelatedIdentification.originalReferenceNumber`** (`string`): The reference number for the original claim. This is included for correction claims.
- **`transactions[].detailInfo[].paymentInfo[].otherClaimRelatedIdentification.predeterminationOfBenefitsIdentificationNumber`** (`string`): The predetermination of benefits identification number.
- **`transactions[].detailInfo[].paymentInfo[].otherClaimRelatedIdentification.priorAuthorizationNumber`** (`string`): The prior authorization number.
- **`transactions[].detailInfo[].paymentInfo[].otherClaimRelatedIdentification.rePricedClaimReferenceNumber`** (`string`): The repriced claim reference number.
- **`transactions[].detailInfo[].paymentInfo[].otherClaimRelatedIdentification.ssn`** (`string`): The social security number (SSN).
- **`transactions[].detailInfo[].paymentInfo[].otherSubscriber`** (`object`): Information about the other subscriber, when a corrected priority payer has been identified.
- **`transactions[].detailInfo[].paymentInfo[].otherSubscriber.firstName`** (`string`): The subscriber's first name.
- **`transactions[].detailInfo[].paymentInfo[].otherSubscriber.lastName`** (`string`): The subscriber's last name.
- **`transactions[].detailInfo[].paymentInfo[].otherSubscriber.memberId`** (`string`): The subscriber's member ID for their health plan.
- **`transactions[].detailInfo[].paymentInfo[].otherSubscriber.middleName`** (`string`): The subscriber's middle name or initial.
- **`transactions[].detailInfo[].paymentInfo[].otherSubscriber.organizationName`** (`string`): The subscriber's business name, if the subscriber is not an individual.
- **`transactions[].detailInfo[].paymentInfo[].otherSubscriber.standardUniqueHealthIdentifierForEachIndividualInTheUnitedStates`** (`string`): Deprecated
- **`transactions[].detailInfo[].paymentInfo[].otherSubscriber.suffix`** (`string`): The subscriber's name suffix, such as Jr. or III.
- **`transactions[].detailInfo[].paymentInfo[].otherSubscriber.taxId`** (`string`): The subscriber's Federal Taxpayer's Identification Number. Only used when the subscriber is a business entity and not an individual.
- **`transactions[].detailInfo[].paymentInfo[].outpatientAdjudication`** (`object`): Information about the adjudication of claims not related to an inpatient setting.
- **`transactions[].detailInfo[].paymentInfo[].outpatientAdjudication.claimESRDPaymentAmount`** (`string`): The End Stage Renal Disease (ESRD) payment amount.
- **`transactions[].detailInfo[].paymentInfo[].outpatientAdjudication.claimHCPCSPayableAmount`** (`string`): The claim Health Care Financing Administration Common Procedural Coding System (HCPCS) payable amount, expressed as a decimal.
- **`transactions[].detailInfo[].paymentInfo[].outpatientAdjudication.claimPaymentRemarkCode1`** (`string`): A [Claim Payment Remark Code](https://x12.org/codes/remittance-advice-remark-codes).
- **`transactions[].detailInfo[].paymentInfo[].outpatientAdjudication.claimPaymentRemarkCode2`** (`string`): A [Claim Payment Remark Code](https://x12.org/codes/remittance-advice-remark-codes).
- **`transactions[].detailInfo[].paymentInfo[].outpatientAdjudication.claimPaymentRemarkCode3`** (`string`): A [Claim Payment Remark Code](https://x12.org/codes/remittance-advice-remark-codes).
- **`transactions[].detailInfo[].paymentInfo[].outpatientAdjudication.claimPaymentRemarkCode4`** (`string`): A [Claim Payment Remark Code](https://x12.org/codes/remittance-advice-remark-codes).
- **`transactions[].detailInfo[].paymentInfo[].outpatientAdjudication.claimPaymentRemarkCode5`** (`string`): A [Claim Payment Remark Code](https://x12.org/codes/remittance-advice-remark-codes).
- **`transactions[].detailInfo[].paymentInfo[].outpatientAdjudication.nonPayableProfessionalComponentAmount`** (`string`): The professional component amount billed but not payable.
- **`transactions[].detailInfo[].paymentInfo[].outpatientAdjudication.reimbursementRate`** (`string`): The reimbursement rate, expressed as a decimal.
- **`transactions[].detailInfo[].paymentInfo[].patientName`** (`object`): Information about the individual who received medical services.
- **`transactions[].detailInfo[].paymentInfo[].patientName.firstName`** (`string`): The patient's first name.
- **`transactions[].detailInfo[].paymentInfo[].patientName.healthInsuranceClaimNumber`** (`string`): The patient's Health Insurance Claim (HIC) Number.
- **`transactions[].detailInfo[].paymentInfo[].patientName.lastName`** (`string`): The patient's last name.
- **`transactions[].detailInfo[].paymentInfo[].patientName.medicaidRecipientIdentificationNumber`** (`string`): The patient's Medicaid Recipient Identification Number.
- **`transactions[].detailInfo[].paymentInfo[].patientName.memberId`** (`string`): The patient's member ID number for their health plan.
- **`transactions[].detailInfo[].paymentInfo[].patientName.middleName`** (`string`): The patient's middle name or initial.
- **`transactions[].detailInfo[].paymentInfo[].patientName.ssn`** (`string`): The patient's Social Security Number (SSN).
- **`transactions[].detailInfo[].paymentInfo[].patientName.standardUniqueHealthIdentifierForEachIndividualInTheUnitedStates`** (`string`): Deprecated.
- **`transactions[].detailInfo[].paymentInfo[].patientName.suffix`** (`string`): The patient's name suffix, such as Jr or III.
- **`transactions[].detailInfo[].paymentInfo[].renderingProvider`** (`object`): Information about the provider who rendered the services.
- **`transactions[].detailInfo[].paymentInfo[].renderingProvider.blueCrossProviderNumber`** (`string`): The rendering provider's Blue Cross Provider Number.
- **`transactions[].detailInfo[].paymentInfo[].renderingProvider.blueShieldProviderNumber`** (`string`): The rendering provider's Blue Shield Provider Number.
- **`transactions[].detailInfo[].paymentInfo[].renderingProvider.firstName`** (`string`): The rendering provider's first name.
- **`transactions[].detailInfo[].paymentInfo[].renderingProvider.lastName`** (`string`): The rendering provider's last name.
- **`transactions[].detailInfo[].paymentInfo[].renderingProvider.medicaidProviderNumber`** (`string`): The rendering provider's Medicare Provider Number.
- **`transactions[].detailInfo[].paymentInfo[].renderingProvider.middleName`** (`string`): The rendering provider's middle name or initial.
- **`transactions[].detailInfo[].paymentInfo[].renderingProvider.npi`** (`string`): The rendering provider's National Provider Identifier (NPI).
- **`transactions[].detailInfo[].paymentInfo[].renderingProvider.organizationName`** (`string`): The rendering provider's business name.
- **`transactions[].detailInfo[].paymentInfo[].renderingProvider.providerCommercialNumber`** (`string`): The rendering provider's Provider Commercial Number.
- **`transactions[].detailInfo[].paymentInfo[].renderingProvider.stateLicenseNumber`** (`string`): The rendering provider's State License Number.
- **`transactions[].detailInfo[].paymentInfo[].renderingProvider.suffix`** (`string`): The rendering provider's name suffix, such as Jr. or III.
- **`transactions[].detailInfo[].paymentInfo[].renderingProvider.taxId`** (`string`): The rendering provider's Federal Taxpayer Identification Number.
- **`transactions[].detailInfo[].paymentInfo[].renderingProvider.uniquePhysicianIdentificationNumber`** (`string`): Deprecated; replaced by NPI in 2007.
- **`transactions[].detailInfo[].paymentInfo[].renderingProviderIdentification`** (`object`): Additional identifiers for the rendering provider.
- **`transactions[].detailInfo[].paymentInfo[].renderingProviderIdentification.blueCrossProviderNumber`** (`string`): The rendering provider's Blue Cross Provider Number.
- **`transactions[].detailInfo[].paymentInfo[].renderingProviderIdentification.blueShieldProviderNumber`** (`string`): The rendering provider's Blue Shield Provider Number.
- **`transactions[].detailInfo[].paymentInfo[].renderingProviderIdentification.champusIdentificationNumber`** (`string`): The rendering provider's CHAMPUS Identification Number.
- **`transactions[].detailInfo[].paymentInfo[].renderingProviderIdentification.facilityIdNumber`** (`string`): The rendering provider's Facility ID Number.
- **`transactions[].detailInfo[].paymentInfo[].renderingProviderIdentification.locationNumber`** (`string`): The rendering provider's Location Number.
- **`transactions[].detailInfo[].paymentInfo[].renderingProviderIdentification.medicaidProviderNumber`** (`string`): The rendering provider's Medicaid Provider Number.
- **`transactions[].detailInfo[].paymentInfo[].renderingProviderIdentification.medicareProviderNumber`** (`string`): The rendering provider's Medicare Provider Number.
- **`transactions[].detailInfo[].paymentInfo[].renderingProviderIdentification.nationalCouncilForPrescriptionDrugProgramPharmacyNumber`** (`string`): The rendering provider's National Council for Prescription Drug Program Pharmacy Number.
- **`transactions[].detailInfo[].paymentInfo[].renderingProviderIdentification.providerCommercialNumber`** (`string`): The rendering provider's Provider Commercial Number.
- **`transactions[].detailInfo[].paymentInfo[].renderingProviderIdentification.providerUPINNumber`** (`string`): Deprecated; replaced by NPI in 2007.
- **`transactions[].detailInfo[].paymentInfo[].renderingProviderIdentification.stateLicenseNumber`** (`string`): The rendering provider's State License Number.
- **`transactions[].detailInfo[].paymentInfo[].serviceLines`** (`array of ClaimPaymentAdviceServiceLines objects`): Service lines included in this claim.
- **`transactions[].detailInfo[].paymentInfo[].serviceLines[].healthCareCheckRemarkCodes`** (`array of HealthCareCheckRemarkCodes objects`): Healthcare check remark codes for this service.
- **`transactions[].detailInfo[].paymentInfo[].serviceLines[].healthCareCheckRemarkCodes[].codeListQualifierCode`** (`string`): Code identifying the specific industry code list containing the `remarkCode`. Can be `HE` - Claim Payment Remark Codes or `RX` - National Council for Prescription Drug Programs Reject/Payment Codes.
- **`transactions[].detailInfo[].paymentInfo[].serviceLines[].healthCareCheckRemarkCodes[].codeListQualifierCodeValue`** (`string`): The description of the `codeListQualifierCode`. Can be `Claim Payment Remark Codes` or `National Council for Prescription Drug Programs Reject/Payment Codes`.
- **`transactions[].detailInfo[].paymentInfo[].serviceLines[].healthCareCheckRemarkCodes[].remark`** (`string`): The human readable description of the remark code.
- **`transactions[].detailInfo[].paymentInfo[].serviceLines[].healthCareCheckRemarkCodes[].remarkCode`** (`string`): The code identifying the specific remark.

This property can either be a [Remittance Advice Remark Code (RARC)](https://x12.org/codes/remittance-advice-remark-codes) (`codeListQualifierCode` set to `HE`) or a National Council for Prescription Drug Programs Reject/Payment Code (`codeListQualifierCode` set to `RX`).
- **`transactions[].detailInfo[].paymentInfo[].serviceLines[].healthCarePolicyIdentification`** (`array of HealthCarePolicyIdentification objects`): Healthcare policy identification for this service.
- **`transactions[].detailInfo[].paymentInfo[].serviceLines[].healthCarePolicyIdentification[].policyFormIdentifyingNumber`** (`string`): The identifying number for the policy form.
- **`transactions[].detailInfo[].paymentInfo[].serviceLines[].lineItemControlNumber`** (`string`): The `providerControlNumber` submitted in the original claim to identify the service line.
- **`transactions[].detailInfo[].paymentInfo[].serviceLines[].renderingProviderInformation`** (`object`): Identifiers for the provider who rendered this service.
- **`transactions[].detailInfo[].paymentInfo[].serviceLines[].renderingProviderInformation.blueCrossProviderNumber`** (`string`): The rendering provider's Blue Cross Provider Number.
- **`transactions[].detailInfo[].paymentInfo[].serviceLines[].renderingProviderInformation.blueShieldProviderNumber`** (`string`): The rendering provider's Blue Shield Provider Number.
- **`transactions[].detailInfo[].paymentInfo[].serviceLines[].renderingProviderInformation.champusIdentificationNumber`** (`string`): The rendering provider's CHAMPUS Identification Number.
- **`transactions[].detailInfo[].paymentInfo[].serviceLines[].renderingProviderInformation.facilityIdNumber`** (`string`): The rendering provider's Facility ID Number.
- **`transactions[].detailInfo[].paymentInfo[].serviceLines[].renderingProviderInformation.federalTaxpayerIdentificationNumber`** (`string`): The rendering provider's Federal Taxpayer Identification Number.
- **`transactions[].detailInfo[].paymentInfo[].serviceLines[].renderingProviderInformation.medicaidProviderNumber`** (`string`): The rendering provider's Medicaid Provider Number.
- **`transactions[].detailInfo[].paymentInfo[].serviceLines[].renderingProviderInformation.medicareProviderNumber`** (`string`): The rendering provider's Medicare Provider Number.
- **`transactions[].detailInfo[].paymentInfo[].serviceLines[].renderingProviderInformation.nationalCouncilForPrescriptionDrugProgramPharmacyNumber`** (`string`): The rendering provider's National Council for Prescription Drug Programs Pharmacy Number.
- **`transactions[].detailInfo[].paymentInfo[].serviceLines[].renderingProviderInformation.npi`** (`string`): The rendering provider's National Provider Identifier (NPI).
- **`transactions[].detailInfo[].paymentInfo[].serviceLines[].renderingProviderInformation.providerCommercialNumber`** (`string`): The Provider Commercial Number.
- **`transactions[].detailInfo[].paymentInfo[].serviceLines[].renderingProviderInformation.providerUPINNumber`** (`string`): Deprecated; replaced by NPI in 2007.
- **`transactions[].detailInfo[].paymentInfo[].serviceLines[].renderingProviderInformation.ssn`** (`string`): The rendering provider's Social Security Number (SSN).
- **`transactions[].detailInfo[].paymentInfo[].serviceLines[].renderingProviderInformation.stateLicenseNumber`** (`string`): The rendering provider's State License Number.
- **`transactions[].detailInfo[].paymentInfo[].serviceLines[].serviceAdjustments`** (`array of ClaimAdjustments objects`): Adjustments applied to this service line.
- **`transactions[].detailInfo[].paymentInfo[].serviceLines[].serviceAdjustments[].adjustmentAmount1`** (`string`): The amount of the adjustment. A negative amount increases the claim payment and a positive amount decreases the claim payment.
- **`transactions[].detailInfo[].paymentInfo[].serviceLines[].serviceAdjustments[].adjustmentAmount2`** (`string`): The amount of the adjustment. A negative amount increases the claim payment and a positive amount decreases the claim payment.
- **`transactions[].detailInfo[].paymentInfo[].serviceLines[].serviceAdjustments[].adjustmentAmount3`** (`string`): The amount of the adjustment. A negative amount increases the claim payment and a positive amount decreases the claim payment.
- **`transactions[].detailInfo[].paymentInfo[].serviceLines[].serviceAdjustments[].adjustmentAmount4`** (`string`): The amount of the adjustment. A negative amount increases the claim payment and a positive amount decreases the claim payment.
- **`transactions[].detailInfo[].paymentInfo[].serviceLines[].serviceAdjustments[].adjustmentAmount5`** (`string`): The amount of the adjustment. A negative amount increases the claim payment and a positive amount decreases the claim payment.
- **`transactions[].detailInfo[].paymentInfo[].serviceLines[].serviceAdjustments[].adjustmentAmount6`** (`string`): The amount of the adjustment. A negative amount increases the claim payment and a positive amount decreases the claim payment.
- **`transactions[].detailInfo[].paymentInfo[].serviceLines[].serviceAdjustments[].adjustmentQuantity1`** (`string`): The units of service being adjusted. A positive value decreases the covered days and a negative number increases the covered days.
- **`transactions[].detailInfo[].paymentInfo[].serviceLines[].serviceAdjustments[].adjustmentQuantity2`** (`string`): The units of service being adjusted. A positive value decreases the covered days and a negative number increases the covered days.
- **`transactions[].detailInfo[].paymentInfo[].serviceLines[].serviceAdjustments[].adjustmentQuantity3`** (`string`): The units of service being adjusted. A positive value decreases the covered days and a negative number increases the covered days.
- **`transactions[].detailInfo[].paymentInfo[].serviceLines[].serviceAdjustments[].adjustmentQuantity4`** (`string`): The units of service being adjusted. A positive value decreases the covered days and a negative number increases the covered days.
- **`transactions[].detailInfo[].paymentInfo[].serviceLines[].serviceAdjustments[].adjustmentQuantity5`** (`string`): The units of service being adjusted. A positive value decreases the covered days and a negative number increases the covered days.
- **`transactions[].detailInfo[].paymentInfo[].serviceLines[].serviceAdjustments[].adjustmentQuantity6`** (`string`): The units of service being adjusted. A positive value decreases the covered days and a negative number increases the covered days.
- **`transactions[].detailInfo[].paymentInfo[].serviceLines[].serviceAdjustments[].adjustmentReason1`** (`string`): A description identifying the detailed reason the adjustment was made.
- **`transactions[].detailInfo[].paymentInfo[].serviceLines[].serviceAdjustments[].adjustmentReason2`** (`string`): A description identifying the detailed reason the adjustment was made.
- **`transactions[].detailInfo[].paymentInfo[].serviceLines[].serviceAdjustments[].adjustmentReason3`** (`string`): A description identifying the detailed reason the adjustment was made.
- **`transactions[].detailInfo[].paymentInfo[].serviceLines[].serviceAdjustments[].adjustmentReason4`** (`string`): A description identifying the detailed reason the adjustment was made.
- **`transactions[].detailInfo[].paymentInfo[].serviceLines[].serviceAdjustments[].adjustmentReason5`** (`string`): A description identifying the detailed reason the adjustment was made.
- **`transactions[].detailInfo[].paymentInfo[].serviceLines[].serviceAdjustments[].adjustmentReason6`** (`string`): A description identifying the detailed reason the adjustment was made.
- **`transactions[].detailInfo[].paymentInfo[].serviceLines[].serviceAdjustments[].adjustmentReasonCode1`** (`string`): A code identifying the detailed reason the adjustment was made. Visit [Claim Adjustment Reason Codes](https://x12.org/codes/claim-adjustment-reason-codes) in the X12 documentation for a complete list.
- **`transactions[].detailInfo[].paymentInfo[].serviceLines[].serviceAdjustments[].adjustmentReasonCode2`** (`string`): A code identifying the detailed reason the adjustment was made. Visit [Claim Adjustment Reason Codes](https://x12.org/codes/claim-adjustment-reason-codes) in the X12 documentation for a complete list.
- **`transactions[].detailInfo[].paymentInfo[].serviceLines[].serviceAdjustments[].adjustmentReasonCode3`** (`string`): A code identifying the detailed reason the adjustment was made. Visit [Claim Adjustment Reason Codes](https://x12.org/codes/claim-adjustment-reason-codes) in the X12 documentation for a complete list.
- **`transactions[].detailInfo[].paymentInfo[].serviceLines[].serviceAdjustments[].adjustmentReasonCode4`** (`string`): A code identifying the detailed reason the adjustment was made. Visit [Claim Adjustment Reason Codes](https://x12.org/codes/claim-adjustment-reason-codes) in the X12 documentation for a complete list.
- **`transactions[].detailInfo[].paymentInfo[].serviceLines[].serviceAdjustments[].adjustmentReasonCode5`** (`string`): A code identifying the detailed reason the adjustment was made. Visit [Claim Adjustment Reason Codes](https://x12.org/codes/claim-adjustment-reason-codes) in the X12 documentation for a complete list.
- **`transactions[].detailInfo[].paymentInfo[].serviceLines[].serviceAdjustments[].adjustmentReasonCode6`** (`string`): A code identifying the detailed reason the adjustment was made. Visit [Claim Adjustment Reason Codes](https://x12.org/codes/claim-adjustment-reason-codes) in the X12 documentation for a complete list.
- **`transactions[].detailInfo[].paymentInfo[].serviceLines[].serviceAdjustments[].claimAdjustmentGroupCode`** (`string`): Defines the category of adjustment reason codes that explain why a claim payment was adjusted. These codes categorize adjustments into contractual obligations, payer-initiated reductions, patient responsibilities, and other adjustments.
  - Allowed values: `CO`, `OA`, `PI`, `PR`
- **`transactions[].detailInfo[].paymentInfo[].serviceLines[].serviceAdjustments[].claimAdjustmentGroupCodeValue`** (`string`): The description of the `claimAdjustmentGroupCode`.
- **`transactions[].detailInfo[].paymentInfo[].serviceLines[].serviceDate`** (`string`): The date the service was rendered. Used for single-day services.
- **`transactions[].detailInfo[].paymentInfo[].serviceLines[].serviceEndDate`** (`string`): The date the service ended. Used for multi-day services.
- **`transactions[].detailInfo[].paymentInfo[].serviceLines[].serviceIdentification`** (`object`): Additional identifiers related to the service line.
- **`transactions[].detailInfo[].paymentInfo[].serviceLines[].serviceIdentification.ambulatoryPatientGroupNumber`** (`string`): The service line's Ambulatory Patient Group (APG) Number.
- **`transactions[].detailInfo[].paymentInfo[].serviceLines[].serviceIdentification.ambulatoryPaymentClassification`** (`string`): The service line's Ambulatory Payment Classification Number.
- **`transactions[].detailInfo[].paymentInfo[].serviceLines[].serviceIdentification.attachmentCode`** (`string`): The service line's Attachment Code.
- **`transactions[].detailInfo[].paymentInfo[].serviceLines[].serviceIdentification.authorizationNumber`** (`string`): The service line's Authorization Number.
- **`transactions[].detailInfo[].paymentInfo[].serviceLines[].serviceIdentification.locationNumber`** (`string`): The payer's identification for the provider location.
- **`transactions[].detailInfo[].paymentInfo[].serviceLines[].serviceIdentification.preDeterminationOfBenefitsIdentificationNumber`** (`string`): The service line's Predetermination of Benefits Identification Number.
- **`transactions[].detailInfo[].paymentInfo[].serviceLines[].serviceIdentification.priorAuthorizationNumber`** (`string`): The service line's Prior Authorization Number.
- **`transactions[].detailInfo[].paymentInfo[].serviceLines[].serviceIdentification.rateCodeNumber`** (`string`): The service line's Rate code number, a percentage that reflects the Ambulatory Surgical Center (ASC) rate for Medicare. This is either 0, 50, 100, or 150.
- **`transactions[].detailInfo[].paymentInfo[].serviceLines[].servicePaymentInformation`** (`object`): Payment and control information about a provider for a particular service.
- **`transactions[].detailInfo[].paymentInfo[].serviceLines[].servicePaymentInformation.adjudicatedProcedureCode`** (`string`): The adjudicated procedure code - an identifying number for a product or service.
- **`transactions[].detailInfo[].paymentInfo[].serviceLines[].servicePaymentInformation.adjudicatedProcedureModifierCodes`** (`array of strings`): A list of up to four modifiers that identify special circumstances related to the product or service.
- **`transactions[].detailInfo[].paymentInfo[].serviceLines[].servicePaymentInformation.lineItemChargeAmount`** (`string`): The submitted service charge, expressed as a decimal.
- **`transactions[].detailInfo[].paymentInfo[].serviceLines[].servicePaymentInformation.lineItemProviderPaymentAmount`** (`string`): The amount paid for the service, expressed as a decimal. 

 This amount is calculated as follows: 

`servicePaymentInformation.lineItemProviderPaymentAmount =
  servicePaymentInformation.lineItemChargeAmount - (sum(serviceAdjustments[].adjustmentAmount1) + sum(serviceAdjustments[].adjustmentAmount2) + sum(serviceAdjustments[].adjustmentAmount3) + sum(serviceAdjustments[].adjustmentAmount4) + sum(serviceAdjustments[].adjustmentAmount5) + sum(serviceAdjustments[].adjustmentAmount6))`

All properties in the formula are within a single `transactions[].detailInfo[].paymentInfo[].serviceLines` array entry. Note that `serviceAdjustments` is an object array that could contain up to 99 entries, each with up to 6 adjustment amounts in separate properties. This allows for up to 594 total adjustments.

Adjustments can be either positive or negative. When the adjustment amounts are positive, the payment decreases. When the adjustment amounts are negative, the payment amount increases, and will be larger than the `lineItemChargeAmount`.
- **`transactions[].detailInfo[].paymentInfo[].serviceLines[].servicePaymentInformation.nationalUniformBillingCommitteeRevenueCode`** (`string`): The National Uniform Billing Committee Revenue Code.
- **`transactions[].detailInfo[].paymentInfo[].serviceLines[].servicePaymentInformation.originalUnitsOfServiceCount`** (`string`): The original number of units of service submitted, expressed as a decimal.
- **`transactions[].detailInfo[].paymentInfo[].serviceLines[].servicePaymentInformation.productOrServiceIDQualifier`** (`string`): Identifies the coding system or classification used to describe medical products, services, or procedures. These qualifiers specify which standardized code set is being used to identify the healthcare service or product.
  - Allowed values: `HC`, `AD`, `ER`, `IV`, `N4`, `NU`, `WK`
- **`transactions[].detailInfo[].paymentInfo[].serviceLines[].servicePaymentInformation.productOrServiceIDQualifierValue`** (`string`): The description of the `productOrServiceIDQualifier`.
- **`transactions[].detailInfo[].paymentInfo[].serviceLines[].servicePaymentInformation.submittedAdjudicatedProcedureCode`** (`string`): The submitted adjudicated procedure code - an identifying number for a product or service.
- **`transactions[].detailInfo[].paymentInfo[].serviceLines[].servicePaymentInformation.submittedAdjudicatedProcedureModifierCodes`** (`array of strings`): A list of up to four modifiers that identify special circumstances related to the product or service.
- **`transactions[].detailInfo[].paymentInfo[].serviceLines[].servicePaymentInformation.submittedProcedureCodeDescription`** (`string`): A free-form description to further clarify the procedure code and any modifiers.
- **`transactions[].detailInfo[].paymentInfo[].serviceLines[].servicePaymentInformation.submittedProductOrServiceIDQualifier`** (`string`): Identifies the coding system or classification used to describe medical products, services, or procedures. These qualifiers specify which standardized code set is being used to identify the healthcare service or product.
  - Allowed values: `HC`, `AD`, `ER`, `IV`, `N4`, `NU`, `WK`
- **`transactions[].detailInfo[].paymentInfo[].serviceLines[].servicePaymentInformation.submittedProductOrServiceIDQualifierValue`** (`string`): The description of the `submittedProductOrServiceIDQualifier`.
- **`transactions[].detailInfo[].paymentInfo[].serviceLines[].servicePaymentInformation.unitsOfServicePaidCount`** (`string`): The number of units of service that were paid, expressed as a decimal. If not present, the value is assumed to be one.
- **`transactions[].detailInfo[].paymentInfo[].serviceLines[].serviceStartDate`** (`string`): The date the service began. Used for multi-day services.
- **`transactions[].detailInfo[].paymentInfo[].serviceLines[].serviceSupplementalAmounts`** (`object`): Information about the service supplemental amount. All values are expressed as decimals.
- **`transactions[].detailInfo[].paymentInfo[].serviceLines[].serviceSupplementalAmounts.allowedActual`** (`string`): The payer payment plus any assigned patient responsibility.
- **`transactions[].detailInfo[].paymentInfo[].serviceLines[].serviceSupplementalAmounts.deductionAmount`** (`string`): This is the late filing reduction amount.
- **`transactions[].detailInfo[].paymentInfo[].serviceLines[].serviceSupplementalAmounts.federalMedicareOrMedicaidPaymentMandateCategory1`** (`string`): Federal Medicare or Medicaid Payment Mandate - Category 1.
- **`transactions[].detailInfo[].paymentInfo[].serviceLines[].serviceSupplementalAmounts.federalMedicareOrMedicaidPaymentMandateCategory2`** (`string`): Federal Medicare or Medicaid Payment Mandate - Category 2.
- **`transactions[].detailInfo[].paymentInfo[].serviceLines[].serviceSupplementalAmounts.federalMedicareOrMedicaidPaymentMandateCategory3`** (`string`): Federal Medicare or Medicaid Payment Mandate - Category 3.
- **`transactions[].detailInfo[].paymentInfo[].serviceLines[].serviceSupplementalAmounts.federalMedicareOrMedicaidPaymentMandateCategory4`** (`string`): Federal Medicare or Medicaid Payment Mandate - Category 4.
- **`transactions[].detailInfo[].paymentInfo[].serviceLines[].serviceSupplementalAmounts.federalMedicareOrMedicaidPaymentMandateCategory5`** (`string`): Federal Medicare or Medicaid Payment Mandate - Category 5.
- **`transactions[].detailInfo[].paymentInfo[].serviceLines[].serviceSupplementalAmounts.tax`** (`string`): The tax amount.
- **`transactions[].detailInfo[].paymentInfo[].serviceLines[].serviceSupplementalAmounts.totalClaimBeforeTaxes`** (`string`): The total amount for the service charge before taxes.
- **`transactions[].detailInfo[].paymentInfo[].serviceLines[].serviceSupplementalQuantities`** (`object`): Additional quantity information about the service. All values are expressed as decimals.
- **`transactions[].detailInfo[].paymentInfo[].serviceLines[].serviceSupplementalQuantities.federalMedicareOrMedicaidPaymentMandateCategory1`** (`string`): Federal Medicare or Medicaid Payment Mandate - Category 1.
- **`transactions[].detailInfo[].paymentInfo[].serviceLines[].serviceSupplementalQuantities.federalMedicareOrMedicaidPaymentMandateCategory2`** (`string`): Federal Medicare or Medicaid Payment Mandate - Category 2.
- **`transactions[].detailInfo[].paymentInfo[].serviceLines[].serviceSupplementalQuantities.federalMedicareOrMedicaidPaymentMandateCategory3`** (`string`): Federal Medicare or Medicaid Payment Mandate - Category 3.
- **`transactions[].detailInfo[].paymentInfo[].serviceLines[].serviceSupplementalQuantities.federalMedicareOrMedicaidPaymentMandateCategory4`** (`string`): Federal Medicare or Medicaid Payment Mandate - Category 4.
- **`transactions[].detailInfo[].paymentInfo[].serviceLines[].serviceSupplementalQuantities.federalMedicareOrMedicaidPaymentMandateCategory5`** (`string`): Federal Medicare or Medicaid Payment Mandate - Category 5.
- **`transactions[].detailInfo[].paymentInfo[].subscriber`** (`object`): Information about the primary policyholder for the health plan. This may or may not be the patient.
- **`transactions[].detailInfo[].paymentInfo[].subscriber.firstName`** (`string`): The subscriber's first name.
- **`transactions[].detailInfo[].paymentInfo[].subscriber.lastName`** (`string`): The subscriber's last name.
- **`transactions[].detailInfo[].paymentInfo[].subscriber.memberId`** (`string`): The subscriber's member ID for their health plan.
- **`transactions[].detailInfo[].paymentInfo[].subscriber.middleName`** (`string`): The subscriber's middle name or initial.
- **`transactions[].detailInfo[].paymentInfo[].subscriber.organizationName`** (`string`): The subscriber's business name, if the subscriber is not an individual.
- **`transactions[].detailInfo[].paymentInfo[].subscriber.standardUniqueHealthIdentifierForEachIndividualInTheUnitedStates`** (`string`): Deprecated
- **`transactions[].detailInfo[].paymentInfo[].subscriber.suffix`** (`string`): The subscriber's name suffix, such as Jr. or III.
- **`transactions[].detailInfo[].paymentInfo[].subscriber.taxId`** (`string`): The subscriber's Federal Taxpayer's Identification Number. Only used when the subscriber is a business entity and not an individual.
- **`transactions[].detailInfo[].providerSummaryInformation`** (`object`): Summary information about the provider, including the provider's identifier, where the services were performed, and total claim charge amounts.
- **`transactions[].detailInfo[].providerSummaryInformation.facilityTypeCode`** (`string`): A code identifying the type of facility where services were performed. This is the [Place of Service Codes](https://www.cms.gov/medicare/coding-billing/place-of-service-codes/code-sets) for Professional or Dental Services.
- **`transactions[].detailInfo[].providerSummaryInformation.fiscalPeriodDate`** (`string`): The last day of the provider's fiscal year.
- **`transactions[].detailInfo[].providerSummaryInformation.providerIdentifier`** (`string`): The provider number.
- **`transactions[].detailInfo[].providerSummaryInformation.totalClaimChargeAmount`** (`string`): The total of the charges reported for all claims, expressed as a decimal.
- **`transactions[].detailInfo[].providerSummaryInformation.totalClaimCount`** (`string`): The total number of claims.
- **`transactions[].detailInfo[].providerSummaryInformation.totalHCPCSPayableAmount`** (`string`): The total of the charges reported for all HCPCS codes that are payable, expressed as a decimal.
- **`transactions[].detailInfo[].providerSummaryInformation.totalHCPCSReportedChargeAmount`** (`string`): The total of the charges reported for all Health Care Financing Administration Common Procedural Coding System (HCPCS) codes, expressed as a decimal.
- **`transactions[].detailInfo[].providerSummaryInformation.totalMSPPatientLiabilityMetAmount`** (`string`): The total Medicare Secondary Payer (MSP) patient liability met, expressed as a decimal.
- **`transactions[].detailInfo[].providerSummaryInformation.totalMSPPayerAmount`** (`string`): The total Medicare Secondary Payer (MSP) primary payer amount, expressed as a decimal.
- **`transactions[].detailInfo[].providerSummaryInformation.totalNonLabChargeAmount`** (`string`): The total of non-laboratory charges, expressed as a decimal.
- **`transactions[].detailInfo[].providerSummaryInformation.totalPIPAdjustmentAmount`** (`string`): The total periodic interim payment (PIP) adjustment amount, expressed as a decimal.
- **`transactions[].detailInfo[].providerSummaryInformation.totalPIPClaimCount`** (`string`): The total periodic interim payment (PIP) number of claims, expressed as a decimal.
- **`transactions[].detailInfo[].providerSummaryInformation.totalPatientReimbursementAmount`** (`string`): The total patient reimbursement amount, expressed as a decimal.
- **`transactions[].detailInfo[].providerSummaryInformation.totalProfessionalComponentAmount`** (`string`): The total of the professional component charges, expressed as a decimal.
- **`transactions[].detailInfo[].providerSupplementalSummaryInformation`** (`object`): Additional summary information about the provider and the charges in the claim. All values are expressed as decimals.
- **`transactions[].detailInfo[].providerSupplementalSummaryInformation.averageDRGLengthOfStay`** (`string`): The average length of stay for diagnosis related group (DRG) claims.
- **`transactions[].detailInfo[].providerSupplementalSummaryInformation.averageDRGWeight`** (`string`): The average diagnosis-related group (DRG) weight.
- **`transactions[].detailInfo[].providerSupplementalSummaryInformation.totalCapitalAmount`** (`string`): The total capital amount. This includes: capital federal-specfic amount, hospital federal-specfic amount, hold harmless amount, Indirect Medical Education amount, Disproportionate Share Hospital amount, and the exception amount. It does not include any capital outlier amount.
- **`transactions[].detailInfo[].providerSupplementalSummaryInformation.totalCostOutlierAmount`** (`string`): The total cost outlier amount.
- **`transactions[].detailInfo[].providerSupplementalSummaryInformation.totalCostReportDayCount`** (`string`): The total number of cost report days.
- **`transactions[].detailInfo[].providerSupplementalSummaryInformation.totalCoveredDayCount`** (`string`): The total number of covered days.
- **`transactions[].detailInfo[].providerSupplementalSummaryInformation.totalDRGAmount`** (`string`): The total of the charges reported for all diagnosis-related group (DRG) codes.
- **`transactions[].detailInfo[].providerSupplementalSummaryInformation.totalDayOutlierAmount`** (`string`): The total day outlier amount.
- **`transactions[].detailInfo[].providerSupplementalSummaryInformation.totalDischargeCount`** (`string`): The total number of discharges.
- **`transactions[].detailInfo[].providerSupplementalSummaryInformation.totalDisproportionateShareAmount`** (`string`): The total disproportionate share amount.
- **`transactions[].detailInfo[].providerSupplementalSummaryInformation.totalFederalSpecificAmount`** (`string`): The total federal specific amount.
- **`transactions[].detailInfo[].providerSupplementalSummaryInformation.totalHospitalSpecificAmount`** (`string`): The total hospital specific amount.
- **`transactions[].detailInfo[].providerSupplementalSummaryInformation.totalIndirectMedicalEducationAmount`** (`string`): The total indirect medical education amount.
- **`transactions[].detailInfo[].providerSupplementalSummaryInformation.totalMSPPassThroughAmount`** (`string`): The total Medicare Secondary Payer (MSP) pass-through amount, calculated for a non-Medicare payer.
- **`transactions[].detailInfo[].providerSupplementalSummaryInformation.totalNonCoveredDayCount`** (`string`): The total number of non-covered days.
- **`transactions[].detailInfo[].providerSupplementalSummaryInformation.totalOutlierDayCount`** (`string`): The total number of outlier days.
- **`transactions[].detailInfo[].providerSupplementalSummaryInformation.totalPPSCapitalFSPDRGAmount`** (`string`): The total prospective payment system (PPS) capital, federal-specific portion, diagnosis-related group (DRG) amount.
- **`transactions[].detailInfo[].providerSupplementalSummaryInformation.totalPPSCapitalHSPDRGAmount`** (`string`): The total prospective payment system (PPS) capital, hospital-specific portion, diagnosis-related group (DRG) amount.
- **`transactions[].detailInfo[].providerSupplementalSummaryInformation.totalPPSDSHDRGAmount`** (`string`): The total prospective payment system (PPS) disproportionate share, hospital diagnosis-related group (DRG) amount.
- **`transactions[].financialInformation`** (`object`): Information about a payment, including the payment method, payment amount, and account details for both the sender and receiver.
- **`transactions[].financialInformation.checkIssueOrEFTEffectiveDate`** (`string`): The date the payer considers the transaction to be settled. If the payment is made by automated clearinghouse (ACH), this is the date the funds are available to the provider. If the payment is made by check, this is the date the check is issued. If the payment is made by Federal Reserve Funds/wire transfer, this is the date that the payer anticipates the money to move.
- **`transactions[].financialInformation.creditOrDebitFlagCode`** (`string`): Indicates whether a financial transaction represents a credit or debit to the provider's account. Used to specify the direction of money flow in payment transactions.
  - Allowed values: `C`, `D`
- **`transactions[].financialInformation.originatingCompanySupplementalCode`** (`string`): A code that further identifies the payer by division or region.
- **`transactions[].financialInformation.payerIdentifier`** (`string`): A unique identifier for the payer, mutually established between the financial institution and the payer.
- **`transactions[].financialInformation.paymentFormatCode`** (`string`): Identifies the specific electronic payment format used for ACH transactions. These formats determine the structure and content of the electronic payment message.
  - Allowed values: `CCP`, `CTX`
- **`transactions[].financialInformation.paymentMethodCode`** (`string`): Specifies the method used to deliver payment to the provider. This determines how the payment will be transmitted, such as electronically through ACH, by physical check, or wire transfer.
  - Allowed values: `ACH`, `BOP`, `CHK`, `FWT`, `NON`
- **`transactions[].financialInformation.receiverAccountDetails`** (`object`): Financial institution account details for the payment receiver.
- **`transactions[].financialInformation.receiverAccountDetails.receiverAccountNumber`** (`string`): The provider's account number.
- **`transactions[].financialInformation.receiverAccountDetails.receiverAccountNumberQualifier`** (`string`): Identifies the type of bank account being used for electronic payment transactions. This specifies whether the account is a checking (demand deposit) or savings account.
  - Allowed values: `DA`, `SA`
- **`transactions[].financialInformation.receiverAccountDetails.receiverDfiIdNumberQualifier`** (`string`): Identifies the type of Depository Financial Institution (DFI) identification number being used. This specifies the format and country of the bank routing information.
  - Allowed values: `01`, `04`
- **`transactions[].financialInformation.receiverAccountDetails.receiverDfiIdentificationNumber`** (`string`): The identification number specified in `receiverDfiIdNumberQualifier`.
- **`transactions[].financialInformation.senderAccountDetails`** (`object`): Financial institution account details for the payment sender.
- **`transactions[].financialInformation.senderAccountDetails.senderAccountNumber`** (`string`): The account number for the company originating the payment.
- **`transactions[].financialInformation.senderAccountDetails.senderAccountNumberQualifier`** (`string`): Identifies the type of bank account being used for electronic payment transactions. This specifies whether the account is a checking (demand deposit) or savings account.
  - Allowed values: `DA`, `SA`
- **`transactions[].financialInformation.senderAccountDetails.senderDFIIdentifier`** (`string`): The identifier specified by the `senderDfiIdNumberQualifier`.
- **`transactions[].financialInformation.senderAccountDetails.senderDfiIdNumberQualifier`** (`string`): Identifies the type of Depository Financial Institution (DFI) identification number being used. This specifies the format and country of the bank routing information.
  - Allowed values: `01`, `04`
- **`transactions[].financialInformation.totalActualProviderPaymentAmount`** (`string`): The total amount of the payment to the provider, expressed as a decimal.
- **`transactions[].financialInformation.transactionHandlingCode`** (`string`): Indicates the actions that should be taken by both the sender and receiver of the payment transaction. This determines whether payment should be made, remittance sent, or both.
  - Allowed values: `C`, `D`, `H`, `I`, `P`, `U`, `X`
- **`transactions[].foreignCurrency`** (`string`): The standard ISO code for the country whose currency is being used for payments. If this is not present, the currency is US dollars.
- **`transactions[].payee`** (`object`): Information about the provider receiving the payment.
- **`transactions[].payee.address`** (`object`): Address information for the payee.
- **`transactions[].payee.address.address1`** (`string`): The first line of the address.
- **`transactions[].payee.address.address2`** (`string`): The second line of the address.
- **`transactions[].payee.address.city`** (`string`): The city where the address is located.
- **`transactions[].payee.address.countryCode`** (`string`): The standard code for the country from Part 1 of ISO 3166.
- **`transactions[].payee.address.countrySubCode`** (`string`): The standard code for the country subdivision from Part 2 of ISO 3166.
- **`transactions[].payee.address.postalCode`** (`string`): The postal code for the address, excluding punctuation and blanks.
- **`transactions[].payee.address.state`** (`string`): The standard code for the state or province. For example `PA` for Pennsylvania.
- **`transactions[].payee.centersForMedicareAndMedicaidServicesPlanId`** (`string`): Formerly used to report the payee's Centers for Medicare and Medicaid Services (CMS) Plan ID. This used to report the Health Plan ID (HPID) or Other Entity Identifier (OEID). The Centers for Medicare and Medicaid Services (CMS) no longer uses HPID, so this property will not be populated.
- **`transactions[].payee.federalTaxPayersIdentificationNumber`** (`string`): The payee's Federal Taxpayer's Identification Number (when the payee is a business) or the payee's social security number (when the payee is an individual provider).
- **`transactions[].payee.name`** (`string`): The payee's name. This can be the name of an individual or an organization.
- **`transactions[].payee.nationalCouncilForPrescriptionDrugProgramsPharmacyNumber`** (`string`): The payee's National Council for Prescription Drugs Pharmacy Number.
- **`transactions[].payee.npi`** (`string`): The payee's National Provider Identifier (NPI).
- **`transactions[].payee.payeeIdentification`** (`string`): Other information necessary to identify the payee.
- **`transactions[].payee.remittanceDeliveryMethod`** (`object`): The method by which the remittance advice is delivered. This is used when the remittance is separate from the payment.
- **`transactions[].payee.remittanceDeliveryMethod.email`** (`string`): The email address.
- **`transactions[].payee.remittanceDeliveryMethod.ftp`** (`string`): Information for file transfer deliveries, such as SFTP, FTP, or FTPS.
- **`transactions[].payee.remittanceDeliveryMethod.name`** (`string`): The name of the third party processor, if required, that would be the first recipient of the remittance.
- **`transactions[].payee.remittanceDeliveryMethod.onLine`** (`string`): The web address of the online portal for secure hosted or other electronic delivery. The URL is typically provided without the scheme and separator. For example, `stedi.com`.
- **`transactions[].payee.stateLicenseNumber`** (`string`): The payee's State License Number.
- **`transactions[].payee.taxId`** (`string`): The payee's Federal Tax Identification Number (TIN).
- **`transactions[].payer`** (`object`): Information about the payer.
- **`transactions[].payer.address`** (`object`): Address information for the payer.
- **`transactions[].payer.address.address1`** (`string`): The first line of the address.
- **`transactions[].payer.address.address2`** (`string`): The second line of the address.
- **`transactions[].payer.address.city`** (`string`): The city where the address is located.
- **`transactions[].payer.address.countryCode`** (`string`): The standard code for the country from Part 1 of ISO 3166.
- **`transactions[].payer.address.countrySubCode`** (`string`): The standard code for the country subdivision from Part 2 of ISO 3166.
- **`transactions[].payer.address.postalCode`** (`string`): The postal code for the address, excluding punctuation and blanks.
- **`transactions[].payer.address.state`** (`string`): The standard code for the state or province. For example `PA` for Pennsylvania.
- **`transactions[].payer.businessContactInformation`** (`object`): A person or office to whom administrative communications should be directed.
- **`transactions[].payer.businessContactInformation.contactMethods`** (`array of ContactMethod objects`)
- **`transactions[].payer.businessContactInformation.contactMethods[].email`** (`string`): The email address.
- **`transactions[].payer.businessContactInformation.contactMethods[].fax`** (`string`): The fax number.
- **`transactions[].payer.businessContactInformation.contactMethods[].phone`** (`string`): The telephone number including the area code (if applicable). Phone numbers are formatted as AAABBBCCCC, where AAA represents the area code, BBB represents the telephone number prefix, and CCCC represents the telephone number. Phone numbers are provided without separators, such as dashes or parentheses. For example, `5551123345` for `555-112-3345`.
- **`transactions[].payer.businessContactInformation.contactMethods[].phoneExtension`** (`string`): The telephone extension, if applicable.
- **`transactions[].payer.businessContactInformation.contactName`** (`string`): The name of the contact person or entity.
- **`transactions[].payer.centersForMedicareAndMedicaidServicesPlanId`** (`string`): Formerly used to report the payer's Health Plan ID (HPID) or Other Entity Identifier (OEID). The Centers for Medicare and Medicaid Services (CMS) no longer uses HPID, so this property will not be populated.
- **`transactions[].payer.healthIndustryNumber`** (`string`): The payer's health industry number.
- **`transactions[].payer.name`** (`string`): The payer's business name, such as Cigna or Aetna.
- **`transactions[].payer.nationalAssociationOfInsuranceCommissioners`** (`string`): The payer's National Association of Insurance Commissioners (NAIC) code.
- **`transactions[].payer.payerIdentificationNumber`** (`string`): An identifier for the payer. For Medicare carriers or intermediaries, this is the Medicare carrier or intermediary ID number. For Blue Cross and Blue Shield Plans, this is the Blue Cross Blue Shield association plan code.

Providers rarely use this identifier in practice.
- **`transactions[].payer.payerWebSiteUrl`** (`string`): The payer's web address. The URL is typically provided without the scheme and separator. For example, `stedi.com`.
- **`transactions[].payer.submitterIdentificationNumber`** (`string`): An identifier for the payer. This is used when the original transaction sender is not the payer or has an identifier other than those already provided.
- **`transactions[].payer.technicalContactInformation`** (`array of TechnicalContactInformation objects`): A person or office.
- **`transactions[].payer.technicalContactInformation[].contactMethods`** (`array of TechnicalContactMethod objects`): Available contact methods for technical support.
- **`transactions[].payer.technicalContactInformation[].contactMethods[].email`** (`string`): The contact email address.
- **`transactions[].payer.technicalContactInformation[].contactMethods[].fax`** (`string`): The contact fax number.
- **`transactions[].payer.technicalContactInformation[].contactMethods[].phone`** (`string`): The contact telephone number including the area code. Phone numbers are formatted as AAABBBCCCC, where AAA represents the area code, BBB represents the telephone number prefix, and CCCC represents the telephone number. Phone numbers are provided without separators, such as dashes or parentheses. For example, `5551123345` for `555-112-3345`.
- **`transactions[].payer.technicalContactInformation[].contactMethods[].phoneExtension`** (`string`): The contact telephone extension, if applicable.
- **`transactions[].payer.technicalContactInformation[].contactMethods[].url`** (`string`): A web address to contact the person or entity. The URL is typically provided without the scheme and separator. For example, `stedi.com`.
- **`transactions[].payer.technicalContactInformation[].contactName`** (`string`): The name of the contact person or entity.
- **`transactions[].paymentAndRemitReassociationDetails`** (`object`): Information to uniquely identify the transaction and help with reassociating payments and remittances that have been separated.
- **`transactions[].paymentAndRemitReassociationDetails.checkOrEFTTraceNumber`** (`string`): This value uniquely identifies the transaction. This is either the check number, the EFT reference number, or a unique remittance advice identification number (for non-payment ERAs).
- **`transactions[].paymentAndRemitReassociationDetails.originatingCompanyIdentifier`** (`string`): A unique identifier for the payer. This is a 1 followed by the payer's Employer Identification Number (EIN) or Taxpayer Identification Number (TIN).
- **`transactions[].paymentAndRemitReassociationDetails.originatingCompanySupplementalCode`** (`string`): A value that identifies a further subdivision within the payer's organization.
- **`transactions[].paymentAndRemitReassociationDetails.traceTypeCode`** (`string`): Identifies the type of trace number used to uniquely identify and track payment transactions. This helps reassociate payments with their corresponding remittance advice.
  - Allowed values: `1`
- **`transactions[].productionDate`** (`string`): The end date for the adjudication production cycle for claims included in this ERA.
- **`transactions[].providerAdjustments`** (`array of ProviderAdjustments objects`): Provider-level adjustment information for debit or credit transactions such as: accelerated payments, cost report settlements for a fiscal year, and timeliness report penalties unrelated to a specific claim or service. These adjustments can either decrease the payment (a positive number) or increase the payment (a negative number).
- **`transactions[].providerAdjustments[].adjustments`** (`array of Adjustments objects`): List of adjustments applied to the provider.
- **`transactions[].providerAdjustments[].adjustments[].adjustmentReasonCode`** (`string`): A code identifying the reason for the adjustment. Visit [Provider Adjustment Reason Codes](https://www.stedi.com/docs/healthcare/claims-code-lists#provider-adjustment-reason-code) for a complete list and descriptions.
- **`transactions[].providerAdjustments[].adjustments[].adjustmentReasonCodeValue`** (`string`): The description of the `adjustmentReasonCode`.
- **`transactions[].providerAdjustments[].adjustments[].providerAdjustmentAmount`** (`string`): The amount of the adjustment, per the adjustment reason provided. A negative amount increases the claim payment and a positive amount decreases the claim payment.
- **`transactions[].providerAdjustments[].adjustments[].providerAdjustmentIdentifier`** (`string`): An identifier used to assist the receiver in identifying, tracking, or reconciling the adjustment.
- **`transactions[].providerAdjustments[].fiscalPeriodDate`** (`string`): The last day of the provider's fiscal year.
- **`transactions[].providerAdjustments[].providerIdentifier`** (`string`): This is the provider's NPI.
- **`transactions[].receiverIdentifier`** (`string`): The business identification information for the entity initially receiving the transaction. This is typically included when the receiver of the transaction is not the payee, such as a clearinghouse or billing service.
- **`transactions[].versionIdentification`** (`string`): The version number of the adjudication system that generated the claim payments.

**Example:**

```json
{
  "meta": {
    "applicationMode": "production",
    "senderId": "BSW",
    "transactionId": "7647d644-9348-4596-a3b4-6830b8b48cc8"
  },
  "transactions": [
    {
      "controlNumber": "112233",
      "detailInfo": [
        {
          "assignedNumber": "1",
          "paymentInfo": [
            {
              "claimPaymentInfo": {
                "claimFilingIndicatorCode": "12",
                "claimFrequencyCode": "1",
                "claimPaymentAmount": "500",
                "claimStatusCode": "1",
                "facilityTypeCode": "11",
                "patientControlNumber": "1112223333",
                "patientResponsibilityAmount": "300",
                "payerClaimControlNumber": "94060555410000",
                "totalClaimChargeAmount": "800"
              },
              "claimSupplementalInformation": {
                "coverageAmount": "800"
              },
              "patientName": {
                "firstName": "JOHN",
                "lastName": "DOE",
                "memberId": "1234567891"
              },
              "serviceLines": [
                {
                  "lineItemControlNumber": "111222333",
                  "serviceAdjustments": [
                    {
                      "adjustmentAmount1": "300",
                      "adjustmentReason1": "Deductible Amount",
                      "adjustmentReasonCode1": "1",
                      "claimAdjustmentGroupCode": "PR",
                      "claimAdjustmentGroupCodeValue": "Patient Responsibility"
                    }
                  ],
                  "serviceDate": "20190301",
                  "servicePaymentInformation": {
                    "adjudicatedProcedureCode": "99211",
                    "lineItemChargeAmount": "800",
                    "lineItemProviderPaymentAmount": "500",
                    "productOrServiceIDQualifier": "HC",
                    "productOrServiceIDQualifierValue": "Health Care Financing Administration Common Procedural Coding System (HCPCS) Codes"
                  },
                  "serviceSupplementalAmounts": {
                    "allowedActual": "800"
                  }
                }
              ]
            },
            {
              "claimPaymentInfo": {
                "claimFilingIndicatorCode": "12",
                "claimFrequencyCode": "1",
                "claimPaymentAmount": "600",
                "claimStatusCode": "1",
                "facilityTypeCode": "11",
                "patientControlNumber": "22255566677",
                "patientResponsibilityAmount": "600",
                "payerClaimControlNumber": "9407779923000",
                "totalClaimChargeAmount": "1200"
              },
              "claimSupplementalInformation": {
                "coverageAmount": "1200"
              },
              "patientName": {
                "firstName": "JANE",
                "lastName": "DOE",
                "memberId": "1234567891"
              },
              "serviceLines": [
                {
                  "serviceAdjustments": [
                    {
                      "adjustmentAmount1": "600",
                      "adjustmentReason1": "Deductible Amount",
                      "adjustmentReasonCode1": "1",
                      "claimAdjustmentGroupCode": "PR",
                      "claimAdjustmentGroupCodeValue": "Patient Responsibility"
                    }
                  ],
                  "serviceDate": "20190310",
                  "servicePaymentInformation": {
                    "adjudicatedProcedureCode": "93555",
                    "lineItemChargeAmount": "1200",
                    "lineItemProviderPaymentAmount": "600",
                    "productOrServiceIDQualifier": "HC",
                    "productOrServiceIDQualifierValue": "Health Care Financing Administration Common Procedural Coding System (HCPCS) Codes"
                  },
                  "serviceSupplementalAmounts": {
                    "allowedActual": "1200"
                  }
                }
              ]
            }
          ]
        }
      ],
      "financialInformation": {
        "checkIssueOrEFTEffectiveDate": "20190316",
        "creditOrDebitFlagCode": "C",
        "payerIdentifier": "000000000",
        "paymentFormatCode": "CCP",
        "paymentMethodCode": "ACH",
        "receiverAccountDetails": {
          "receiverAccountNumber": "144444",
          "receiverAccountNumberQualifier": "DA",
          "receiverDfiIdNumberQualifier": "01",
          "receiverDfiIdentificationNumber": "111333555"
        },
        "senderAccountDetails": {
          "senderAccountNumber": "11111111",
          "senderAccountNumberQualifier": "DA",
          "senderDFIIdentifier": "888999777",
          "senderDfiIdNumberQualifier": "01"
        },
        "totalActualProviderPaymentAmount": "1100",
        "transactionHandlingCode": "I"
      },
      "payee": {
        "federalTaxPayersIdentificationNumber": "777667755",
        "name": "ACME MEDICAL CENTER",
        "npi": "1999999984"
      },
      "payer": {
        "address": {
          "address1": "10 SOUTH AVENUET",
          "city": "NEW YORK",
          "postalCode": "55111",
          "state": "SD"
        },
        "name": "RUSHMORE LIFE",
        "technicalContactInformation": [
          {
            "contactMethods": [
              {
                "phone": "8005550000"
              }
            ],
            "contactName": "JOHN DOE"
          }
        ]
      },
      "paymentAndRemitReassociationDetails": {
        "checkOrEFTTraceNumber": "71700666555",
        "originatingCompanyIdentifier": "1935665544",
        "traceTypeCode": "1"
      },
      "productionDate": "20190314"
    }
  ]
}
```

#### 400

ValidationException 400 response

**Schema:** `ValidationExceptionResponseContent`

**Properties:**

- **`code`** (`string`): A code describing the type of validation failure.
- **`message`** (`string`) (required): A message describing the causes of the validation failure. There may be more than one.
#### 403

AccessDeniedException 403 response

**Schema:** `AccessDeniedExceptionResponseContent`

**Properties:**

- **`code`** (`string`): Error classification code
- **`message`** (`string`) (required): Human-readable error message
#### 404

ResourceNotFoundException 404 response

**Schema:** `ResourceNotFoundExceptionResponseContent`

**Properties:**

- **`code`** (`string`): Error classification code
- **`message`** (`string`) (required): Human-readable error message
#### 429

ThrottlingException 429 response

**Schema:** `ThrottlingExceptionResponseContent`

**Properties:**

- **`code`** (`string`): Error classification code
- **`message`** (`string`) (required): Human-readable error message
#### 500

InternalFailureException 500 response

**Schema:** `InternalFailureExceptionResponseContent`

**Properties:**

- **`code`** (`string`): Error classification code
- **`message`** (`string`) (required): Human-readable error message
#### 503

ServiceUnavailableException 503 response

**Schema:** `ServiceUnavailableExceptionResponseContent`

**Properties:**

- **`code`** (`string`)
- **`message`** (`string`) (required)
#### 504

GatewayTimeoutException 504 response

**Schema:** `GatewayTimeoutExceptionResponseContent`

**Properties:**

- **`code`** (`string`)
- **`message`** (`string`) (required)


# Insurance Discovery Check Results
Source: https://www.stedi.com/docs/healthcare/api-reference/get-insurance-discovery-results


You can use this endpoint to retrieve insurance discovery check results for a particular patient asynchronously.

You can begin polling immediately after receiving a `PENDING` status response from the synchronous Insurance Discovery Check endpoint. This endpoint can take up to 120 seconds to return a response.

It's unlikely for the insurance discovery process to take more than a few minutes, so it's rare to have to poll this endpoint more than once. However, if you receive a `PENDING` status, you can poll immediately again and continue polling until the status changes to `COMPLETE.`

Note that you should only expect to retrieve checks submitted within the last 24 hours. After 24 hours, the results may no longer be available.

## API Specification

Retrieve insurance discovery check results by `discoveryId`

**Endpoint:** `GET /insurance-discovery/check/v1/{discoveryId}`

**Base URL:** `https://healthcare.us.stedi.com/2024-04-01`

### Parameters

- **`discoveryId`** (path) (required): The unique ID for the insurance discovery check. Stedi returns this value in the response from the [Insurance Discovery Check](https://www.stedi.com/docs/healthcare/api-reference/post-insurance-discovery) endpoint.
  - Type: `string`

### Responses

#### 200

GetInsuranceDiscoveryCheck 200 response

**Schema:** `GetInsuranceDiscoveryCheckResponseContent`

**Properties:**

- **`coveragesFound`** (`integer`): The number of potential coverage matches for the patient. This will be `0` if Stedi didn't find any matching coverage.
- **`discoveryId`** (`string`): A unique ID for this insurance discovery check. You can use it to retrieve the results asynchronously through the [Insurance Discovery Check Results](https://www.stedi.com/docs/healthcare/api-reference/get-insurance-discovery-results) endpoint.
- **`errors`** (`array of EligibilityCheckError objects`): When a payer rejects your eligibility check, the response contains one or more [`AAA` errors](https://www.stedi.com/docs/healthcare/eligibility-troubleshooting#payer-aaa-errors) that specify the reasons for the rejection and any recommended follow-up actions.

Any errors that occur at the `payer`, `provider`, `subscriber`, or `dependents` levels are also included in this array, allowing you to review all errors in a central location. If there are no `AAA` errors, this array will be empty.
- **`errors[].code`** (`string`): This is a superset of all the possible codes in the sub-loops, as all errors are bubbled up to the top level of the response

Payers may sometimes return other non-compliant values.
  - Allowed values: `04`, `15`, `33`, `35`, `41`, `42`, `43`, `44`, `45`, `46`, `47`, `48`, `49`, `50`, `51`, `52`, `53`, `54`, `55`, `56`, `57`, `58`, `60`, `61`, `62`, `63`, `64`, `65`, `66`, `67`, `68`, `69`, `70`, `71`, `72`, `73`, `74`, `75`, `76`, `77`, `78`, `79`, `80`, `97`, `98`, `AA`, `AE`, `AF`, `AG`, `AO`, `CI`, `E8`, `IA`, `MA`, `T4`
- **`errors[].description`** (`string`): The error description.
- **`errors[].field`** (`string`): The error type, `AAA`.
- **`errors[].followupAction`** (`string`): Payers may sometimes return other non-compliant values.
  - Allowed values: `Please Correct and Resubmit`, `Resubmission Not Allowed`, `Please Resubmit Original Transaction`, `Resubmission Allowed`, `Do Not Resubmit; Inquiry Initiated to a Third Party`, `Please Wait 30 Days and Resubmit`, `Please Wait 10 Days and Resubmit`, `Do Not Resubmit; We Will Hold Your Request and Respond Again Shortly`
- **`errors[].location`** (`string`): The location of the error within the original X12 EDI response.
- **`errors[].possibleResolutions`** (`string`): Information to help you correct the error.

We periodically update this guidance, so these strings may change at any time and may differ between eligibility responses. **Don't build programmatic logic that depends on matching these strings exactly.**
- **`items`** (`array of InsuranceDiscoveryResponseFields objects`): An array of potential coverage matches for the patient. This will only be populated if the insurance discovery check `status` is `COMPLETE`. Each item in the array contains information about a potential match, including the provider, subscriber, payer, and plan information.
- **`items[].benefitsInformation`** (`array of DiscoveryBenefitsInformation objects`): Information about the patient's healthcare benefits, such as coverage level (individual vs. family), coverage type (deductibles, copays, etc.), out of pocket maximums, and more. This is the same information you would get from a standard eligibility check.
 
 Payers typically return at least the following properties: `code`, `coverageLevelCode`, `serviceTypeCodes`, and either `benefitAmount` or `benefitPercent`. However, the exact properties returned in this object are up to the payer's discretion.
 
 Visit [Determine patient benefits](https://www.stedi.com/docs/healthcare/eligibility-active-coverage-benefits) in our eligibility check documentation for more information about benefit types, details about how to interpret the response, and additional examples.
- **`items[].benefitsInformation[].additionalInformation`** (`array of AdditionalInformation objects`): A free-form message containing additional information about the benefits in the response.
- **`items[].benefitsInformation[].additionalInformation[].description`** (`string`): A free-form message containing additional information about the benefits in the response.
- **`items[].benefitsInformation[].authOrCertIndicator`** (`string`): Code indicating whether the benefit is subject to prior authorization or certification.

Payers may sometimes return other non-compliant values.
  - Allowed values: `N`, `U`, `Y`
- **`items[].benefitsInformation[].benefitAmount`** (`string`): The monetary benefit amount, such as a patient's co-pay or deductible. This value is expressed as a decimal, such as 100.00. 
 
 The payer will always send a value in this property when the `benefitsInformation[].code` = `B` - Co-Payment, `C` - Deductible, `G` - Out of Pocket (Stop Loss), `J` - Cost Containment, or `Y` - Spend Down. For those codes, this value represents the patient's portion of responsibility. 
 
 The payer will **never** send this value when `benefitsInformation[].code` = `A` - Co-Insurance. This property can contain zero when the patient has no responsibility. 
 
 Learn more about [patient costs](https://www.stedi.com/docs/healthcare/eligibility-patient-responsibility-benefits).
- **`items[].benefitsInformation[].benefitPercent`** (`string`): The percentage of the benefit, such as co-insurance. This property can contain zero when the patient has no responsibility. 
 
 The payer will always send a value in this property when `benefitsInformation[].code` = `A` - Co-Insurance. For this code, this value represents the patient's portion of the responsibility. The percentage is expressed as a decimal, such as `0.80` represents 80%. 
 
 The payer will **never** send a value in this property when `benefitsInformation[].code` = `B` - Co-Payment, `C` - Deductible, `G` - Out of Pocket (Stop Loss), `J` - Cost Containment, or `Y` - Spend Down. 
 
 Learn more about [patient costs](https://www.stedi.com/docs/healthcare/eligibility-patient-responsibility-benefits).
- **`items[].benefitsInformation[].benefitQuantity`** (`string`): The quantity of the benefit, qualified by the type specified in `quantityQualifier`. For example, `10` when the `quantityQualifier` is `Visits`.
- **`items[].benefitsInformation[].benefitsAdditionalInformation`** (`object`): Identifying information specific to this type of benefit.
- **`items[].benefitsInformation[].benefitsAdditionalInformation.alternativeListId`** (`string`): The alternative list ID. This identifier allows the payer to specify a list of drugs and its alternative drugs with the associated formulary status for the patient.
- **`items[].benefitsInformation[].benefitsAdditionalInformation.coverageListId`** (`string`): The coverage list ID. This identifier allows the payer to specify the identifier of a list of drugs that have coverage limitations for the associated patient.
- **`items[].benefitsInformation[].benefitsAdditionalInformation.drugFormularyNumber`** (`string`): The drug formulary number.
- **`items[].benefitsInformation[].benefitsAdditionalInformation.familyUnitNumber`** (`string`): The family unit number. This is returned when the payer is a pharmacy benefits manager (PBM) and the patient has a suffix to their member ID number that is used in the NCPDP Telecom Standard Insurance Segment, in field `303-C3` (Person Code). For all other uses, the family unit number (suffix) is considered part of the patient's member ID number.
- **`items[].benefitsInformation[].benefitsAdditionalInformation.groupDescription`** (`string`): Group name
- **`items[].benefitsInformation[].benefitsAdditionalInformation.groupNumber`** (`string`): The group number for the patient's health insurance plan.
- **`items[].benefitsInformation[].benefitsAdditionalInformation.hicNumber`** (`string`): The health insurance claim number (HICN). Note that CMS previously used the HICN to uniquely identify Medicare beneficiaries. However, they have since transitioned to a new, randomized Medicare Beneficiary Identifier (MBI) format. The HICN is no longer used for Medicare transactions but this property is now used by some payers to return MBI. If you receive a value in this property that matches the format specified in the [Medicare Beneficiary Identifier documentation](https://www.cms.gov/training-education/partner-outreach-resources/new-medicare-card/medical-beneficiary-identifiers-mbis), the number is likely an MBI and we recommend sending a follow-up eligibility check to CMS for additional benefits data. This most commonly occurs with patients who are covered by both Medicare and Medicaid.
- **`items[].benefitsInformation[].benefitsAdditionalInformation.insurancePolicyNumber`** (`string`): The insurance policy number.
- **`items[].benefitsInformation[].benefitsAdditionalInformation.medicaidRecepientIdNumber`** (`string`): Deprecated (misspelled): use medicaidRecipientIdNumber. The Medicaid Recipient Identification number.
This shape is deprecated: Misspelled. Use medicaidRecipientIdNumber instead. Still populated for backward compatibility.
- **`items[].benefitsInformation[].benefitsAdditionalInformation.medicaidRecipientIdNumber`** (`string`): The Medicaid Recipient Identification number.
- **`items[].benefitsInformation[].benefitsAdditionalInformation.medicalAssistanceCategory`** (`string`): The medical assistance category.
- **`items[].benefitsInformation[].benefitsAdditionalInformation.memberId`** (`string`): The patient's member ID.
- **`items[].benefitsInformation[].benefitsAdditionalInformation.planDescription`** (`string`): Plan name
- **`items[].benefitsInformation[].benefitsAdditionalInformation.planNetworkDescription`** (`string`): Plan network name
- **`items[].benefitsInformation[].benefitsAdditionalInformation.planNetworkIdNumber`** (`string`): The plan network identification number.
- **`items[].benefitsInformation[].benefitsAdditionalInformation.planNumber`** (`string`): The insurance plan number.
- **`items[].benefitsInformation[].benefitsAdditionalInformation.policyNumber`** (`string`): The patient's policy number.
- **`items[].benefitsInformation[].benefitsAdditionalInformation.priorAuthorizationNumber`** (`string`): The prior authorization number.
- **`items[].benefitsInformation[].benefitsAdditionalInformation.referralNumber`** (`string`): The referral number.
- **`items[].benefitsInformation[].benefitsDateInformation`** (`object`): Dates associated with the benefits.
  - This is where you can find benefit-specific eligibility dates, if provided. These dates override dates provided in `planDateInformation` for this benefit type.
  - This is where the payer may specify the last time the service was rendered (`latestVisitOrConsultation`), which you can use to determine whether the patient has already reached the allowed frequency, if applicable. For example, this object could contain the date when the patient received their last dental cleaning.
  - These dates only apply to the `benefitsInformation` object in which this `benefitsDateInformation` is provided.
- **`items[].benefitsInformation[].benefitsDateInformation.added`** (`string`): Added date. Payers may return this information in the case of retroactive eligibility.
- **`items[].benefitsInformation[].benefitsDateInformation.admission`** (`string`): The admission date or dates.
- **`items[].benefitsInformation[].benefitsDateInformation.admissions`** (`array of DtpDate objects`): The date(s) for admission.
- **`items[].benefitsInformation[].benefitsDateInformation.admissions[].date`** (`string`): A single date.
- **`items[].benefitsInformation[].benefitsDateInformation.admissions[].endDate`** (`string`): The end date of a range.
- **`items[].benefitsInformation[].benefitsDateInformation.admissions[].startDate`** (`string`): The beginning date of a range.
- **`items[].benefitsInformation[].benefitsDateInformation.benefit`** (`string`): The benefit date.
- **`items[].benefitsInformation[].benefitsDateInformation.benefitBegin`** (`string`): The date when the benefit begins.
- **`items[].benefitsInformation[].benefitsDateInformation.benefitEnd`** (`string`): The date when the benefit ends.
- **`items[].benefitsInformation[].benefitsDateInformation.certification`** (`string`): The certification date.
- **`items[].benefitsInformation[].benefitsDateInformation.cobraBegin`** (`string`): The date when COBRA coverage begins.
- **`items[].benefitsInformation[].benefitsDateInformation.cobraEnd`** (`string`): The date when COBRA coverage ends.
- **`items[].benefitsInformation[].benefitsDateInformation.completion`** (`string`): The completion date.
- **`items[].benefitsInformation[].benefitsDateInformation.coordinationOfBenefits`** (`string`): The coordination of benefits date.
- **`items[].benefitsInformation[].benefitsDateInformation.dateOfDeath`** (`string`): The date of death.
- **`items[].benefitsInformation[].benefitsDateInformation.dateOfLastUpdate`** (`string`): The date when the plan information was last updated.
- **`items[].benefitsInformation[].benefitsDateInformation.discharge`** (`string`): The discharge date.
- **`items[].benefitsInformation[].benefitsDateInformation.discharges`** (`array of DtpDate objects`): The date(s) when the patient was discharged.
- **`items[].benefitsInformation[].benefitsDateInformation.discharges[].date`** (`string`): A single date.
- **`items[].benefitsInformation[].benefitsDateInformation.discharges[].endDate`** (`string`): The end date of a range.
- **`items[].benefitsInformation[].benefitsDateInformation.discharges[].startDate`** (`string`): The beginning date of a range.
- **`items[].benefitsInformation[].benefitsDateInformation.effectiveDateOfChange`** (`string`): The effective date of change.
- **`items[].benefitsInformation[].benefitsDateInformation.eligibility`** (`string`): Plan eligibility dates.
- **`items[].benefitsInformation[].benefitsDateInformation.eligibilityBegin`** (`string`): The date when the patient is first eligible for benefits under the plan.
- **`items[].benefitsInformation[].benefitsDateInformation.eligibilityEnd`** (`string`): The date when the patient is no longer eligible for benefits under the plan.
- **`items[].benefitsInformation[].benefitsDateInformation.enrollment`** (`string`): The date when the patient is enrolled in the plan.
- **`items[].benefitsInformation[].benefitsDateInformation.issue`** (`string`): The issue date.
- **`items[].benefitsInformation[].benefitsDateInformation.latestVisitOrConsultation`** (`string`): The latest visit or consultation date. This date may be used to determine whether the patient has already reached the allowed frequency for a specific benefit.
- **`items[].benefitsInformation[].benefitsDateInformation.periodEnd`** (`string`): The end of a period.
- **`items[].benefitsInformation[].benefitsDateInformation.periodStart`** (`string`): The start of a period.
- **`items[].benefitsInformation[].benefitsDateInformation.plan`** (`string`): Only included when multiple plans apply to the patient or multiple plan periods apply.
- **`items[].benefitsInformation[].benefitsDateInformation.planBegin`** (`string`): Only included when multiple plans apply to the patient or multiple plan periods apply.
- **`items[].benefitsInformation[].benefitsDateInformation.planEnd`** (`string`): The date coverage from the plan ends.
- **`items[].benefitsInformation[].benefitsDateInformation.policyEffective`** (`string`): The date when the policy becomes effective.
- **`items[].benefitsInformation[].benefitsDateInformation.policyExpiration`** (`string`): The date when the policy expires.
- **`items[].benefitsInformation[].benefitsDateInformation.premiumPaidToDateEnd`** (`string`): The end of period when the plan premium payments are up-to-date.
- **`items[].benefitsInformation[].benefitsDateInformation.premiumPaidtoDateBegin`** (`string`): The start of the period when the plan premium was paid in full.
- **`items[].benefitsInformation[].benefitsDateInformation.primaryCareProvider`** (`string`): The primary care provider date.
- **`items[].benefitsInformation[].benefitsDateInformation.service`** (`string`): The service date or dates.
- **`items[].benefitsInformation[].benefitsDateInformation.status`** (`string`): The status date.
- **`items[].benefitsInformation[].benefitsRelatedEntities`** (`array of BenefitsRelatedEntity objects`): Other entities associated with the eligibility or benefits. This could be a provider, an individual, an organization, or another payer. When present, this array typically contains information about the patient's primary care provider (PCP), another organization that handles a specific benefit type (such as telehealth mental health services), or another health plan for the patient (coordination of benefits scenarios).
- This is where information for a crossover carrier such as Medicaid or Medicare is provided, if it's applicable to the patient and the payer supports it.
- For Blue Cross Blue Shield (BCBS) payers, Stedi returns an entry containing information about the patient's home plan - the plan that actually verified the coverage. In this object, the `entityIdentifier` property is set to `Party Performing Verification`. [Learn more](https://www.stedi.com/docs/healthcare/eligibility-active-coverage-benefits#bcbs-home-plan)
- **`items[].benefitsInformation[].benefitsRelatedEntities[].address`** (`object`)
- **`items[].benefitsInformation[].benefitsRelatedEntities[].address.address1`** (`string`): The first line of the address.
- **`items[].benefitsInformation[].benefitsRelatedEntities[].address.address2`** (`string`): The second line of the address.
- **`items[].benefitsInformation[].benefitsRelatedEntities[].address.city`** (`string`): The city.
- **`items[].benefitsInformation[].benefitsRelatedEntities[].address.countryCode`** (`string`): The two-letter country code from [Part 1 of ISO 3166](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2).
- **`items[].benefitsInformation[].benefitsRelatedEntities[].address.countrySubDivisionCode`** (`string`): The country subdivision code from [Part 2 of ISO 3166](https://en.wikipedia.org/wiki/ISO_3166-2).
- **`items[].benefitsInformation[].benefitsRelatedEntities[].address.postalCode`** (`string`): The United States or Canadian postal code, excluding punctuation and blanks.
- **`items[].benefitsInformation[].benefitsRelatedEntities[].address.state`** (`string`): The US state or Canadian province code with unknown option. For example, `TN` for Tennessee or `NB` for New Brunswick.

Payers may sometimes return other non-compliant values.
  - Allowed values: `NL`, `PE`, `NS`, `NB`, `QC`, `ON`, `MB`, `SK`, `AB`, `BC`, `YT`, `NT`, `NU`, `DC`, `AS`, `GU`, `MP`, `PR`, `UM`, `VI`, `AA`, `AE`, `AP`, `AK`, `AL`, `AR`, `AZ`, `CA`, `CO`, `CT`, `DE`, `FL`, `GA`, `HI`, `IA`, `ID`, `IL`, `IN`, `KS`, `KY`, `LA`, `MA`, `MD`, `ME`, `MI`, `MN`, `MO`, `MS`, `MT`, `NC`, `ND`, `NE`, `NH`, `NJ`, `NM`, `NV`, `NY`, `OH`, `OK`, `OR`, `PA`, `RI`, `SC`, `SD`, `TN`, `TX`, `UT`, `VA`, `VT`, `WA`, `WI`, `WV`, `WY`
- **`items[].benefitsInformation[].benefitsRelatedEntities[].contactInformation`** (`object`)
- **`items[].benefitsInformation[].benefitsRelatedEntities[].contactInformation.contacts`** (`array of Contacts objects`): The contact information.
- **`items[].benefitsInformation[].benefitsRelatedEntities[].contactInformation.contacts[].communicationMode`** (`string`): Payers may sometimes return other non-compliant values.
  - Allowed values: `Electronic Data Interchange Access Number`, `Electronic Mail`, `Facsimile`, `Telephone`, `Uniform Resource Locator (URL)`, `Telephone Extension`, `Work Phone Number`
- **`items[].benefitsInformation[].benefitsRelatedEntities[].contactInformation.contacts[].communicationNumber`** (`string`): The communication number referenced in `communicationMode`. It includes the country or area code when applicable. 
 
 Note that phone numbers are formatted as AAABBBCCCC, where AAA represents the area code, BBB represents the telephone number prefix, and CCCC represents the telephone number. Phone numbers are provided without separators, such as dashes or parentheses. For example, `5551123345` for `555-112-3345`.
- **`items[].benefitsInformation[].benefitsRelatedEntities[].contactInformation.name`** (`string`): The name of the contact person.
- **`items[].benefitsInformation[].benefitsRelatedEntities[].entityFirstname`** (`string`): The first name of the entity, if the entity is a person.
- **`items[].benefitsInformation[].benefitsRelatedEntities[].entityIdentification`** (`string`): Code identifying the type of value provided in `entityIdentificationValue`. For example, `FI` - Federal Taxpayer's Identification Number.

Payers may sometimes return other non-compliant values.
  - Allowed values: `24`, `34`, `46`, `FA`, `FI`, `II`, `MI`, `NI`, `PI`, `PP`, `SV`, `XV`, `XX`
- **`items[].benefitsInformation[].benefitsRelatedEntities[].entityIdentificationValue`** (`string`): The identification number for the entity, qualified by the code in `entityIdentification`.
- **`items[].benefitsInformation[].benefitsRelatedEntities[].entityIdentifier`** (`string`): Code identifying an organizational entity, a physical location, property or an individual. 
  - `PPO` is used to identify a PPO by name or identification number, and also may also be used if identifying the Network that benefits are restricted to for In-Network benefits.

Payers may sometimes return other non-compliant values.
  - Allowed values: `Contracted Service Provider`, `Preferred Provider Organization (PPO)`, `Provider`, `Third-Party Administrator`, `Employer`, `Other Physician`, `Facility`, `Gateway Provider`, `Group`, `Independent Physicians Association (IPA)`, `Insured or Subscriber`, `Legal Representative`, `Origin Carrier`, `Primary Care Provider`, `Prior Insurance Carrier`, `Plan Sponsor`, `Payer`, `Primary Payer`, `Secondary Payer`, `Tertiary Payer`, `Party Performing Verification`, `Vendor`, `Organization Completing Configuration Change`, `Utilization Management Organization`, `Managed Care Organization`
- **`items[].benefitsInformation[].benefitsRelatedEntities[].entityMiddlename`** (`string`): The middle name or initial of the entity, if the entity is a person.
- **`items[].benefitsInformation[].benefitsRelatedEntities[].entityName`** (`string`): The last name (if the entity is a person) or the business name (if the entity is an organization).
- **`items[].benefitsInformation[].benefitsRelatedEntities[].entityRelationship`** (`string`): Code specifying the relationship between the entity and the patient.

Payers may sometimes return other non-compliant values.
  - Allowed values: `01`, `02`, `27`, `41`, `48`, `65`, `72`
- **`items[].benefitsInformation[].benefitsRelatedEntities[].entitySuffix`** (`string`): The name suffix, such as Sr. Jr. or III.
- **`items[].benefitsInformation[].benefitsRelatedEntities[].entityType`** (`string`): The type of entity.

Payers may sometimes return other non-compliant values.
  - Allowed values: `Person`, `Non-Person Entity`
- **`items[].benefitsInformation[].benefitsRelatedEntities[].providerInformation`** (`object`)
- **`items[].benefitsInformation[].benefitsRelatedEntities[].providerInformation.providerCode`** (`string`): A code indicating the type of provider. Visit [Eligibility code lists](https://www.stedi.com/docs/healthcare/eligibility-code-lists#provider-codes) for a complete list.

Payers may sometimes return other non-compliant values.
  - Allowed values: `AD`, `AT`, `BI`, `CO`, `CV`, `H`, `HH`, `LA`, `OT`, `P1`, `P2`, `PC`, `PE`, `R`, `RF`, `SB`, `SK`, `SU`
- **`items[].benefitsInformation[].benefitsRelatedEntities[].providerInformation.referenceIdentification`** (`string`): The provider's taxonomy code.
- **`items[].benefitsInformation[].benefitsServiceDelivery`** (`array of BenefitsServiceDelivery objects`)
- **`items[].benefitsInformation[].benefitsServiceDelivery[].deliveryOrCalendarPatternCode`** (`string`): The name of the `deliveryOrCalendarPatternCode`. For example, `Last Working Day of Period`.

Payers may sometimes return other non-compliant values.
  - Allowed values: `1st Week of the Month`, `2nd Week of the Month`, `3rd Week of the Month`, `4th Week of the Month`, `5th Week of the Month`, `1st & 3rd Week of the Month`, `2nd & 4th Week of the Month`, `1st Working Day of Period`, `Last Working Day of Period`, `Monday through Friday`, `Monday through Saturday`, `Monday through Sunday`, `Monday`, `Tuesday`, `Wednesday`, `Thursday`, `Friday`, `Saturday`, `Sunday`, `Monday through Thursday`, `Immediately`, `As Directed`, `Daily Mon. Through Fri.`, `1/2 Mon. & 1/2 Tues.`, `1/2 Tues. & 1/2 Thurs.`, `1/2 Wed. & 1/2 Fri.`, `Once Anytime Mon. through Fri.`, `Tuesday through Friday`, `Monday, Tuesday and Thursday`, `Monday, Tuesday and Friday`, `Wednesday and Thursday`, `Monday, Wednesday and Thursday`, `Tuesday, Thursday and Friday`, `1/2 Tues. & 1/2 Fri.`, `1/2 Mon. & 1/2 Wed.`, `1/3 Mon., 1/3 Wed., 1/3 Fri.`, `Whenever Necessary`, `1/2 By Wed. Bal. By Fri.`, `None (Also Used to Cancel or Override a Previous Pattern)`
- **`items[].benefitsInformation[].benefitsServiceDelivery[].deliveryOrCalendarPatternQualifier`** (`string`): The name of the `deliveryOrCalendarPatternCode`. For example, `Last Working Day of Period`.

Payers may sometimes return other non-compliant values.
  - Allowed values: `1st Week of the Month`, `2nd Week of the Month`, `3rd Week of the Month`, `4th Week of the Month`, `5th Week of the Month`, `1st & 3rd Week of the Month`, `2nd & 4th Week of the Month`, `1st Working Day of Period`, `Last Working Day of Period`, `Monday through Friday`, `Monday through Saturday`, `Monday through Sunday`, `Monday`, `Tuesday`, `Wednesday`, `Thursday`, `Friday`, `Saturday`, `Sunday`, `Monday through Thursday`, `Immediately`, `As Directed`, `Daily Mon. Through Fri.`, `1/2 Mon. & 1/2 Tues.`, `1/2 Tues. & 1/2 Thurs.`, `1/2 Wed. & 1/2 Fri.`, `Once Anytime Mon. through Fri.`, `Tuesday through Friday`, `Monday, Tuesday and Thursday`, `Monday, Tuesday and Friday`, `Wednesday and Thursday`, `Monday, Wednesday and Thursday`, `Tuesday, Thursday and Friday`, `1/2 Tues. & 1/2 Fri.`, `1/2 Mon. & 1/2 Wed.`, `1/3 Mon., 1/3 Wed., 1/3 Fri.`, `Whenever Necessary`, `1/2 By Wed. Bal. By Fri.`, `None (Also Used to Cancel or Override a Previous Pattern)`
- **`items[].benefitsInformation[].benefitsServiceDelivery[].deliveryOrCalendarPatternQualifierCode`** (`string`): Code that specifies the routine shipments, deliveries, or calendar pattern. For example `9` - Last Working Day of Period. Visit [Eligibility code lists](https://www.stedi.com/docs/healthcare/eligibility-code-lists#delivery-frequency-codes) for a complete list.

Payers may sometimes return other non-compliant values.
  - Allowed values: `1`, `2`, `3`, `4`, `5`, `6`, `7`, `8`, `9`, `A`, `B`, `C`, `D`, `E`, `F`, `G`, `H`, `J`, `K`, `L`, `M`, `N`, `O`, `P`, `Q`, `R`, `S`, `SG`, `SL`, `SP`, `SX`, `SY`, `SZ`, `T`, `U`, `V`, `W`, `X`, `Y`
- **`items[].benefitsInformation[].benefitsServiceDelivery[].deliveryPatternTimeCode`** (`string`): The name of the `deliveryPatternTimeCode`.

Payers may sometimes return other non-compliant values.
  - Allowed values: `1st Shift (Normal Working Hours)`, `2nd Shift`, `3rd Shift`, `A.M.`, `P.M.`, `As Directed`, `Any Shift`, `None (Also Used to Cancel or Override a Previous Pattern)`
- **`items[].benefitsInformation[].benefitsServiceDelivery[].deliveryPatternTimeQualifier`** (`string`): The name of the `deliveryPatternTimeCode`.

Payers may sometimes return other non-compliant values.
  - Allowed values: `1st Shift (Normal Working Hours)`, `2nd Shift`, `3rd Shift`, `A.M.`, `P.M.`, `As Directed`, `Any Shift`, `None (Also Used to Cancel or Override a Previous Pattern)`
- **`items[].benefitsInformation[].benefitsServiceDelivery[].deliveryPatternTimeQualifierCode`** (`string`): A code specifying the time for routine shipments or deliveries.

Payers may sometimes return other non-compliant values.
  - Allowed values: `A`, `B`, `C`, `D`, `E`, `F`, `G`, `Y`
- **`items[].benefitsInformation[].benefitsServiceDelivery[].numOfPeriods`** (`string`): The number of periods in the time period. For example, `12` when the `timePeriodQualifier` is `Hour`.
- **`items[].benefitsInformation[].benefitsServiceDelivery[].quantity`** (`string`): The quantity of the benefit. For example, `10` when the `quantityQualifier` is `Visits`.
- **`items[].benefitsInformation[].benefitsServiceDelivery[].quantityQualifier`** (`string`): The name of the `quantityQualifierCode`. For example, `Days`.

Payers may sometimes return other non-compliant values.
  - Allowed values: `Days`, `Units`, `Hours`, `Month`, `Visits`
- **`items[].benefitsInformation[].benefitsServiceDelivery[].quantityQualifierCode`** (`string`): Code specifying the type of quantity.

Payers may sometimes return other non-compliant values.
  - Allowed values: `DY`, `FL`, `HS`, `MN`, `VS`
- **`items[].benefitsInformation[].benefitsServiceDelivery[].sampleSelectionModulus`** (`string`): Specifies the sampling frequency, based on the unit of measure. For example `every 2 months` or `once per calendar year`.
- **`items[].benefitsInformation[].benefitsServiceDelivery[].timePeriodQualifier`** (`string`): The name of the `timePeriodQualifierCode`. For example, `Calendar Year`.

Payers may sometimes return other non-compliant values.
  - Allowed values: `Hour`, `Day`, `Years`, `Service Year`, `Calendar Year`, `Year to Date`, `Contract`, `Episode`, `Visit`, `Outlier`, `Remaining`, `Exceeded`, `Not Exceeded`, `Lifetime`, `Lifetime Remaining`, `Month`, `Week`
- **`items[].benefitsInformation[].benefitsServiceDelivery[].timePeriodQualifierCode`** (`string`): Code specifying the time period for the benefit information.

Payers may sometimes return other non-compliant values.
  - Allowed values: `6`, `7`, `21`, `22`, `23`, `24`, `25`, `26`, `27`, `28`, `29`, `30`, `31`, `32`, `33`, `34`, `35`
- **`items[].benefitsInformation[].benefitsServiceDelivery[].unitForMeasurementCode`** (`string`): The name of the `unitForMeasurementQualifierCode`. For example, `Days`.

Payers may sometimes return other non-compliant values.
  - Allowed values: `Days`, `Months`, `Visits`, `Week`, `Years`
- **`items[].benefitsInformation[].benefitsServiceDelivery[].unitForMeasurementQualifier`** (`string`): The name of the `unitForMeasurementQualifierCode`. For example, `Days`.

Payers may sometimes return other non-compliant values.
  - Allowed values: `Days`, `Months`, `Visits`, `Week`, `Years`
- **`items[].benefitsInformation[].benefitsServiceDelivery[].unitForMeasurementQualifierCode`** (`string`): Code specifying the unit of measurement for the quantity.

Payers may sometimes return other non-compliant values.
  - Allowed values: `DA`, `MO`, `VS`, `WK`, `YR`
- **`items[].benefitsInformation[].code`** (`string`): The code indicating the type of benefits information. Visit [Eligibility and benefit codes](https://www.stedi.com/docs/healthcare/eligibility-active-coverage-benefits#benefit-type-codes) for more information.

Payers may sometimes return other non-compliant values.
  - Allowed values: `1`, `2`, `3`, `4`, `5`, `6`, `7`, `8`, `A`, `B`, `C`, `CB`, `D`, `E`, `F`, `G`, `H`, `I`, `J`, `K`, `L`, `M`, `MC`, `N`, `O`, `P`, `Q`, `R`, `S`, `T`, `U`, `V`, `W`, `X`, `Y`
- **`items[].benefitsInformation[].compositeMedicalProcedureIdentifier`** (`object`): Identifies relevant medical procedures by their standard codes and modifiers (if applicable).
- **`items[].benefitsInformation[].compositeMedicalProcedureIdentifier.diagnosisCodePointer`** (`array of strings`): The diagnosis code pointer.
- **`items[].benefitsInformation[].compositeMedicalProcedureIdentifier.procedureCode`** (`string`): The procedure code. Many payers do not support eligibility checks for specific procedure codes. If the payer does not support procedure codes, they return a generic benefits response for the service type code `30`.
- **`items[].benefitsInformation[].compositeMedicalProcedureIdentifier.procedureModifiers`** (`array of strings`): Procedure modifiers that provides additional information related to the performance of the service.
- **`items[].benefitsInformation[].compositeMedicalProcedureIdentifier.productOrServiceID`** (`string`): The product or service ID. This value represents the end of the range of applicable procedure codes. The beginning of the range is listed in `procedureCode`.
- **`items[].benefitsInformation[].compositeMedicalProcedureIdentifier.productOrServiceIDQualifier`** (`string`): The name of the `productOrServiceIDQualifierCode`. For example, `American Dental Association`.
- **`items[].benefitsInformation[].compositeMedicalProcedureIdentifier.productOrServiceIDQualifierCode`** (`string`): Identifies the external code list used to provide the specified procedure or service codes. Can be `AD` - American Dental Association, `CJ` - Current Procedural Terminology (CPT) codes, `HC` - Health Care Financing Administration Common Procedural Coding System (HCPCS) Codes, `ID` - International Classification of Diseases 9th Revision, Clinical Modification (ICD-9-CM) - Procedure, `IV` - Home Infusion EDI Coalition (HIEC) Product/Service Code, `N4` - National Drug Code in 5-4-2 Format, or `ZZ` - Mutually Defined
- **`items[].benefitsInformation[].coverageLevel`** (`string`): The full name of the coverage level code.

Payers may sometimes return other non-compliant values.
  - Allowed values: `Children Only`, `Dependents Only`, `Employee and Children`, `Employee Only`, `Employee and Spouse`, `Family`, `Individual`, `Spouse and Children`, `Spouse Only`
- **`items[].benefitsInformation[].coverageLevelCode`** (`string`): Code indicating the level of coverage for the patient. 

This will either be `CHD` - Children Only, `DEP` - Dependents Only, `ECH` - Employee and Children, `EMP` - Employee Only, `ESP` - Employee and Spouse, `FAM` - Family, `IND` - Individual, `SPC` - Spouse and Children, `SPO` - Spouse Only, or `Unknown`.

Payers may sometimes return other non-compliant values.
  - Allowed values: `CHD`, `DEP`, `ECH`, `EMP`, `ESP`, `FAM`, `IND`, `SPC`, `SPO`
- **`items[].benefitsInformation[].eligibilityAdditionalInformationList`** (`array of EligibilityAdditionalInformation objects`): Used when there are multiple Nature of Injury Codes or a Facility Type Codes included in the response.
- **`items[].benefitsInformation[].eligibilityAdditionalInformationList[].codeCategory`** (`string`): Payers may sometimes return other non-compliant values.
  - Allowed values: `44`
- **`items[].benefitsInformation[].eligibilityAdditionalInformationList[].codeListQualifier`** (`string`): The name of the `codeListQualifierCode`. For example `Mutually Defined` when the code is set to `ZZ`.
- **`items[].benefitsInformation[].eligibilityAdditionalInformationList[].codeListQualifierCode`** (`string`): Payers may sometimes return other non-compliant values.
  - Allowed values: `GR`, `NI`, `ZZ`
- **`items[].benefitsInformation[].eligibilityAdditionalInformationList[].industry`** (`string`): The name of the `industryCode`. For example `Pharmacy` when the code is `01`.
- **`items[].benefitsInformation[].eligibilityAdditionalInformationList[].industryCode`** (`string`): The specific industry code. When `codeListQualifierCode` is set to `ZZ` - Mutually Defined, this property will be set to a place of service code. Visit the [Place of Service Code Set](https://www.cms.gov/medicare/coding-billing/place-of-service-codes/code-sets) for a complete list of these codes and their descriptions.
- **`items[].benefitsInformation[].eligibilityAdditionalInformationList[].injuredBodyPartName`** (`string`): Description of injured body parts.
- **`items[].benefitsInformation[].headerLoopIdentifierCode`** (`string`): The loop header identifier number in the `LS` segment of the original X12 EDI transaction.
- **`items[].benefitsInformation[].inPlanNetworkIndicator`** (`string`): The name of the in-plan network indicator code.

Payers may sometimes return other non-compliant values.
  - Allowed values: `Yes`, `No`, `Unknown`, `Not Applicable`
- **`items[].benefitsInformation[].inPlanNetworkIndicatorCode`** (`string`): Code indicating whether the benefit is in-network or out-of-network. Can be `Y` - Yes, `N` - No, `U` - Unknown, or `W` - Not Applicable

 Code `U` indicates that it is unknown whether the benefits are in or out-of-network. Code `W` indicates that the benefit applies to both in and out-of-network providers. 
 
 Note that this property **doesn't indicate** whether the provider is in or out-of-network for the patient. To determine that, you must check with the payer directly.

Payers may sometimes return other non-compliant values.
  - Allowed values: `Y`, `N`, `U`, `W`
- **`items[].benefitsInformation[].insuranceType`** (`string`): The full name of the insurance type code.

Payers may sometimes return other non-compliant values.
  - Allowed values: `Medicare Secondary Working Aged Beneficiary or Spouse with Employer Group Health Plan`, `Medicare Secondary End-Stage Renal Disease Beneficiary in the Mandated Coordination Period with an Employer's Group Health Plan`, `Medicare Secondary, No-fault Insurance including Auto is Primary`, `Medicare Secondary Worker's Compensation`, `Medicare Secondary Public Health Service (PHS)or Other Federal Agency`, `Medicare Secondary Black Lung`, `Medicare Secondary Veteran's Administration`, `Medicare Secondary Disabled Beneficiary Under Age 65 with Large Group Health Plan (LGHP)`, `Medicare Secondary, Other Liability Insurance is Primary`, `Auto Insurance Policy`, `Commercial`, `Consolidated Omnibus Budget Reconciliation Act (COBRA)`, `Medicare Conditionally Primary`, `Disability`, `Disability Benefits`, `Exclusive Provider Organization`, `Family or Friends`, `Group Policy`, `Health Maintenance Organization (HMO)`, `Health Maintenance Organization (HMO) - Medicare Risk`, `Special Low Income Medicare Beneficiary`, `Indemnity`, `Individual Policy`, `Long Term Care`, `Long Term Policy`, `Life Insurance`, `Litigation`, `Medicare Part A`, `Medicare Part B`, `Medicaid`, `Medigap Part A`, `Medigap Part B`, `Medicare Primary`, `Other`, `Property Insurance - Personal`, `Personal`, `Personal Payment (Cash - No Insurance)`, `Preferred Provider Organization (PPO)`, `Point of Service (POS)`, `Qualified Medicare Beneficiary`, `Property Insurance - Real`, `Supplemental Policy`, `Tax Equity Fiscal Responsibility Act (TEFRA)`, `Workers Compensation`, `Wrap Up Policy`
- **`items[].benefitsInformation[].insuranceTypeCode`** (`string`): Code identifying the type of insurance policy.

Payers may sometimes return other non-compliant values.
  - Allowed values: `12`, `13`, `14`, `15`, `16`, `41`, `42`, `43`, `47`, `AP`, `C1`, `CO`, `CP`, `D`, `DB`, `EP`, `FF`, `GP`, `HM`, `HN`, `HS`, `IN`, `IP`, `LC`, `LD`, `LI`, `LT`, `MA`, `MB`, `MC`, `MH`, `MI`, `MP`, `OT`, `PE`, `PL`, `PP`, `PR`, `PS`, `QM`, `RP`, `SP`, `TF`, `WC`, `WU`
- **`items[].benefitsInformation[].name`** (`string`): The full name of the benefits information code.

Payers may sometimes return other non-compliant values.
  - Allowed values: `Active Coverage`, `Active - Full Risk Capitation`, `Active - Services Capitated`, `Active - Services Capitated to Primary Care Physician`, `Active - Pending Investigation`, `Inactive`, `Inactive - Pending Eligibility Update`, `Inactive - Pending Investigation`, `Co-Insurance`, `Co-Payment`, `Deductible`, `Coverage Basis`, `Benefit Description`, `Exclusions`, `Limitations`, `Out of Pocket (Stop Loss)`, `Unlimited`, `Non-Covered`, `Cost Containment`, `Reserve`, `Primary Care Provider`, `Pre-existing Condition`, `Managed Care Coordinator`, `Services Restricted to Following Provider`, `Not Deemed a Medical Necessity`, `Benefit Disclaimer`, `Second Surgical Opinion Required`, `Other or Additional Payor`, `Prior Year(s) History`, `Card(s) Reported Lost/Stolen`, `Contact Following Entity for Eligibility or Benefit Information`, `Cannot Process`, `Other Source of Data`, `Health Care Facility`, `Spend Down`
- **`items[].benefitsInformation[].planCoverage`** (`string`): The specific product name or special program name for an insurance plan. For example `Gold 1-2-3`.

Payers are normally required to send the plan name when `benefitsInformation[].code` is set to values `1` - `8` and the `benefitsInformation[].serviceTypeCodes` contains `30` (Health Benefit Plan Coverage). However, behavior may vary by payer, so don't rely on this information being present in the response. Note that the plan name returned in this property may not exactly match the name the payer uses in official plan documents or marketing literature.

Visit [What's the plan name?](https://www.stedi.com/docs/healthcare/eligibility-active-coverage-benefits#what’s-the-plan-name%3F) in the benefits response documentation for more details.
- **`items[].benefitsInformation[].quantityQualifier`** (`string`): The name of the quantity qualifier code.

Payers may sometimes return other non-compliant values.
  - Allowed values: `Minimum`, `Quantity Used`, `Covered - Actual`, `Covered - Estimated`, `Number of Co-insurance Days`, `Deductible Blood Units`, `Days`, `Hours`, `Life-time Reserve - Actual`, `Life-time Reserve - Estimated`, `Maximum`, `Month`, `Number of Services or Procedures`, `Quantity Approved`, `Age, High Value`, `Age, Low Value`, `Visits`, `Years`
- **`items[].benefitsInformation[].quantityQualifierCode`** (`string`): Code indicating the type of quantity for the benefit.

Payers may sometimes return other non-compliant values.
  - Allowed values: `8H`, `99`, `CA`, `CE`, `D3`, `DB`, `DY`, `HS`, `LA`, `LE`, `M2`, `MN`, `P6`, `QA`, `S7`, `S8`, `VS`, `YY`
- **`items[].benefitsInformation[].serviceTypeCodes`** (`array of strings`): Service Type Codes (STCs) related to the benefit type. For example, `7` - Anesthesia. Visit [Service Type Codes](https://www.stedi.com/docs/healthcare/send-eligibility-checks#service-type-codes) for a complete list.

This list is specific to X12 version 005010, which is the mandated version for eligibility checks. It differs from the current [X12 Service Type Codes](https://x12.org/codes/service-type-codes) list, which applies to X12 versions later than 005010.

Payers may sometimes return other non-compliant values.
- **`items[].benefitsInformation[].serviceTypes`** (`array of strings`): The names of the Service Type Codes listed in the `serviceTypeCodes` array. Visit [Service Type Codes](https://www.stedi.com/docs/healthcare/send-eligibility-checks#service-type-codes) for a complete list of codes and their names.

The word physician in service type codes refers to any healthcare provider, including physician assistants, nurse practitioners, and other types of healthcare professionals.

Payers may sometimes return other non-compliant values.
- **`items[].benefitsInformation[].timeQualifier`** (`string`): The name of the time period qualifier code. 
 
 Note that for the patient's deductible, `Calendar Year` indicates the patient's total deductible amount for the year, while `Remaining` indicates the amount left to meet the deductible. Visit [Payer benefit response](https://www.stedi.com/docs/healthcare/eligibility-patient-responsibility-benefits#deductible) to learn more about deductibles.

Payers may sometimes return other non-compliant values.
  - Allowed values: `Hour`, `Day`, `24 Hours`, `Years`, `Service Year`, `Calendar Year`, `Year to Date`, `Contract`, `Episode`, `Visit`, `Outlier`, `Remaining`, `Exceeded`, `Not Exceeded`, `Lifetime`, `Lifetime Remaining`, `Month`, `Week`, `Admission`
- **`items[].benefitsInformation[].timeQualifierCode`** (`string`): Code indicating the time period for the benefit information.

Payers may sometimes return other non-compliant values.
  - Allowed values: `6`, `7`, `13`, `21`, `22`, `23`, `24`, `25`, `26`, `27`, `28`, `29`, `30`, `31`, `32`, `33`, `34`, `35`, `36`
- **`items[].benefitsInformation[].trailerLoopIdentifierCode`** (`string`): The loop trailer identifier number in the `LE` segment of the original X12 EDI transaction.
- **`items[].confidence`** (`object`)
- **`items[].confidence.level`** (`string`)
  - Allowed values: `REVIEW_NEEDED`, `HIGH`
- **`items[].confidence.reason`** (`string`): A reason for the confidence level. For example, `This record was identified as a low confidence match due to a DOB partial match`.
- **`items[].dependent`** (`object`): Common fields shared between subscriber and dependent structures in the eligibility response.
- **`items[].dependent.address`** (`object`)
- **`items[].dependent.address.address1`** (`string`): The first line of the address.
- **`items[].dependent.address.address2`** (`string`): The second line of the address.
- **`items[].dependent.address.city`** (`string`): The city.
- **`items[].dependent.address.countryCode`** (`string`): The two-letter country code from [Part 1 of ISO 3166](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2).
- **`items[].dependent.address.countrySubDivisionCode`** (`string`): The country subdivision code from [Part 2 of ISO 3166](https://en.wikipedia.org/wiki/ISO_3166-2).
- **`items[].dependent.address.postalCode`** (`string`): The United States or Canadian postal code, excluding punctuation and blanks.
- **`items[].dependent.address.state`** (`string`): The US state or Canadian province code with unknown option. For example, `TN` for Tennessee or `NB` for New Brunswick.

Payers may sometimes return other non-compliant values.
  - Allowed values: `NL`, `PE`, `NS`, `NB`, `QC`, `ON`, `MB`, `SK`, `AB`, `BC`, `YT`, `NT`, `NU`, `DC`, `AS`, `GU`, `MP`, `PR`, `UM`, `VI`, `AA`, `AE`, `AP`, `AK`, `AL`, `AR`, `AZ`, `CA`, `CO`, `CT`, `DE`, `FL`, `GA`, `HI`, `IA`, `ID`, `IL`, `IN`, `KS`, `KY`, `LA`, `MA`, `MD`, `ME`, `MI`, `MN`, `MO`, `MS`, `MT`, `NC`, `ND`, `NE`, `NH`, `NJ`, `NM`, `NV`, `NY`, `OH`, `OK`, `OR`, `PA`, `RI`, `SC`, `SD`, `TN`, `TX`, `UT`, `VA`, `VT`, `WA`, `WI`, `WV`, `WY`
- **`items[].dependent.birthSequenceNumber`** (`string`): The number assigned to each family member born with the same birth date, such as twins or triplets. Indicates the birth order when there are multiple births associated with the provided birth date.
- **`items[].dependent.dateOfBirth`** (`string`): The member's date of birth.
- **`items[].dependent.dateTimePeriod`** (`string`): The military service date.
- **`items[].dependent.dateTimePeriodFormatQualifier`** (`string`): Payers may sometimes return other non-compliant values.
  - Allowed values: `D8`, `RD8`
- **`items[].dependent.description`** (`string`): Context that identifies the exact military unit. Used to report military service data.
- **`items[].dependent.employmentStatusCode`** (`string`): Payers may sometimes return other non-compliant values.
  - Allowed values: `AE`, `AO`, `AS`, `AT`, `AU`, `CC`, `DD`, `HD`, `IR`, `LX`, `PE`, `RE`, `RM`, `RR`, `RU`
- **`items[].dependent.endDateTimePeriod`** (`string`): The military service end date.
- **`items[].dependent.entityIdentifier`** (`string`): The entity identifier for the dependent.
  - Allowed values: `Dependent`
- **`items[].dependent.entityType`** (`string`): The type of entity.

Payers may sometimes return other non-compliant values.
  - Allowed values: `Person`, `Non-Person Entity`
- **`items[].dependent.firstName`** (`string`): The member's first name.
- **`items[].dependent.gender`** (`string`)
  - Allowed values: `M`, `F`, `U`
- **`items[].dependent.governmentServiceAffiliationCode`** (`string`): Payers may sometimes return other non-compliant values.
  - Allowed values: `A`, `B`, `C`, `D`, `E`, `F`, `G`, `H`, `I`, `J`, `K`, `L`, `M`, `N`, `O`, `Q`, `R`, `S`, `U`, `W`
- **`items[].dependent.groupDescription`** (`string`): Group name
- **`items[].dependent.groupNumber`** (`string`): The group number associated with the insurance policy.
- **`items[].dependent.healthCareDiagnosisCodes`** (`array of HealthCareDiagnosisCode objects`)
- **`items[].dependent.healthCareDiagnosisCodes[].diagnosisCode`** (`string`): The diagnosis code. The decimal points are omitted in diagnosis codes - the decimal point is assumed.
- **`items[].dependent.healthCareDiagnosisCodes[].diagnosisTypeCode`** (`string`): The type of diagnosis code provided. It can be `ABK` - International Classification of Diseases Clinical Modification (ICD-10-CM) Principal Diagnosis or `BK` - International Classification of Diseases Clinical Modification (ICD-9-CM) Principal Diagnosis.
- **`items[].dependent.informationStatusCode`** (`string`): Payers may sometimes return other non-compliant values.
  - Allowed values: `A`, `C`, `L`, `O`, `P`, `S`, `T`
- **`items[].dependent.insuredIndicator`** (`string`): Indicates the status of the insured. For the dependent, this is always `N`.
  - Allowed values: `N`
- **`items[].dependent.lastName`** (`string`): The member's last name.
- **`items[].dependent.maintenanceReasonCode`** (`string`): Code identifying the reason for the changes to subscriber identifying information, such as name, date of birth, or address. This is always `25`

Payers may sometimes return other non-compliant values.
  - Allowed values: `25`
- **`items[].dependent.maintenanceTypeCode`** (`string`): The maintenance type code. Used to acknowledge a change in the identifying elements for the subscriber from those submitted in the original eligibility check request. It can also be included when the payer used the birth sequence number from the original request to locate the subscriber in their system. This is always `001`

Payers may sometimes return other non-compliant values.
  - Allowed values: `001`
- **`items[].dependent.memberId`** (`string`): This property will never be populated. Please use `subscriber.memberId` instead.
- **`items[].dependent.middleName`** (`string`): The member's middle name or initial.
- **`items[].dependent.militaryServiceRankCode`** (`string`): Payers may sometimes return other non-compliant values.
  - Allowed values: `A1`, `A2`, `A3`, `B1`, `B2`, `C1`, `C2`, `C3`, `C4`, `C5`, `C6`, `C7`, `C8`, `C9`, `E1`, `F1`, `F2`, `F3`, `F4`, `G1`, `G4`, `L1`, `L2`, `L3`, `L4`, `L5`, `L6`, `M1`, `M2`, `M3`, `M4`, `M5`, `M6`, `P1`, `P2`, `P3`, `P4`, `P5`, `R1`, `R2`, `S1`, `S2`, `S3`, `S4`, `S5`, `S6`, `S7`, `S8`, `S9`, `SA`, `SB`, `SC`, `T1`, `V1`, `W1`
- **`items[].dependent.planDescription`** (`string`): Plan name
- **`items[].dependent.planNetworkDescription`** (`string`): Plan network name
- **`items[].dependent.planNetworkIdNumber`** (`string`): The network identification number associated with the insurance policy.
- **`items[].dependent.planNumber`** (`string`): The plan number associated with the insurance policy.
- **`items[].dependent.relationToSubscriber`** (`string`): The name of the `relationToSubscriberCode`. For example, `Child` when the code is `19`.
  - Allowed values: `Spouse`, `Child`, `Employee`, `Unknown`, `Organ Donor`, `Cadaver Donor`, `Life Partner`, `Other Relationship`
- **`items[].dependent.relationToSubscriberCode`** (`string`): For the dependent, this can be `01` - Spouse, `19` - Child, `20` Employee, `21` - Unknown, `39` - Organ Donor, `40` - Cadaver Donor, `53` - Life Partner, or `G8` - Other Relationship.
  - Allowed values: `01`, `19`, `20`, `21`, `39`, `40`, `53`, `G8`, `Unknown`
- **`items[].dependent.responseProvider`** (`object`): Information about the entity that submitted the original eligibility check request. This may be an individual practitioner, a medical group, a hospital, or another type of healthcare provider. This object will always include at least one identifier, such as the provider's [NPI](https://www.stedi.com/docs/healthcare/national-provider-identifier), tax ID, or EIN.
- **`items[].dependent.responseProvider.aaaErrors`** (`array of EligibilityCheckProviderError objects`)
- **`items[].dependent.responseProvider.aaaErrors[].code`** (`string`): Payers may sometimes return other non-compliant values.
  - Allowed values: `15`, `41`, `43`, `44`, `45`, `46`, `47`, `48`, `50`, `51`, `79`, `97`, `T4`
- **`items[].dependent.responseProvider.aaaErrors[].description`** (`string`): The error description.
- **`items[].dependent.responseProvider.aaaErrors[].field`** (`string`): The error type, `AAA`.
- **`items[].dependent.responseProvider.aaaErrors[].followupAction`** (`string`): Payers may sometimes return other non-compliant values.
  - Allowed values: `Please Correct and Resubmit`, `Resubmission Not Allowed`, `Resubmission Allowed`, `Do Not Resubmit; Inquiry Initiated to a Third Party`, `Please Wait 30 Days and Resubmit`, `Please Wait 10 Days and Resubmit`, `Do Not Resubmit; We Will Hold Your Request and Respond Again Shortly`
- **`items[].dependent.responseProvider.aaaErrors[].location`** (`string`): The location of the error within the original X12 EDI response.
- **`items[].dependent.responseProvider.aaaErrors[].possibleResolutions`** (`string`): Information to help you correct the error.

We periodically update this guidance, so these strings may change at any time and may differ between eligibility responses. **Don't build programmatic logic that depends on matching these strings exactly.**
- **`items[].dependent.responseProvider.address`** (`object`)
- **`items[].dependent.responseProvider.address.address1`** (`string`): The first line of the address.
- **`items[].dependent.responseProvider.address.address2`** (`string`): The second line of the address.
- **`items[].dependent.responseProvider.address.city`** (`string`): The city.
- **`items[].dependent.responseProvider.address.countryCode`** (`string`): The two-letter country code from [Part 1 of ISO 3166](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2).
- **`items[].dependent.responseProvider.address.countrySubDivisionCode`** (`string`): The country subdivision code from [Part 2 of ISO 3166](https://en.wikipedia.org/wiki/ISO_3166-2).
- **`items[].dependent.responseProvider.address.postalCode`** (`string`): The United States or Canadian postal code, excluding punctuation and blanks.
- **`items[].dependent.responseProvider.address.state`** (`string`): The US state or Canadian province code with unknown option. For example, `TN` for Tennessee or `NB` for New Brunswick.

Payers may sometimes return other non-compliant values.
  - Allowed values: `NL`, `PE`, `NS`, `NB`, `QC`, `ON`, `MB`, `SK`, `AB`, `BC`, `YT`, `NT`, `NU`, `DC`, `AS`, `GU`, `MP`, `PR`, `UM`, `VI`, `AA`, `AE`, `AP`, `AK`, `AL`, `AR`, `AZ`, `CA`, `CO`, `CT`, `DE`, `FL`, `GA`, `HI`, `IA`, `ID`, `IL`, `IN`, `KS`, `KY`, `LA`, `MA`, `MD`, `ME`, `MI`, `MN`, `MO`, `MS`, `MT`, `NC`, `ND`, `NE`, `NH`, `NJ`, `NM`, `NV`, `NY`, `OH`, `OK`, `OR`, `PA`, `RI`, `SC`, `SD`, `TN`, `TX`, `UT`, `VA`, `VT`, `WA`, `WI`, `WV`, `WY`
- **`items[].dependent.responseProvider.employersId`** (`string`): Deprecated; The provider's identification number for the entity receiving the benefits information.
This shape is deprecated: This property is no longer used.
- **`items[].dependent.responseProvider.entityIdentifier`** (`string`): A code identifying the type of provider.

Payers may sometimes return other non-compliant values.
  - Allowed values: `Provider`, `Third-Party Administrator`, `Employer`, `Hospital`, `Facility`, `Gateway Provider`, `Plan Sponsor`, `Payer`
- **`items[].dependent.responseProvider.entityType`** (`string`): The type of entity.

Payers may sometimes return other non-compliant values.
  - Allowed values: `Person`, `Non-Person Entity`
- **`items[].dependent.responseProvider.federalTaxpayersIdNumber`** (`string`): The Federal Taxpayer Identification Number (also known as an EIN).
- **`items[].dependent.responseProvider.middleName`** (`string`): The provider's middle name. This applies to providers that are an individual.
- **`items[].dependent.responseProvider.npi`** (`string`): The provider's [National Provider Identifier (NPI)](https://www.stedi.com/docs/healthcare/national-provider-identifier).
- **`items[].dependent.responseProvider.payorIdentification`** (`string`): The payer identification.
- **`items[].dependent.responseProvider.pharmacyProcessorNumber`** (`string`): The pharmacy processor number.
- **`items[].dependent.responseProvider.providerCode`** (`string`): A code indicating the type of provider. Visit [Eligibility code lists](https://www.stedi.com/docs/healthcare/eligibility-code-lists#provider-codes) for a complete list.

Payers may sometimes return other non-compliant values.
  - Allowed values: `AD`, `AT`, `BI`, `CO`, `CV`, `H`, `HH`, `LA`, `OT`, `P1`, `P2`, `PC`, `PE`, `R`, `RF`, `SB`, `SK`, `SU`
- **`items[].dependent.responseProvider.providerFirstName`** (`string`): The provider's first name. This applies to providers that are an individual.
- **`items[].dependent.responseProvider.providerName`** (`string`): The provider's last name. This applies to providers that are an individual.
- **`items[].dependent.responseProvider.providerOrgName`** (`string`): The provider's organization name.
- **`items[].dependent.responseProvider.referenceIdentification`** (`string`): The Health Care Provider Taxonomy Code.
- **`items[].dependent.responseProvider.serviceProviderNumber`** (`string`): The service provider number. This is an identification number assigned by the payer.
- **`items[].dependent.responseProvider.servicesPlanID`** (`string`): The Centers for Medicare and Medicaid Services (CMS) Plan ID.
- **`items[].dependent.responseProvider.ssn`** (`string`): The Social Security Number (SSN).
- **`items[].dependent.responseProvider.suffix`** (`string`): The provider's name suffix, such as Jr., Sr., or III.
- **`items[].dependent.ssn`** (`string`): The member's Social Security Number (SSN).
- **`items[].dependent.startDateTimePeriod`** (`string`): The military service start date.
- **`items[].dependent.suffix`** (`string`): The name suffix, such as Jr., Sr., or III.
- **`items[].dependent.uniqueHealthIdentifier`** (`string`): The member's unique health identifier.
- **`items[].payer`** (`object`)
- **`items[].payer.centersForMedicareAndMedicaidPlanId`** (`string`): The payer's Centers for Medicare and Medicaid Services PlanID.
- **`items[].payer.contactInformation`** (`object`)
- **`items[].payer.contactInformation.contacts`** (`array of Contacts objects`): The contact information.
- **`items[].payer.contactInformation.contacts[].communicationMode`** (`string`): Payers may sometimes return other non-compliant values.
  - Allowed values: `Electronic Data Interchange Access Number`, `Electronic Mail`, `Facsimile`, `Telephone`, `Uniform Resource Locator (URL)`, `Telephone Extension`, `Work Phone Number`
- **`items[].payer.contactInformation.contacts[].communicationNumber`** (`string`): The communication number referenced in `communicationMode`. It includes the country or area code when applicable. 
 
 Note that phone numbers are formatted as AAABBBCCCC, where AAA represents the area code, BBB represents the telephone number prefix, and CCCC represents the telephone number. Phone numbers are provided without separators, such as dashes or parentheses. For example, `5551123345` for `555-112-3345`.
- **`items[].payer.contactInformation.name`** (`string`): The name of the contact person.
- **`items[].payer.entityIdentifier`** (`string`): The entity identifier code for the payer.

Payers may sometimes return other non-compliant values.
  - Allowed values: `Third-Party Administrator`, `Employer`, `Gateway Provider`, `Plan Sponsor`, `Payer`
- **`items[].payer.entityType`** (`string`): The type of entity.

Payers may sometimes return other non-compliant values.
  - Allowed values: `Person`, `Non-Person Entity`
- **`items[].payer.etin`** (`string`): The payer's Electronic Transmitter Identification Number (ETIN).
- **`items[].payer.federalTaxpayersIdNumber`** (`string`): The payer's federal taxpayer's identification number.
- **`items[].payer.firstName`** (`string`): The payer's first name, when the payer is an individual (not commonly used).
- **`items[].payer.lastName`** (`string`): The payer's last name. Used when the payer is an individual (not commonly used).
- **`items[].payer.middleName`** (`string`): The payer's middle name or initial, when the payer is an individual (not commonly used).
- **`items[].payer.naic`** (`string`): The payer's National Association of Insurance Commissioners (NAIC) identification number.
- **`items[].payer.name`** (`string`): The payer's business name, when the payer is not a person.
- **`items[].payer.npi`** (`string`): The payer's [National Provider Identifier (NPI)](https://www.stedi.com/docs/healthcare/national-provider-identifier).
- **`items[].payer.payorIdentification`** (`string`): The payer identification.
- **`items[].payer.suffix`** (`string`): The payer's name suffix, such as Jr. or III. Used when the payer is an individual (not commonly used).
- **`items[].planDateInformation`** (`object`)
- **`items[].planDateInformation.added`** (`string`): Added date. Payers may return this information in the case of retroactive eligibility.
- **`items[].planDateInformation.admission`** (`string`): The admission date or dates.
- **`items[].planDateInformation.certification`** (`string`): The certification date.
- **`items[].planDateInformation.cobraBegin`** (`string`): The date when COBRA coverage begins.
- **`items[].planDateInformation.cobraEnd`** (`string`): The date when COBRA coverage ends.
- **`items[].planDateInformation.dateOfDeath`** (`string`): The date of death. Payers may return this information in the case of a deceased subscriber or dependent.
- **`items[].planDateInformation.dateOfLastUpdate`** (`string`): The date when the plan information was last updated.
- **`items[].planDateInformation.discharge`** (`string`): The discharge date.
- **`items[].planDateInformation.effectiveDateOfChange`** (`string`): The effective date of change.
- **`items[].planDateInformation.eligibility`** (`string`): Plan eligibility dates.
- **`items[].planDateInformation.eligibilityBegin`** (`string`): The date when the patient is first eligible for benefits under the plan.
- **`items[].planDateInformation.eligibilityEnd`** (`string`): The date when the patient is no longer eligible for benefits under the plan.
- **`items[].planDateInformation.enrollment`** (`string`): The date when the patient is enrolled in the plan.
- **`items[].planDateInformation.issue`** (`string`): The issue date.
- **`items[].planDateInformation.plan`** (`string`): Plan effective dates.
- **`items[].planDateInformation.planBegin`** (`string`): The date coverage from the plan begins.
- **`items[].planDateInformation.planEnd`** (`string`): The date coverage from the plan ends.
- **`items[].planDateInformation.policyEffective`** (`string`): The date when the policy becomes effective.
- **`items[].planDateInformation.policyExpiration`** (`string`): The date when the policy expires.
- **`items[].planDateInformation.premiumPaidToDateBegin`** (`string`): The start of the period when the plan premium was paid in full.
- **`items[].planDateInformation.premiumPaidToDateEnd`** (`string`): The end of period when the plan premium payments are up-to-date.
- **`items[].planDateInformation.service`** (`string`): The service date or dates.
- **`items[].planDateInformation.status`** (`string`): The status date.
- **`items[].planInformation`** (`object`): Additional identification for the subscriber's healthcare plan.
- **`items[].planInformation.agencyClaimNumber`** (`string`): The agency claim number, only used when the information source is a Property and Casualty payer.
- **`items[].planInformation.alternativeListId`** (`string`): The alternative list ID - identifies a list of alternative drugs with the associated formulary status for the patient.
- **`items[].planInformation.caseNumber`** (`string`): The case number
- **`items[].planInformation.centersForMedicareAndMedicaidServicesNPI`** (`string`): The [National Provider Identifier (NPI)](https://www.stedi.com/docs/healthcare/national-provider-identifier) assigned by the Centers for Medicare and Medicaid Services
- **`items[].planInformation.classOfContractCode`** (`string`): The class of contract code - used to identify the applicable class of contract for claims processing.
- **`items[].planInformation.contractNumber`** (`string`): The contract number of a contract between the payer and the provider that requested the eligibility check.
- **`items[].planInformation.coverageListId`** (`string`): The coverage list ID - identifies a list of drugs that have coverage limitations for the patient.
- **`items[].planInformation.drugFormularyNumber`** (`string`): The drug formulary number
- **`items[].planInformation.electronicDevicePin`** (`string`): The electronic device pin number
- **`items[].planInformation.eligibilityCategory`** (`string`): The eligibility category
- **`items[].planInformation.facilityIdNumber`** (`string`): The facility ID number
- **`items[].planInformation.facilityNetworkIdentificationNumber`** (`string`): The facility network identification number
- **`items[].planInformation.familyUnitNumber`** (`string`): The family unit number
- **`items[].planInformation.federalTaxpayersIdentificationNumber`** (`string`): The federal taxpayer's identification number
- **`items[].planInformation.groupDescription`** (`string`): The group description
- **`items[].planInformation.groupNumber`** (`string`): The group number
- **`items[].planInformation.hicNumber`** (`string`): The health insurance claim number (HICN). Note that CMS previously used the HICN to uniquely identify Medicare beneficiaries. However, they have since transitioned to a new, randomized Medicare Beneficiary Identifier (MBI) format. The HICN is no longer used for Medicare transactions but this property is now used by some payers to return MBI. If you receive a value in this property that matches the format specified in the [Medicare Beneficiary Identifier documentation](https://www.cms.gov/training-education/partner-outreach-resources/new-medicare-card/medical-beneficiary-identifiers-mbis), the number is likely an MBI and we recommend sending a follow-up eligibility check to CMS for additional benefits data. This most commonly occurs with patients who are covered by both Medicare and Medicaid.
- **`items[].planInformation.idCardNumber`** (`string`): The identity card number, used when the Identity Card Number is different than the Member Identification Number.
- **`items[].planInformation.idCardSerialNumber`** (`string`): The identification card serial number. The Identification Card Serial Number uniquely identifies the identification card when multiple cards have been or will be issued to a member, such as a replacement card.
- **`items[].planInformation.insurancePolicyNumber`** (`string`): The insurance policy number
- **`items[].planInformation.issueNumber`** (`string`): The issue number
- **`items[].planInformation.medicaidProviderNumber`** (`string`): The Medicaid provider number
- **`items[].planInformation.medicaidRecipientIdNumber`** (`string`): The Medicaid recipient identification number
- **`items[].planInformation.medicalAssistanceCategory`** (`string`): The medical assistance category
- **`items[].planInformation.medicalRecordIdentificationNumber`** (`string`): The medical record identification number
- **`items[].planInformation.medicareProviderNumber`** (`string`): The Medicare provider number
- **`items[].planInformation.memberId`** (`string`): The member identification number - only used when checking eligibility with a Workers' Compensation or Property and Casualty insurer.
- **`items[].planInformation.patientAccountNumber`** (`string`): The patient account number. If you included this value in the original eligibility request, the payer will return the same value here in the response.
- **`items[].planInformation.personalIdentificationNumber`** (`string`): The personal identification number (PIN)
- **`items[].planInformation.planDescription`** (`string`): The plan description
- **`items[].planInformation.planNetworkIdDescription`** (`string`): The plan, group, or plan network name
- **`items[].planInformation.planNetworkIdNumber`** (`string`): The plan network identification number
- **`items[].planInformation.planNumber`** (`string`): The plan number
- **`items[].planInformation.policyNumber`** (`string`): The group or policy number
- **`items[].planInformation.priorAuthorizationNumber`** (`string`): The prior authorization number
- **`items[].planInformation.priorIdNumber`** (`string`): The prior identifier number
- **`items[].planInformation.referralNumber`** (`string`): The referral number
- **`items[].planInformation.socialSecurityNumber`** (`string`): The social security number
- **`items[].planInformation.stateLicenseNumber`** (`string`): The state license number
- **`items[].planInformation.submitterIdentificationNumber`** (`string`): The submitter identification number
- **`items[].planInformation.userIdentification`** (`string`): The user identification
- **`items[].provider`** (`object`)
- **`items[].provider.address`** (`object`)
- **`items[].provider.address.address1`** (`string`): The first line of the address.
- **`items[].provider.address.address2`** (`string`): The second line of the address.
- **`items[].provider.address.city`** (`string`): The city.
- **`items[].provider.address.countryCode`** (`string`): The two-letter country code from [Part 1 of ISO 3166](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2).
- **`items[].provider.address.countrySubDivisionCode`** (`string`): The country subdivision code from [Part 2 of ISO 3166](https://en.wikipedia.org/wiki/ISO_3166-2).
- **`items[].provider.address.postalCode`** (`string`): The United States or Canadian postal code, excluding punctuation and blanks.
- **`items[].provider.address.state`** (`string`): The US state or Canadian province code with unknown option. For example, `TN` for Tennessee or `NB` for New Brunswick.

Payers may sometimes return other non-compliant values.
  - Allowed values: `NL`, `PE`, `NS`, `NB`, `QC`, `ON`, `MB`, `SK`, `AB`, `BC`, `YT`, `NT`, `NU`, `DC`, `AS`, `GU`, `MP`, `PR`, `UM`, `VI`, `AA`, `AE`, `AP`, `AK`, `AL`, `AR`, `AZ`, `CA`, `CO`, `CT`, `DE`, `FL`, `GA`, `HI`, `IA`, `ID`, `IL`, `IN`, `KS`, `KY`, `LA`, `MA`, `MD`, `ME`, `MI`, `MN`, `MO`, `MS`, `MT`, `NC`, `ND`, `NE`, `NH`, `NJ`, `NM`, `NV`, `NY`, `OH`, `OK`, `OR`, `PA`, `RI`, `SC`, `SD`, `TN`, `TX`, `UT`, `VA`, `VT`, `WA`, `WI`, `WV`, `WY`
- **`items[].provider.entityIdentifier`** (`string`): A code identifying the type of provider.

Payers may sometimes return other non-compliant values.
  - Allowed values: `Provider`, `Third-Party Administrator`, `Employer`, `Hospital`, `Facility`, `Gateway Provider`, `Plan Sponsor`, `Payer`
- **`items[].provider.entityType`** (`string`): The type of entity.

Payers may sometimes return other non-compliant values.
  - Allowed values: `Person`, `Non-Person Entity`
- **`items[].provider.federalTaxpayersIdNumber`** (`string`): The Federal Taxpayer Identification Number (also known as an EIN).
- **`items[].provider.middleName`** (`string`): The provider's middle name. This applies to providers that are an individual.
- **`items[].provider.npi`** (`string`): The provider's [National Provider Identifier (NPI)](https://www.stedi.com/docs/healthcare/national-provider-identifier).
- **`items[].provider.payorIdentification`** (`string`): The payer identification.
- **`items[].provider.pharmacyProcessorNumber`** (`string`): The pharmacy processor number.
- **`items[].provider.providerCode`** (`string`): A code indicating the type of provider. Visit [Eligibility code lists](https://www.stedi.com/docs/healthcare/eligibility-code-lists#provider-codes) for a complete list.

Payers may sometimes return other non-compliant values.
  - Allowed values: `AD`, `AT`, `BI`, `CO`, `CV`, `H`, `HH`, `LA`, `OT`, `P1`, `P2`, `PC`, `PE`, `R`, `RF`, `SB`, `SK`, `SU`
- **`items[].provider.providerFirstName`** (`string`): The provider's first name. This applies to providers that are an individual.
- **`items[].provider.providerName`** (`string`): The provider's last name. This applies to providers that are an individual.
- **`items[].provider.providerOrgName`** (`string`): The provider's organization name.
- **`items[].provider.referenceIdentification`** (`string`): The Health Care Provider Taxonomy Code.
- **`items[].provider.serviceProviderNumber`** (`string`): The service provider number. This is an identification number assigned by the payer.
- **`items[].provider.servicesPlanID`** (`string`): The Centers for Medicare and Medicaid Services (CMS) Plan ID.
- **`items[].provider.ssn`** (`string`): The Social Security Number (SSN).
- **`items[].provider.suffix`** (`string`): The provider's name suffix, such as Jr., Sr., or III.
- **`items[].subscriber`** (`object`): Common fields shared between subscriber and dependent structures in the eligibility response.
- **`items[].subscriber.address`** (`object`)
- **`items[].subscriber.address.address1`** (`string`): The first line of the address.
- **`items[].subscriber.address.address2`** (`string`): The second line of the address.
- **`items[].subscriber.address.city`** (`string`): The city.
- **`items[].subscriber.address.countryCode`** (`string`): The two-letter country code from [Part 1 of ISO 3166](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2).
- **`items[].subscriber.address.countrySubDivisionCode`** (`string`): The country subdivision code from [Part 2 of ISO 3166](https://en.wikipedia.org/wiki/ISO_3166-2).
- **`items[].subscriber.address.postalCode`** (`string`): The United States or Canadian postal code, excluding punctuation and blanks.
- **`items[].subscriber.address.state`** (`string`): The US state or Canadian province code with unknown option. For example, `TN` for Tennessee or `NB` for New Brunswick.

Payers may sometimes return other non-compliant values.
  - Allowed values: `NL`, `PE`, `NS`, `NB`, `QC`, `ON`, `MB`, `SK`, `AB`, `BC`, `YT`, `NT`, `NU`, `DC`, `AS`, `GU`, `MP`, `PR`, `UM`, `VI`, `AA`, `AE`, `AP`, `AK`, `AL`, `AR`, `AZ`, `CA`, `CO`, `CT`, `DE`, `FL`, `GA`, `HI`, `IA`, `ID`, `IL`, `IN`, `KS`, `KY`, `LA`, `MA`, `MD`, `ME`, `MI`, `MN`, `MO`, `MS`, `MT`, `NC`, `ND`, `NE`, `NH`, `NJ`, `NM`, `NV`, `NY`, `OH`, `OK`, `OR`, `PA`, `RI`, `SC`, `SD`, `TN`, `TX`, `UT`, `VA`, `VT`, `WA`, `WI`, `WV`, `WY`
- **`items[].subscriber.birthSequenceNumber`** (`string`): The number assigned to each family member born with the same birth date, such as twins or triplets. Indicates the birth order when there are multiple births associated with the provided birth date.
- **`items[].subscriber.dateOfBirth`** (`string`): The member's date of birth.
- **`items[].subscriber.dateTimePeriod`** (`string`): The military service date.
- **`items[].subscriber.dateTimePeriodFormatQualifier`** (`string`): Payers may sometimes return other non-compliant values.
  - Allowed values: `D8`, `RD8`
- **`items[].subscriber.description`** (`string`): Context that identifies the exact military unit. Used to report military service data.
- **`items[].subscriber.employmentStatusCode`** (`string`): Payers may sometimes return other non-compliant values.
  - Allowed values: `AE`, `AO`, `AS`, `AT`, `AU`, `CC`, `DD`, `HD`, `IR`, `LX`, `PE`, `RE`, `RM`, `RR`, `RU`
- **`items[].subscriber.endDateTimePeriod`** (`string`): The military service end date.
- **`items[].subscriber.entityIdentifier`** (`string`): The entity identifier for the subscriber.
  - Allowed values: `Insured or Subscriber`
- **`items[].subscriber.entityType`** (`string`): The type of entity.

Payers may sometimes return other non-compliant values.
  - Allowed values: `Person`, `Non-Person Entity`
- **`items[].subscriber.firstName`** (`string`): The member's first name.
- **`items[].subscriber.gender`** (`string`)
  - Allowed values: `M`, `F`, `U`
- **`items[].subscriber.governmentServiceAffiliationCode`** (`string`): Payers may sometimes return other non-compliant values.
  - Allowed values: `A`, `B`, `C`, `D`, `E`, `F`, `G`, `H`, `I`, `J`, `K`, `L`, `M`, `N`, `O`, `Q`, `R`, `S`, `U`, `W`
- **`items[].subscriber.groupDescription`** (`string`): Group name
- **`items[].subscriber.groupNumber`** (`string`): The group number associated with the insurance policy.
- **`items[].subscriber.healthCareDiagnosisCodes`** (`array of HealthCareDiagnosisCode objects`)
- **`items[].subscriber.healthCareDiagnosisCodes[].diagnosisCode`** (`string`): The diagnosis code. The decimal points are omitted in diagnosis codes - the decimal point is assumed.
- **`items[].subscriber.healthCareDiagnosisCodes[].diagnosisTypeCode`** (`string`): The type of diagnosis code provided. It can be `ABK` - International Classification of Diseases Clinical Modification (ICD-10-CM) Principal Diagnosis or `BK` - International Classification of Diseases Clinical Modification (ICD-9-CM) Principal Diagnosis.
- **`items[].subscriber.informationStatusCode`** (`string`): Payers may sometimes return other non-compliant values.
  - Allowed values: `A`, `C`, `L`, `O`, `P`, `S`, `T`
- **`items[].subscriber.insuredIndicator`** (`string`): Indicates the status of the insured. For the subscriber, this is always `Y`.
  - Allowed values: `Y`
- **`items[].subscriber.lastName`** (`string`): The member's last name.
- **`items[].subscriber.maintenanceReasonCode`** (`string`): Code identifying the reason for the changes to subscriber identifying information, such as name, date of birth, or address. This is always `25`

Payers may sometimes return other non-compliant values.
  - Allowed values: `25`
- **`items[].subscriber.maintenanceTypeCode`** (`string`): The maintenance type code. Used to acknowledge a change in the identifying elements for the subscriber from those submitted in the original eligibility check request. It can also be included when the payer used the birth sequence number from the original request to locate the subscriber in their system. This is always `001`

Payers may sometimes return other non-compliant values.
  - Allowed values: `001`
- **`items[].subscriber.memberId`** (`string`): The member ID for the insurance policy.
- **`items[].subscriber.middleName`** (`string`): The member's middle name or initial.
- **`items[].subscriber.militaryServiceRankCode`** (`string`): Payers may sometimes return other non-compliant values.
  - Allowed values: `A1`, `A2`, `A3`, `B1`, `B2`, `C1`, `C2`, `C3`, `C4`, `C5`, `C6`, `C7`, `C8`, `C9`, `E1`, `F1`, `F2`, `F3`, `F4`, `G1`, `G4`, `L1`, `L2`, `L3`, `L4`, `L5`, `L6`, `M1`, `M2`, `M3`, `M4`, `M5`, `M6`, `P1`, `P2`, `P3`, `P4`, `P5`, `R1`, `R2`, `S1`, `S2`, `S3`, `S4`, `S5`, `S6`, `S7`, `S8`, `S9`, `SA`, `SB`, `SC`, `T1`, `V1`, `W1`
- **`items[].subscriber.planDescription`** (`string`): Plan name
- **`items[].subscriber.planNetworkDescription`** (`string`): Plan network name
- **`items[].subscriber.planNetworkIdNumber`** (`string`): The network identification number associated with the insurance policy.
- **`items[].subscriber.planNumber`** (`string`): The plan number associated with the insurance policy.
- **`items[].subscriber.relationToSubscriber`** (`string`): The name of the `relationToSubscriberCode`. For the subscriber, this is always `Self`.
  - Allowed values: `Self`
- **`items[].subscriber.relationToSubscriberCode`** (`string`): For the subscriber, this is always `18` for Self.
  - Allowed values: `18`
- **`items[].subscriber.responseProvider`** (`object`): Information about the entity that submitted the original eligibility check request. This may be an individual practitioner, a medical group, a hospital, or another type of healthcare provider. This object will always include at least one identifier, such as the provider's [NPI](https://www.stedi.com/docs/healthcare/national-provider-identifier), tax ID, or EIN.
- **`items[].subscriber.responseProvider.aaaErrors`** (`array of EligibilityCheckProviderError objects`)
- **`items[].subscriber.responseProvider.aaaErrors[].code`** (`string`): Payers may sometimes return other non-compliant values.
  - Allowed values: `15`, `41`, `43`, `44`, `45`, `46`, `47`, `48`, `50`, `51`, `79`, `97`, `T4`
- **`items[].subscriber.responseProvider.aaaErrors[].description`** (`string`): The error description.
- **`items[].subscriber.responseProvider.aaaErrors[].field`** (`string`): The error type, `AAA`.
- **`items[].subscriber.responseProvider.aaaErrors[].followupAction`** (`string`): Payers may sometimes return other non-compliant values.
  - Allowed values: `Please Correct and Resubmit`, `Resubmission Not Allowed`, `Resubmission Allowed`, `Do Not Resubmit; Inquiry Initiated to a Third Party`, `Please Wait 30 Days and Resubmit`, `Please Wait 10 Days and Resubmit`, `Do Not Resubmit; We Will Hold Your Request and Respond Again Shortly`
- **`items[].subscriber.responseProvider.aaaErrors[].location`** (`string`): The location of the error within the original X12 EDI response.
- **`items[].subscriber.responseProvider.aaaErrors[].possibleResolutions`** (`string`): Information to help you correct the error.

We periodically update this guidance, so these strings may change at any time and may differ between eligibility responses. **Don't build programmatic logic that depends on matching these strings exactly.**
- **`items[].subscriber.responseProvider.address`** (`object`)
- **`items[].subscriber.responseProvider.address.address1`** (`string`): The first line of the address.
- **`items[].subscriber.responseProvider.address.address2`** (`string`): The second line of the address.
- **`items[].subscriber.responseProvider.address.city`** (`string`): The city.
- **`items[].subscriber.responseProvider.address.countryCode`** (`string`): The two-letter country code from [Part 1 of ISO 3166](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2).
- **`items[].subscriber.responseProvider.address.countrySubDivisionCode`** (`string`): The country subdivision code from [Part 2 of ISO 3166](https://en.wikipedia.org/wiki/ISO_3166-2).
- **`items[].subscriber.responseProvider.address.postalCode`** (`string`): The United States or Canadian postal code, excluding punctuation and blanks.
- **`items[].subscriber.responseProvider.address.state`** (`string`): The US state or Canadian province code with unknown option. For example, `TN` for Tennessee or `NB` for New Brunswick.

Payers may sometimes return other non-compliant values.
  - Allowed values: `NL`, `PE`, `NS`, `NB`, `QC`, `ON`, `MB`, `SK`, `AB`, `BC`, `YT`, `NT`, `NU`, `DC`, `AS`, `GU`, `MP`, `PR`, `UM`, `VI`, `AA`, `AE`, `AP`, `AK`, `AL`, `AR`, `AZ`, `CA`, `CO`, `CT`, `DE`, `FL`, `GA`, `HI`, `IA`, `ID`, `IL`, `IN`, `KS`, `KY`, `LA`, `MA`, `MD`, `ME`, `MI`, `MN`, `MO`, `MS`, `MT`, `NC`, `ND`, `NE`, `NH`, `NJ`, `NM`, `NV`, `NY`, `OH`, `OK`, `OR`, `PA`, `RI`, `SC`, `SD`, `TN`, `TX`, `UT`, `VA`, `VT`, `WA`, `WI`, `WV`, `WY`
- **`items[].subscriber.responseProvider.employersId`** (`string`): Deprecated; The provider's identification number for the entity receiving the benefits information.
This shape is deprecated: This property is no longer used.
- **`items[].subscriber.responseProvider.entityIdentifier`** (`string`): A code identifying the type of provider.

Payers may sometimes return other non-compliant values.
  - Allowed values: `Provider`, `Third-Party Administrator`, `Employer`, `Hospital`, `Facility`, `Gateway Provider`, `Plan Sponsor`, `Payer`
- **`items[].subscriber.responseProvider.entityType`** (`string`): The type of entity.

Payers may sometimes return other non-compliant values.
  - Allowed values: `Person`, `Non-Person Entity`
- **`items[].subscriber.responseProvider.federalTaxpayersIdNumber`** (`string`): The Federal Taxpayer Identification Number (also known as an EIN).
- **`items[].subscriber.responseProvider.middleName`** (`string`): The provider's middle name. This applies to providers that are an individual.
- **`items[].subscriber.responseProvider.npi`** (`string`): The provider's [National Provider Identifier (NPI)](https://www.stedi.com/docs/healthcare/national-provider-identifier).
- **`items[].subscriber.responseProvider.payorIdentification`** (`string`): The payer identification.
- **`items[].subscriber.responseProvider.pharmacyProcessorNumber`** (`string`): The pharmacy processor number.
- **`items[].subscriber.responseProvider.providerCode`** (`string`): A code indicating the type of provider. Visit [Eligibility code lists](https://www.stedi.com/docs/healthcare/eligibility-code-lists#provider-codes) for a complete list.

Payers may sometimes return other non-compliant values.
  - Allowed values: `AD`, `AT`, `BI`, `CO`, `CV`, `H`, `HH`, `LA`, `OT`, `P1`, `P2`, `PC`, `PE`, `R`, `RF`, `SB`, `SK`, `SU`
- **`items[].subscriber.responseProvider.providerFirstName`** (`string`): The provider's first name. This applies to providers that are an individual.
- **`items[].subscriber.responseProvider.providerName`** (`string`): The provider's last name. This applies to providers that are an individual.
- **`items[].subscriber.responseProvider.providerOrgName`** (`string`): The provider's organization name.
- **`items[].subscriber.responseProvider.referenceIdentification`** (`string`): The Health Care Provider Taxonomy Code.
- **`items[].subscriber.responseProvider.serviceProviderNumber`** (`string`): The service provider number. This is an identification number assigned by the payer.
- **`items[].subscriber.responseProvider.servicesPlanID`** (`string`): The Centers for Medicare and Medicaid Services (CMS) Plan ID.
- **`items[].subscriber.responseProvider.ssn`** (`string`): The Social Security Number (SSN).
- **`items[].subscriber.responseProvider.suffix`** (`string`): The provider's name suffix, such as Jr., Sr., or III.
- **`items[].subscriber.ssn`** (`string`): The member's Social Security Number (SSN).
- **`items[].subscriber.startDateTimePeriod`** (`string`): The military service start date.
- **`items[].subscriber.suffix`** (`string`): The name suffix, such as Jr., Sr., or III.
- **`items[].subscriber.uniqueHealthIdentifier`** (`string`): The member's unique health identifier.
- **`meta`** (`object`): Metadata about the response. Stedi uses this data for tracking and troubleshooting.
- **`meta.applicationMode`** (`string`): The type of data in the request. This is either `production` when you send a request with a standard API key or `test` when you send a request in test mode with a [test API key](https://www.stedi.com/docs/api-reference/index#api-key-types). The `information` value is not currently used.

Payers may sometimes return other non-compliant values.
  - Allowed values: `production`, `test`, `information`
- **`meta.traceId`** (`string`): The unique ID Stedi assigns to this request.
- **`status`** (`string`)
  - Allowed values: `PENDING`, `COMPLETE`, `ERROR`
- **`warnings`** (`array of Warning objects`): Issues with your insurance discovery check that may affect the results. For example, Stedi issues a warning when enrolling with a payer would improve the results for future requests.
- **`warnings[].code`** (`string`): The warning code.
- **`warnings[].description`** (`string`): The warning description.

**Example:**

```json
{
  "discoveryId": "12345678-abcd-4321-efgh-987654321abc",
  "items": [
    {
      "benefitsInformation": [
        {
          "additionalInformation": [
            {
              "description": "To determine if a prior authorization is required, please check the health plan's website."
            }
          ],
          "benefitsRelatedEntities": [
            {
              "entityFirstname": "Jane",
              "entityIdentification": "XX",
              "entityIdentificationValue": "1234567890",
              "entityIdentifier": "Primary Care Provider",
              "entityName": "Dough",
              "entityType": "Person"
            }
          ],
          "code": "1",
          "inPlanNetworkIndicator": "Not Applicable",
          "inPlanNetworkIndicatorCode": "W",
          "name": "Active Coverage",
          "planCoverage": "Gold Plan",
          "serviceTypeCodes": [
            "30"
          ],
          "serviceTypes": [
            "Health Benefit Plan Coverage"
          ]
        },
        {
          "code": "1",
          "inPlanNetworkIndicator": "Not Applicable",
          "inPlanNetworkIndicatorCode": "W",
          "name": "Active Coverage",
          "planCoverage": "Gold Plan",
          "serviceTypeCodes": [
            "1"
          ],
          "serviceTypes": [
            "Medical Care"
          ]
        },
        {
          "additionalInformation": [
            {
              "description": "Prior authorization may be required. Covered No Limit."
            }
          ],
          "code": "1",
          "inPlanNetworkIndicator": "Yes",
          "inPlanNetworkIndicatorCode": "Y",
          "name": "Active Coverage",
          "planCoverage": "Gold Plan",
          "serviceTypeCodes": [
            "4"
          ],
          "serviceTypes": [
            "Diagnostic X-Ray"
          ]
        },
        {
          "benefitPercent": "0.5",
          "code": "A",
          "coverageLevel": "Family",
          "coverageLevelCode": "FAM",
          "inPlanNetworkIndicator": "Yes",
          "inPlanNetworkIndicatorCode": "Y",
          "name": "Co-Insurance",
          "planCoverage": "Gold Plan",
          "serviceTypeCodes": [
            "4"
          ],
          "serviceTypes": [
            "Diagnostic X-Ray"
          ],
          "timeQualifier": "Visit",
          "timeQualifierCode": "27"
        },
        {
          "code": "I",
          "inPlanNetworkIndicator": "No",
          "inPlanNetworkIndicatorCode": "N",
          "name": "Non-Covered",
          "planCoverage": "Gold Plan",
          "serviceTypeCodes": [
            "4"
          ],
          "serviceTypes": [
            "Diagnostic X-Ray"
          ]
        },
        {
          "code": "1",
          "inPlanNetworkIndicator": "Yes",
          "inPlanNetworkIndicatorCode": "Y",
          "name": "Active Coverage",
          "planCoverage": "Gold Plan",
          "serviceTypeCodes": [
            "5"
          ],
          "serviceTypes": [
            "Diagnostic Lab"
          ]
        },
        {
          "additionalInformation": [
            {
              "description": "per visit"
            }
          ],
          "benefitAmount": "20",
          "code": "B",
          "coverageLevel": "Family",
          "coverageLevelCode": "FAM",
          "inPlanNetworkIndicator": "Yes",
          "inPlanNetworkIndicatorCode": "Y",
          "name": "Co-Payment",
          "planCoverage": "Gold Plan",
          "serviceTypeCodes": [
            "5"
          ],
          "serviceTypes": [
            "Diagnostic Lab"
          ],
          "timeQualifier": "Visit",
          "timeQualifierCode": "27"
        },
        {
          "code": "I",
          "inPlanNetworkIndicator": "No",
          "inPlanNetworkIndicatorCode": "N",
          "name": "Non-Covered",
          "planCoverage": "Gold Plan",
          "serviceTypeCodes": [
            "5"
          ],
          "serviceTypes": [
            "Diagnostic Lab"
          ]
        },
        {
          "additionalInformation": [
            {
              "description": "Prior authorization may be required. Covered No Limit."
            }
          ],
          "code": "1",
          "inPlanNetworkIndicator": "Yes",
          "inPlanNetworkIndicatorCode": "Y",
          "name": "Active Coverage",
          "planCoverage": "Gold Plan",
          "serviceTypeCodes": [
            "12"
          ],
          "serviceTypes": [
            "Durable Medical Equipment Purchase"
          ]
        },
        {
          "benefitPercent": "0.5",
          "code": "A",
          "coverageLevel": "Family",
          "coverageLevelCode": "FAM",
          "inPlanNetworkIndicator": "Yes",
          "inPlanNetworkIndicatorCode": "Y",
          "name": "Co-Insurance",
          "planCoverage": "Gold Plan",
          "serviceTypeCodes": [
            "12"
          ],
          "serviceTypes": [
            "Durable Medical Equipment Purchase"
          ],
          "timeQualifier": "Visit",
          "timeQualifierCode": "27"
        },
        {
          "code": "I",
          "inPlanNetworkIndicator": "No",
          "inPlanNetworkIndicatorCode": "N",
          "name": "Non-Covered",
          "planCoverage": "Gold Plan",
          "serviceTypeCodes": [
            "12"
          ],
          "serviceTypes": [
            "Durable Medical Equipment Purchase"
          ]
        },
        {
          "code": "1",
          "inPlanNetworkIndicator": "Yes",
          "inPlanNetworkIndicatorCode": "Y",
          "name": "Active Coverage",
          "planCoverage": "Gold Plan",
          "serviceTypeCodes": [
            "13"
          ],
          "serviceTypes": [
            "Ambulatory Service Center Facility"
          ]
        },
        {
          "benefitPercent": "0.5",
          "code": "A",
          "coverageLevel": "Family",
          "coverageLevelCode": "FAM",
          "inPlanNetworkIndicator": "Yes",
          "inPlanNetworkIndicatorCode": "Y",
          "name": "Co-Insurance",
          "planCoverage": "Gold Plan",
          "serviceTypeCodes": [
            "13"
          ],
          "serviceTypes": [
            "Ambulatory Service Center Facility"
          ],
          "timeQualifier": "Visit",
          "timeQualifierCode": "27"
        },
        {
          "code": "I",
          "inPlanNetworkIndicator": "No",
          "inPlanNetworkIndicatorCode": "N",
          "name": "Non-Covered",
          "planCoverage": "Gold Plan",
          "serviceTypeCodes": [
            "13"
          ],
          "serviceTypes": [
            "Ambulatory Service Center Facility"
          ]
        },
        {
          "additionalInformation": [
            {
              "description": "Prior authorization may be required. Covered No Limit."
            }
          ],
          "code": "1",
          "inPlanNetworkIndicator": "Yes",
          "inPlanNetworkIndicatorCode": "Y",
          "name": "Active Coverage",
          "planCoverage": "Gold Plan",
          "serviceTypeCodes": [
            "18"
          ],
          "serviceTypes": [
            "Durable Medical Equipment Rental"
          ]
        },
        {
          "benefitPercent": "0.5",
          "code": "A",
          "coverageLevel": "Family",
          "coverageLevelCode": "FAM",
          "inPlanNetworkIndicator": "Yes",
          "inPlanNetworkIndicatorCode": "Y",
          "name": "Co-Insurance",
          "planCoverage": "Gold Plan",
          "serviceTypeCodes": [
            "18"
          ],
          "serviceTypes": [
            "Durable Medical Equipment Rental"
          ],
          "timeQualifier": "Visit",
          "timeQualifierCode": "27"
        },
        {
          "code": "I",
          "inPlanNetworkIndicator": "No",
          "inPlanNetworkIndicatorCode": "N",
          "name": "Non-Covered",
          "planCoverage": "Gold Plan",
          "serviceTypeCodes": [
            "18"
          ],
          "serviceTypes": [
            "Durable Medical Equipment Rental"
          ]
        },
        {
          "additionalInformation": [
            {
              "description": "Limited to 26 visits per year (visits in excess of 26 require prior authorization)."
            }
          ],
          "code": "1",
          "inPlanNetworkIndicator": "Yes",
          "inPlanNetworkIndicatorCode": "Y",
          "name": "Active Coverage",
          "planCoverage": "Gold Plan",
          "serviceTypeCodes": [
            "33"
          ],
          "serviceTypes": [
            "Chiropractic"
          ]
        },
        {
          "benefitPercent": "0.5",
          "code": "A",
          "coverageLevel": "Family",
          "coverageLevelCode": "FAM",
          "inPlanNetworkIndicator": "Yes",
          "inPlanNetworkIndicatorCode": "Y",
          "name": "Co-Insurance",
          "planCoverage": "Gold Plan",
          "serviceTypeCodes": [
            "33"
          ],
          "serviceTypes": [
            "Chiropractic"
          ],
          "timeQualifier": "Visit",
          "timeQualifierCode": "27"
        },
        {
          "code": "I",
          "inPlanNetworkIndicator": "No",
          "inPlanNetworkIndicatorCode": "N",
          "name": "Non-Covered",
          "planCoverage": "Gold Plan",
          "serviceTypeCodes": [
            "33"
          ],
          "serviceTypes": [
            "Chiropractic"
          ]
        },
        {
          "additionalInformation": [
            {
              "description": "Prior authorization may be required. Covered No Limit."
            }
          ],
          "code": "1",
          "inPlanNetworkIndicator": "Yes",
          "inPlanNetworkIndicatorCode": "Y",
          "name": "Active Coverage",
          "planCoverage": "Gold Plan",
          "serviceTypeCodes": [
            "48"
          ],
          "serviceTypes": [
            "Hospital - Inpatient"
          ]
        },
        {
          "benefitPercent": "0.5",
          "code": "A",
          "coverageLevel": "Family",
          "coverageLevelCode": "FAM",
          "inPlanNetworkIndicator": "Yes",
          "inPlanNetworkIndicatorCode": "Y",
          "name": "Co-Insurance",
          "planCoverage": "Gold Plan",
          "serviceTypeCodes": [
            "48"
          ],
          "serviceTypes": [
            "Hospital - Inpatient"
          ],
          "timeQualifier": "Visit",
          "timeQualifierCode": "27"
        },
        {
          "code": "I",
          "inPlanNetworkIndicator": "No",
          "inPlanNetworkIndicatorCode": "N",
          "name": "Non-Covered",
          "planCoverage": "Gold Plan",
          "serviceTypeCodes": [
            "48"
          ],
          "serviceTypes": [
            "Hospital - Inpatient"
          ]
        },
        {
          "additionalInformation": [
            {
              "description": "Prior authorization may be required. Covered No Limit."
            }
          ],
          "code": "1",
          "inPlanNetworkIndicator": "Yes",
          "inPlanNetworkIndicatorCode": "Y",
          "name": "Active Coverage",
          "planCoverage": "Gold Plan",
          "serviceTypeCodes": [
            "50"
          ],
          "serviceTypes": [
            "Hospital - Outpatient"
          ]
        },
        {
          "benefitPercent": "0.5",
          "code": "A",
          "coverageLevel": "Family",
          "coverageLevelCode": "FAM",
          "inPlanNetworkIndicator": "Yes",
          "inPlanNetworkIndicatorCode": "Y",
          "name": "Co-Insurance",
          "planCoverage": "Gold Plan",
          "serviceTypeCodes": [
            "50"
          ],
          "serviceTypes": [
            "Hospital - Outpatient"
          ],
          "timeQualifier": "Visit",
          "timeQualifierCode": "27"
        },
        {
          "code": "I",
          "inPlanNetworkIndicator": "No",
          "inPlanNetworkIndicatorCode": "N",
          "name": "Non-Covered",
          "planCoverage": "Gold Plan",
          "serviceTypeCodes": [
            "50"
          ],
          "serviceTypes": [
            "Hospital - Outpatient"
          ]
        },
        {
          "additionalInformation": [
            {
              "description": "Covered No Limit."
            }
          ],
          "code": "1",
          "inPlanNetworkIndicator": "Yes",
          "inPlanNetworkIndicatorCode": "Y",
          "name": "Active Coverage",
          "planCoverage": "Gold Plan",
          "serviceTypeCodes": [
            "51"
          ],
          "serviceTypes": [
            "Hospital - Emergency Accident"
          ]
        },
        {
          "benefitPercent": "0.5",
          "code": "A",
          "coverageLevel": "Family",
          "coverageLevelCode": "FAM",
          "inPlanNetworkIndicator": "Yes",
          "inPlanNetworkIndicatorCode": "Y",
          "name": "Co-Insurance",
          "planCoverage": "Gold Plan",
          "serviceTypeCodes": [
            "51"
          ],
          "serviceTypes": [
            "Hospital - Emergency Accident"
          ],
          "timeQualifier": "Visit",
          "timeQualifierCode": "27"
        },
        {
          "additionalInformation": [
            {
              "description": "Covered No Limit."
            }
          ],
          "code": "1",
          "inPlanNetworkIndicator": "No",
          "inPlanNetworkIndicatorCode": "N",
          "name": "Active Coverage",
          "planCoverage": "Gold Plan",
          "serviceTypeCodes": [
            "51"
          ],
          "serviceTypes": [
            "Hospital - Emergency Accident"
          ]
        },
        {
          "benefitPercent": "0.5",
          "code": "A",
          "coverageLevel": "Family",
          "coverageLevelCode": "FAM",
          "inPlanNetworkIndicator": "No",
          "inPlanNetworkIndicatorCode": "N",
          "name": "Co-Insurance",
          "planCoverage": "Gold Plan",
          "serviceTypeCodes": [
            "51"
          ],
          "serviceTypes": [
            "Hospital - Emergency Accident"
          ],
          "timeQualifier": "Visit",
          "timeQualifierCode": "27"
        },
        {
          "additionalInformation": [
            {
              "description": "Covered No Limit."
            }
          ],
          "code": "1",
          "inPlanNetworkIndicator": "Yes",
          "inPlanNetworkIndicatorCode": "Y",
          "name": "Active Coverage",
          "planCoverage": "Gold Plan",
          "serviceTypeCodes": [
            "52"
          ],
          "serviceTypes": [
            "Hospital - Emergency Medical"
          ]
        },
        {
          "benefitPercent": "0.5",
          "code": "A",
          "coverageLevel": "Family",
          "coverageLevelCode": "FAM",
          "inPlanNetworkIndicator": "Yes",
          "inPlanNetworkIndicatorCode": "Y",
          "name": "Co-Insurance",
          "planCoverage": "Gold Plan",
          "serviceTypeCodes": [
            "52"
          ],
          "serviceTypes": [
            "Hospital - Emergency Medical"
          ],
          "timeQualifier": "Visit",
          "timeQualifierCode": "27"
        },
        {
          "additionalInformation": [
            {
              "description": "Covered No Limit."
            }
          ],
          "code": "1",
          "inPlanNetworkIndicator": "No",
          "inPlanNetworkIndicatorCode": "N",
          "name": "Active Coverage",
          "planCoverage": "Gold Plan",
          "serviceTypeCodes": [
            "52"
          ],
          "serviceTypes": [
            "Hospital - Emergency Medical"
          ]
        },
        {
          "benefitPercent": "0.5",
          "code": "A",
          "coverageLevel": "Family",
          "coverageLevelCode": "FAM",
          "inPlanNetworkIndicator": "No",
          "inPlanNetworkIndicatorCode": "N",
          "name": "Co-Insurance",
          "planCoverage": "Gold Plan",
          "serviceTypeCodes": [
            "52"
          ],
          "serviceTypes": [
            "Hospital - Emergency Medical"
          ],
          "timeQualifier": "Visit",
          "timeQualifierCode": "27"
        },
        {
          "code": "1",
          "inPlanNetworkIndicator": "Yes",
          "inPlanNetworkIndicatorCode": "Y",
          "name": "Active Coverage",
          "planCoverage": "Gold Plan",
          "serviceTypeCodes": [
            "53"
          ],
          "serviceTypes": [
            "Hospital - Ambulatory Surgical"
          ]
        },
        {
          "benefitPercent": "0.5",
          "code": "A",
          "coverageLevel": "Family",
          "coverageLevelCode": "FAM",
          "inPlanNetworkIndicator": "Yes",
          "inPlanNetworkIndicatorCode": "Y",
          "name": "Co-Insurance",
          "planCoverage": "Gold Plan",
          "serviceTypeCodes": [
            "53"
          ],
          "serviceTypes": [
            "Hospital - Ambulatory Surgical"
          ],
          "timeQualifier": "Visit",
          "timeQualifierCode": "27"
        },
        {
          "code": "I",
          "inPlanNetworkIndicator": "No",
          "inPlanNetworkIndicatorCode": "N",
          "name": "Non-Covered",
          "planCoverage": "Gold Plan",
          "serviceTypeCodes": [
            "53"
          ],
          "serviceTypes": [
            "Hospital - Ambulatory Surgical"
          ]
        },
        {
          "additionalInformation": [
            {
              "description": "Prior authorization may be required. Covered No Limit."
            }
          ],
          "code": "1",
          "inPlanNetworkIndicator": "Yes",
          "inPlanNetworkIndicatorCode": "Y",
          "name": "Active Coverage",
          "planCoverage": "Gold Plan",
          "serviceTypeCodes": [
            "62"
          ],
          "serviceTypes": [
            "MRI/CAT Scan"
          ]
        },
        {
          "benefitPercent": "0.5",
          "code": "A",
          "coverageLevel": "Family",
          "coverageLevelCode": "FAM",
          "inPlanNetworkIndicator": "Yes",
          "inPlanNetworkIndicatorCode": "Y",
          "name": "Co-Insurance",
          "planCoverage": "Gold Plan",
          "serviceTypeCodes": [
            "62"
          ],
          "serviceTypes": [
            "MRI/CAT Scan"
          ],
          "timeQualifier": "Visit",
          "timeQualifierCode": "27"
        },
        {
          "code": "I",
          "inPlanNetworkIndicator": "No",
          "inPlanNetworkIndicatorCode": "N",
          "name": "Non-Covered",
          "planCoverage": "Gold Plan",
          "serviceTypeCodes": [
            "62"
          ],
          "serviceTypes": [
            "MRI/CAT Scan"
          ]
        },
        {
          "additionalInformation": [
            {
              "description": "Prior authorization may be required. Covered No Limit."
            }
          ],
          "code": "1",
          "inPlanNetworkIndicator": "Yes",
          "inPlanNetworkIndicatorCode": "Y",
          "name": "Active Coverage",
          "planCoverage": "Gold Plan",
          "serviceTypeCodes": [
            "65"
          ],
          "serviceTypes": [
            "Newborn Care"
          ]
        },
        {
          "benefitPercent": "0.5",
          "code": "A",
          "coverageLevel": "Family",
          "coverageLevelCode": "FAM",
          "inPlanNetworkIndicator": "Yes",
          "inPlanNetworkIndicatorCode": "Y",
          "name": "Co-Insurance",
          "planCoverage": "Gold Plan",
          "serviceTypeCodes": [
            "65"
          ],
          "serviceTypes": [
            "Newborn Care"
          ],
          "timeQualifier": "Visit",
          "timeQualifierCode": "27"
        },
        {
          "code": "I",
          "inPlanNetworkIndicator": "No",
          "inPlanNetworkIndicatorCode": "N",
          "name": "Non-Covered",
          "planCoverage": "Gold Plan",
          "serviceTypeCodes": [
            "65"
          ],
          "serviceTypes": [
            "Newborn Care"
          ]
        },
        {
          "additionalInformation": [
            {
              "description": "Covered in accordance with ACA guidelines."
            }
          ],
          "code": "1",
          "inPlanNetworkIndicator": "Yes",
          "inPlanNetworkIndicatorCode": "Y",
          "name": "Active Coverage",
          "planCoverage": "Gold Plan",
          "serviceTypeCodes": [
            "68"
          ],
          "serviceTypes": [
            "Well Baby Care"
          ]
        },
        {
          "benefitAmount": "0",
          "code": "B",
          "coverageLevel": "Family",
          "coverageLevelCode": "FAM",
          "inPlanNetworkIndicator": "Yes",
          "inPlanNetworkIndicatorCode": "Y",
          "name": "Co-Payment",
          "planCoverage": "Gold Plan",
          "serviceTypeCodes": [
            "68"
          ],
          "serviceTypes": [
            "Well Baby Care"
          ],
          "timeQualifier": "Visit",
          "timeQualifierCode": "27"
        },
        {
          "code": "I",
          "inPlanNetworkIndicator": "No",
          "inPlanNetworkIndicatorCode": "N",
          "name": "Non-Covered",
          "planCoverage": "Gold Plan",
          "serviceTypeCodes": [
            "68"
          ],
          "serviceTypes": [
            "Well Baby Care"
          ]
        },
        {
          "additionalInformation": [
            {
              "description": "Prior authorization may be required. Covered No Limit."
            }
          ],
          "code": "1",
          "inPlanNetworkIndicator": "Yes",
          "inPlanNetworkIndicatorCode": "Y",
          "name": "Active Coverage",
          "planCoverage": "Gold Plan",
          "serviceTypeCodes": [
            "69"
          ],
          "serviceTypes": [
            "Maternity"
          ]
        },
        {
          "benefitPercent": "0.5",
          "code": "A",
          "coverageLevel": "Family",
          "coverageLevelCode": "FAM",
          "inPlanNetworkIndicator": "Yes",
          "inPlanNetworkIndicatorCode": "Y",
          "name": "Co-Insurance",
          "planCoverage": "Gold Plan",
          "serviceTypeCodes": [
            "69"
          ],
          "serviceTypes": [
            "Maternity"
          ],
          "timeQualifier": "Visit",
          "timeQualifierCode": "27"
        },
        {
          "code": "I",
          "inPlanNetworkIndicator": "No",
          "inPlanNetworkIndicatorCode": "N",
          "name": "Non-Covered",
          "planCoverage": "Gold Plan",
          "serviceTypeCodes": [
            "69"
          ],
          "serviceTypes": [
            "Maternity"
          ]
        },
        {
          "additionalInformation": [
            {
              "description": "Covered No Limit."
            }
          ],
          "code": "1",
          "inPlanNetworkIndicator": "Yes",
          "inPlanNetworkIndicatorCode": "Y",
          "name": "Active Coverage",
          "planCoverage": "Gold Plan",
          "serviceTypeCodes": [
            "86"
          ],
          "serviceTypes": [
            "Emergency Services"
          ]
        },
        {
          "benefitPercent": "0.5",
          "code": "A",
          "coverageLevel": "Family",
          "coverageLevelCode": "FAM",
          "inPlanNetworkIndicator": "Yes",
          "inPlanNetworkIndicatorCode": "Y",
          "name": "Co-Insurance",
          "planCoverage": "Gold Plan",
          "serviceTypeCodes": [
            "86"
          ],
          "serviceTypes": [
            "Emergency Services"
          ],
          "timeQualifier": "Visit",
          "timeQualifierCode": "27"
        },
        {
          "additionalInformation": [
            {
              "description": "Covered No Limit."
            }
          ],
          "code": "1",
          "inPlanNetworkIndicator": "No",
          "inPlanNetworkIndicatorCode": "N",
          "name": "Active Coverage",
          "planCoverage": "Gold Plan",
          "serviceTypeCodes": [
            "86"
          ],
          "serviceTypes": [
            "Emergency Services"
          ]
        },
        {
          "benefitPercent": "0.5",
          "code": "A",
          "coverageLevel": "Family",
          "coverageLevelCode": "FAM",
          "inPlanNetworkIndicator": "No",
          "inPlanNetworkIndicatorCode": "N",
          "name": "Co-Insurance",
          "planCoverage": "Gold Plan",
          "serviceTypeCodes": [
            "86"
          ],
          "serviceTypes": [
            "Emergency Services"
          ],
          "timeQualifier": "Visit",
          "timeQualifierCode": "27"
        },
        {
          "code": "1",
          "inPlanNetworkIndicator": "Yes",
          "inPlanNetworkIndicatorCode": "Y",
          "name": "Active Coverage",
          "planCoverage": "Gold Plan",
          "serviceTypeCodes": [
            "88"
          ],
          "serviceTypes": [
            "Pharmacy"
          ]
        },
        {
          "additionalInformation": [
            {
              "description": "per prescription"
            }
          ],
          "benefitAmount": "10",
          "code": "B",
          "coverageLevel": "Family",
          "coverageLevelCode": "FAM",
          "inPlanNetworkIndicator": "Yes",
          "inPlanNetworkIndicatorCode": "Y",
          "name": "Co-Payment",
          "planCoverage": "Gold Plan",
          "serviceTypeCodes": [
            "88"
          ],
          "serviceTypes": [
            "Pharmacy"
          ],
          "timeQualifier": "Visit",
          "timeQualifierCode": "27"
        },
        {
          "code": "I",
          "inPlanNetworkIndicator": "No",
          "inPlanNetworkIndicatorCode": "N",
          "name": "Non-Covered",
          "planCoverage": "Gold Plan",
          "serviceTypeCodes": [
            "88"
          ],
          "serviceTypes": [
            "Pharmacy"
          ]
        },
        {
          "additionalInformation": [
            {
              "description": "PCP"
            }
          ],
          "code": "1",
          "inPlanNetworkIndicator": "Yes",
          "inPlanNetworkIndicatorCode": "Y",
          "name": "Active Coverage",
          "planCoverage": "Gold Plan",
          "serviceTypeCodes": [
            "98"
          ],
          "serviceTypes": [
            "Professional (Physician) Visit - Office"
          ]
        },
        {
          "additionalInformation": [
            {
              "description": "per visit"
            },
            {
              "description": "PCP"
            }
          ],
          "benefitAmount": "15",
          "code": "B",
          "coverageLevel": "Family",
          "coverageLevelCode": "FAM",
          "inPlanNetworkIndicator": "Yes",
          "inPlanNetworkIndicatorCode": "Y",
          "name": "Co-Payment",
          "planCoverage": "Gold Plan",
          "serviceTypeCodes": [
            "98"
          ],
          "serviceTypes": [
            "Professional (Physician) Visit - Office"
          ],
          "timeQualifier": "Visit",
          "timeQualifierCode": "27"
        },
        {
          "additionalInformation": [
            {
              "description": "PCP"
            }
          ],
          "code": "I",
          "inPlanNetworkIndicator": "No",
          "inPlanNetworkIndicatorCode": "N",
          "name": "Non-Covered",
          "planCoverage": "Gold Plan",
          "serviceTypeCodes": [
            "98"
          ],
          "serviceTypes": [
            "Professional (Physician) Visit - Office"
          ]
        },
        {
          "additionalInformation": [
            {
              "description": "Specialist"
            },
            {
              "description": "Covered No Limit."
            }
          ],
          "code": "1",
          "inPlanNetworkIndicator": "Yes",
          "inPlanNetworkIndicatorCode": "Y",
          "name": "Active Coverage",
          "planCoverage": "Gold Plan",
          "serviceTypeCodes": [
            "98"
          ],
          "serviceTypes": [
            "Professional (Physician) Visit - Office"
          ]
        },
        {
          "additionalInformation": [
            {
              "description": "per visit"
            },
            {
              "description": "Specialist"
            }
          ],
          "benefitAmount": "30",
          "code": "B",
          "coverageLevel": "Family",
          "coverageLevelCode": "FAM",
          "inPlanNetworkIndicator": "Yes",
          "inPlanNetworkIndicatorCode": "Y",
          "name": "Co-Payment",
          "planCoverage": "Gold Plan",
          "serviceTypeCodes": [
            "98"
          ],
          "serviceTypes": [
            "Professional (Physician) Visit - Office"
          ],
          "timeQualifier": "Visit",
          "timeQualifierCode": "27"
        },
        {
          "additionalInformation": [
            {
              "description": "Specialist"
            }
          ],
          "code": "I",
          "inPlanNetworkIndicator": "No",
          "inPlanNetworkIndicatorCode": "N",
          "name": "Non-Covered",
          "planCoverage": "Gold Plan",
          "serviceTypeCodes": [
            "98"
          ],
          "serviceTypes": [
            "Professional (Physician) Visit - Office"
          ]
        },
        {
          "additionalInformation": [
            {
              "description": "Prior authorization may be required. Covered No Limit. (Primary Care Provider (PCP) and other practitioner office visits do not require prior authorization.) Note| Services (excluding Emergency Room Care / Emergency Services) rendered by an out-of-network provider"
            }
          ],
          "code": "1",
          "inPlanNetworkIndicator": "Yes",
          "inPlanNetworkIndicatorCode": "Y",
          "name": "Active Coverage",
          "planCoverage": "Gold Plan",
          "serviceTypeCodes": [
            "A4"
          ],
          "serviceTypes": [
            "Psychiatric"
          ]
        },
        {
          "benefitPercent": "0.5",
          "code": "A",
          "coverageLevel": "Family",
          "coverageLevelCode": "FAM",
          "inPlanNetworkIndicator": "Yes",
          "inPlanNetworkIndicatorCode": "Y",
          "name": "Co-Insurance",
          "planCoverage": "Gold Plan",
          "serviceTypeCodes": [
            "A4"
          ],
          "serviceTypes": [
            "Psychiatric"
          ],
          "timeQualifier": "Visit",
          "timeQualifierCode": "27"
        },
        {
          "code": "I",
          "inPlanNetworkIndicator": "No",
          "inPlanNetworkIndicatorCode": "N",
          "name": "Non-Covered",
          "planCoverage": "Gold Plan",
          "serviceTypeCodes": [
            "A4"
          ],
          "serviceTypes": [
            "Psychiatric"
          ]
        },
        {
          "code": "1",
          "inPlanNetworkIndicator": "Yes",
          "inPlanNetworkIndicatorCode": "Y",
          "name": "Active Coverage",
          "planCoverage": "Gold Plan",
          "serviceTypeCodes": [
            "A6"
          ],
          "serviceTypes": [
            "Psychotherapy"
          ]
        },
        {
          "benefitPercent": "0.5",
          "code": "A",
          "coverageLevel": "Family",
          "coverageLevelCode": "FAM",
          "inPlanNetworkIndicator": "Yes",
          "inPlanNetworkIndicatorCode": "Y",
          "name": "Co-Insurance",
          "planCoverage": "Gold Plan",
          "serviceTypeCodes": [
            "A6"
          ],
          "serviceTypes": [
            "Psychotherapy"
          ],
          "timeQualifier": "Visit",
          "timeQualifierCode": "27"
        },
        {
          "code": "I",
          "inPlanNetworkIndicator": "No",
          "inPlanNetworkIndicatorCode": "N",
          "name": "Non-Covered",
          "planCoverage": "Gold Plan",
          "serviceTypeCodes": [
            "A6"
          ],
          "serviceTypes": [
            "Psychotherapy"
          ]
        },
        {
          "code": "1",
          "inPlanNetworkIndicator": "Yes",
          "inPlanNetworkIndicatorCode": "Y",
          "name": "Active Coverage",
          "planCoverage": "Gold Plan",
          "serviceTypeCodes": [
            "A7"
          ],
          "serviceTypes": [
            "Psychiatric - Inpatient"
          ]
        },
        {
          "benefitPercent": "0.5",
          "code": "A",
          "coverageLevel": "Family",
          "coverageLevelCode": "FAM",
          "inPlanNetworkIndicator": "Yes",
          "inPlanNetworkIndicatorCode": "Y",
          "name": "Co-Insurance",
          "planCoverage": "Gold Plan",
          "serviceTypeCodes": [
            "A7"
          ],
          "serviceTypes": [
            "Psychiatric - Inpatient"
          ],
          "timeQualifier": "Visit",
          "timeQualifierCode": "27"
        },
        {
          "code": "I",
          "inPlanNetworkIndicator": "No",
          "inPlanNetworkIndicatorCode": "N",
          "name": "Non-Covered",
          "planCoverage": "Gold Plan",
          "serviceTypeCodes": [
            "A7"
          ],
          "serviceTypes": [
            "Psychiatric - Inpatient"
          ]
        },
        {
          "code": "1",
          "inPlanNetworkIndicator": "Yes",
          "inPlanNetworkIndicatorCode": "Y",
          "name": "Active Coverage",
          "planCoverage": "Gold Plan",
          "serviceTypeCodes": [
            "A8"
          ],
          "serviceTypes": [
            "Psychiatric - Outpatient"
          ]
        },
        {
          "benefitPercent": "0.5",
          "code": "A",
          "coverageLevel": "Family",
          "coverageLevelCode": "FAM",
          "inPlanNetworkIndicator": "Yes",
          "inPlanNetworkIndicatorCode": "Y",
          "name": "Co-Insurance",
          "planCoverage": "Gold Plan",
          "serviceTypeCodes": [
            "A8"
          ],
          "serviceTypes": [
            "Psychiatric - Outpatient"
          ],
          "timeQualifier": "Visit",
          "timeQualifierCode": "27"
        },
        {
          "code": "I",
          "inPlanNetworkIndicator": "No",
          "inPlanNetworkIndicatorCode": "N",
          "name": "Non-Covered",
          "planCoverage": "Gold Plan",
          "serviceTypeCodes": [
            "A8"
          ],
          "serviceTypes": [
            "Psychiatric - Outpatient"
          ]
        },
        {
          "code": "1",
          "inPlanNetworkIndicator": "Yes",
          "inPlanNetworkIndicatorCode": "Y",
          "name": "Active Coverage",
          "planCoverage": "Gold Plan",
          "serviceTypeCodes": [
            "AD"
          ],
          "serviceTypes": [
            "Occupational Therapy"
          ]
        },
        {
          "benefitPercent": "0.5",
          "code": "A",
          "coverageLevel": "Family",
          "coverageLevelCode": "FAM",
          "inPlanNetworkIndicator": "Yes",
          "inPlanNetworkIndicatorCode": "Y",
          "name": "Co-Insurance",
          "planCoverage": "Gold Plan",
          "serviceTypeCodes": [
            "AD"
          ],
          "serviceTypes": [
            "Occupational Therapy"
          ],
          "timeQualifier": "Visit",
          "timeQualifierCode": "27"
        },
        {
          "code": "I",
          "inPlanNetworkIndicator": "No",
          "inPlanNetworkIndicatorCode": "N",
          "name": "Non-Covered",
          "planCoverage": "Gold Plan",
          "serviceTypeCodes": [
            "AD"
          ],
          "serviceTypes": [
            "Occupational Therapy"
          ]
        },
        {
          "code": "1",
          "inPlanNetworkIndicator": "Yes",
          "inPlanNetworkIndicatorCode": "Y",
          "name": "Active Coverage",
          "planCoverage": "Gold Plan",
          "serviceTypeCodes": [
            "AF"
          ],
          "serviceTypes": [
            "Speech Therapy"
          ]
        },
        {
          "benefitPercent": "0.5",
          "code": "A",
          "coverageLevel": "Family",
          "coverageLevelCode": "FAM",
          "inPlanNetworkIndicator": "Yes",
          "inPlanNetworkIndicatorCode": "Y",
          "name": "Co-Insurance",
          "planCoverage": "Gold Plan",
          "serviceTypeCodes": [
            "AF"
          ],
          "serviceTypes": [
            "Speech Therapy"
          ],
          "timeQualifier": "Visit",
          "timeQualifierCode": "27"
        },
        {
          "code": "I",
          "inPlanNetworkIndicator": "No",
          "inPlanNetworkIndicatorCode": "N",
          "name": "Non-Covered",
          "planCoverage": "Gold Plan",
          "serviceTypeCodes": [
            "AF"
          ],
          "serviceTypes": [
            "Speech Therapy"
          ]
        },
        {
          "additionalInformation": [
            {
              "description": "Prior authorization may be required. Limited to 150 days per year."
            }
          ],
          "code": "1",
          "inPlanNetworkIndicator": "Yes",
          "inPlanNetworkIndicatorCode": "Y",
          "name": "Active Coverage",
          "planCoverage": "Gold Plan",
          "serviceTypeCodes": [
            "AG"
          ],
          "serviceTypes": [
            "Skilled Nursing Care"
          ]
        },
        {
          "benefitPercent": "0.5",
          "code": "A",
          "coverageLevel": "Family",
          "coverageLevelCode": "FAM",
          "inPlanNetworkIndicator": "Yes",
          "inPlanNetworkIndicatorCode": "Y",
          "name": "Co-Insurance",
          "planCoverage": "Gold Plan",
          "serviceTypeCodes": [
            "AG"
          ],
          "serviceTypes": [
            "Skilled Nursing Care"
          ],
          "timeQualifier": "Visit",
          "timeQualifierCode": "27"
        },
        {
          "code": "I",
          "inPlanNetworkIndicator": "No",
          "inPlanNetworkIndicatorCode": "N",
          "name": "Non-Covered",
          "planCoverage": "Gold Plan",
          "serviceTypeCodes": [
            "AG"
          ],
          "serviceTypes": [
            "Skilled Nursing Care"
          ]
        },
        {
          "additionalInformation": [
            {
              "description": "Covered in accordance with ACA guidelines."
            }
          ],
          "code": "1",
          "inPlanNetworkIndicator": "Yes",
          "inPlanNetworkIndicatorCode": "Y",
          "name": "Active Coverage",
          "planCoverage": "Gold Plan",
          "serviceTypeCodes": [
            "BZ"
          ],
          "serviceTypes": [
            "Physician Visit - Office: Well"
          ]
        },
        {
          "benefitAmount": "0",
          "code": "B",
          "coverageLevel": "Family",
          "coverageLevelCode": "FAM",
          "inPlanNetworkIndicator": "Yes",
          "inPlanNetworkIndicatorCode": "Y",
          "name": "Co-Payment",
          "planCoverage": "Gold Plan",
          "serviceTypeCodes": [
            "BZ"
          ],
          "serviceTypes": [
            "Physician Visit - Office: Well"
          ],
          "timeQualifier": "Visit",
          "timeQualifierCode": "27"
        },
        {
          "code": "I",
          "inPlanNetworkIndicator": "No",
          "inPlanNetworkIndicatorCode": "N",
          "name": "Non-Covered",
          "planCoverage": "Gold Plan",
          "serviceTypeCodes": [
            "BZ"
          ],
          "serviceTypes": [
            "Physician Visit - Office: Well"
          ]
        },
        {
          "additionalInformation": [
            {
              "description": "Prior authorization may be required. Covered No Limit."
            }
          ],
          "code": "1",
          "inPlanNetworkIndicator": "Yes",
          "inPlanNetworkIndicatorCode": "Y",
          "name": "Active Coverage",
          "planCoverage": "Gold Plan",
          "serviceTypeCodes": [
            "MH"
          ],
          "serviceTypes": [
            "Mental Health"
          ]
        },
        {
          "benefitPercent": "0.5",
          "code": "A",
          "coverageLevel": "Family",
          "coverageLevelCode": "FAM",
          "inPlanNetworkIndicator": "Yes",
          "inPlanNetworkIndicatorCode": "Y",
          "name": "Co-Insurance",
          "planCoverage": "Gold Plan",
          "serviceTypeCodes": [
            "MH"
          ],
          "serviceTypes": [
            "Mental Health"
          ],
          "timeQualifier": "Visit",
          "timeQualifierCode": "27"
        },
        {
          "code": "I",
          "inPlanNetworkIndicator": "No",
          "inPlanNetworkIndicatorCode": "N",
          "name": "Non-Covered",
          "planCoverage": "Gold Plan",
          "serviceTypeCodes": [
            "MH"
          ],
          "serviceTypes": [
            "Mental Health"
          ]
        },
        {
          "code": "1",
          "inPlanNetworkIndicator": "Yes",
          "inPlanNetworkIndicatorCode": "Y",
          "name": "Active Coverage",
          "planCoverage": "Gold Plan",
          "serviceTypeCodes": [
            "PT"
          ],
          "serviceTypes": [
            "Physical Therapy"
          ]
        },
        {
          "additionalInformation": [
            {
              "description": "per visit"
            }
          ],
          "benefitAmount": "15",
          "code": "B",
          "coverageLevel": "Family",
          "coverageLevelCode": "FAM",
          "inPlanNetworkIndicator": "Yes",
          "inPlanNetworkIndicatorCode": "Y",
          "name": "Co-Payment",
          "planCoverage": "Gold Plan",
          "serviceTypeCodes": [
            "PT"
          ],
          "serviceTypes": [
            "Physical Therapy"
          ],
          "timeQualifier": "Visit",
          "timeQualifierCode": "27"
        },
        {
          "code": "I",
          "inPlanNetworkIndicator": "No",
          "inPlanNetworkIndicatorCode": "N",
          "name": "Non-Covered",
          "planCoverage": "Gold Plan",
          "serviceTypeCodes": [
            "PT"
          ],
          "serviceTypes": [
            "Physical Therapy"
          ]
        },
        {
          "additionalInformation": [
            {
              "description": "Covered No Limit."
            }
          ],
          "code": "1",
          "inPlanNetworkIndicator": "Yes",
          "inPlanNetworkIndicatorCode": "Y",
          "name": "Active Coverage",
          "planCoverage": "Gold Plan",
          "serviceTypeCodes": [
            "UC"
          ],
          "serviceTypes": [
            "Urgent Care"
          ]
        },
        {
          "additionalInformation": [
            {
              "description": "per visit"
            }
          ],
          "benefitAmount": "10",
          "code": "B",
          "coverageLevel": "Family",
          "coverageLevelCode": "FAM",
          "inPlanNetworkIndicator": "Yes",
          "inPlanNetworkIndicatorCode": "Y",
          "name": "Co-Payment",
          "planCoverage": "Gold Plan",
          "serviceTypeCodes": [
            "UC"
          ],
          "serviceTypes": [
            "Urgent Care"
          ],
          "timeQualifier": "Visit",
          "timeQualifierCode": "27"
        },
        {
          "additionalInformation": [
            {
              "description": "Covered No Limit."
            }
          ],
          "code": "1",
          "inPlanNetworkIndicator": "No",
          "inPlanNetworkIndicatorCode": "N",
          "name": "Active Coverage",
          "planCoverage": "Gold Plan",
          "serviceTypeCodes": [
            "UC"
          ],
          "serviceTypes": [
            "Urgent Care"
          ]
        },
        {
          "additionalInformation": [
            {
              "description": "per visit"
            }
          ],
          "benefitAmount": "10",
          "code": "B",
          "coverageLevel": "Family",
          "coverageLevelCode": "FAM",
          "inPlanNetworkIndicator": "No",
          "inPlanNetworkIndicatorCode": "N",
          "name": "Co-Payment",
          "planCoverage": "Gold Plan",
          "serviceTypeCodes": [
            "UC"
          ],
          "serviceTypes": [
            "Urgent Care"
          ],
          "timeQualifier": "Visit",
          "timeQualifierCode": "27"
        },
        {
          "benefitAmount": "0",
          "code": "C",
          "coverageLevel": "Individual",
          "coverageLevelCode": "IND",
          "inPlanNetworkIndicator": "Yes",
          "inPlanNetworkIndicatorCode": "Y",
          "name": "Deductible",
          "planCoverage": "Gold Plan",
          "serviceTypeCodes": [
            "30"
          ],
          "serviceTypes": [
            "Health Benefit Plan Coverage"
          ],
          "timeQualifier": "Calendar Year",
          "timeQualifierCode": "23"
        },
        {
          "benefitAmount": "0",
          "code": "C",
          "coverageLevel": "Individual",
          "coverageLevelCode": "IND",
          "inPlanNetworkIndicator": "Yes",
          "inPlanNetworkIndicatorCode": "Y",
          "name": "Deductible",
          "planCoverage": "Gold Plan",
          "serviceTypeCodes": [
            "30"
          ],
          "serviceTypes": [
            "Health Benefit Plan Coverage"
          ],
          "timeQualifier": "Remaining",
          "timeQualifierCode": "29"
        },
        {
          "benefitAmount": "0",
          "code": "C",
          "coverageLevel": "Family",
          "coverageLevelCode": "FAM",
          "inPlanNetworkIndicator": "Yes",
          "inPlanNetworkIndicatorCode": "Y",
          "name": "Deductible",
          "planCoverage": "Gold Plan",
          "serviceTypeCodes": [
            "30"
          ],
          "serviceTypes": [
            "Health Benefit Plan Coverage"
          ],
          "timeQualifier": "Calendar Year",
          "timeQualifierCode": "23"
        },
        {
          "benefitAmount": "0",
          "code": "C",
          "coverageLevel": "Family",
          "coverageLevelCode": "FAM",
          "inPlanNetworkIndicator": "Yes",
          "inPlanNetworkIndicatorCode": "Y",
          "name": "Deductible",
          "planCoverage": "Gold Plan",
          "serviceTypeCodes": [
            "30"
          ],
          "serviceTypes": [
            "Health Benefit Plan Coverage"
          ],
          "timeQualifier": "Remaining",
          "timeQualifierCode": "29"
        },
        {
          "benefitAmount": "0",
          "code": "C",
          "coverageLevel": "Individual",
          "coverageLevelCode": "IND",
          "inPlanNetworkIndicator": "No",
          "inPlanNetworkIndicatorCode": "N",
          "name": "Deductible",
          "planCoverage": "Gold Plan",
          "serviceTypeCodes": [
            "30"
          ],
          "serviceTypes": [
            "Health Benefit Plan Coverage"
          ],
          "timeQualifier": "Calendar Year",
          "timeQualifierCode": "23"
        },
        {
          "benefitAmount": "0",
          "code": "C",
          "coverageLevel": "Individual",
          "coverageLevelCode": "IND",
          "inPlanNetworkIndicator": "No",
          "inPlanNetworkIndicatorCode": "N",
          "name": "Deductible",
          "planCoverage": "Gold Plan",
          "serviceTypeCodes": [
            "30"
          ],
          "serviceTypes": [
            "Health Benefit Plan Coverage"
          ],
          "timeQualifier": "Remaining",
          "timeQualifierCode": "29"
        },
        {
          "benefitAmount": "0",
          "code": "C",
          "coverageLevel": "Family",
          "coverageLevelCode": "FAM",
          "inPlanNetworkIndicator": "No",
          "inPlanNetworkIndicatorCode": "N",
          "name": "Deductible",
          "planCoverage": "Gold Plan",
          "serviceTypeCodes": [
            "30"
          ],
          "serviceTypes": [
            "Health Benefit Plan Coverage"
          ],
          "timeQualifier": "Calendar Year",
          "timeQualifierCode": "23"
        },
        {
          "benefitAmount": "0",
          "code": "C",
          "coverageLevel": "Family",
          "coverageLevelCode": "FAM",
          "inPlanNetworkIndicator": "No",
          "inPlanNetworkIndicatorCode": "N",
          "name": "Deductible",
          "planCoverage": "Gold Plan",
          "serviceTypeCodes": [
            "30"
          ],
          "serviceTypes": [
            "Health Benefit Plan Coverage"
          ],
          "timeQualifier": "Remaining",
          "timeQualifierCode": "29"
        },
        {
          "benefitAmount": "3000",
          "code": "G",
          "coverageLevel": "Individual",
          "coverageLevelCode": "IND",
          "inPlanNetworkIndicator": "Yes",
          "inPlanNetworkIndicatorCode": "Y",
          "name": "Out of Pocket (Stop Loss)",
          "planCoverage": "Gold Plan",
          "serviceTypeCodes": [
            "30"
          ],
          "serviceTypes": [
            "Health Benefit Plan Coverage"
          ],
          "timeQualifier": "Calendar Year",
          "timeQualifierCode": "23"
        },
        {
          "benefitAmount": "2000",
          "code": "G",
          "coverageLevel": "Individual",
          "coverageLevelCode": "IND",
          "inPlanNetworkIndicator": "Yes",
          "inPlanNetworkIndicatorCode": "Y",
          "name": "Out of Pocket (Stop Loss)",
          "planCoverage": "Gold Plan",
          "serviceTypeCodes": [
            "30"
          ],
          "serviceTypes": [
            "Health Benefit Plan Coverage"
          ],
          "timeQualifier": "Remaining",
          "timeQualifierCode": "29"
        },
        {
          "benefitAmount": "6000",
          "code": "G",
          "coverageLevel": "Family",
          "coverageLevelCode": "FAM",
          "inPlanNetworkIndicator": "Yes",
          "inPlanNetworkIndicatorCode": "Y",
          "name": "Out of Pocket (Stop Loss)",
          "planCoverage": "Gold Plan",
          "serviceTypeCodes": [
            "30"
          ],
          "serviceTypes": [
            "Health Benefit Plan Coverage"
          ],
          "timeQualifier": "Calendar Year",
          "timeQualifierCode": "23"
        },
        {
          "benefitAmount": "5000",
          "code": "G",
          "coverageLevel": "Family",
          "coverageLevelCode": "FAM",
          "inPlanNetworkIndicator": "Yes",
          "inPlanNetworkIndicatorCode": "Y",
          "name": "Out of Pocket (Stop Loss)",
          "planCoverage": "Gold Plan",
          "serviceTypeCodes": [
            "30"
          ],
          "serviceTypes": [
            "Health Benefit Plan Coverage"
          ],
          "timeQualifier": "Remaining",
          "timeQualifierCode": "29"
        },
        {
          "benefitAmount": "0",
          "code": "G",
          "coverageLevel": "Individual",
          "coverageLevelCode": "IND",
          "inPlanNetworkIndicator": "No",
          "inPlanNetworkIndicatorCode": "N",
          "name": "Out of Pocket (Stop Loss)",
          "planCoverage": "Gold Plan",
          "serviceTypeCodes": [
            "30"
          ],
          "serviceTypes": [
            "Health Benefit Plan Coverage"
          ],
          "timeQualifier": "Calendar Year",
          "timeQualifierCode": "23"
        },
        {
          "benefitAmount": "0",
          "code": "G",
          "coverageLevel": "Individual",
          "coverageLevelCode": "IND",
          "inPlanNetworkIndicator": "No",
          "inPlanNetworkIndicatorCode": "N",
          "name": "Out of Pocket (Stop Loss)",
          "planCoverage": "Gold Plan",
          "serviceTypeCodes": [
            "30"
          ],
          "serviceTypes": [
            "Health Benefit Plan Coverage"
          ],
          "timeQualifier": "Remaining",
          "timeQualifierCode": "29"
        },
        {
          "benefitAmount": "0",
          "code": "G",
          "coverageLevel": "Family",
          "coverageLevelCode": "FAM",
          "inPlanNetworkIndicator": "No",
          "inPlanNetworkIndicatorCode": "N",
          "name": "Out of Pocket (Stop Loss)",
          "planCoverage": "Gold Plan",
          "serviceTypeCodes": [
            "30"
          ],
          "serviceTypes": [
            "Health Benefit Plan Coverage"
          ],
          "timeQualifier": "Calendar Year",
          "timeQualifierCode": "23"
        },
        {
          "benefitAmount": "0",
          "code": "G",
          "coverageLevel": "Family",
          "coverageLevelCode": "FAM",
          "inPlanNetworkIndicator": "No",
          "inPlanNetworkIndicatorCode": "N",
          "name": "Out of Pocket (Stop Loss)",
          "planCoverage": "Gold Plan",
          "serviceTypeCodes": [
            "30"
          ],
          "serviceTypes": [
            "Health Benefit Plan Coverage"
          ],
          "timeQualifier": "Remaining",
          "timeQualifierCode": "29"
        }
      ],
      "confidence": {
        "level": "REVIEW_NEEDED",
        "reason": "This record was identified as a low confidence match due to a DOB partial match"
      },
      "payer": {
        "name": "EXAMPLE INSURANCE CO"
      },
      "planDateInformation": {
        "eligibilityBegin": "20250101",
        "planBegin": "20250101",
        "service": "20250301"
      },
      "planInformation": {
        "groupDescription": "Individual On-Exchange",
        "groupNumber": "123456-78",
        "planNumber": "123456-EXMPL9876"
      },
      "provider": {
        "entityType": "Non-Person Entity",
        "npi": "1999999984",
        "providerName": "provider"
      },
      "subscriber": {
        "address": {
          "address1": "123 Main Street",
          "city": "ANYTOWN",
          "postalCode": "12345",
          "state": "CA"
        },
        "dateOfBirth": "19900115",
        "firstName": "John",
        "gender": "M",
        "groupDescription": "Individual On-Exchange",
        "groupNumber": "123456-78",
        "lastName": "Doe",
        "memberId": "987654321000",
        "middleName": "Smith",
        "planNumber": "123456-EXMPL9876"
      }
    }
  ],
  "meta": {
    "applicationMode": "production",
    "traceId": "1-abcdef12-123456789abcdef123456789"
  },
  "status": "COMPLETE"
}
```

#### 400

ValidationException 400 response

**Schema:** `ValidationExceptionResponseContent`

**Properties:**

- **`code`** (`string`): A code describing the type of validation failure.
- **`message`** (`string`) (required): A message describing the causes of the validation failure. There may be more than one.
#### 403

AccessDeniedException 403 response

**Schema:** `AccessDeniedExceptionResponseContent`

**Properties:**

- **`code`** (`string`): Error classification code
- **`message`** (`string`) (required): Human-readable error message
#### 404

ResourceNotFoundException 404 response

**Schema:** `ResourceNotFoundExceptionResponseContent`

**Properties:**

- **`code`** (`string`): Error classification code
- **`message`** (`string`) (required): Human-readable error message
#### 429

ThrottlingException 429 response

**Schema:** `ThrottlingExceptionResponseContent`

**Properties:**

- **`code`** (`string`): Error classification code
- **`message`** (`string`) (required): Human-readable error message
#### 500

InternalFailureException 500 response

**Schema:** `InternalFailureExceptionResponseContent`

**Properties:**

- **`code`** (`string`): Error classification code
- **`message`** (`string`) (required): Human-readable error message
#### 503

ServiceUnavailableException 503 response

**Schema:** `ServiceUnavailableExceptionResponseContent`

**Properties:**

- **`code`** (`string`)
- **`message`** (`string`) (required)
#### 504

GatewayTimeoutException 504 response

**Schema:** `GatewayTimeoutExceptionResponseContent`

**Properties:**

- **`code`** (`string`)
- **`message`** (`string`) (required)


# List Transactions
Source: https://www.stedi.com/docs/healthcare/api-reference/get-list-transactions


This endpoint fetches a list of all the transactions Stedi has processed in your account. It's useful for displaying a list of transactions in a UI. If you want to programmatically fetch and check for new transactions, you should use the [Poll Transactions](/healthcare/api-reference/get-poll-transactions) endpoint instead.

## API Specification

Fetch a list of transactions, sorted by the date they were created from newest to oldest.

**Endpoint:** `GET /transactions`

**Base URL:** `https://core.us.stedi.com/2023-08-01`

### Parameters

- **`pageSize`** (query): The maximum number of elements to return in a page. You can set this to a maximum of 500 elements. If not specified, the default is 100.
  - Type: `number`
- **`pageToken`** (query): A token returned by a previous call to this operation in the `nextPageToken`. If not specified, Stedi returns the first page of results.
  - Type: `string`
- **`businessIdentifier`** (query): List only transactions containing a business identifier with the given value.
  - Type: `string`
- **`transactionSetId`** (query): List only a given type of transaction. Accepts any valid 3-digit X12 Transaction Set Identifier Code, as defined in the X12 standard. See: <https://www.stedi.com/edi/x12/element/143>.
- **`sender`** (query): List only transactions sent by the given profile. This is the profile ID of the sender.
  - Type: `string`
- **`receiver`** (query): List only transactions sent to the given profile. This is the profile ID of the receiver.
  - Type: `string`
- **`direction`** (query): The direction of the transaction. Inbound transactions are those you receive from a payer, provider, or other trading partner. Outbound transactions are those you send to a payer, provider, or other trading partner.
- **`mode`** (query): Indicates whether the transaction contains test or production data. Stedi determines this from the value in [`ISA15` Usage Indicator Code](https://www.stedi.com/edi/x12/segment/ISA#ISA-15). 
- **`status`** (query): A status indicating whether Stedi was able to successfully process the transaction.
- **`from`** (query): The start of the time range to filter transactions. The results will include transactions created at or after this timestamp.
  - Type: `string`
- **`to`** (query): The end of the time range to filter transactions. The results will include transactions up to and including this timestamp.
  - Type: `string`
- **`elementId`** (query): List only transactions containing a business identifier with the given element ID. This is the X12 element ID, such as "127" for Reference Identification. May only be supplied if `businessIdentifier` is also supplied. See Stedi's EDI references pages to find element IDs.
  - Type: `string`
- **`partnershipId`** (query): List only transactions that were sent or received on the given partnership. This is the partnership ID, such as "local_clearinghouse-test".
  - Type: `string`

### Responses

#### 200

ListTransactions 200 response

**Schema:** `ListTransactionsResponseContent`

**Properties:**

- **`nextPageToken`** (`string`): Token that you can supply in subsequent requests to retrieve the next page of results. If not returned, there are no more results.
- **`items`** (`array of TransactionSummary objects`) (required)
- **`items[].transactionId`** (`string`) (required): A unique identifier for the processed transaction within Stedi. This ID is included in the transaction processed event. You can also retrieve it manually from the transaction's details page within the Stedi portal.
- **`items[].fileExecutionId`** (`string`) (required): A unique identifier for the processed file within Stedi. This ID is included in the transaction processed event. You can also retrieve it manually from the file's details page in the Stedi portal.
- **`items[].status`** (`string`) (required): A status indicating whether Stedi was able to successfully process the transaction.
  - Allowed values: `failed`, `succeeded`
- **`items[].direction`** (`string`) (required): The direction of the transaction. Inbound transactions are those you receive from a payer, provider, or other trading partner. Outbound transactions are those you send to a payer, provider, or other trading partner.
  - Allowed values: `INBOUND`, `OUTBOUND`, `UNKNOWN`
- **`items[].mode`** (`string`) (required): Indicates whether the transaction contains test or production data. Stedi determines this from the value in [`ISA15` Usage Indicator Code](https://www.stedi.com/edi/x12/segment/ISA#ISA-15).
  - Allowed values: `test`, `production`, `other`
- **`items[].processedAt`** (`string`) (required): The date and time when Stedi processed the transaction, in ISO 8601 format. For example, `2023-08-28T00:00:00Z`.
- **`items[].artifacts`** (`array of Artifact objects`) (required): A list of artifacts related to the transaction.
- **`items[].artifacts[].artifactType`** (`string`) (required): The format of the artifact.
  - Allowed values: `text/csv`, `application/edifact`, `application/filepart`, `application/json`, `application/pdf`, `text/psv`, `text/tsv`, `application/edi-x12`, `application/xml`, `application/zip`, `image/jpeg`, `image/png`, `image/tiff`, `text/plain`, `unknown`
- **`items[].artifacts[].usage`** (`string`) (required): The type of data the artifact contains. For example, an input artifact represents the original data Stedi received before processing, while an output artifact represents the processed data.

For example, for an inbound 835 ERA from a payer, the input artifact would be the original X12 EDI, and the output artifact would be the JSON representation of the ERA.
  - Allowed values: `attachment`, `input`, `metadata`, `output`
- **`items[].artifacts[].sizeBytes`** (`number`) (required): The size of the artifact in bytes.
- **`items[].artifacts[].url`** (`string`) (required): A URL to download the artifact.
- **`items[].artifacts[].model`** (`string`) (required): The model of the artifact, which indicates the type of process or operation it represents. For example, an execution artifact represents a file that was processed, a fragment artifact represents a part of a larger transaction, and a fault artifact represents an error that occurred during processing.
  - Allowed values: `execution`, `fragment`, `transaction`, `fault`
- **`items[].partnership`** (`object`) (required): Information about the associated partnership.

A partnership describes all aspects of the EDI relationship between two profiles in your Stedi account, such as which transaction sets they will exchange and other important information for processing EDI files. If you're sending or receiving transactions through the Stedi clearinghouse, Stedi configures the necessary partnership for you automatically when you set up your account.
- **`items[].partnership.partnershipId`** (`string`) (required): The unique identifier for the partnership within the Stedi platform.

A partnership describes all aspects of the EDI relationship between two profiles in your Stedi account, such as which transaction sets they will exchange and other important information for processing EDI files. If you're sending or receiving transactions through the Stedi clearinghouse, Stedi configures the necessary partnerships for you automatically when you set up your account.
- **`items[].partnership.partnershipType`** (`string`) (required): The type of partnership, which determines the EDI standard used for exchanging transactions.
  - Allowed values: `x12`, `edifact`
- **`items[].partnership.sender`** (`object`) (required): The entity that initiated the transaction.
- **`items[].partnership.sender.profileId`** (`string`) (required): A unique identifier for the profile within the Stedi platform.
- **`items[].partnership.receiver`** (`object`) (required): The entity that is receiving the transaction.
- **`items[].partnership.receiver.profileId`** (`string`) (required): A unique identifier for the profile within the Stedi platform.
- **`items[].x12`** (`object`): Details about the X12 EDI transaction.
- **`items[].x12.metadata`** (`object`) (required): Metadata about the X12 EDI transaction, including information from the interchange, functional group, and transaction headers as well as the sender and receiver IDs.
- **`items[].x12.metadata.interchange`** (`object`) (required): Data from the Interchange Control Header of the X12 EDI file.
- **`items[].x12.metadata.interchange.acknowledgmentRequestedCode`** (`string`) (required): The value of [`ISA14`](https://www.stedi.com/edi/x12/segment/ISA#ISA-14) in the Interchange Control Header, which indicates whether the sender is requesting a [`TA1` Interchange Acknowledgment](https://www.stedi.com/edi/x12/segment/TA1).
- **`items[].x12.metadata.interchange.controlNumber`** (`number`) (required): The control number in the Interchange Control Header.
- **`items[].x12.metadata.functionalGroup`** (`object`) (required): Data from the Functional Group Header of the X12 EDI file.
- **`items[].x12.metadata.functionalGroup.controlNumber`** (`number`) (required): The Group Control Number ([`GS06`](https://www.stedi.com/edi/x12/segment/GS#GS-06)).
- **`items[].x12.metadata.functionalGroup.date`** (`string`) (required): The date in the Functional Group Header ([`GS04`](https://www.stedi.com/edi/x12/segment/GS#GS-04)), formatted as `YYYY-MM-DD`. For example, `2023-08-28`.
- **`items[].x12.metadata.functionalGroup.functionalIdentifierCode`** (`string`) (required): The Functional Identifier Code ([`GS01`](https://www.stedi.com/edi/x12/segment/GS#GS-01)), which indicates the type of transaction. For example, `HC` for an 837 Healthcare Claim.
- **`items[].x12.metadata.functionalGroup.time`** (`string`) (required): The Time ([`GS05`](https://www.stedi.com/edi/x12/segment/GS#GS-05)), formatted as `HH:MM:SS`. For example, `21:29:57`.
- **`items[].x12.metadata.functionalGroup.release`** (`string`) (required): The Version/Release/Industry Identifier Code ([`GS08`](https://www.stedi.com/edi/x12/segment/GS#GS-08)), which indicates the version of the X12 standard used. For example, `005010X222A1`.
- **`items[].x12.metadata.transaction`** (`object`) (required): Data from the Transaction Set Header of the X12 EDI file.
- **`items[].x12.metadata.transaction.controlNumber`** (`string`) (required): The Transaction Set Control Number ([`ST02`](https://www.stedi.com/edi/x12/segment/ST#ST-02)).
- **`items[].x12.metadata.transaction.transactionSetIdentifier`** (`string`) (required): The Transaction Set Identifier Code ([`ST01`](https://www.stedi.com/edi/x12/segment/ST#ST-01)), which indicates the type of transaction. For example, `837` for an 837 Healthcare Claim.
- **`items[].x12.metadata.sender`** (`object`) (required): The Application Code and ISA ID for the profile.
- **`items[].x12.metadata.sender.applicationCode`** (`string`) (required): The Application Code for the profile, which is used to identify the entity in the `GS` header of an EDI file.
- **`items[].x12.metadata.sender.isa`** (`object`) (required): The Interchange ID and qualifier.
- **`items[].x12.metadata.sender.isa.qualifier`** (`string`) (required): The Interchange Sender ID Qualifier, which indicates the type of identifier. For example, `ZZ` for a mutually defined identifier.
- **`items[].x12.metadata.sender.isa.id`** (`string`) (required): The Interchange ID, which is the unique identifier for the entity in the EDI file.
- **`items[].x12.metadata.receiver`** (`object`) (required): The Application Code and ISA ID for the profile.
- **`items[].x12.metadata.receiver.applicationCode`** (`string`) (required): The Application Code for the profile, which is used to identify the entity in the `GS` header of an EDI file.
- **`items[].x12.metadata.receiver.isa`** (`object`) (required): The Interchange ID and qualifier.
- **`items[].x12.metadata.receiver.isa.qualifier`** (`string`) (required): The Interchange Sender ID Qualifier, which indicates the type of identifier. For example, `ZZ` for a mutually defined identifier.
- **`items[].x12.metadata.receiver.isa.id`** (`string`) (required): The Interchange ID, which is the unique identifier for the entity in the EDI file.
- **`items[].x12.transactionSetting`** (`object`): The IDs for the guide and transaction setting Stedi used to process the transaction.
- **`items[].x12.transactionSetting.guideId`** (`string`): The unique identifier for the Stedi guide used to process the transaction.

Stedi guides are machine-readable specifications for X12 EDI transactions. They describe how to structure and validate EDI files for each transaction type.
- **`items[].x12.transactionSetting.transactionSettingId`** (`string`): The unique identifier for the transaction setting Stedi used to process the transaction.

Transaction settings configure how Stedi processes specific transaction types, such as which Stedi guide to use and other processing options. If you're using the Stedi clearinghouse, Stedi automatically configures the required transaction settings for you when you set up your account.
- **`items[].fragments`** (`object`): Details about fragments included in the transaction, if applicable. Fragments break large transactions into smaller parts for easier processing and management.
- **`items[].fragments.keyName`** (`string`) (required): The JSON schema key name for the segment in the Stedi guide used to split the transaction into fragments. For example, in an 834 Health Care Benefit Enrollment and Maintenance, this would be `member_level_detail_INS_loop`.
- **`items[].fragments.fragmentCount`** (`number`) (required): The total number of fragments in the transaction.
- **`items[].fragments.batchSize`** (`number`) (required): The maximum size of each fragment in kilobytes (KB). Stedi uses this to automatically split large inbound transactions into fragments.
- **`items[].translationErrors`** (`array of TranslationError objects`): Details about errors that prevented Stedi from processing the transaction.
- **`items[].translationErrors[].context`** (`object`)
- **`items[].translationErrors[].context.code`** (`string`): The error code.
- **`items[].translationErrors[].context.schemaPath`** (`string`): The name of the JSON property where the error occurred.
- **`items[].translationErrors[].mark`** (`object`): The location in the document where the problem occurred. May be a single index or a range.
- **`items[].translationErrors[].mark.start`** (`object`) (required)
- **`items[].translationErrors[].mark.start.line`** (`number`) (required): The line number in the document where the problem occurred.
- **`items[].translationErrors[].mark.start.column`** (`number`) (required): The column number in the document where the problem occurred.
- **`items[].translationErrors[].mark.end`** (`object`)
- **`items[].translationErrors[].mark.end.line`** (`number`) (required): The line number in the document where the problem occurred.
- **`items[].translationErrors[].mark.end.column`** (`number`) (required): The column number in the document where the problem occurred.
- **`items[].translationErrors[].message`** (`string`) (required): A message describing the error that occurred during translation.
- **`items[].businessIdentifiers`** (`array of BusinessIdentifier objects`): Any business identifiers extracted from the transaction.
- **`items[].businessIdentifiers[].elementId`** (`string`) (required): The identifier of the element containing the business identifier in the EDI specification.
- **`items[].businessIdentifiers[].element`** (`string`) (required): The element where the business identifier was found. For example, `BHT03` for 837 claims.
- **`items[].businessIdentifiers[].name`** (`string`) (required): The friendly name of the business identifier. For example, `Originator Application Transaction Identifier`.
- **`items[].businessIdentifiers[].value`** (`string`) (required): The value of the business identifier.

**Example:**

```json
{
  "items": [
    {
      "direction": "INBOUND",
      "mode": "test",
      "status": "succeeded",
      "fileExecutionId": "95236a56-a020-4522-8fef-bcffcec0ec1d",
      "transactionId": "c8dd3a67-b8ca-4b0e-aa73-e0de82414b8f",
      "processedAt": "2025-04-02T21:30:15.801Z",
      "artifacts": [
        {
          "artifactType": "application/edi-x12",
          "sizeBytes": 8374,
          "model": "transaction",
          "usage": "input",
          "url": "https://core.us.stedi.com/2023-08-01/transactions/112233344-b8ca-4h1e-aa73-123482414b8f/input"
        },
        {
          "artifactType": "application/json",
          "sizeBytes": 76898,
          "model": "transaction",
          "usage": "output",
          "url": "https://core.us.stedi.com/2023-08-01/transactions/1115555-b8ca-1234-aa73-e0je82414hb8f/output"
        }
      ],
      "partnership": {
        "partnershipId": "stedi_test-sender",
        "partnershipType": "x12",
        "sender": {
          "profileId": "test-sender"
        },
        "receiver": {
          "profileId": "stedi"
        }
      },
      "businessIdentifiers": [
        {
          "elementId": "127",
          "element": "BHT-03",
          "name": "Reference Identification",
          "value": "XXXXXX"
        }
      ],
      "x12": {
        "metadata": {
          "interchange": {
            "acknowledgmentRequestedCode": "0",
            "controlNumber": 1
          },
          "functionalGroup": {
            "controlNumber": 1,
            "release": "005010X222A1",
            "date": "2025-04-02",
            "time": "21:29:57",
            "functionalIdentifierCode": "HC"
          },
          "transaction": {
            "controlNumber": "0001",
            "transactionSetIdentifier": "837"
          },
          "receiver": {
            "applicationCode": "STEDI-TEST",
            "isa": {
              "qualifier": "ZZ",
              "id": "STEDI-TEST"
            }
          },
          "sender": {
            "applicationCode": "TestSender",
            "isa": {
              "qualifier": "ZZ",
              "id": "TestSender"
            }
          }
        },
        "transactionSetting": {
          "guideId": "01JQW6E5RSBSTKS3ZQ1SPR4019",
          "transactionSettingId": "01JQW6E72Q3HDXM40YYAQCBZDY"
        }
      }
    }
  ],
  "nextPageToken": "be08e5ba4bf36da9da27dcb651e64a6e5502685499994f354"
}
```

#### 400

BadRequestException 400 response

**Schema:** `BadRequestExceptionResponseContent`

**Properties:**

- **`message`** (`string`) (required)
- **`code`** (`string`)
#### 401

UnauthorizedException 401 response

**Schema:** `UnauthorizedExceptionResponseContent`

**Properties:**

- **`message`** (`string`) (required)
- **`code`** (`string`)
#### 403

AccessDeniedException 403 response

**Schema:** `AccessDeniedExceptionResponseContent`

**Properties:**

- **`message`** (`string`) (required)
- **`code`** (`string`)
#### 404

ResourceNotFoundException 404 response

**Schema:** `ResourceNotFoundExceptionResponseContent`

**Properties:**

- **`message`** (`string`) (required)
- **`code`** (`string`)
#### 409

ResourceUnderChangeException 409 response

**Schema:** `ResourceUnderChangeExceptionResponseContent`

**Properties:**

- **`message`** (`string`) (required)
#### 422

UnprocessableEntityException 422 response

**Schema:** `UnprocessableEntityExceptionResponseContent`

**Properties:**

- **`message`** (`string`) (required)
- **`code`** (`string`)
#### 429

ThrottlingException 429 response

**Schema:** `ThrottlingExceptionResponseContent`

**Properties:**

- **`message`** (`string`) (required)
- **`code`** (`string`)
#### 500

ServiceException 500 response

**Schema:** `ServiceExceptionResponseContent`

**Properties:**

- **`message`** (`string`) (required)
- **`exceptionCause`** (`object`)
- **`exceptionCause.name`** (`string`)
- **`exceptionCause.message`** (`string`)
- **`exceptionCause.stack`** (`string`)
#### 503

ServiceUnavailableException 503 response

**Schema:** `ServiceUnavailableExceptionResponseContent`

**Properties:**

- **`message`** (`string`) (required)
- **`code`** (`string`)
#### 504

GatewayTimeoutException 504 response

**Schema:** `GatewayTimeoutExceptionResponseContent`

**Properties:**

- **`message`** (`string`) (required)
- **`code`** (`string`)


# Retrieve Payer
Source: https://www.stedi.com/docs/healthcare/api-reference/get-payer


You can use this endpoint to retrieve a specific payer record with the Stedi payer ID (`stediId`). You can find the Stedi payer ID for any supported payer in the [Payer Network](https://www.stedi.com/healthcare/network). Note that you must supply the Stedi payer ID - this endpoint doesn't support querying with the primary payer ID or payer ID aliases.

The payer record includes the payer's names, aliases, and supported use cases (medical, dental, or vision). It also contains supported transaction types and specifies whether [transaction enrollment](/healthcare/transaction-enrollment) is required.

## API Specification

Retrieve a single payer record by its Stedi payer ID.

**Endpoint:** `GET /payer/{stediId}`

**Base URL:** `https://payers.us.stedi.com/2024-04-01`

### Parameters

- **`stediId`** (path) (required): The Stedi payer ID, a unique identifier Stedi assigns to each payer that will never change. You can find the Stedi payer ID for any supported payer in the [Payer Network](https://www.stedi.com/healthcare/network).

This must be the Stedi payer ID - querying with the primary payer ID or payer ID aliases isn't supported.
  - Type: `string`

### Responses

#### 200

GetPayerRecord 200 response

**Schema:** `GetPayerRecordResponseContent`

**Properties:**

- **`payer`** (`object`) (required)
- **`payer.aliases`** (`array of strings`) (required): Alternative IDs associated with a payer. If a payer changes their `primaryPayerId`, aliases allow you to continue sending transactions to the payer using the old ID uninterrupted.
- **`payer.avatarUrl`** (`string`): A URL pointing to an image file (`.png`, `.jpeg`, or `.jpg`) with the payer's logo. This is the same logo Stedi displays in the [Payer Network](https://www.stedi.com/healthcare/network). You can use this property to display payer logos in your system or application.

This property is only returned when a payer logo is available.
- **`payer.conciseName`** (`string`): A shorter version of the payer's display name for use in dense UI views. This property is only returned when a concise name is available for the payer.
- **`payer.coverageTypes`** (`array of strings`): A list of insurance coverage types that indicates whether this payer supports transactions for medical coverage, dental coverage, vision coverage, or a combination of these. For example: `["medical"]` or `["medical", "dental", "vision"]`.

When this array isn't in the response, it means Stedi hasn't classified the payer's coverage types yet, **not** that the payer doesn't support any coverage types.
- **`payer.displayName`** (`string`) (required): The payer's business name, such as Cigna or Aetna. This is the name most commonly used to identify the payer.
- **`payer.employerIdentificationNumbers`** (`array of strings`): Employer Identification Numbers (EINs) associated with this payer.
- **`payer.enrollment`** (`object`): Information about enrollment requirements for the payer
- **`payer.enrollment.ptanRequired`** (`boolean`): Whether a PTAN (Provider Transaction Access Number) is required for transaction enrollment.

The Provider Transaction Access Number (PTAN) is a Medicare-issued number given to providers upon enrollment with Medicare. This number is usually six digits and is assigned based on the type of service and the location of the provider. Upon enrollment, Medicare Administrating Contracting (MAC) providers should receive their assigned PTAN number in their approval letter.
- **`payer.enrollment.transactionEnrollmentProcesses`** (`object`): Information about the transaction enrollment requirements and expected timeframes for each transaction type.
- **`payer.enrollment.transactionEnrollmentProcesses.claimPayment`** (`object`): Details about the enrollment process for Electronic Remittance Advice (ERAs).
- **`payer.enrollment.transactionEnrollmentProcesses.claimPayment.requestedEffectiveDate`** (`string`): Whether a payer supports specifying a requested effective date for transaction enrollments.
  - Allowed values: `SUPPORTED`, `NOT_SUPPORTED`
- **`payer.enrollment.transactionEnrollmentProcesses.claimPayment.supportedAggregationPreferences`** (`array of strings`): Aggregation types this payer supports for 835 Electronic Remittance Advice (ERA) transactions. Payers can aggregate by the provider's NPI, tax ID (TIN), or both.
  - You can use this information to specify an `aggregationPreference` when submitting ERA enrollment requests.
  - This property is only returned when Stedi can determine the payer's supported aggregation types.
- **`payer.enrollment.transactionEnrollmentProcesses.claimPayment.timeframe`** (`string`): Stedi's expected timeframe for completing the transaction enrollment process. `INSTANT` indicates that the enrollment will be in `LIVE` status within minutes of submitting the request.
  - Allowed values: `INSTANT`, `HOURS`, `DAYS`, `WEEKS`, `OVER_4_WEEKS`
- **`payer.enrollment.transactionEnrollmentProcesses.claimPayment.type`** (`string`): Whether transaction enrollment is single or multi-step.
  - `ONE_CLICK` indicates that once you submit the transaction enrollment request, Stedi can complete the rest of the enrollment process without any further action from you.
  - `MULTI_STEP` indicates that you must complete additional steps to finish the enrollment process. Customer support will reach out with clear instructions explaining how to complete any remaining steps.
  - Allowed values: `ONE_CLICK`, `MULTI_STEP`
- **`payer.enrollment.transactionEnrollmentProcesses.claimStatusInquiry`** (`object`): Details about the enrollment process for real-time claim status requests.
- **`payer.enrollment.transactionEnrollmentProcesses.claimStatusInquiry.requestedEffectiveDate`** (`string`): Whether a payer supports specifying a requested effective date for transaction enrollments.
  - Allowed values: `SUPPORTED`, `NOT_SUPPORTED`
- **`payer.enrollment.transactionEnrollmentProcesses.claimStatusInquiry.timeframe`** (`string`): Stedi's expected timeframe for completing the transaction enrollment process. `INSTANT` indicates that the enrollment will be in `LIVE` status within minutes of submitting the request.
  - Allowed values: `INSTANT`, `HOURS`, `DAYS`, `WEEKS`, `OVER_4_WEEKS`
- **`payer.enrollment.transactionEnrollmentProcesses.claimStatusInquiry.type`** (`string`): Whether transaction enrollment is single or multi-step.
  - `ONE_CLICK` indicates that once you submit the transaction enrollment request, Stedi can complete the rest of the enrollment process without any further action from you.
  - `MULTI_STEP` indicates that you must complete additional steps to finish the enrollment process. Customer support will reach out with clear instructions explaining how to complete any remaining steps.
  - Allowed values: `ONE_CLICK`, `MULTI_STEP`
- **`payer.enrollment.transactionEnrollmentProcesses.coordinationOfBenefits`** (`object`): Details about the enrollment process for coordination of benefits (COB) checks.
- **`payer.enrollment.transactionEnrollmentProcesses.coordinationOfBenefits.requestedEffectiveDate`** (`string`): Whether a payer supports specifying a requested effective date for transaction enrollments.
  - Allowed values: `SUPPORTED`, `NOT_SUPPORTED`
- **`payer.enrollment.transactionEnrollmentProcesses.coordinationOfBenefits.timeframe`** (`string`): Stedi's expected timeframe for completing the transaction enrollment process. `INSTANT` indicates that the enrollment will be in `LIVE` status within minutes of submitting the request.
  - Allowed values: `INSTANT`, `HOURS`, `DAYS`, `WEEKS`, `OVER_4_WEEKS`
- **`payer.enrollment.transactionEnrollmentProcesses.coordinationOfBenefits.type`** (`string`): Whether transaction enrollment is single or multi-step.
  - `ONE_CLICK` indicates that once you submit the transaction enrollment request, Stedi can complete the rest of the enrollment process without any further action from you.
  - `MULTI_STEP` indicates that you must complete additional steps to finish the enrollment process. Customer support will reach out with clear instructions explaining how to complete any remaining steps.
  - Allowed values: `ONE_CLICK`, `MULTI_STEP`
- **`payer.enrollment.transactionEnrollmentProcesses.dentalClaim`** (`object`): Details about the enrollment process for dental claim submission.
- **`payer.enrollment.transactionEnrollmentProcesses.dentalClaim.requestedEffectiveDate`** (`string`): Whether a payer supports specifying a requested effective date for transaction enrollments.
  - Allowed values: `SUPPORTED`, `NOT_SUPPORTED`
- **`payer.enrollment.transactionEnrollmentProcesses.dentalClaim.timeframe`** (`string`): Stedi's expected timeframe for completing the transaction enrollment process. `INSTANT` indicates that the enrollment will be in `LIVE` status within minutes of submitting the request.
  - Allowed values: `INSTANT`, `HOURS`, `DAYS`, `WEEKS`, `OVER_4_WEEKS`
- **`payer.enrollment.transactionEnrollmentProcesses.dentalClaim.type`** (`string`): Whether transaction enrollment is single or multi-step.
  - `ONE_CLICK` indicates that once you submit the transaction enrollment request, Stedi can complete the rest of the enrollment process without any further action from you.
  - `MULTI_STEP` indicates that you must complete additional steps to finish the enrollment process. Customer support will reach out with clear instructions explaining how to complete any remaining steps.
  - Allowed values: `ONE_CLICK`, `MULTI_STEP`
- **`payer.enrollment.transactionEnrollmentProcesses.eligibilityInquiry`** (`object`): Details about the enrollment process for eligibility checks.
- **`payer.enrollment.transactionEnrollmentProcesses.eligibilityInquiry.requestedEffectiveDate`** (`string`): Whether a payer supports specifying a requested effective date for transaction enrollments.
  - Allowed values: `SUPPORTED`, `NOT_SUPPORTED`
- **`payer.enrollment.transactionEnrollmentProcesses.eligibilityInquiry.timeframe`** (`string`): Stedi's expected timeframe for completing the transaction enrollment process. `INSTANT` indicates that the enrollment will be in `LIVE` status within minutes of submitting the request.
  - Allowed values: `INSTANT`, `HOURS`, `DAYS`, `WEEKS`, `OVER_4_WEEKS`
- **`payer.enrollment.transactionEnrollmentProcesses.eligibilityInquiry.type`** (`string`): Whether transaction enrollment is single or multi-step.
  - `ONE_CLICK` indicates that once you submit the transaction enrollment request, Stedi can complete the rest of the enrollment process without any further action from you.
  - `MULTI_STEP` indicates that you must complete additional steps to finish the enrollment process. Customer support will reach out with clear instructions explaining how to complete any remaining steps.
  - Allowed values: `ONE_CLICK`, `MULTI_STEP`
- **`payer.enrollment.transactionEnrollmentProcesses.institutionalClaim`** (`object`): Details about the enrollment process for institutional claim submission.
- **`payer.enrollment.transactionEnrollmentProcesses.institutionalClaim.requestedEffectiveDate`** (`string`): Whether a payer supports specifying a requested effective date for transaction enrollments.
  - Allowed values: `SUPPORTED`, `NOT_SUPPORTED`
- **`payer.enrollment.transactionEnrollmentProcesses.institutionalClaim.timeframe`** (`string`): Stedi's expected timeframe for completing the transaction enrollment process. `INSTANT` indicates that the enrollment will be in `LIVE` status within minutes of submitting the request.
  - Allowed values: `INSTANT`, `HOURS`, `DAYS`, `WEEKS`, `OVER_4_WEEKS`
- **`payer.enrollment.transactionEnrollmentProcesses.institutionalClaim.type`** (`string`): Whether transaction enrollment is single or multi-step.
  - `ONE_CLICK` indicates that once you submit the transaction enrollment request, Stedi can complete the rest of the enrollment process without any further action from you.
  - `MULTI_STEP` indicates that you must complete additional steps to finish the enrollment process. Customer support will reach out with clear instructions explaining how to complete any remaining steps.
  - Allowed values: `ONE_CLICK`, `MULTI_STEP`
- **`payer.enrollment.transactionEnrollmentProcesses.professionalClaim`** (`object`): Details about the enrollment process for professional claim submission.
- **`payer.enrollment.transactionEnrollmentProcesses.professionalClaim.requestedEffectiveDate`** (`string`): Whether a payer supports specifying a requested effective date for transaction enrollments.
  - Allowed values: `SUPPORTED`, `NOT_SUPPORTED`
- **`payer.enrollment.transactionEnrollmentProcesses.professionalClaim.timeframe`** (`string`): Stedi's expected timeframe for completing the transaction enrollment process. `INSTANT` indicates that the enrollment will be in `LIVE` status within minutes of submitting the request.
  - Allowed values: `INSTANT`, `HOURS`, `DAYS`, `WEEKS`, `OVER_4_WEEKS`
- **`payer.enrollment.transactionEnrollmentProcesses.professionalClaim.type`** (`string`): Whether transaction enrollment is single or multi-step.
  - `ONE_CLICK` indicates that once you submit the transaction enrollment request, Stedi can complete the rest of the enrollment process without any further action from you.
  - `MULTI_STEP` indicates that you must complete additional steps to finish the enrollment process. Customer support will reach out with clear instructions explaining how to complete any remaining steps.
  - Allowed values: `ONE_CLICK`, `MULTI_STEP`
- **`payer.enrollment.transactionEnrollmentProcesses.unsolicitedClaimAttachment`** (`object`): Details about the enrollment process for unsolicited claim attachments.
- **`payer.enrollment.transactionEnrollmentProcesses.unsolicitedClaimAttachment.requestedEffectiveDate`** (`string`): Whether a payer supports specifying a requested effective date for transaction enrollments.
  - Allowed values: `SUPPORTED`, `NOT_SUPPORTED`
- **`payer.enrollment.transactionEnrollmentProcesses.unsolicitedClaimAttachment.timeframe`** (`string`): Stedi's expected timeframe for completing the transaction enrollment process. `INSTANT` indicates that the enrollment will be in `LIVE` status within minutes of submitting the request.
  - Allowed values: `INSTANT`, `HOURS`, `DAYS`, `WEEKS`, `OVER_4_WEEKS`
- **`payer.enrollment.transactionEnrollmentProcesses.unsolicitedClaimAttachment.type`** (`string`): Whether transaction enrollment is single or multi-step.
  - `ONE_CLICK` indicates that once you submit the transaction enrollment request, Stedi can complete the rest of the enrollment process without any further action from you.
  - `MULTI_STEP` indicates that you must complete additional steps to finish the enrollment process. Customer support will reach out with clear instructions explaining how to complete any remaining steps.
  - Allowed values: `ONE_CLICK`, `MULTI_STEP`
- **`payer.names`** (`array of strings`) (required): Alternative names associated with a payer. These additional names help you search for and identify payers using the name most familiar to your organization.
- **`payer.operatingStates`** (`array of strings`): A list of US state codes, territories, or `NATIONAL` that indicates the geographic regions where this payer operates. For example: `["CA", "OR"]` for a regional payer, or `["NATIONAL"]` for a payer that operates in all 50 U.S. states. Supported territories are listed separately.

When this array isn't in the response, it means Stedi hasn't classified the payer's operating states yet.
- **`payer.parentPayerGroupId`** (`string`): The identifier for the corporate or brand group to which the payer belongs. The parent payer group is organizational metadata only – it doesn't affect routing, enrollment, or transaction support. Payers sharing a parent payer group may have different enrollment processes or other behaviors. This property is only returned when the payer has a parent payer group.
- **`payer.parentPayerGroupName`** (`string`): The name of the corporate or brand group to which the payer belongs. The parent payer group is organizational metadata only – it doesn't affect routing, enrollment, or transaction support. Payers sharing a parent payer group may have different enrollment processes or other behaviors. This property is only returned when the payer has a parent payer group.
- **`payer.primaryPayerId`** (`string`) (required): The most commonly used ID for a payer. This value often corresponds to the name the payer uses internally and provides to patients on member ID cards.
- **`payer.programs`** (`array of strings`) (required): A list of insurance programs that this payer participates in. For example: `["MEDICAID", "MEDICARE"]`. If Stedi hasn't assigned any programs to this payer, this array is empty.
- **`payer.stediId`** (`string`) (required): A unique ID that Stedi assigned to this payer and uses internally for routing requests. This ID will not change even if the `primaryPayerId` is updated.
- **`payer.transactionSupport`** (`object`) (required): Whether the following transaction types are supported: 270 eligibility checks, 276/277 claim status requests, 837 claims (professional, dental, institutional), 835 ERAs (claim payments), 275 unsolicited claim attachments, and coordination of benefits checks.


If the value is `ENROLLMENT_REQUIRED`, Stedi supports the transaction type, but you must [enroll with the payer](https://www.stedi.com/docs/healthcare/supported-payers#enrollment) first.
- **`payer.transactionSupport.claimPayment`** (`string`) (required)
  - Allowed values: `SUPPORTED`, `NOT_SUPPORTED`, `ENROLLMENT_REQUIRED`
- **`payer.transactionSupport.claimStatus`** (`string`) (required)
  - Allowed values: `SUPPORTED`, `NOT_SUPPORTED`, `ENROLLMENT_REQUIRED`
- **`payer.transactionSupport.claimSubmission`** (`string`) (required)
  - Allowed values: `SUPPORTED`, `NOT_SUPPORTED`, `ENROLLMENT_REQUIRED`
- **`payer.transactionSupport.coordinationOfBenefits`** (`string`) (required)
  - Allowed values: `SUPPORTED`, `NOT_SUPPORTED`, `ENROLLMENT_REQUIRED`
- **`payer.transactionSupport.dentalClaimSubmission`** (`string`) (required)
  - Allowed values: `SUPPORTED`, `NOT_SUPPORTED`, `ENROLLMENT_REQUIRED`
- **`payer.transactionSupport.eligibilityCheck`** (`string`) (required)
  - Allowed values: `SUPPORTED`, `NOT_SUPPORTED`, `ENROLLMENT_REQUIRED`
- **`payer.transactionSupport.institutionalClaimSubmission`** (`string`) (required)
  - Allowed values: `SUPPORTED`, `NOT_SUPPORTED`, `ENROLLMENT_REQUIRED`
- **`payer.transactionSupport.professionalClaimSubmission`** (`string`) (required)
  - Allowed values: `SUPPORTED`, `NOT_SUPPORTED`, `ENROLLMENT_REQUIRED`
- **`payer.transactionSupport.unsolicitedClaimAttachment`** (`string`) (required)
  - Allowed values: `SUPPORTED`, `NOT_SUPPORTED`, `ENROLLMENT_REQUIRED`
- **`payer.urls`** (`object`): URLs associated with a payer.
- **`payer.urls.website`** (`string`): The payer's website URL.

**Example:**

```json
{
  "payer": {
    "aliases": [
      "00420",
      "13123",
      "1584",
      "4714",
      "95655",
      "MEDGL",
      "MEDGLD",
      "MEDIGOLD"
    ],
    "avatarUrl": "https://prod-payer-avatars.payers.us.stedi.com/YKHRB/avatar.png?v=1766600157693",
    "coverageTypes": [
      "dental",
      "medical"
    ],
    "displayName": "Trinity Health Plan",
    "enrollment": {
      "ptanRequired": false,
      "transactionEnrollmentProcesses": {
        "claimPayment": {
          "requestedEffectiveDate": "NOT_SUPPORTED",
          "supportedAggregationPreferences": [
            "NPI",
            "TIN"
          ],
          "timeframe": "DAYS",
          "type": "ONE_CLICK"
        }
      }
    },
    "names": [
      "MediGold",
      "Medigold Health Plans",
      "Mount Carmel Health Plan",
      "Mount Carmel MediGold",
      "Trinity Health Plan of Michigan"
    ],
    "operatingStates": [
      "ID",
      "IA",
      "MI",
      "NY",
      "OH"
    ],
    "parentPayerGroupId": "GTRSH",
    "parentPayerGroupName": "Trinity Health",
    "primaryPayerId": "95655",
    "programs": [
      "MEDICARE"
    ],
    "stediId": "YKHRB",
    "transactionSupport": {
      "claimPayment": "ENROLLMENT_REQUIRED",
      "claimStatus": "SUPPORTED",
      "claimSubmission": "SUPPORTED",
      "coordinationOfBenefits": "NOT_SUPPORTED",
      "dentalClaimSubmission": "NOT_SUPPORTED",
      "eligibilityCheck": "SUPPORTED",
      "institutionalClaimSubmission": "SUPPORTED",
      "professionalClaimSubmission": "SUPPORTED",
      "unsolicitedClaimAttachment": "NOT_SUPPORTED"
    },
    "urls": {
      "website": "https://www.thpmedicare.org"
    }
  }
}
```

#### 400

ValidationException 400 response

**Schema:** `ValidationExceptionResponseContent`

**Properties:**

- **`fieldList`** (`array of ValidationExceptionField objects`): A list of specific failures encountered while validating the input.
A member can appear in this list more than once if it failed to satisfy multiple constraints.
- **`fieldList[].message`** (`string`) (required): A detailed description of the validation failure.
- **`fieldList[].path`** (`string`) (required): A JSONPointer expression to the structure member whose value failed to satisfy the modeled constraints.
- **`message`** (`string`) (required): A summary of the validation failure.
#### 401

UnauthorizedException 401 response

**Schema:** `UnauthorizedExceptionResponseContent`

**Properties:**

- **`code`** (`string`): Error classification code
- **`message`** (`string`) (required): Human-readable error message
#### 404

ResourceNotFoundException 404 response

**Schema:** `ResourceNotFoundExceptionResponseContent`

**Properties:**

- **`code`** (`string`): Error classification code
- **`message`** (`string`) (required): Human-readable error message
#### 500

InternalFailureException 500 response

**Schema:** `InternalFailureExceptionResponseContent`

**Properties:**

- **`code`** (`string`): Error classification code
- **`message`** (`string`) (required): Human-readable error message


# List Payers CSV
Source: https://www.stedi.com/docs/healthcare/api-reference/get-payers-csv


You can use this endpoint to retrieve Payer IDs, determine which transactions each payer supports, and check whether [transaction enrollment](/healthcare/transaction-enrollment) is required for the transaction types you plan to send and receive.

You can also find a searchable list of payers in the [Payer Network](https://www.stedi.com/healthcare/network).

## API Specification

List Stedi's supported payers in CSV format

**Endpoint:** `GET /payers/csv`

**Base URL:** `https://payers.us.stedi.com/2024-04-01`

### Responses

#### 200

ListPayerRecordsCsv 200 response

#### 400

ValidationException 400 response

**Schema:** `ValidationExceptionResponseContent`

**Properties:**

- **`fieldList`** (`array of ValidationExceptionField objects`): A list of specific failures encountered while validating the input.
A member can appear in this list more than once if it failed to satisfy multiple constraints.
- **`fieldList[].message`** (`string`) (required): A detailed description of the validation failure.
- **`fieldList[].path`** (`string`) (required): A JSONPointer expression to the structure member whose value failed to satisfy the modeled constraints.
- **`message`** (`string`) (required): A summary of the validation failure.
#### 404

ResourceNotFoundException 404 response

**Schema:** `ResourceNotFoundExceptionResponseContent`

**Properties:**

- **`code`** (`string`): Error classification code
- **`message`** (`string`) (required): Human-readable error message
#### 500

InternalFailureException 500 response

**Schema:** `InternalFailureExceptionResponseContent`

**Properties:**

- **`code`** (`string`): Error classification code
- **`message`** (`string`) (required): Human-readable error message


# List Payers JSON
Source: https://www.stedi.com/docs/healthcare/api-reference/get-payers


You can use this endpoint to retrieve Payer IDs, determine which transactions each payer supports, and check whether [transaction enrollment](/healthcare/transaction-enrollment) is required for the transaction types you plan to send and receive.

You can also find a searchable list of payers in the [Payer Network](https://www.stedi.com/healthcare/network).

## API Specification

List Stedi's supported payers in JSON format

**Endpoint:** `GET /payers`

**Base URL:** `https://payers.us.stedi.com/2024-04-01`

### Parameters

- **`pageSize`** (query): The maximum number of elements to return per page. If not set, Stedi returns all payers in a single response (no pagination).
  - Type: `integer`
- **`pageToken`** (query): The `nextPageToken` value from a previous response. You can use this to get the next page of results. If not set, Stedi returns the first page of results.
  - Type: `string`

### Responses

#### 200

ListPayerRecords 200 response

**Schema:** `ListPayerRecordsResponseContent`

**Properties:**

- **`items`** (`array of PayerRecord objects`) (required): Payers that Stedi supports for each transaction type. Results are returned in alphabetical order of the Stedi ID.
- **`items[].aliases`** (`array of strings`) (required): Alternative IDs associated with a payer. If a payer changes their `primaryPayerId`, aliases allow you to continue sending transactions to the payer using the old ID uninterrupted.
- **`items[].avatarUrl`** (`string`): A URL pointing to an image file (`.png`, `.jpeg`, or `.jpg`) with the payer's logo. This is the same logo Stedi displays in the [Payer Network](https://www.stedi.com/healthcare/network). You can use this property to display payer logos in your system or application.

This property is only returned when a payer logo is available.
- **`items[].conciseName`** (`string`): A shorter version of the payer's display name for use in dense UI views. This property is only returned when a concise name is available for the payer.
- **`items[].coverageTypes`** (`array of strings`): A list of insurance coverage types that indicates whether this payer supports transactions for medical coverage, dental coverage, vision coverage, or a combination of these. For example: `["medical"]` or `["medical", "dental", "vision"]`.

When this array isn't in the response, it means Stedi hasn't classified the payer's coverage types yet, **not** that the payer doesn't support any coverage types.
- **`items[].displayName`** (`string`) (required): The payer's business name, such as Cigna or Aetna. This is the name most commonly used to identify the payer.
- **`items[].employerIdentificationNumbers`** (`array of strings`): Employer Identification Numbers (EINs) associated with this payer.
- **`items[].enrollment`** (`object`): Information about enrollment requirements for the payer
- **`items[].enrollment.ptanRequired`** (`boolean`): Whether a PTAN (Provider Transaction Access Number) is required for transaction enrollment.

The Provider Transaction Access Number (PTAN) is a Medicare-issued number given to providers upon enrollment with Medicare. This number is usually six digits and is assigned based on the type of service and the location of the provider. Upon enrollment, Medicare Administrating Contracting (MAC) providers should receive their assigned PTAN number in their approval letter.
- **`items[].enrollment.transactionEnrollmentProcesses`** (`object`): Information about the transaction enrollment requirements and expected timeframes for each transaction type.
- **`items[].enrollment.transactionEnrollmentProcesses.claimPayment`** (`object`): Details about the enrollment process for Electronic Remittance Advice (ERAs).
- **`items[].enrollment.transactionEnrollmentProcesses.claimPayment.requestedEffectiveDate`** (`string`): Whether a payer supports specifying a requested effective date for transaction enrollments.
  - Allowed values: `SUPPORTED`, `NOT_SUPPORTED`
- **`items[].enrollment.transactionEnrollmentProcesses.claimPayment.supportedAggregationPreferences`** (`array of strings`): Aggregation types this payer supports for 835 Electronic Remittance Advice (ERA) transactions. Payers can aggregate by the provider's NPI, tax ID (TIN), or both.
  - You can use this information to specify an `aggregationPreference` when submitting ERA enrollment requests.
  - This property is only returned when Stedi can determine the payer's supported aggregation types.
- **`items[].enrollment.transactionEnrollmentProcesses.claimPayment.timeframe`** (`string`): Stedi's expected timeframe for completing the transaction enrollment process. `INSTANT` indicates that the enrollment will be in `LIVE` status within minutes of submitting the request.
  - Allowed values: `INSTANT`, `HOURS`, `DAYS`, `WEEKS`, `OVER_4_WEEKS`
- **`items[].enrollment.transactionEnrollmentProcesses.claimPayment.type`** (`string`): Whether transaction enrollment is single or multi-step.
  - `ONE_CLICK` indicates that once you submit the transaction enrollment request, Stedi can complete the rest of the enrollment process without any further action from you.
  - `MULTI_STEP` indicates that you must complete additional steps to finish the enrollment process. Customer support will reach out with clear instructions explaining how to complete any remaining steps.
  - Allowed values: `ONE_CLICK`, `MULTI_STEP`
- **`items[].enrollment.transactionEnrollmentProcesses.claimStatusInquiry`** (`object`): Details about the enrollment process for real-time claim status requests.
- **`items[].enrollment.transactionEnrollmentProcesses.claimStatusInquiry.requestedEffectiveDate`** (`string`): Whether a payer supports specifying a requested effective date for transaction enrollments.
  - Allowed values: `SUPPORTED`, `NOT_SUPPORTED`
- **`items[].enrollment.transactionEnrollmentProcesses.claimStatusInquiry.timeframe`** (`string`): Stedi's expected timeframe for completing the transaction enrollment process. `INSTANT` indicates that the enrollment will be in `LIVE` status within minutes of submitting the request.
  - Allowed values: `INSTANT`, `HOURS`, `DAYS`, `WEEKS`, `OVER_4_WEEKS`
- **`items[].enrollment.transactionEnrollmentProcesses.claimStatusInquiry.type`** (`string`): Whether transaction enrollment is single or multi-step.
  - `ONE_CLICK` indicates that once you submit the transaction enrollment request, Stedi can complete the rest of the enrollment process without any further action from you.
  - `MULTI_STEP` indicates that you must complete additional steps to finish the enrollment process. Customer support will reach out with clear instructions explaining how to complete any remaining steps.
  - Allowed values: `ONE_CLICK`, `MULTI_STEP`
- **`items[].enrollment.transactionEnrollmentProcesses.coordinationOfBenefits`** (`object`): Details about the enrollment process for coordination of benefits (COB) checks.
- **`items[].enrollment.transactionEnrollmentProcesses.coordinationOfBenefits.requestedEffectiveDate`** (`string`): Whether a payer supports specifying a requested effective date for transaction enrollments.
  - Allowed values: `SUPPORTED`, `NOT_SUPPORTED`
- **`items[].enrollment.transactionEnrollmentProcesses.coordinationOfBenefits.timeframe`** (`string`): Stedi's expected timeframe for completing the transaction enrollment process. `INSTANT` indicates that the enrollment will be in `LIVE` status within minutes of submitting the request.
  - Allowed values: `INSTANT`, `HOURS`, `DAYS`, `WEEKS`, `OVER_4_WEEKS`
- **`items[].enrollment.transactionEnrollmentProcesses.coordinationOfBenefits.type`** (`string`): Whether transaction enrollment is single or multi-step.
  - `ONE_CLICK` indicates that once you submit the transaction enrollment request, Stedi can complete the rest of the enrollment process without any further action from you.
  - `MULTI_STEP` indicates that you must complete additional steps to finish the enrollment process. Customer support will reach out with clear instructions explaining how to complete any remaining steps.
  - Allowed values: `ONE_CLICK`, `MULTI_STEP`
- **`items[].enrollment.transactionEnrollmentProcesses.dentalClaim`** (`object`): Details about the enrollment process for dental claim submission.
- **`items[].enrollment.transactionEnrollmentProcesses.dentalClaim.requestedEffectiveDate`** (`string`): Whether a payer supports specifying a requested effective date for transaction enrollments.
  - Allowed values: `SUPPORTED`, `NOT_SUPPORTED`
- **`items[].enrollment.transactionEnrollmentProcesses.dentalClaim.timeframe`** (`string`): Stedi's expected timeframe for completing the transaction enrollment process. `INSTANT` indicates that the enrollment will be in `LIVE` status within minutes of submitting the request.
  - Allowed values: `INSTANT`, `HOURS`, `DAYS`, `WEEKS`, `OVER_4_WEEKS`
- **`items[].enrollment.transactionEnrollmentProcesses.dentalClaim.type`** (`string`): Whether transaction enrollment is single or multi-step.
  - `ONE_CLICK` indicates that once you submit the transaction enrollment request, Stedi can complete the rest of the enrollment process without any further action from you.
  - `MULTI_STEP` indicates that you must complete additional steps to finish the enrollment process. Customer support will reach out with clear instructions explaining how to complete any remaining steps.
  - Allowed values: `ONE_CLICK`, `MULTI_STEP`
- **`items[].enrollment.transactionEnrollmentProcesses.eligibilityInquiry`** (`object`): Details about the enrollment process for eligibility checks.
- **`items[].enrollment.transactionEnrollmentProcesses.eligibilityInquiry.requestedEffectiveDate`** (`string`): Whether a payer supports specifying a requested effective date for transaction enrollments.
  - Allowed values: `SUPPORTED`, `NOT_SUPPORTED`
- **`items[].enrollment.transactionEnrollmentProcesses.eligibilityInquiry.timeframe`** (`string`): Stedi's expected timeframe for completing the transaction enrollment process. `INSTANT` indicates that the enrollment will be in `LIVE` status within minutes of submitting the request.
  - Allowed values: `INSTANT`, `HOURS`, `DAYS`, `WEEKS`, `OVER_4_WEEKS`
- **`items[].enrollment.transactionEnrollmentProcesses.eligibilityInquiry.type`** (`string`): Whether transaction enrollment is single or multi-step.
  - `ONE_CLICK` indicates that once you submit the transaction enrollment request, Stedi can complete the rest of the enrollment process without any further action from you.
  - `MULTI_STEP` indicates that you must complete additional steps to finish the enrollment process. Customer support will reach out with clear instructions explaining how to complete any remaining steps.
  - Allowed values: `ONE_CLICK`, `MULTI_STEP`
- **`items[].enrollment.transactionEnrollmentProcesses.institutionalClaim`** (`object`): Details about the enrollment process for institutional claim submission.
- **`items[].enrollment.transactionEnrollmentProcesses.institutionalClaim.requestedEffectiveDate`** (`string`): Whether a payer supports specifying a requested effective date for transaction enrollments.
  - Allowed values: `SUPPORTED`, `NOT_SUPPORTED`
- **`items[].enrollment.transactionEnrollmentProcesses.institutionalClaim.timeframe`** (`string`): Stedi's expected timeframe for completing the transaction enrollment process. `INSTANT` indicates that the enrollment will be in `LIVE` status within minutes of submitting the request.
  - Allowed values: `INSTANT`, `HOURS`, `DAYS`, `WEEKS`, `OVER_4_WEEKS`
- **`items[].enrollment.transactionEnrollmentProcesses.institutionalClaim.type`** (`string`): Whether transaction enrollment is single or multi-step.
  - `ONE_CLICK` indicates that once you submit the transaction enrollment request, Stedi can complete the rest of the enrollment process without any further action from you.
  - `MULTI_STEP` indicates that you must complete additional steps to finish the enrollment process. Customer support will reach out with clear instructions explaining how to complete any remaining steps.
  - Allowed values: `ONE_CLICK`, `MULTI_STEP`
- **`items[].enrollment.transactionEnrollmentProcesses.professionalClaim`** (`object`): Details about the enrollment process for professional claim submission.
- **`items[].enrollment.transactionEnrollmentProcesses.professionalClaim.requestedEffectiveDate`** (`string`): Whether a payer supports specifying a requested effective date for transaction enrollments.
  - Allowed values: `SUPPORTED`, `NOT_SUPPORTED`
- **`items[].enrollment.transactionEnrollmentProcesses.professionalClaim.timeframe`** (`string`): Stedi's expected timeframe for completing the transaction enrollment process. `INSTANT` indicates that the enrollment will be in `LIVE` status within minutes of submitting the request.
  - Allowed values: `INSTANT`, `HOURS`, `DAYS`, `WEEKS`, `OVER_4_WEEKS`
- **`items[].enrollment.transactionEnrollmentProcesses.professionalClaim.type`** (`string`): Whether transaction enrollment is single or multi-step.
  - `ONE_CLICK` indicates that once you submit the transaction enrollment request, Stedi can complete the rest of the enrollment process without any further action from you.
  - `MULTI_STEP` indicates that you must complete additional steps to finish the enrollment process. Customer support will reach out with clear instructions explaining how to complete any remaining steps.
  - Allowed values: `ONE_CLICK`, `MULTI_STEP`
- **`items[].enrollment.transactionEnrollmentProcesses.unsolicitedClaimAttachment`** (`object`): Details about the enrollment process for unsolicited claim attachments.
- **`items[].enrollment.transactionEnrollmentProcesses.unsolicitedClaimAttachment.requestedEffectiveDate`** (`string`): Whether a payer supports specifying a requested effective date for transaction enrollments.
  - Allowed values: `SUPPORTED`, `NOT_SUPPORTED`
- **`items[].enrollment.transactionEnrollmentProcesses.unsolicitedClaimAttachment.timeframe`** (`string`): Stedi's expected timeframe for completing the transaction enrollment process. `INSTANT` indicates that the enrollment will be in `LIVE` status within minutes of submitting the request.
  - Allowed values: `INSTANT`, `HOURS`, `DAYS`, `WEEKS`, `OVER_4_WEEKS`
- **`items[].enrollment.transactionEnrollmentProcesses.unsolicitedClaimAttachment.type`** (`string`): Whether transaction enrollment is single or multi-step.
  - `ONE_CLICK` indicates that once you submit the transaction enrollment request, Stedi can complete the rest of the enrollment process without any further action from you.
  - `MULTI_STEP` indicates that you must complete additional steps to finish the enrollment process. Customer support will reach out with clear instructions explaining how to complete any remaining steps.
  - Allowed values: `ONE_CLICK`, `MULTI_STEP`
- **`items[].names`** (`array of strings`) (required): Alternative names associated with a payer. These additional names help you search for and identify payers using the name most familiar to your organization.
- **`items[].operatingStates`** (`array of strings`): A list of US state codes, territories, or `NATIONAL` that indicates the geographic regions where this payer operates. For example: `["CA", "OR"]` for a regional payer, or `["NATIONAL"]` for a payer that operates in all 50 U.S. states. Supported territories are listed separately.

When this array isn't in the response, it means Stedi hasn't classified the payer's operating states yet.
- **`items[].parentPayerGroupId`** (`string`): The identifier for the corporate or brand group to which the payer belongs. The parent payer group is organizational metadata only – it doesn't affect routing, enrollment, or transaction support. Payers sharing a parent payer group may have different enrollment processes or other behaviors. This property is only returned when the payer has a parent payer group.
- **`items[].parentPayerGroupName`** (`string`): The name of the corporate or brand group to which the payer belongs. The parent payer group is organizational metadata only – it doesn't affect routing, enrollment, or transaction support. Payers sharing a parent payer group may have different enrollment processes or other behaviors. This property is only returned when the payer has a parent payer group.
- **`items[].primaryPayerId`** (`string`) (required): The most commonly used ID for a payer. This value often corresponds to the name the payer uses internally and provides to patients on member ID cards.
- **`items[].programs`** (`array of strings`) (required): A list of insurance programs that this payer participates in. For example: `["MEDICAID", "MEDICARE"]`. If Stedi hasn't assigned any programs to this payer, this array is empty.
- **`items[].stediId`** (`string`) (required): A unique ID that Stedi assigned to this payer and uses internally for routing requests. This ID will not change even if the `primaryPayerId` is updated.
- **`items[].transactionSupport`** (`object`) (required): Whether the following transaction types are supported: 270 eligibility checks, 276/277 claim status requests, 837 claims (professional, dental, institutional), 835 ERAs (claim payments), 275 unsolicited claim attachments, and coordination of benefits checks.


If the value is `ENROLLMENT_REQUIRED`, Stedi supports the transaction type, but you must [enroll with the payer](https://www.stedi.com/docs/healthcare/supported-payers#enrollment) first.
- **`items[].transactionSupport.claimPayment`** (`string`) (required)
  - Allowed values: `SUPPORTED`, `NOT_SUPPORTED`, `ENROLLMENT_REQUIRED`
- **`items[].transactionSupport.claimStatus`** (`string`) (required)
  - Allowed values: `SUPPORTED`, `NOT_SUPPORTED`, `ENROLLMENT_REQUIRED`
- **`items[].transactionSupport.claimSubmission`** (`string`) (required)
  - Allowed values: `SUPPORTED`, `NOT_SUPPORTED`, `ENROLLMENT_REQUIRED`
- **`items[].transactionSupport.coordinationOfBenefits`** (`string`) (required)
  - Allowed values: `SUPPORTED`, `NOT_SUPPORTED`, `ENROLLMENT_REQUIRED`
- **`items[].transactionSupport.dentalClaimSubmission`** (`string`) (required)
  - Allowed values: `SUPPORTED`, `NOT_SUPPORTED`, `ENROLLMENT_REQUIRED`
- **`items[].transactionSupport.eligibilityCheck`** (`string`) (required)
  - Allowed values: `SUPPORTED`, `NOT_SUPPORTED`, `ENROLLMENT_REQUIRED`
- **`items[].transactionSupport.institutionalClaimSubmission`** (`string`) (required)
  - Allowed values: `SUPPORTED`, `NOT_SUPPORTED`, `ENROLLMENT_REQUIRED`
- **`items[].transactionSupport.professionalClaimSubmission`** (`string`) (required)
  - Allowed values: `SUPPORTED`, `NOT_SUPPORTED`, `ENROLLMENT_REQUIRED`
- **`items[].transactionSupport.unsolicitedClaimAttachment`** (`string`) (required)
  - Allowed values: `SUPPORTED`, `NOT_SUPPORTED`, `ENROLLMENT_REQUIRED`
- **`items[].urls`** (`object`): URLs associated with a payer.
- **`items[].urls.website`** (`string`): The payer's website URL.
- **`nextPageToken`** (`string`): Token that you can supply in subsequent requests to retrieve the next page of results. If not returned, there are no more results.

**Example:**

```json
{
  "items": [
    {
      "aliases": [
        "00420",
        "13123",
        "1584",
        "4714",
        "95655",
        "MEDGL",
        "MEDGLD",
        "MEDIGOLD"
      ],
      "avatarUrl": "https://prod-payer-avatars.payers.us.stedi.com/YKHRB/avatar.png?v=1766600157693",
      "coverageTypes": [
        "dental",
        "medical"
      ],
      "displayName": "Trinity Health Plan",
      "enrollment": {
        "ptanRequired": false,
        "transactionEnrollmentProcesses": {
          "claimPayment": {
            "requestedEffectiveDate": "NOT_SUPPORTED",
            "supportedAggregationPreferences": [
              "NPI",
              "TIN"
            ],
            "timeframe": "DAYS",
            "type": "ONE_CLICK"
          }
        }
      },
      "names": [
        "MediGold",
        "Medigold Health Plans",
        "Mount Carmel Health Plan",
        "Mount Carmel MediGold",
        "Trinity Health Plan of Michigan"
      ],
      "operatingStates": [
        "ID",
        "IA",
        "MI",
        "NY",
        "OH"
      ],
      "parentPayerGroupId": "GTRSH",
      "parentPayerGroupName": "Trinity Health",
      "primaryPayerId": "95655",
      "programs": [
        "MEDICARE"
      ],
      "stediId": "YKHRB",
      "transactionSupport": {
        "claimPayment": "ENROLLMENT_REQUIRED",
        "claimStatus": "SUPPORTED",
        "claimSubmission": "SUPPORTED",
        "coordinationOfBenefits": "NOT_SUPPORTED",
        "dentalClaimSubmission": "NOT_SUPPORTED",
        "eligibilityCheck": "SUPPORTED",
        "institutionalClaimSubmission": "SUPPORTED",
        "professionalClaimSubmission": "SUPPORTED",
        "unsolicitedClaimAttachment": "NOT_SUPPORTED"
      },
      "urls": {
        "website": "https://www.thpmedicare.org"
      }
    }
  ],
  "nextPageToken": "yrZ3we9982etYlMgmw=="
}
```

#### 400

ValidationException 400 response

**Schema:** `ValidationExceptionResponseContent`

**Properties:**

- **`fieldList`** (`array of ValidationExceptionField objects`): A list of specific failures encountered while validating the input.
A member can appear in this list more than once if it failed to satisfy multiple constraints.
- **`fieldList[].message`** (`string`) (required): A detailed description of the validation failure.
- **`fieldList[].path`** (`string`) (required): A JSONPointer expression to the structure member whose value failed to satisfy the modeled constraints.
- **`message`** (`string`) (required): A summary of the validation failure.
#### 404

ResourceNotFoundException 404 response

**Schema:** `ResourceNotFoundExceptionResponseContent`

**Properties:**

- **`code`** (`string`): Error classification code
- **`message`** (`string`) (required): Human-readable error message
#### 500

InternalFailureException 500 response

**Schema:** `InternalFailureExceptionResponseContent`

**Properties:**

- **`code`** (`string`): Error classification code
- **`message`** (`string`) (required): Human-readable error message


# CMS-1500 PDF: Business Identifier
Source: https://www.stedi.com/docs/healthcare/api-reference/get-pdf-1500-business-identifier


This endpoint uses a business identifier to retrieve autogenerated CMS-1500 Claim Form PDFs for submitted 837P professional claims.

1. Call this endpoint with the `businessId` query parameter set to the claim's correlation ID. The correlation ID is returned as the `claimReference.correlationId` in the synchronous response Stedi returns when you submit a professional claim.
2. The endpoint returns an array of PDFs for all claims with the specified `businessId` value. PDFs are returned as a base64 encoded string.

To view a PDF, decode the base64 string and save it to a file with a `.pdf` extension.

<Note>
  If you plan to send these PDFs to payers or retain them for your records, we
  strongly recommend visiting [CMS-1500 Claim Form PDF](/healthcare/cms-1500-claim-form-pdf) for information about structuring claim submissions for optimal generation, the correct printer
  settings, and best practices.
</Note>

## API Specification

Retrieve a Stedi generatedCMS-1500 Claim Form PDF for a submitted 837P (professional) claim by business identifier

**Endpoint:** `GET /export/pdf`

**Base URL:** `https://healthcare.us.stedi.com/2024-04-01`

### Parameters

- **`businessId`** (query) (required): The business identifier for the claim PDF you want to retrieve. This value is returned as the `claimReference.correlationId` in the synchronous response Stedi returns when you submit a professional claim.
  - Type: `string`
- **`background`** (query): If false, the generated PDF will only contain the form data on a white background, suitable for printing on pre-printed forms. The default is true.
  - Type: `boolean`

### Responses

#### 200

ExportPDF 200 response

**Schema:** `ExportPDFResponseContent`

**Properties:**

- **`errors`** (`array of PDFError objects`): Errors that prevented Stedi from returning one or more PDFs for the specified `businessId`. This array may be empty if there were no errors.
- **`errors[].error`** (`string`): A message indicating the type of error that occurred.
- **`errors[].transactionId`** (`string`): A unique identifier for the claim with one or more PDF errors.
- **`pdfs`** (`array of PDFData objects`): Data for PDF files Stedi generated for the specified `businessId`. This array may be empty if there are no PDFs available for the specified `businessId`. It may also contain multiple PDFs if there is more than one claim with the same `businessId` value.
- **`pdfs[].data`** (`string`): A base64 encoded string of the CMS-1500 Claim Form PDF. To render the PDF, you must decode the base64 string and save it to a file with a `.pdf` extension.
- **`pdfs[].transactionId`** (`string`): A unique identifier for the processed claim associated with the specified `businessId`. 

This ID is included in the transaction processed event for each claim, which you can receive automatically through Stedi [webhooks](https://www.stedi.com/docs/healthcare/configure-webhooks). You can also retrieve this ID through the [Poll Transactions endpoint](https://www.stedi.com/docs/healthcare/api-reference/get-poll-transactions).

**Example:**

```json
{
  "errors": [
    {
      "error": "No artifacts found for transaction",
      "transactionId": "a10b3344-7288-484a-8dbb-b240c123c767"
    }
  ],
  "pdfs": [
    {
      "data": "JVBERi0xLjcKJYGBgYEKCjcgMCBvYmoKPDwKL0ZpbHRlciAvRmxhdGVEZWNvZGUKL0xlbmd0aCAxMAo ...",
      "transactionId": "a10b1111-7233-484c-8dee-b240c590c767"
    }
  ]
}
```

#### 400

ExportPDF400Error 400 response

**Schema:** `ExportPDF400ErrorResponseContent`

#### 403

ExportPDF403Error 403 response

**Schema:** `ExportPDF403ErrorResponseContent`

#### 404

ExportPDF404Error 404 response

**Schema:** `ExportPDF404ErrorResponseContent`

#### 429

ThrottlingException 429 response

**Schema:** `ThrottlingExceptionResponseContent`

**Properties:**

- **`code`** (`string`): Error classification code
- **`message`** (`string`) (required): Human-readable error message
#### 500

InternalFailureException 500 response

**Schema:** `InternalFailureExceptionResponseContent`

**Properties:**

- **`code`** (`string`): Error classification code
- **`message`** (`string`) (required): Human-readable error message
#### 503

ServiceUnavailableException 503 response

**Schema:** `ServiceUnavailableExceptionResponseContent`

**Properties:**

- **`code`** (`string`)
- **`message`** (`string`) (required)
#### 504

GatewayTimeoutException 504 response

**Schema:** `GatewayTimeoutExceptionResponseContent`

**Properties:**

- **`code`** (`string`)
- **`message`** (`string`) (required)


# CMS-1500 PDF: Transaction ID
Source: https://www.stedi.com/docs/healthcare/api-reference/get-pdf-1500


This endpoint uses a claim's `transactionId` to retrieve autogenerated CMS-1500 Claim Form PDFs for submitted 837P professional claims.

1. Call this endpoint with the `transactionId` path parameter set to the claim's transaction ID. This ID is included in the transaction processed event for the claim, which you can receive automatically through Stedi [webhooks](/healthcare/configure-webhooks). You can also retrieve this ID through the [Poll Transactions](/healthcare/api-reference/get-poll-transactions) endpoint.
2. The endpoint returns the PDF data as a base64 encoded string.

To view the PDF, decode the base64 string and save it to a file with a `.pdf` extension.

<Note>
  If you plan to send these PDFs to payers or retain them for your records, we
  strongly recommend visiting [CMS-1500 Claim Form PDF](/healthcare/cms-1500-claim-form-pdf) for information about structuring claim submissions for optimal generation, the correct printer
  settings, and best practices.
</Note>

## API Specification

Retrieve the generated CMS-1500 Claim Form PDF for a submitted 837P professional claim

**Endpoint:** `GET /export/{transactionId}/1500/pdf`

**Base URL:** `https://healthcare.us.stedi.com/2024-04-01`

### Parameters

- **`transactionId`** (path) (required): A unique identifier for the processed claim within Stedi. This ID is included in the transaction processed event for the claim, which you can receive automatically through Stedi [webhooks](https://www.stedi.com/docs/healthcare/configure-webhooks). You can also retrieve this ID through the [Poll Transactions endpoint](https://www.stedi.com/docs/healthcare/api-reference/get-poll-transactions).
  - Type: `string`
- **`background`** (query): If false, the generated PDF will only contain the form data on a white background, suitable for printing on pre-printed forms. The default is true.
  - Type: `boolean`

### Responses

#### 200

GetPDF1500 200 response

#### 400

ValidationException 400 response

**Schema:** `ValidationExceptionResponseContent`

**Properties:**

- **`code`** (`string`): A code describing the type of validation failure.
- **`message`** (`string`) (required): A message describing the causes of the validation failure. There may be more than one.
#### 403

AccessDeniedException 403 response

**Schema:** `AccessDeniedExceptionResponseContent`

**Properties:**

- **`code`** (`string`): Error classification code
- **`message`** (`string`) (required): Human-readable error message
#### 404

ResourceNotFoundException 404 response

**Schema:** `ResourceNotFoundExceptionResponseContent`

**Properties:**

- **`code`** (`string`): Error classification code
- **`message`** (`string`) (required): Human-readable error message
#### 429

ThrottlingException 429 response

**Schema:** `ThrottlingExceptionResponseContent`

**Properties:**

- **`code`** (`string`): Error classification code
- **`message`** (`string`) (required): Human-readable error message
#### 500

InternalFailureException 500 response

**Schema:** `InternalFailureExceptionResponseContent`

**Properties:**

- **`code`** (`string`): Error classification code
- **`message`** (`string`) (required): Human-readable error message
#### 503

ServiceUnavailableException 503 response

**Schema:** `ServiceUnavailableExceptionResponseContent`

**Properties:**

- **`code`** (`string`)
- **`message`** (`string`) (required)
#### 504

GatewayTimeoutException 504 response

**Schema:** `GatewayTimeoutExceptionResponseContent`

**Properties:**

- **`code`** (`string`)
- **`message`** (`string`) (required)


# Poll transactions
Source: https://www.stedi.com/docs/healthcare/api-reference/get-poll-transactions


This endpoint returns details about transactions that Stedi processed after the specified `startDateTime`.

You can use this endpoint to poll for new 277CA claim acknowledgment and 835 Electronic Remittance Advice (ERA) transactions in your account. Visit [Poll for transactions](/healthcare/receive-claim-responses#poll-for-transactions) for a step-by-step guide.

## Results [#results]

Transactions are ordered from oldest to newest according to the `processedAt` property. This is *exclusive* of the `startDateTime`. For example, if the provided `startDateTime` is `2023-08-10T18:00:00Z`, a transaction processed at exactly that time would not be included in the results.

There is also a fifteen-second window where newly created transactions are excluded, meaning Stedi returns results up to fifteen seconds before the time of your request. This functionality accounts for any network latency or clock drift within the systems to ensure you don't miss any transactions.

## Polling with page tokens [#polling-with-page-tokens]

We **don't** recommend polling using `startDateTime` only. Due to the exclusive nature of `startDateTime`, you could potentially miss a transaction if two transactions occur at the *exact* same time and are on the edge of a pagination. Instead, you should use `pageToken`.

After the initial request, you can poll again immediately using `pageToken` to continue iterating through the pages of transactions. The endpoint always returns a `nextPageToken`, regardless of whether additional transactions match the request criteria. If the `items` array is empty, continue using the provided `nextPageToken` to poll for new transactions. New transactions will be returned when available.

We recommend storing `pageToken` values as part of your polling process. They don't expire, allowing you to start from that point in the transaction stream again if you need to catch a system up to date or recover from a failure.

Note that `pageToken` values are unique per request, opaque, and shouldn't be parsed or modified in any way. They are not guaranteed to be in any particular format, and may change in the future.

## Overlap your polling window [#overlap-your-polling-window]

We recommend starting your polling window at least one day before your last known processed transaction. While the `processedAt` timestamp is generally immutable and monotonic, overlapping your polling window ensures you don't miss edge cases, such as:

* Transactions that occur at the exact same time.
* Transactions that fall on pagination boundaries.
* Transactions that may be processed slightly out of order due to network latency or system delays.

You'll need to track which transactions you've already processed to filter out duplicates.

## API Specification

Poll for new transactions that Stedi has processed.

**Endpoint:** `GET /polling/transactions`

**Base URL:** `https://core.us.stedi.com/2023-08-01`

### Parameters

- **`pageSize`** (query): The maximum number of elements to return in a page. You can set this to a maximum of 500 elements. If not specified, the default is 100.
  - Type: `number`
- **`pageToken`** (query): A token returned by a previous call to this operation in the `nextPageToken`. If not specified, Stedi returns the first page of results.

You must supply either this property or `startDateTime` in every request.
  - Type: `string`
- **`startDateTime`** (query): An ISO 8601 formatted string. For example `2023-08-28T00:00:00Z`. It must be at least one minute in the past. Stedi returns transactions processed after this time.

You must supply either this property or `pageToken` in every request. 
  - Type: `string`

### Responses

#### 200

ListPollingTransactions 200 response

**Schema:** `ListPollingTransactionsResponseContent`

**Properties:**

- **`nextPageToken`** (`string`): Token that you can supply in subsequent requests to retrieve the next page of results. If not returned, there are no more results.
- **`items`** (`array of TransactionSummary objects`) (required)
- **`items[].transactionId`** (`string`) (required): A unique identifier for the processed transaction within Stedi. This ID is included in the transaction processed event. You can also retrieve it manually from the transaction's details page within the Stedi portal.
- **`items[].fileExecutionId`** (`string`) (required): A unique identifier for the processed file within Stedi. This ID is included in the transaction processed event. You can also retrieve it manually from the file's details page in the Stedi portal.
- **`items[].status`** (`string`) (required): A status indicating whether Stedi was able to successfully process the transaction.
  - Allowed values: `failed`, `succeeded`
- **`items[].direction`** (`string`) (required): The direction of the transaction. Inbound transactions are those you receive from a payer, provider, or other trading partner. Outbound transactions are those you send to a payer, provider, or other trading partner.
  - Allowed values: `INBOUND`, `OUTBOUND`, `UNKNOWN`
- **`items[].mode`** (`string`) (required): Indicates whether the transaction contains test or production data. Stedi determines this from the value in [`ISA15` Usage Indicator Code](https://www.stedi.com/edi/x12/segment/ISA#ISA-15).
  - Allowed values: `test`, `production`, `other`
- **`items[].processedAt`** (`string`) (required): The date and time when Stedi processed the transaction, in ISO 8601 format. For example, `2023-08-28T00:00:00Z`.
- **`items[].artifacts`** (`array of Artifact objects`) (required): A list of artifacts related to the transaction.
- **`items[].artifacts[].artifactType`** (`string`) (required): The format of the artifact.
  - Allowed values: `text/csv`, `application/edifact`, `application/filepart`, `application/json`, `application/pdf`, `text/psv`, `text/tsv`, `application/edi-x12`, `application/xml`, `application/zip`, `image/jpeg`, `image/png`, `image/tiff`, `text/plain`, `unknown`
- **`items[].artifacts[].usage`** (`string`) (required): The type of data the artifact contains. For example, an input artifact represents the original data Stedi received before processing, while an output artifact represents the processed data.

For example, for an inbound 835 ERA from a payer, the input artifact would be the original X12 EDI, and the output artifact would be the JSON representation of the ERA.
  - Allowed values: `attachment`, `input`, `metadata`, `output`
- **`items[].artifacts[].sizeBytes`** (`number`) (required): The size of the artifact in bytes.
- **`items[].artifacts[].url`** (`string`) (required): A URL to download the artifact.
- **`items[].artifacts[].model`** (`string`) (required): The model of the artifact, which indicates the type of process or operation it represents. For example, an execution artifact represents a file that was processed, a fragment artifact represents a part of a larger transaction, and a fault artifact represents an error that occurred during processing.
  - Allowed values: `execution`, `fragment`, `transaction`, `fault`
- **`items[].partnership`** (`object`) (required): Information about the associated partnership.

A partnership describes all aspects of the EDI relationship between two profiles in your Stedi account, such as which transaction sets they will exchange and other important information for processing EDI files. If you're sending or receiving transactions through the Stedi clearinghouse, Stedi configures the necessary partnership for you automatically when you set up your account.
- **`items[].partnership.partnershipId`** (`string`) (required): The unique identifier for the partnership within the Stedi platform.

A partnership describes all aspects of the EDI relationship between two profiles in your Stedi account, such as which transaction sets they will exchange and other important information for processing EDI files. If you're sending or receiving transactions through the Stedi clearinghouse, Stedi configures the necessary partnerships for you automatically when you set up your account.
- **`items[].partnership.partnershipType`** (`string`) (required): The type of partnership, which determines the EDI standard used for exchanging transactions.
  - Allowed values: `x12`, `edifact`
- **`items[].partnership.sender`** (`object`) (required): The entity that initiated the transaction.
- **`items[].partnership.sender.profileId`** (`string`) (required): A unique identifier for the profile within the Stedi platform.
- **`items[].partnership.receiver`** (`object`) (required): The entity that is receiving the transaction.
- **`items[].partnership.receiver.profileId`** (`string`) (required): A unique identifier for the profile within the Stedi platform.
- **`items[].x12`** (`object`): Details about the X12 EDI transaction.
- **`items[].x12.metadata`** (`object`) (required): Metadata about the X12 EDI transaction, including information from the interchange, functional group, and transaction headers as well as the sender and receiver IDs.
- **`items[].x12.metadata.interchange`** (`object`) (required): Data from the Interchange Control Header of the X12 EDI file.
- **`items[].x12.metadata.interchange.acknowledgmentRequestedCode`** (`string`) (required): The value of [`ISA14`](https://www.stedi.com/edi/x12/segment/ISA#ISA-14) in the Interchange Control Header, which indicates whether the sender is requesting a [`TA1` Interchange Acknowledgment](https://www.stedi.com/edi/x12/segment/TA1).
- **`items[].x12.metadata.interchange.controlNumber`** (`number`) (required): The control number in the Interchange Control Header.
- **`items[].x12.metadata.functionalGroup`** (`object`) (required): Data from the Functional Group Header of the X12 EDI file.
- **`items[].x12.metadata.functionalGroup.controlNumber`** (`number`) (required): The Group Control Number ([`GS06`](https://www.stedi.com/edi/x12/segment/GS#GS-06)).
- **`items[].x12.metadata.functionalGroup.date`** (`string`) (required): The date in the Functional Group Header ([`GS04`](https://www.stedi.com/edi/x12/segment/GS#GS-04)), formatted as `YYYY-MM-DD`. For example, `2023-08-28`.
- **`items[].x12.metadata.functionalGroup.functionalIdentifierCode`** (`string`) (required): The Functional Identifier Code ([`GS01`](https://www.stedi.com/edi/x12/segment/GS#GS-01)), which indicates the type of transaction. For example, `HC` for an 837 Healthcare Claim.
- **`items[].x12.metadata.functionalGroup.time`** (`string`) (required): The Time ([`GS05`](https://www.stedi.com/edi/x12/segment/GS#GS-05)), formatted as `HH:MM:SS`. For example, `21:29:57`.
- **`items[].x12.metadata.functionalGroup.release`** (`string`) (required): The Version/Release/Industry Identifier Code ([`GS08`](https://www.stedi.com/edi/x12/segment/GS#GS-08)), which indicates the version of the X12 standard used. For example, `005010X222A1`.
- **`items[].x12.metadata.transaction`** (`object`) (required): Data from the Transaction Set Header of the X12 EDI file.
- **`items[].x12.metadata.transaction.controlNumber`** (`string`) (required): The Transaction Set Control Number ([`ST02`](https://www.stedi.com/edi/x12/segment/ST#ST-02)).
- **`items[].x12.metadata.transaction.transactionSetIdentifier`** (`string`) (required): The Transaction Set Identifier Code ([`ST01`](https://www.stedi.com/edi/x12/segment/ST#ST-01)), which indicates the type of transaction. For example, `837` for an 837 Healthcare Claim.
- **`items[].x12.metadata.sender`** (`object`) (required): The Application Code and ISA ID for the profile.
- **`items[].x12.metadata.sender.applicationCode`** (`string`) (required): The Application Code for the profile, which is used to identify the entity in the `GS` header of an EDI file.
- **`items[].x12.metadata.sender.isa`** (`object`) (required): The Interchange ID and qualifier.
- **`items[].x12.metadata.sender.isa.qualifier`** (`string`) (required): The Interchange Sender ID Qualifier, which indicates the type of identifier. For example, `ZZ` for a mutually defined identifier.
- **`items[].x12.metadata.sender.isa.id`** (`string`) (required): The Interchange ID, which is the unique identifier for the entity in the EDI file.
- **`items[].x12.metadata.receiver`** (`object`) (required): The Application Code and ISA ID for the profile.
- **`items[].x12.metadata.receiver.applicationCode`** (`string`) (required): The Application Code for the profile, which is used to identify the entity in the `GS` header of an EDI file.
- **`items[].x12.metadata.receiver.isa`** (`object`) (required): The Interchange ID and qualifier.
- **`items[].x12.metadata.receiver.isa.qualifier`** (`string`) (required): The Interchange Sender ID Qualifier, which indicates the type of identifier. For example, `ZZ` for a mutually defined identifier.
- **`items[].x12.metadata.receiver.isa.id`** (`string`) (required): The Interchange ID, which is the unique identifier for the entity in the EDI file.
- **`items[].x12.transactionSetting`** (`object`): The IDs for the guide and transaction setting Stedi used to process the transaction.
- **`items[].x12.transactionSetting.guideId`** (`string`): The unique identifier for the Stedi guide used to process the transaction.

Stedi guides are machine-readable specifications for X12 EDI transactions. They describe how to structure and validate EDI files for each transaction type.
- **`items[].x12.transactionSetting.transactionSettingId`** (`string`): The unique identifier for the transaction setting Stedi used to process the transaction.

Transaction settings configure how Stedi processes specific transaction types, such as which Stedi guide to use and other processing options. If you're using the Stedi clearinghouse, Stedi automatically configures the required transaction settings for you when you set up your account.
- **`items[].fragments`** (`object`): Details about fragments included in the transaction, if applicable. Fragments break large transactions into smaller parts for easier processing and management.
- **`items[].fragments.keyName`** (`string`) (required): The JSON schema key name for the segment in the Stedi guide used to split the transaction into fragments. For example, in an 834 Health Care Benefit Enrollment and Maintenance, this would be `member_level_detail_INS_loop`.
- **`items[].fragments.fragmentCount`** (`number`) (required): The total number of fragments in the transaction.
- **`items[].fragments.batchSize`** (`number`) (required): The maximum size of each fragment in kilobytes (KB). Stedi uses this to automatically split large inbound transactions into fragments.
- **`items[].translationErrors`** (`array of TranslationError objects`): Details about errors that prevented Stedi from processing the transaction.
- **`items[].translationErrors[].context`** (`object`)
- **`items[].translationErrors[].context.code`** (`string`): The error code.
- **`items[].translationErrors[].context.schemaPath`** (`string`): The name of the JSON property where the error occurred.
- **`items[].translationErrors[].mark`** (`object`): The location in the document where the problem occurred. May be a single index or a range.
- **`items[].translationErrors[].mark.start`** (`object`) (required)
- **`items[].translationErrors[].mark.start.line`** (`number`) (required): The line number in the document where the problem occurred.
- **`items[].translationErrors[].mark.start.column`** (`number`) (required): The column number in the document where the problem occurred.
- **`items[].translationErrors[].mark.end`** (`object`)
- **`items[].translationErrors[].mark.end.line`** (`number`) (required): The line number in the document where the problem occurred.
- **`items[].translationErrors[].mark.end.column`** (`number`) (required): The column number in the document where the problem occurred.
- **`items[].translationErrors[].message`** (`string`) (required): A message describing the error that occurred during translation.
- **`items[].businessIdentifiers`** (`array of BusinessIdentifier objects`): Any business identifiers extracted from the transaction.
- **`items[].businessIdentifiers[].elementId`** (`string`) (required): The identifier of the element containing the business identifier in the EDI specification.
- **`items[].businessIdentifiers[].element`** (`string`) (required): The element where the business identifier was found. For example, `BHT03` for 837 claims.
- **`items[].businessIdentifiers[].name`** (`string`) (required): The friendly name of the business identifier. For example, `Originator Application Transaction Identifier`.
- **`items[].businessIdentifiers[].value`** (`string`) (required): The value of the business identifier.

**Example:**

```json
{
  "items": [
    {
      "direction": "INBOUND",
      "mode": "test",
      "status": "succeeded",
      "fileExecutionId": "95236a56-a020-4522-8fef-bcffcec0ec1d",
      "transactionId": "c8dd3a67-b8ca-4b0e-aa73-e0de82414b8f",
      "processedAt": "2025-04-02T21:30:15.801Z",
      "artifacts": [
        {
          "artifactType": "application/edi-x12",
          "sizeBytes": 8374,
          "model": "transaction",
          "usage": "input",
          "url": "https://core.us.stedi.com/2023-08-01/transactions/4443355-b8ca-4b0e-aa73-e0de12314b8f/input"
        },
        {
          "artifactType": "application/json",
          "sizeBytes": 76898,
          "model": "transaction",
          "usage": "output",
          "url": "https://core.us.stedi.com/2023-08-01/transactions/111222333-b8ca-4b0e-aa73-e0de67454b8f/output"
        }
      ],
      "partnership": {
        "partnershipId": "local-clearinghouse-test",
        "partnershipType": "x12",
        "sender": {
          "profileId": "clearinghouse-test"
        },
        "receiver": {
          "profileId": "local"
        }
      },
      "businessIdentifiers": [
        {
          "elementId": "127",
          "element": "BHT-03",
          "name": "Reference Identification",
          "value": "XXXXXX"
        }
      ],
      "x12": {
        "metadata": {
          "interchange": {
            "acknowledgmentRequestedCode": "0",
            "controlNumber": 1
          },
          "functionalGroup": {
            "controlNumber": 1,
            "release": "005010X222A1",
            "date": "2025-04-02",
            "time": "21:29:57",
            "functionalIdentifierCode": "HC"
          },
          "transaction": {
            "controlNumber": "0001",
            "transactionSetIdentifier": "837"
          },
          "receiver": {
            "applicationCode": "STEDI-TEST",
            "isa": {
              "qualifier": "ZZ",
              "id": "STEDI-TEST"
            }
          },
          "sender": {
            "applicationCode": "TestSender",
            "isa": {
              "qualifier": "ZZ",
              "id": "TestSender"
            }
          }
        },
        "transactionSetting": {
          "guideId": "01JQW6E5RSBSTKS3ZQ1SPR4019",
          "transactionSettingId": "01JQW6E72Q3HDXM40YYAQCBZDY"
        }
      }
    }
  ]
}
```

#### 400

BadRequestException 400 response

**Schema:** `BadRequestExceptionResponseContent`

**Properties:**

- **`message`** (`string`) (required)
- **`code`** (`string`)
#### 401

UnauthorizedException 401 response

**Schema:** `UnauthorizedExceptionResponseContent`

**Properties:**

- **`message`** (`string`) (required)
- **`code`** (`string`)
#### 403

AccessDeniedException 403 response

**Schema:** `AccessDeniedExceptionResponseContent`

**Properties:**

- **`message`** (`string`) (required)
- **`code`** (`string`)
#### 404

ResourceNotFoundException 404 response

**Schema:** `ResourceNotFoundExceptionResponseContent`

**Properties:**

- **`message`** (`string`) (required)
- **`code`** (`string`)
#### 409

ResourceUnderChangeException 409 response

**Schema:** `ResourceUnderChangeExceptionResponseContent`

**Properties:**

- **`message`** (`string`) (required)
#### 422

UnprocessableEntityException 422 response

**Schema:** `UnprocessableEntityExceptionResponseContent`

**Properties:**

- **`message`** (`string`) (required)
- **`code`** (`string`)
#### 429

ThrottlingException 429 response

**Schema:** `ThrottlingExceptionResponseContent`

**Properties:**

- **`message`** (`string`) (required)
- **`code`** (`string`)
#### 500

ServiceException 500 response

**Schema:** `ServiceExceptionResponseContent`

**Properties:**

- **`message`** (`string`) (required)
- **`exceptionCause`** (`object`)
- **`exceptionCause.name`** (`string`)
- **`exceptionCause.message`** (`string`)
- **`exceptionCause.stack`** (`string`)
#### 503

ServiceUnavailableException 503 response

**Schema:** `ServiceUnavailableExceptionResponseContent`

**Properties:**

- **`message`** (`string`) (required)
- **`code`** (`string`)
#### 504

GatewayTimeoutException 504 response

**Schema:** `GatewayTimeoutExceptionResponseContent`

**Properties:**

- **`message`** (`string`) (required)
- **`code`** (`string`)


# Search Payers
Source: https://www.stedi.com/docs/healthcare/api-reference/get-search-payers


This endpoint queries the [Payer Network](https://www.stedi.com/healthcare/network). It's especially useful when you want to embed dynamic payer search capabilities into your system or application.

1. Call this endpoint with your desired search criteria. You can search by the payer's name, [payer ID](/healthcare/supported-payers#payer-ids), or payer ID aliases. You can also filter the results by supported transaction types.
2. The endpoint returns information about matching payers, including their possible names, their primary payer ID, payer ID aliases, and supported transaction types.

The search supports fuzzy matching, which means that the results contain an array of exact (if available) and close matches.

## Results [#results]

When you specify multiple transaction filters, they are combined with AND logic, meaning payers must satisfy all specified transaction criteria to be included in results.

Stedi weights results based on text match relevance and additional factors, such as payer size, market share, and transaction volume in order to present the most likely matches first. Stedi also accounts for potential misspellings (a search for CEGNA still returns CIGNA) and transposed letters (a search for ICGNA still returns CIGNA) when searching the payer database.

## Examples [#examples]

This page contains two examples of search results:

* **Search for query string**: This example response shows the results of a basic search for the query string "Blue Cross". The URL for this request is `https://healthcare.us.stedi.com/2024-04-01/payers/search?query=Blue%20Cross`.
* **Search with multiple filters**: This example response shows the results of a more advanced search that includes a query string for "Blue Cross", plus additional query parameters that filter for payers supporting eligibility checks and real-time claim status. The URL for this request is `https://healthcare.us.stedi.com/2024-04-01/payers/search?query=Blue%20Cross&eligibilityCheck=SUPPORTED&claimStatus=SUPPORTED`. This advanced search only returns payers that support both eligibility checks and claim status, while the basic search returns all payers, regardless of the transaction types they support.

Both examples are truncated for brevity to show only one payer matching the results.

## API Specification

Search for payers by name, ID, or alias.

**Endpoint:** `GET /payers/search`

**Base URL:** `https://payers.us.stedi.com/2024-04-01`

### Parameters

- **`pageSize`** (query): The maximum number of elements to return in a page. If not specified, the default is 20.
  - Type: `integer`
- **`pageToken`** (query): An opaque token returned by a previous call to this endpoint in the `nextPageToken` property. You can use it to request the next page of results. If not specified, Stedi returns the first page of results.
  - Type: `string`
- **`query`** (query): The query Stedi will use to search the Payer Network database. You can supply a payer's name, ID, or alias. The query is case-insensitive, and fuzzy matching is supported. For example, `cig`, `62308`, and `SX071` all return Cigna in the results. If not provided, the other search options are used to conduct the search.
  - Type: `string`
- **`eligibilityCheck`** (query): Filter for matching payers with the specified 270 eligibility checks support. When combined with other transaction filters, payers must satisfy **all** specified criteria to be included in results.
- **`claimStatus`** (query): Filter for matching payers with the specified 276/277 real-time claim status checks support. When combined with other transaction filters, payers must satisfy **all** specified criteria to be included in results.
- **`professionalClaimSubmission`** (query): Filter for matching payers with the specified 837 professional claims support. When combined with other transaction filters, payers must satisfy **all** specified criteria to be included in results.
- **`dentalClaimSubmission`** (query): Filter for matching payers with the specified 837 dental claims support. When combined with other transaction filters, payers must satisfy **all** specified criteria to be included in results.
- **`institutionalClaimSubmission`** (query): Filter for matching payers with the specified 837 institutional claims support. When combined with other transaction filters, payers must satisfy **all** specified criteria to be included in results.
- **`claimPayment`** (query): Filter for matching payers with the specified 835 Electronic Remittance Advice (ERA) support. When combined with other transaction filters, payers must satisfy **all** specified criteria to be included in results.
- **`coordinationOfBenefits`** (query): Filter for matching payers with the specified coordination of benefits (COB) checks support. When combined with other transaction filters, payers must satisfy **all** specified criteria to be included in results.
- **`unsolicitedClaimAttachment`** (query): Filter for matching payers with the specified unsolicited 275 claim attachments support. When combined with other transaction filters, payers must satisfy **all** specified criteria to be included in results.
- **`coverageTypes`** (query): Filter for matching payers that support transactions for **all** of the specified coverage types. For example, setting this array to `["medical", "dental"]` returns only payers who provide both medical and dental coverage.

The results also exclude payers without coverage type classifications in Stedi's database.
  - Type: `array`
- **`operatingStates`** (query): Filter for matching payers that operate in **all** of the specified states, territories, or NATIONAL. For example, setting this array to `["CA", "OR"]` returns only payers that operate in both California and Oregon. Setting it to `["NATIONAL"]` returns payers that operate in all 50 U.S. states. To find payers that also operate in territories, you must include those territory codes explicitly, for example `["NATIONAL", "PR"]`.

The results also exclude payers without operating state classifications in Stedi's database.
  - Type: `array`
- **`programs`** (query): Filter for matching payers that participate in **any** of the specified insurance programs. For example, setting this array to `["MEDICARE", "TRICARE"]` returns payers that participate in either Medicare or TRICARE.

The results also exclude payers without program classifications in Stedi's database.
  - Type: `array`

### Responses

#### 200

SearchPayers 200 response

**Schema:** `SearchPayersResponseContent`

**Properties:**

- **`items`** (`array of SearchResult objects`) (required): Matching payers sorted by relevance, with the most relevant matches listed first.
- **`items[].matches`** (`object`): Shows which properties in the payer record match the search query. This information helps you understand why Stedi returned this payer and which parts of the payer record matched the search terms. It's also especially useful for debugging search queries and building user interfaces that display matching text.
- Matching text is wrapped in `<b>` HTML tags for highlighting.
- This object only contains properties with matching text. For example, if none of the payer's aliases matched the search query, this object will not include the `aliases` property.
- **`items[].matches.aliases`** (`array of strings`): The parts of the payer's aliases that match the search query. Each alias that contains matching text is included as a separate entry, with matching portions wrapped in `<b>` tags. For example, searching for `XYZ` might return: [`<b>XYZ</b>123`, `ABC<b>XYZ</b>`].
- **`items[].matches.displayName`** (`string`): The part of the payer's display name that matched the search query. For example, searching for `Blue` might return: `Blue Cross <b>Blue</b> Shield`.
- **`items[].matches.names`** (`array of strings`): The parts of the payer's other names that match the search query. Each name that contains matching text is included as a separate entry, with matching portions wrapped in `<b>` tags. For example, searching for `Health` might return: [`Community <b>Health</b> Plan`, `<b>Health</b> Partners`].
- **`items[].matches.primaryPayerId`** (`string`): The part of the primary payer ID that matched the search query. For example, if you search for '12345', the results for a payer with primary payer ID `12345ABC` would return: `<b>12345</b>ABC`.
- **`items[].matches.stediId`** (`string`): The part of the payer's Stedi payer ID that matched the search query. Stedi payer IDs only support exact substring matching (no prefix or fuzzy matching). For example, if you search for `KRP`, the results for a payer with Stedi payer ID 'KRPCH' would be: `<b>KRP</b>CH`.
- **`items[].payer`** (`object`) (required)
- **`items[].payer.aliases`** (`array of strings`) (required): Alternative IDs associated with a payer. If a payer changes their `primaryPayerId`, aliases allow you to continue sending transactions to the payer using the old ID uninterrupted.
- **`items[].payer.avatarUrl`** (`string`): A URL pointing to an image file (`.png`, `.jpeg`, or `.jpg`) with the payer's logo. This is the same logo Stedi displays in the [Payer Network](https://www.stedi.com/healthcare/network). You can use this property to display payer logos in your system or application.

This property is only returned when a payer logo is available.
- **`items[].payer.conciseName`** (`string`): A shorter version of the payer's display name for use in dense UI views. This property is only returned when a concise name is available for the payer.
- **`items[].payer.coverageTypes`** (`array of strings`): A list of insurance coverage types that indicates whether this payer supports transactions for medical coverage, dental coverage, vision coverage, or a combination of these. For example: `["medical"]` or `["medical", "dental", "vision"]`.

When this array isn't in the response, it means Stedi hasn't classified the payer's coverage types yet, **not** that the payer doesn't support any coverage types.
- **`items[].payer.displayName`** (`string`) (required): The payer's business name, such as Cigna or Aetna. This is the name most commonly used to identify the payer.
- **`items[].payer.employerIdentificationNumbers`** (`array of strings`): Employer Identification Numbers (EINs) associated with this payer.
- **`items[].payer.enrollment`** (`object`): Information about enrollment requirements for the payer
- **`items[].payer.enrollment.ptanRequired`** (`boolean`): Whether a PTAN (Provider Transaction Access Number) is required for transaction enrollment.

The Provider Transaction Access Number (PTAN) is a Medicare-issued number given to providers upon enrollment with Medicare. This number is usually six digits and is assigned based on the type of service and the location of the provider. Upon enrollment, Medicare Administrating Contracting (MAC) providers should receive their assigned PTAN number in their approval letter.
- **`items[].payer.enrollment.transactionEnrollmentProcesses`** (`object`): Information about the transaction enrollment requirements and expected timeframes for each transaction type.
- **`items[].payer.enrollment.transactionEnrollmentProcesses.claimPayment`** (`object`): Details about the enrollment process for Electronic Remittance Advice (ERAs).
- **`items[].payer.enrollment.transactionEnrollmentProcesses.claimPayment.requestedEffectiveDate`** (`string`): Whether a payer supports specifying a requested effective date for transaction enrollments.
  - Allowed values: `SUPPORTED`, `NOT_SUPPORTED`
- **`items[].payer.enrollment.transactionEnrollmentProcesses.claimPayment.supportedAggregationPreferences`** (`array of strings`): Aggregation types this payer supports for 835 Electronic Remittance Advice (ERA) transactions. Payers can aggregate by the provider's NPI, tax ID (TIN), or both.
  - You can use this information to specify an `aggregationPreference` when submitting ERA enrollment requests.
  - This property is only returned when Stedi can determine the payer's supported aggregation types.
- **`items[].payer.enrollment.transactionEnrollmentProcesses.claimPayment.timeframe`** (`string`): Stedi's expected timeframe for completing the transaction enrollment process. `INSTANT` indicates that the enrollment will be in `LIVE` status within minutes of submitting the request.
  - Allowed values: `INSTANT`, `HOURS`, `DAYS`, `WEEKS`, `OVER_4_WEEKS`
- **`items[].payer.enrollment.transactionEnrollmentProcesses.claimPayment.type`** (`string`): Whether transaction enrollment is single or multi-step.
  - `ONE_CLICK` indicates that once you submit the transaction enrollment request, Stedi can complete the rest of the enrollment process without any further action from you.
  - `MULTI_STEP` indicates that you must complete additional steps to finish the enrollment process. Customer support will reach out with clear instructions explaining how to complete any remaining steps.
  - Allowed values: `ONE_CLICK`, `MULTI_STEP`
- **`items[].payer.enrollment.transactionEnrollmentProcesses.claimStatusInquiry`** (`object`): Details about the enrollment process for real-time claim status requests.
- **`items[].payer.enrollment.transactionEnrollmentProcesses.claimStatusInquiry.requestedEffectiveDate`** (`string`): Whether a payer supports specifying a requested effective date for transaction enrollments.
  - Allowed values: `SUPPORTED`, `NOT_SUPPORTED`
- **`items[].payer.enrollment.transactionEnrollmentProcesses.claimStatusInquiry.timeframe`** (`string`): Stedi's expected timeframe for completing the transaction enrollment process. `INSTANT` indicates that the enrollment will be in `LIVE` status within minutes of submitting the request.
  - Allowed values: `INSTANT`, `HOURS`, `DAYS`, `WEEKS`, `OVER_4_WEEKS`
- **`items[].payer.enrollment.transactionEnrollmentProcesses.claimStatusInquiry.type`** (`string`): Whether transaction enrollment is single or multi-step.
  - `ONE_CLICK` indicates that once you submit the transaction enrollment request, Stedi can complete the rest of the enrollment process without any further action from you.
  - `MULTI_STEP` indicates that you must complete additional steps to finish the enrollment process. Customer support will reach out with clear instructions explaining how to complete any remaining steps.
  - Allowed values: `ONE_CLICK`, `MULTI_STEP`
- **`items[].payer.enrollment.transactionEnrollmentProcesses.coordinationOfBenefits`** (`object`): Details about the enrollment process for coordination of benefits (COB) checks.
- **`items[].payer.enrollment.transactionEnrollmentProcesses.coordinationOfBenefits.requestedEffectiveDate`** (`string`): Whether a payer supports specifying a requested effective date for transaction enrollments.
  - Allowed values: `SUPPORTED`, `NOT_SUPPORTED`
- **`items[].payer.enrollment.transactionEnrollmentProcesses.coordinationOfBenefits.timeframe`** (`string`): Stedi's expected timeframe for completing the transaction enrollment process. `INSTANT` indicates that the enrollment will be in `LIVE` status within minutes of submitting the request.
  - Allowed values: `INSTANT`, `HOURS`, `DAYS`, `WEEKS`, `OVER_4_WEEKS`
- **`items[].payer.enrollment.transactionEnrollmentProcesses.coordinationOfBenefits.type`** (`string`): Whether transaction enrollment is single or multi-step.
  - `ONE_CLICK` indicates that once you submit the transaction enrollment request, Stedi can complete the rest of the enrollment process without any further action from you.
  - `MULTI_STEP` indicates that you must complete additional steps to finish the enrollment process. Customer support will reach out with clear instructions explaining how to complete any remaining steps.
  - Allowed values: `ONE_CLICK`, `MULTI_STEP`
- **`items[].payer.enrollment.transactionEnrollmentProcesses.dentalClaim`** (`object`): Details about the enrollment process for dental claim submission.
- **`items[].payer.enrollment.transactionEnrollmentProcesses.dentalClaim.requestedEffectiveDate`** (`string`): Whether a payer supports specifying a requested effective date for transaction enrollments.
  - Allowed values: `SUPPORTED`, `NOT_SUPPORTED`
- **`items[].payer.enrollment.transactionEnrollmentProcesses.dentalClaim.timeframe`** (`string`): Stedi's expected timeframe for completing the transaction enrollment process. `INSTANT` indicates that the enrollment will be in `LIVE` status within minutes of submitting the request.
  - Allowed values: `INSTANT`, `HOURS`, `DAYS`, `WEEKS`, `OVER_4_WEEKS`
- **`items[].payer.enrollment.transactionEnrollmentProcesses.dentalClaim.type`** (`string`): Whether transaction enrollment is single or multi-step.
  - `ONE_CLICK` indicates that once you submit the transaction enrollment request, Stedi can complete the rest of the enrollment process without any further action from you.
  - `MULTI_STEP` indicates that you must complete additional steps to finish the enrollment process. Customer support will reach out with clear instructions explaining how to complete any remaining steps.
  - Allowed values: `ONE_CLICK`, `MULTI_STEP`
- **`items[].payer.enrollment.transactionEnrollmentProcesses.eligibilityInquiry`** (`object`): Details about the enrollment process for eligibility checks.
- **`items[].payer.enrollment.transactionEnrollmentProcesses.eligibilityInquiry.requestedEffectiveDate`** (`string`): Whether a payer supports specifying a requested effective date for transaction enrollments.
  - Allowed values: `SUPPORTED`, `NOT_SUPPORTED`
- **`items[].payer.enrollment.transactionEnrollmentProcesses.eligibilityInquiry.timeframe`** (`string`): Stedi's expected timeframe for completing the transaction enrollment process. `INSTANT` indicates that the enrollment will be in `LIVE` status within minutes of submitting the request.
  - Allowed values: `INSTANT`, `HOURS`, `DAYS`, `WEEKS`, `OVER_4_WEEKS`
- **`items[].payer.enrollment.transactionEnrollmentProcesses.eligibilityInquiry.type`** (`string`): Whether transaction enrollment is single or multi-step.
  - `ONE_CLICK` indicates that once you submit the transaction enrollment request, Stedi can complete the rest of the enrollment process without any further action from you.
  - `MULTI_STEP` indicates that you must complete additional steps to finish the enrollment process. Customer support will reach out with clear instructions explaining how to complete any remaining steps.
  - Allowed values: `ONE_CLICK`, `MULTI_STEP`
- **`items[].payer.enrollment.transactionEnrollmentProcesses.institutionalClaim`** (`object`): Details about the enrollment process for institutional claim submission.
- **`items[].payer.enrollment.transactionEnrollmentProcesses.institutionalClaim.requestedEffectiveDate`** (`string`): Whether a payer supports specifying a requested effective date for transaction enrollments.
  - Allowed values: `SUPPORTED`, `NOT_SUPPORTED`
- **`items[].payer.enrollment.transactionEnrollmentProcesses.institutionalClaim.timeframe`** (`string`): Stedi's expected timeframe for completing the transaction enrollment process. `INSTANT` indicates that the enrollment will be in `LIVE` status within minutes of submitting the request.
  - Allowed values: `INSTANT`, `HOURS`, `DAYS`, `WEEKS`, `OVER_4_WEEKS`
- **`items[].payer.enrollment.transactionEnrollmentProcesses.institutionalClaim.type`** (`string`): Whether transaction enrollment is single or multi-step.
  - `ONE_CLICK` indicates that once you submit the transaction enrollment request, Stedi can complete the rest of the enrollment process without any further action from you.
  - `MULTI_STEP` indicates that you must complete additional steps to finish the enrollment process. Customer support will reach out with clear instructions explaining how to complete any remaining steps.
  - Allowed values: `ONE_CLICK`, `MULTI_STEP`
- **`items[].payer.enrollment.transactionEnrollmentProcesses.professionalClaim`** (`object`): Details about the enrollment process for professional claim submission.
- **`items[].payer.enrollment.transactionEnrollmentProcesses.professionalClaim.requestedEffectiveDate`** (`string`): Whether a payer supports specifying a requested effective date for transaction enrollments.
  - Allowed values: `SUPPORTED`, `NOT_SUPPORTED`
- **`items[].payer.enrollment.transactionEnrollmentProcesses.professionalClaim.timeframe`** (`string`): Stedi's expected timeframe for completing the transaction enrollment process. `INSTANT` indicates that the enrollment will be in `LIVE` status within minutes of submitting the request.
  - Allowed values: `INSTANT`, `HOURS`, `DAYS`, `WEEKS`, `OVER_4_WEEKS`
- **`items[].payer.enrollment.transactionEnrollmentProcesses.professionalClaim.type`** (`string`): Whether transaction enrollment is single or multi-step.
  - `ONE_CLICK` indicates that once you submit the transaction enrollment request, Stedi can complete the rest of the enrollment process without any further action from you.
  - `MULTI_STEP` indicates that you must complete additional steps to finish the enrollment process. Customer support will reach out with clear instructions explaining how to complete any remaining steps.
  - Allowed values: `ONE_CLICK`, `MULTI_STEP`
- **`items[].payer.enrollment.transactionEnrollmentProcesses.unsolicitedClaimAttachment`** (`object`): Details about the enrollment process for unsolicited claim attachments.
- **`items[].payer.enrollment.transactionEnrollmentProcesses.unsolicitedClaimAttachment.requestedEffectiveDate`** (`string`): Whether a payer supports specifying a requested effective date for transaction enrollments.
  - Allowed values: `SUPPORTED`, `NOT_SUPPORTED`
- **`items[].payer.enrollment.transactionEnrollmentProcesses.unsolicitedClaimAttachment.timeframe`** (`string`): Stedi's expected timeframe for completing the transaction enrollment process. `INSTANT` indicates that the enrollment will be in `LIVE` status within minutes of submitting the request.
  - Allowed values: `INSTANT`, `HOURS`, `DAYS`, `WEEKS`, `OVER_4_WEEKS`
- **`items[].payer.enrollment.transactionEnrollmentProcesses.unsolicitedClaimAttachment.type`** (`string`): Whether transaction enrollment is single or multi-step.
  - `ONE_CLICK` indicates that once you submit the transaction enrollment request, Stedi can complete the rest of the enrollment process without any further action from you.
  - `MULTI_STEP` indicates that you must complete additional steps to finish the enrollment process. Customer support will reach out with clear instructions explaining how to complete any remaining steps.
  - Allowed values: `ONE_CLICK`, `MULTI_STEP`
- **`items[].payer.names`** (`array of strings`) (required): Alternative names associated with a payer. These additional names help you search for and identify payers using the name most familiar to your organization.
- **`items[].payer.operatingStates`** (`array of strings`): A list of US state codes, territories, or `NATIONAL` that indicates the geographic regions where this payer operates. For example: `["CA", "OR"]` for a regional payer, or `["NATIONAL"]` for a payer that operates in all 50 U.S. states. Supported territories are listed separately.

When this array isn't in the response, it means Stedi hasn't classified the payer's operating states yet.
- **`items[].payer.parentPayerGroupId`** (`string`): The identifier for the corporate or brand group to which the payer belongs. The parent payer group is organizational metadata only – it doesn't affect routing, enrollment, or transaction support. Payers sharing a parent payer group may have different enrollment processes or other behaviors. This property is only returned when the payer has a parent payer group.
- **`items[].payer.parentPayerGroupName`** (`string`): The name of the corporate or brand group to which the payer belongs. The parent payer group is organizational metadata only – it doesn't affect routing, enrollment, or transaction support. Payers sharing a parent payer group may have different enrollment processes or other behaviors. This property is only returned when the payer has a parent payer group.
- **`items[].payer.primaryPayerId`** (`string`) (required): The most commonly used ID for a payer. This value often corresponds to the name the payer uses internally and provides to patients on member ID cards.
- **`items[].payer.programs`** (`array of strings`) (required): A list of insurance programs that this payer participates in. For example: `["MEDICAID", "MEDICARE"]`. If Stedi hasn't assigned any programs to this payer, this array is empty.
- **`items[].payer.stediId`** (`string`) (required): A unique ID that Stedi assigned to this payer and uses internally for routing requests. This ID will not change even if the `primaryPayerId` is updated.
- **`items[].payer.transactionSupport`** (`object`) (required): Whether the following transaction types are supported: 270 eligibility checks, 276/277 claim status requests, 837 claims (professional, dental, institutional), 835 ERAs (claim payments), 275 unsolicited claim attachments, and coordination of benefits checks.


If the value is `ENROLLMENT_REQUIRED`, Stedi supports the transaction type, but you must [enroll with the payer](https://www.stedi.com/docs/healthcare/supported-payers#enrollment) first.
- **`items[].payer.transactionSupport.claimPayment`** (`string`) (required)
  - Allowed values: `SUPPORTED`, `NOT_SUPPORTED`, `ENROLLMENT_REQUIRED`
- **`items[].payer.transactionSupport.claimStatus`** (`string`) (required)
  - Allowed values: `SUPPORTED`, `NOT_SUPPORTED`, `ENROLLMENT_REQUIRED`
- **`items[].payer.transactionSupport.coordinationOfBenefits`** (`string`) (required)
  - Allowed values: `SUPPORTED`, `NOT_SUPPORTED`, `ENROLLMENT_REQUIRED`
- **`items[].payer.transactionSupport.dentalClaimSubmission`** (`string`) (required)
  - Allowed values: `SUPPORTED`, `NOT_SUPPORTED`, `ENROLLMENT_REQUIRED`
- **`items[].payer.transactionSupport.eligibilityCheck`** (`string`) (required)
  - Allowed values: `SUPPORTED`, `NOT_SUPPORTED`, `ENROLLMENT_REQUIRED`
- **`items[].payer.transactionSupport.institutionalClaimSubmission`** (`string`) (required)
  - Allowed values: `SUPPORTED`, `NOT_SUPPORTED`, `ENROLLMENT_REQUIRED`
- **`items[].payer.transactionSupport.professionalClaimSubmission`** (`string`) (required)
  - Allowed values: `SUPPORTED`, `NOT_SUPPORTED`, `ENROLLMENT_REQUIRED`
- **`items[].payer.transactionSupport.unsolicitedClaimAttachment`** (`string`) (required)
  - Allowed values: `SUPPORTED`, `NOT_SUPPORTED`, `ENROLLMENT_REQUIRED`
- **`items[].payer.urls`** (`object`): URLs associated with a payer.
- **`items[].payer.urls.website`** (`string`): The payer's website URL.
- **`items[].score`** (`number`) (required): A relevance score indicating how well this payer matched the search query. Higher scores are better matches. The minimum score is 0.
- **`nextPageToken`** (`string`): Token that you can supply in subsequent requests to retrieve the next page of results. If not returned, there are no more results.
- **`stats`** (`object`) (required)
- **`stats.total`** (`integer`) (required): Total number of payers matching the search query.
- **`stats.transactionSupport`** (`object`) (required)
- **`stats.transactionSupport.claimPayment`** (`object`) (required)
- **`stats.transactionSupport.claimPayment.enrollmentRequired`** (`integer`) (required): Number of matching payers that require [transaction enrollment](https://www.stedi.com/docs/healthcare/transaction-enrollment) for this transaction type.
- **`stats.transactionSupport.claimPayment.notSupported`** (`integer`) (required): Number of matching payers that don't support this transaction type.
- **`stats.transactionSupport.claimPayment.supported`** (`integer`) (required): Number of matching payers that support this transaction type.
- **`stats.transactionSupport.claimStatus`** (`object`) (required)
- **`stats.transactionSupport.claimStatus.enrollmentRequired`** (`integer`) (required): Number of matching payers that require [transaction enrollment](https://www.stedi.com/docs/healthcare/transaction-enrollment) for this transaction type.
- **`stats.transactionSupport.claimStatus.notSupported`** (`integer`) (required): Number of matching payers that don't support this transaction type.
- **`stats.transactionSupport.claimStatus.supported`** (`integer`) (required): Number of matching payers that support this transaction type.
- **`stats.transactionSupport.coordinationOfBenefits`** (`object`) (required)
- **`stats.transactionSupport.coordinationOfBenefits.enrollmentRequired`** (`integer`) (required): Number of matching payers that require [transaction enrollment](https://www.stedi.com/docs/healthcare/transaction-enrollment) for this transaction type.
- **`stats.transactionSupport.coordinationOfBenefits.notSupported`** (`integer`) (required): Number of matching payers that don't support this transaction type.
- **`stats.transactionSupport.coordinationOfBenefits.supported`** (`integer`) (required): Number of matching payers that support this transaction type.
- **`stats.transactionSupport.dentalClaimSubmission`** (`object`) (required)
- **`stats.transactionSupport.dentalClaimSubmission.enrollmentRequired`** (`integer`) (required): Number of matching payers that require [transaction enrollment](https://www.stedi.com/docs/healthcare/transaction-enrollment) for this transaction type.
- **`stats.transactionSupport.dentalClaimSubmission.notSupported`** (`integer`) (required): Number of matching payers that don't support this transaction type.
- **`stats.transactionSupport.dentalClaimSubmission.supported`** (`integer`) (required): Number of matching payers that support this transaction type.
- **`stats.transactionSupport.eligibilityCheck`** (`object`) (required)
- **`stats.transactionSupport.eligibilityCheck.enrollmentRequired`** (`integer`) (required): Number of matching payers that require [transaction enrollment](https://www.stedi.com/docs/healthcare/transaction-enrollment) for this transaction type.
- **`stats.transactionSupport.eligibilityCheck.notSupported`** (`integer`) (required): Number of matching payers that don't support this transaction type.
- **`stats.transactionSupport.eligibilityCheck.supported`** (`integer`) (required): Number of matching payers that support this transaction type.
- **`stats.transactionSupport.institutionalClaimSubmission`** (`object`) (required)
- **`stats.transactionSupport.institutionalClaimSubmission.enrollmentRequired`** (`integer`) (required): Number of matching payers that require [transaction enrollment](https://www.stedi.com/docs/healthcare/transaction-enrollment) for this transaction type.
- **`stats.transactionSupport.institutionalClaimSubmission.notSupported`** (`integer`) (required): Number of matching payers that don't support this transaction type.
- **`stats.transactionSupport.institutionalClaimSubmission.supported`** (`integer`) (required): Number of matching payers that support this transaction type.
- **`stats.transactionSupport.professionalClaimSubmission`** (`object`) (required)
- **`stats.transactionSupport.professionalClaimSubmission.enrollmentRequired`** (`integer`) (required): Number of matching payers that require [transaction enrollment](https://www.stedi.com/docs/healthcare/transaction-enrollment) for this transaction type.
- **`stats.transactionSupport.professionalClaimSubmission.notSupported`** (`integer`) (required): Number of matching payers that don't support this transaction type.
- **`stats.transactionSupport.professionalClaimSubmission.supported`** (`integer`) (required): Number of matching payers that support this transaction type.
- **`stats.transactionSupport.unsolicitedClaimAttachment`** (`object`) (required)
- **`stats.transactionSupport.unsolicitedClaimAttachment.enrollmentRequired`** (`integer`) (required): Number of matching payers that require [transaction enrollment](https://www.stedi.com/docs/healthcare/transaction-enrollment) for this transaction type.
- **`stats.transactionSupport.unsolicitedClaimAttachment.notSupported`** (`integer`) (required): Number of matching payers that don't support this transaction type.
- **`stats.transactionSupport.unsolicitedClaimAttachment.supported`** (`integer`) (required): Number of matching payers that support this transaction type.
- **`stats.transactionSupportCounts`** (`object`) (required)
- **`stats.transactionSupportCounts.claimPayment`** (`object`) (required)
- **`stats.transactionSupportCounts.claimPayment.notSupported`** (`object`) (required)
- **`stats.transactionSupportCounts.claimPayment.notSupported.total`** (`integer`) (required): Total number of matching payers that don't support this transaction type.
- **`stats.transactionSupportCounts.claimPayment.supported`** (`object`) (required)
- **`stats.transactionSupportCounts.claimPayment.supported.enrollmentNotRequired`** (`integer`) (required): Number of matching payers that support this transaction type and don't require transaction enrollment.
- **`stats.transactionSupportCounts.claimPayment.supported.enrollmentRequired`** (`integer`) (required): Number of matching payers that support this transaction type and require [transaction enrollment](https://www.stedi.com/docs/healthcare/transaction-enrollment).
- **`stats.transactionSupportCounts.claimPayment.supported.total`** (`integer`) (required): Total number of matching payers that support this transaction type (`enrollmentRequired` + `enrollmentNotRequired`).
- **`stats.transactionSupportCounts.claimStatus`** (`object`) (required)
- **`stats.transactionSupportCounts.claimStatus.notSupported`** (`object`) (required)
- **`stats.transactionSupportCounts.claimStatus.notSupported.total`** (`integer`) (required): Total number of matching payers that don't support this transaction type.
- **`stats.transactionSupportCounts.claimStatus.supported`** (`object`) (required)
- **`stats.transactionSupportCounts.claimStatus.supported.enrollmentNotRequired`** (`integer`) (required): Number of matching payers that support this transaction type and don't require transaction enrollment.
- **`stats.transactionSupportCounts.claimStatus.supported.enrollmentRequired`** (`integer`) (required): Number of matching payers that support this transaction type and require [transaction enrollment](https://www.stedi.com/docs/healthcare/transaction-enrollment).
- **`stats.transactionSupportCounts.claimStatus.supported.total`** (`integer`) (required): Total number of matching payers that support this transaction type (`enrollmentRequired` + `enrollmentNotRequired`).
- **`stats.transactionSupportCounts.coordinationOfBenefits`** (`object`) (required)
- **`stats.transactionSupportCounts.coordinationOfBenefits.notSupported`** (`object`) (required)
- **`stats.transactionSupportCounts.coordinationOfBenefits.notSupported.total`** (`integer`) (required): Total number of matching payers that don't support this transaction type.
- **`stats.transactionSupportCounts.coordinationOfBenefits.supported`** (`object`) (required)
- **`stats.transactionSupportCounts.coordinationOfBenefits.supported.enrollmentNotRequired`** (`integer`) (required): Number of matching payers that support this transaction type and don't require transaction enrollment.
- **`stats.transactionSupportCounts.coordinationOfBenefits.supported.enrollmentRequired`** (`integer`) (required): Number of matching payers that support this transaction type and require [transaction enrollment](https://www.stedi.com/docs/healthcare/transaction-enrollment).
- **`stats.transactionSupportCounts.coordinationOfBenefits.supported.total`** (`integer`) (required): Total number of matching payers that support this transaction type (`enrollmentRequired` + `enrollmentNotRequired`).
- **`stats.transactionSupportCounts.dentalClaimSubmission`** (`object`) (required)
- **`stats.transactionSupportCounts.dentalClaimSubmission.notSupported`** (`object`) (required)
- **`stats.transactionSupportCounts.dentalClaimSubmission.notSupported.total`** (`integer`) (required): Total number of matching payers that don't support this transaction type.
- **`stats.transactionSupportCounts.dentalClaimSubmission.supported`** (`object`) (required)
- **`stats.transactionSupportCounts.dentalClaimSubmission.supported.enrollmentNotRequired`** (`integer`) (required): Number of matching payers that support this transaction type and don't require transaction enrollment.
- **`stats.transactionSupportCounts.dentalClaimSubmission.supported.enrollmentRequired`** (`integer`) (required): Number of matching payers that support this transaction type and require [transaction enrollment](https://www.stedi.com/docs/healthcare/transaction-enrollment).
- **`stats.transactionSupportCounts.dentalClaimSubmission.supported.total`** (`integer`) (required): Total number of matching payers that support this transaction type (`enrollmentRequired` + `enrollmentNotRequired`).
- **`stats.transactionSupportCounts.eligibilityCheck`** (`object`) (required)
- **`stats.transactionSupportCounts.eligibilityCheck.notSupported`** (`object`) (required)
- **`stats.transactionSupportCounts.eligibilityCheck.notSupported.total`** (`integer`) (required): Total number of matching payers that don't support this transaction type.
- **`stats.transactionSupportCounts.eligibilityCheck.supported`** (`object`) (required)
- **`stats.transactionSupportCounts.eligibilityCheck.supported.enrollmentNotRequired`** (`integer`) (required): Number of matching payers that support this transaction type and don't require transaction enrollment.
- **`stats.transactionSupportCounts.eligibilityCheck.supported.enrollmentRequired`** (`integer`) (required): Number of matching payers that support this transaction type and require [transaction enrollment](https://www.stedi.com/docs/healthcare/transaction-enrollment).
- **`stats.transactionSupportCounts.eligibilityCheck.supported.total`** (`integer`) (required): Total number of matching payers that support this transaction type (`enrollmentRequired` + `enrollmentNotRequired`).
- **`stats.transactionSupportCounts.institutionalClaimSubmission`** (`object`) (required)
- **`stats.transactionSupportCounts.institutionalClaimSubmission.notSupported`** (`object`) (required)
- **`stats.transactionSupportCounts.institutionalClaimSubmission.notSupported.total`** (`integer`) (required): Total number of matching payers that don't support this transaction type.
- **`stats.transactionSupportCounts.institutionalClaimSubmission.supported`** (`object`) (required)
- **`stats.transactionSupportCounts.institutionalClaimSubmission.supported.enrollmentNotRequired`** (`integer`) (required): Number of matching payers that support this transaction type and don't require transaction enrollment.
- **`stats.transactionSupportCounts.institutionalClaimSubmission.supported.enrollmentRequired`** (`integer`) (required): Number of matching payers that support this transaction type and require [transaction enrollment](https://www.stedi.com/docs/healthcare/transaction-enrollment).
- **`stats.transactionSupportCounts.institutionalClaimSubmission.supported.total`** (`integer`) (required): Total number of matching payers that support this transaction type (`enrollmentRequired` + `enrollmentNotRequired`).
- **`stats.transactionSupportCounts.professionalClaimSubmission`** (`object`) (required)
- **`stats.transactionSupportCounts.professionalClaimSubmission.notSupported`** (`object`) (required)
- **`stats.transactionSupportCounts.professionalClaimSubmission.notSupported.total`** (`integer`) (required): Total number of matching payers that don't support this transaction type.
- **`stats.transactionSupportCounts.professionalClaimSubmission.supported`** (`object`) (required)
- **`stats.transactionSupportCounts.professionalClaimSubmission.supported.enrollmentNotRequired`** (`integer`) (required): Number of matching payers that support this transaction type and don't require transaction enrollment.
- **`stats.transactionSupportCounts.professionalClaimSubmission.supported.enrollmentRequired`** (`integer`) (required): Number of matching payers that support this transaction type and require [transaction enrollment](https://www.stedi.com/docs/healthcare/transaction-enrollment).
- **`stats.transactionSupportCounts.professionalClaimSubmission.supported.total`** (`integer`) (required): Total number of matching payers that support this transaction type (`enrollmentRequired` + `enrollmentNotRequired`).
- **`stats.transactionSupportCounts.unsolicitedClaimAttachment`** (`object`) (required)
- **`stats.transactionSupportCounts.unsolicitedClaimAttachment.notSupported`** (`object`) (required)
- **`stats.transactionSupportCounts.unsolicitedClaimAttachment.notSupported.total`** (`integer`) (required): Total number of matching payers that don't support this transaction type.
- **`stats.transactionSupportCounts.unsolicitedClaimAttachment.supported`** (`object`) (required)
- **`stats.transactionSupportCounts.unsolicitedClaimAttachment.supported.enrollmentNotRequired`** (`integer`) (required): Number of matching payers that support this transaction type and don't require transaction enrollment.
- **`stats.transactionSupportCounts.unsolicitedClaimAttachment.supported.enrollmentRequired`** (`integer`) (required): Number of matching payers that support this transaction type and require [transaction enrollment](https://www.stedi.com/docs/healthcare/transaction-enrollment).
- **`stats.transactionSupportCounts.unsolicitedClaimAttachment.supported.total`** (`integer`) (required): Total number of matching payers that support this transaction type (`enrollmentRequired` + `enrollmentNotRequired`).

**Example:**

```json
{
  "items": [
    {
      "matches": {
        "names": [
          "Highmark <b>Blue</b> <b>Cross</b> <b>Blue</b> <b>Shield</b>",
          "Highmark <b>Blue</b> <b>Cross</b> <b>Blue</b> <b>Shield</b> Pennsylvania",
          "Highmark <b>Blue</b> <b>Cross</b> <b>Blue</b> <b>Shield</b> Pennsylvania Professional",
          "Highmark <b>Blue</b> <b>Shield</b>",
          "Keystone Health Plan West - Community <b>Blue</b> HMO"
        ]
      },
      "payer": {
        "aliases": [
          "10046",
          "100900",
          "10264",
          "10524",
          "2413",
          "54771",
          "95462",
          "PABCBS",
          "PABLS",
          "SB865",
          "SB865MA",
          "SZXAY"
        ],
        "avatarUrl": "https://prod-payer-avatars.payers.us.stedi.com/GUFCO/avatar.png?v=1763077235241",
        "conciseName": "Highmark PA",
        "coverageTypes": [
          "dental",
          "medical",
          "vision"
        ],
        "displayName": "Highmark of Pennsylvania",
        "enrollment": {
          "ptanRequired": false,
          "transactionEnrollmentProcesses": {
            "claimPayment": {
              "requestedEffectiveDate": "NOT_SUPPORTED",
              "supportedAggregationPreferences": [
                "NPI",
                "TIN"
              ],
              "timeframe": "DAYS",
              "type": "ONE_CLICK"
            },
            "claimStatusInquiry": {
              "timeframe": "DAYS",
              "type": "ONE_CLICK"
            }
          }
        },
        "names": [
          "Highmark Blue Cross Blue Shield",
          "Highmark Blue Cross Blue Shield Pennsylvania",
          "Highmark Blue Cross Blue Shield Pennsylvania Professional",
          "Highmark Blue Shield",
          "Keystone Health Plan West - Community Blue HMO",
          "First Priority Life Insurance Company (FPLIC) Out-of-Area Claims",
          "Highmark of Pennsylvania - Medicare Advantage"
        ],
        "operatingStates": [
          "PA"
        ],
        "parentPayerGroupId": "QOSPQ",
        "parentPayerGroupName": "Highmark",
        "primaryPayerId": "54771",
        "programs": [
          "MEDICARE_ADVANTAGE"
        ],
        "stediId": "GUFCO",
        "transactionSupport": {
          "claimPayment": "ENROLLMENT_REQUIRED",
          "claimStatus": "ENROLLMENT_REQUIRED",
          "coordinationOfBenefits": "SUPPORTED",
          "dentalClaimSubmission": "NOT_SUPPORTED",
          "eligibilityCheck": "ENROLLMENT_REQUIRED",
          "institutionalClaimSubmission": "NOT_SUPPORTED",
          "professionalClaimSubmission": "SUPPORTED",
          "unsolicitedClaimAttachment": "NOT_SUPPORTED"
        }
      },
      "score": 2314894167593451500
    }
  ],
  "stats": {
    "total": 142,
    "transactionSupport": {
      "claimPayment": {
        "enrollmentRequired": 113,
        "notSupported": 29,
        "supported": 0
      },
      "claimStatus": {
        "enrollmentRequired": 3,
        "notSupported": 55,
        "supported": 84
      },
      "coordinationOfBenefits": {
        "enrollmentRequired": 0,
        "notSupported": 114,
        "supported": 28
      },
      "dentalClaimSubmission": {
        "enrollmentRequired": 2,
        "notSupported": 95,
        "supported": 45
      },
      "eligibilityCheck": {
        "enrollmentRequired": 5,
        "notSupported": 33,
        "supported": 104
      },
      "institutionalClaimSubmission": {
        "enrollmentRequired": 10,
        "notSupported": 30,
        "supported": 102
      },
      "professionalClaimSubmission": {
        "enrollmentRequired": 9,
        "notSupported": 16,
        "supported": 117
      },
      "unsolicitedClaimAttachment": {
        "enrollmentRequired": 0,
        "notSupported": 109,
        "supported": 33
      }
    },
    "transactionSupportCounts": {
      "claimPayment": {
        "notSupported": {
          "total": 29
        },
        "supported": {
          "enrollmentNotRequired": 0,
          "enrollmentRequired": 113,
          "total": 113
        }
      },
      "claimStatus": {
        "notSupported": {
          "total": 55
        },
        "supported": {
          "enrollmentNotRequired": 84,
          "enrollmentRequired": 3,
          "total": 87
        }
      },
      "coordinationOfBenefits": {
        "notSupported": {
          "total": 114
        },
        "supported": {
          "enrollmentNotRequired": 28,
          "enrollmentRequired": 0,
          "total": 28
        }
      },
      "dentalClaimSubmission": {
        "notSupported": {
          "total": 95
        },
        "supported": {
          "enrollmentNotRequired": 45,
          "enrollmentRequired": 2,
          "total": 47
        }
      },
      "eligibilityCheck": {
        "notSupported": {
          "total": 33
        },
        "supported": {
          "enrollmentNotRequired": 104,
          "enrollmentRequired": 5,
          "total": 109
        }
      },
      "institutionalClaimSubmission": {
        "notSupported": {
          "total": 30
        },
        "supported": {
          "enrollmentNotRequired": 102,
          "enrollmentRequired": 10,
          "total": 112
        }
      },
      "professionalClaimSubmission": {
        "notSupported": {
          "total": 16
        },
        "supported": {
          "enrollmentNotRequired": 117,
          "enrollmentRequired": 9,
          "total": 126
        }
      },
      "unsolicitedClaimAttachment": {
        "notSupported": {
          "total": 109
        },
        "supported": {
          "enrollmentNotRequired": 33,
          "enrollmentRequired": 0,
          "total": 33
        }
      }
    }
  }
}
```

#### 400

ValidationException 400 response

**Schema:** `ValidationExceptionResponseContent`

**Properties:**

- **`fieldList`** (`array of ValidationExceptionField objects`): A list of specific failures encountered while validating the input.
A member can appear in this list more than once if it failed to satisfy multiple constraints.
- **`fieldList[].message`** (`string`) (required): A detailed description of the validation failure.
- **`fieldList[].path`** (`string`) (required): A JSONPointer expression to the structure member whose value failed to satisfy the modeled constraints.
- **`message`** (`string`) (required): A summary of the validation failure.
#### 401

UnauthorizedException 401 response

**Schema:** `UnauthorizedExceptionResponseContent`

**Properties:**

- **`code`** (`string`): Error classification code
- **`message`** (`string`) (required): Human-readable error message
#### 404

ResourceNotFoundException 404 response

**Schema:** `ResourceNotFoundExceptionResponseContent`

**Properties:**

- **`code`** (`string`): Error classification code
- **`message`** (`string`) (required): Human-readable error message
#### 500

InternalFailureException 500 response

**Schema:** `InternalFailureExceptionResponseContent`

**Properties:**

- **`code`** (`string`): Error classification code
- **`message`** (`string`) (required): Human-readable error message


# Retrieve Transaction Input
Source: https://www.stedi.com/docs/healthcare/api-reference/get-transactions-input


This endpoint retrieves a transaction's input document before it passes through any translation or mappings.

The input document can be in either X12 EDI or JSON format, depending on the direction of the transaction. For example, if a payer sends you an 835 ERA, the input document will be in the original X12 EDI format.

Note that when the input is X12 EDI, the document only includes the transaction information (`ST` to `SE` segments) and doesn't include the envelope. To retrieve the full X12 EDI document with the envelope, use the [Retrieve File Execution Input](/healthcare/api-reference/get-execution-input) endpoint instead.

There are no size restrictions on documents when fetching from this endpoint.

## Response [#response]

This endpoint returns a `302` Temporary redirect to the document download URL. Many HTTP clients will automatically follow this redirect, or have a simple follow redirects configuration to set. For example, using the `-L` or `--location` flag in cURL will automatically follow the redirect. In this case, the response will contain the full transaction input document.

If your implementation doesn't automatically follow the redirect, the response body contains a JSON object with a single key `documentDownloadUrl`. This property contains a temporary URL to download the document. The URL expires after 60 minutes.

## API Specification

Retrieve a transaction's input document.

**Endpoint:** `GET /transactions/{transactionId}/input`

**Base URL:** `https://core.us.stedi.com/2023-08-01`

### Parameters

- **`transactionId`** (path) (required): A unique identifier for the processed transaction within Stedi. This ID is included in the transaction processed event, or you can retrieve it manually from the transaction's details page within the Stedi portal.
  - Type: `string`

### Responses

#### 302

GetTransactionInputDocument 302 response

**Schema:** `GetTransactionInputDocumentResponseContent`

**Properties:**

- **`documentDownloadUrl`** (`string`): A URL to download the document. This URL is available for 60 minutes.

**Example:**

```json
{
  "documentDownloadUrl": "https://stedi-default-core-artifacts.s3.us-east-1.amazonaws.com/55907f88-999e-4912-9e9..."
}
```

#### 400

BadRequestException 400 response

**Schema:** `BadRequestExceptionResponseContent`

**Properties:**

- **`message`** (`string`) (required)
- **`code`** (`string`)
#### 401

UnauthorizedException 401 response

**Schema:** `UnauthorizedExceptionResponseContent`

**Properties:**

- **`message`** (`string`) (required)
- **`code`** (`string`)
#### 403

AccessDeniedException 403 response

**Schema:** `AccessDeniedExceptionResponseContent`

**Properties:**

- **`message`** (`string`) (required)
- **`code`** (`string`)
#### 404

ResourceNotFoundException 404 response

**Schema:** `ResourceNotFoundExceptionResponseContent`

**Properties:**

- **`message`** (`string`) (required)
- **`code`** (`string`)
#### 409

ResourceUnderChangeException 409 response

**Schema:** `ResourceUnderChangeExceptionResponseContent`

**Properties:**

- **`message`** (`string`) (required)
#### 422

UnprocessableEntityException 422 response

**Schema:** `UnprocessableEntityExceptionResponseContent`

**Properties:**

- **`message`** (`string`) (required)
- **`code`** (`string`)
#### 429

ThrottlingException 429 response

**Schema:** `ThrottlingExceptionResponseContent`

**Properties:**

- **`message`** (`string`) (required)
- **`code`** (`string`)
#### 500

ServiceException 500 response

**Schema:** `ServiceExceptionResponseContent`

**Properties:**

- **`message`** (`string`) (required)
- **`exceptionCause`** (`object`)
- **`exceptionCause.name`** (`string`)
- **`exceptionCause.message`** (`string`)
- **`exceptionCause.stack`** (`string`)
#### 503

ServiceUnavailableException 503 response

**Schema:** `ServiceUnavailableExceptionResponseContent`

**Properties:**

- **`message`** (`string`) (required)
- **`code`** (`string`)
#### 504

GatewayTimeoutException 504 response

**Schema:** `GatewayTimeoutExceptionResponseContent`

**Properties:**

- **`message`** (`string`) (required)
- **`code`** (`string`)


# Retrieve Transaction Output
Source: https://www.stedi.com/docs/healthcare/api-reference/get-transactions-output


This endpoint retrieves a transaction's output document, which is the result after Stedi has finished translating and mapping the input document.

The output document can be in either X12 EDI or JSON format, depending on the direction of the transaction. For example, if a payer sends you an 835 ERA, the output document will be a JSON representation of the 835 ERA.

Note that when the output is X12 EDI, the document only includes the transaction information (`ST` to `SE` segments) and doesn't include the envelope.

There are no size restrictions on documents when fetching from this endpoint.

## Response [#response]

This endpoint returns a `302` Temporary redirect to the document download URL. Many HTTP clients will automatically follow this redirect, or have a simple follow redirects configuration to set. For example, using the `-L` or `--location` flag in cURL will automatically follow the redirect. In this case, the response body will contain the full transaction output document.

If your implementation doesn't automatically follow the redirect, the response body contains a JSON object with a single key `documentDownloadUrl`. This property contains a temporary URL to download the document. The URL expires after 60 minutes.

## API Specification

Retrieve a transaction's output document.

**Endpoint:** `GET /transactions/{transactionId}/output`

**Base URL:** `https://core.us.stedi.com/2023-08-01`

### Parameters

- **`transactionId`** (path) (required): A unique identifier for the processed transaction within Stedi. This ID is included in the transaction processed event, or you can retrieve it manually from the transaction's details page within the Stedi portal.
  - Type: `string`

### Responses

#### 302

GetTransactionOutputDocument 302 response

**Schema:** `GetTransactionOutputDocumentResponseContent`

**Properties:**

- **`documentDownloadUrl`** (`string`): A URL to download the document. This URL is available for 60 minutes.

**Example:**

```json
{
  "documentDownloadUrl": "https://stedi-default-core-artifacts.s3.us-east-1.amazonaws.com/55907f88-999e-4912-9e9..."
}
```

#### 400

BadRequestException 400 response

**Schema:** `BadRequestExceptionResponseContent`

**Properties:**

- **`message`** (`string`) (required)
- **`code`** (`string`)
#### 401

UnauthorizedException 401 response

**Schema:** `UnauthorizedExceptionResponseContent`

**Properties:**

- **`message`** (`string`) (required)
- **`code`** (`string`)
#### 403

AccessDeniedException 403 response

**Schema:** `AccessDeniedExceptionResponseContent`

**Properties:**

- **`message`** (`string`) (required)
- **`code`** (`string`)
#### 404

ResourceNotFoundException 404 response

**Schema:** `ResourceNotFoundExceptionResponseContent`

**Properties:**

- **`message`** (`string`) (required)
- **`code`** (`string`)
#### 409

ResourceUnderChangeException 409 response

**Schema:** `ResourceUnderChangeExceptionResponseContent`

**Properties:**

- **`message`** (`string`) (required)
#### 422

UnprocessableEntityException 422 response

**Schema:** `UnprocessableEntityExceptionResponseContent`

**Properties:**

- **`message`** (`string`) (required)
- **`code`** (`string`)
#### 429

ThrottlingException 429 response

**Schema:** `ThrottlingExceptionResponseContent`

**Properties:**

- **`message`** (`string`) (required)
- **`code`** (`string`)
#### 500

ServiceException 500 response

**Schema:** `ServiceExceptionResponseContent`

**Properties:**

- **`message`** (`string`) (required)
- **`exceptionCause`** (`object`)
- **`exceptionCause.name`** (`string`)
- **`exceptionCause.message`** (`string`)
- **`exceptionCause.stack`** (`string`)
#### 503

ServiceUnavailableException 503 response

**Schema:** `ServiceUnavailableExceptionResponseContent`

**Properties:**

- **`message`** (`string`) (required)
- **`code`** (`string`)
#### 504

GatewayTimeoutException 504 response

**Schema:** `GatewayTimeoutExceptionResponseContent`

**Properties:**

- **`message`** (`string`) (required)
- **`code`** (`string`)


# Retrieve Transaction
Source: https://www.stedi.com/docs/healthcare/api-reference/get-transactions


This endpoint retrieves information about the transaction with the specified `transactionId`.

## API Specification

Fetch details for a specific transaction.

**Endpoint:** `GET /transactions/{transactionId}`

**Base URL:** `https://core.us.stedi.com/2023-08-01`

### Parameters

- **`transactionId`** (path) (required): A unique identifier for the processed transaction within Stedi. This ID is included in the transaction processed event. You can also retrieve it manually from the transaction's details page within the Stedi portal.
  - Type: `string`

### Responses

#### 200

GetTransaction 200 response

**Schema:** `GetTransactionResponseContent`

**Properties:**

- **`transactionId`** (`string`) (required): A unique identifier for the processed transaction within Stedi. This ID is included in the transaction processed event. You can also retrieve it manually from the transaction's details page within the Stedi portal.
- **`fileExecutionId`** (`string`) (required): A unique identifier for the processed file within Stedi. This ID is included in the transaction processed event. You can also retrieve it manually from the file's details page in the Stedi portal.
- **`status`** (`string`) (required): A status indicating whether Stedi was able to successfully process the transaction.
  - Allowed values: `failed`, `succeeded`
- **`direction`** (`string`) (required): The direction of the transaction. Inbound transactions are those you receive from a payer, provider, or other trading partner. Outbound transactions are those you send to a payer, provider, or other trading partner.
  - Allowed values: `INBOUND`, `OUTBOUND`, `UNKNOWN`
- **`mode`** (`string`) (required): Indicates whether the transaction contains test or production data. Stedi determines this from the value in [`ISA15` Usage Indicator Code](https://www.stedi.com/edi/x12/segment/ISA#ISA-15).
  - Allowed values: `test`, `production`, `other`
- **`processedAt`** (`string`) (required): The date and time when Stedi processed the transaction, in ISO 8601 format. For example, `2023-08-28T00:00:00Z`.
- **`artifacts`** (`array of Artifact objects`) (required): A list of artifacts related to the transaction.
- **`artifacts[].artifactType`** (`string`) (required): The format of the artifact.
  - Allowed values: `text/csv`, `application/edifact`, `application/filepart`, `application/json`, `application/pdf`, `text/psv`, `text/tsv`, `application/edi-x12`, `application/xml`, `application/zip`, `image/jpeg`, `image/png`, `image/tiff`, `text/plain`, `unknown`
- **`artifacts[].usage`** (`string`) (required): The type of data the artifact contains. For example, an input artifact represents the original data Stedi received before processing, while an output artifact represents the processed data.

For example, for an inbound 835 ERA from a payer, the input artifact would be the original X12 EDI, and the output artifact would be the JSON representation of the ERA.
  - Allowed values: `attachment`, `input`, `metadata`, `output`
- **`artifacts[].sizeBytes`** (`number`) (required): The size of the artifact in bytes.
- **`artifacts[].url`** (`string`) (required): A URL to download the artifact.
- **`artifacts[].model`** (`string`) (required): The model of the artifact, which indicates the type of process or operation it represents. For example, an execution artifact represents a file that was processed, a fragment artifact represents a part of a larger transaction, and a fault artifact represents an error that occurred during processing.
  - Allowed values: `execution`, `fragment`, `transaction`, `fault`
- **`partnership`** (`object`) (required): Information about the associated partnership.

A partnership describes all aspects of the EDI relationship between two profiles in your Stedi account, such as which transaction sets they will exchange and other important information for processing EDI files. If you're sending or receiving transactions through the Stedi clearinghouse, Stedi configures the necessary partnership for you automatically when you set up your account.
- **`partnership.partnershipId`** (`string`) (required): The unique identifier for the partnership within the Stedi platform.

A partnership describes all aspects of the EDI relationship between two profiles in your Stedi account, such as which transaction sets they will exchange and other important information for processing EDI files. If you're sending or receiving transactions through the Stedi clearinghouse, Stedi configures the necessary partnerships for you automatically when you set up your account.
- **`partnership.partnershipType`** (`string`) (required): The type of partnership, which determines the EDI standard used for exchanging transactions.
  - Allowed values: `x12`, `edifact`
- **`partnership.sender`** (`object`) (required): The entity that initiated the transaction.
- **`partnership.sender.profileId`** (`string`) (required): A unique identifier for the profile within the Stedi platform.
- **`partnership.receiver`** (`object`) (required): The entity that is receiving the transaction.
- **`partnership.receiver.profileId`** (`string`) (required): A unique identifier for the profile within the Stedi platform.
- **`x12`** (`object`): Details about the X12 EDI transaction.
- **`x12.metadata`** (`object`) (required): Metadata about the X12 EDI transaction, including information from the interchange, functional group, and transaction headers as well as the sender and receiver IDs.
- **`x12.metadata.interchange`** (`object`) (required): Data from the Interchange Control Header of the X12 EDI file.
- **`x12.metadata.interchange.acknowledgmentRequestedCode`** (`string`) (required): The value of [`ISA14`](https://www.stedi.com/edi/x12/segment/ISA#ISA-14) in the Interchange Control Header, which indicates whether the sender is requesting a [`TA1` Interchange Acknowledgment](https://www.stedi.com/edi/x12/segment/TA1).
- **`x12.metadata.interchange.controlNumber`** (`number`) (required): The control number in the Interchange Control Header.
- **`x12.metadata.functionalGroup`** (`object`) (required): Data from the Functional Group Header of the X12 EDI file.
- **`x12.metadata.functionalGroup.controlNumber`** (`number`) (required): The Group Control Number ([`GS06`](https://www.stedi.com/edi/x12/segment/GS#GS-06)).
- **`x12.metadata.functionalGroup.date`** (`string`) (required): The date in the Functional Group Header ([`GS04`](https://www.stedi.com/edi/x12/segment/GS#GS-04)), formatted as `YYYY-MM-DD`. For example, `2023-08-28`.
- **`x12.metadata.functionalGroup.functionalIdentifierCode`** (`string`) (required): The Functional Identifier Code ([`GS01`](https://www.stedi.com/edi/x12/segment/GS#GS-01)), which indicates the type of transaction. For example, `HC` for an 837 Healthcare Claim.
- **`x12.metadata.functionalGroup.time`** (`string`) (required): The Time ([`GS05`](https://www.stedi.com/edi/x12/segment/GS#GS-05)), formatted as `HH:MM:SS`. For example, `21:29:57`.
- **`x12.metadata.functionalGroup.release`** (`string`) (required): The Version/Release/Industry Identifier Code ([`GS08`](https://www.stedi.com/edi/x12/segment/GS#GS-08)), which indicates the version of the X12 standard used. For example, `005010X222A1`.
- **`x12.metadata.transaction`** (`object`) (required): Data from the Transaction Set Header of the X12 EDI file.
- **`x12.metadata.transaction.controlNumber`** (`string`) (required): The Transaction Set Control Number ([`ST02`](https://www.stedi.com/edi/x12/segment/ST#ST-02)).
- **`x12.metadata.transaction.transactionSetIdentifier`** (`string`) (required): The Transaction Set Identifier Code ([`ST01`](https://www.stedi.com/edi/x12/segment/ST#ST-01)), which indicates the type of transaction. For example, `837` for an 837 Healthcare Claim.
- **`x12.metadata.sender`** (`object`) (required): The Application Code and ISA ID for the profile.
- **`x12.metadata.sender.applicationCode`** (`string`) (required): The Application Code for the profile, which is used to identify the entity in the `GS` header of an EDI file.
- **`x12.metadata.sender.isa`** (`object`) (required): The Interchange ID and qualifier.
- **`x12.metadata.sender.isa.qualifier`** (`string`) (required): The Interchange Sender ID Qualifier, which indicates the type of identifier. For example, `ZZ` for a mutually defined identifier.
- **`x12.metadata.sender.isa.id`** (`string`) (required): The Interchange ID, which is the unique identifier for the entity in the EDI file.
- **`x12.metadata.receiver`** (`object`) (required): The Application Code and ISA ID for the profile.
- **`x12.metadata.receiver.applicationCode`** (`string`) (required): The Application Code for the profile, which is used to identify the entity in the `GS` header of an EDI file.
- **`x12.metadata.receiver.isa`** (`object`) (required): The Interchange ID and qualifier.
- **`x12.metadata.receiver.isa.qualifier`** (`string`) (required): The Interchange Sender ID Qualifier, which indicates the type of identifier. For example, `ZZ` for a mutually defined identifier.
- **`x12.metadata.receiver.isa.id`** (`string`) (required): The Interchange ID, which is the unique identifier for the entity in the EDI file.
- **`x12.transactionSetting`** (`object`): The IDs for the guide and transaction setting Stedi used to process the transaction.
- **`x12.transactionSetting.guideId`** (`string`): The unique identifier for the Stedi guide used to process the transaction.

Stedi guides are machine-readable specifications for X12 EDI transactions. They describe how to structure and validate EDI files for each transaction type.
- **`x12.transactionSetting.transactionSettingId`** (`string`): The unique identifier for the transaction setting Stedi used to process the transaction.

Transaction settings configure how Stedi processes specific transaction types, such as which Stedi guide to use and other processing options. If you're using the Stedi clearinghouse, Stedi automatically configures the required transaction settings for you when you set up your account.
- **`fragments`** (`object`): Details about fragments included in the transaction, if applicable. Fragments break large transactions into smaller parts for easier processing and management.
- **`fragments.keyName`** (`string`) (required): The JSON schema key name for the segment in the Stedi guide used to split the transaction into fragments. For example, in an 834 Health Care Benefit Enrollment and Maintenance, this would be `member_level_detail_INS_loop`.
- **`fragments.fragmentCount`** (`number`) (required): The total number of fragments in the transaction.
- **`fragments.batchSize`** (`number`) (required): The maximum size of each fragment in kilobytes (KB). Stedi uses this to automatically split large inbound transactions into fragments.
- **`translationErrors`** (`array of TranslationError objects`): Details about errors that prevented Stedi from processing the transaction.
- **`translationErrors[].context`** (`object`)
- **`translationErrors[].context.code`** (`string`): The error code.
- **`translationErrors[].context.schemaPath`** (`string`): The name of the JSON property where the error occurred.
- **`translationErrors[].mark`** (`object`): The location in the document where the problem occurred. May be a single index or a range.
- **`translationErrors[].mark.start`** (`object`) (required)
- **`translationErrors[].mark.start.line`** (`number`) (required): The line number in the document where the problem occurred.
- **`translationErrors[].mark.start.column`** (`number`) (required): The column number in the document where the problem occurred.
- **`translationErrors[].mark.end`** (`object`)
- **`translationErrors[].mark.end.line`** (`number`) (required): The line number in the document where the problem occurred.
- **`translationErrors[].mark.end.column`** (`number`) (required): The column number in the document where the problem occurred.
- **`translationErrors[].message`** (`string`) (required): A message describing the error that occurred during translation.
- **`businessIdentifiers`** (`array of BusinessIdentifier objects`): Any business identifiers extracted from the transaction.
- **`businessIdentifiers[].elementId`** (`string`) (required): The identifier of the element containing the business identifier in the EDI specification.
- **`businessIdentifiers[].element`** (`string`) (required): The element where the business identifier was found. For example, `BHT03` for 837 claims.
- **`businessIdentifiers[].name`** (`string`) (required): The friendly name of the business identifier. For example, `Originator Application Transaction Identifier`.
- **`businessIdentifiers[].value`** (`string`) (required): The value of the business identifier.

**Example:**

```json
{
  "direction": "INBOUND",
  "mode": "test",
  "status": "succeeded",
  "fileExecutionId": "95236a56-a020-4522-8fef-bcffcec0ec1d",
  "transactionId": "c8dd3a67-b8ca-4b0e-aa73-e0de82414b8f",
  "processedAt": "2025-04-02T21:30:15.801Z",
  "artifacts": [
    {
      "artifactType": "application/edi-x12",
      "sizeBytes": 8374,
      "model": "transaction",
      "usage": "input",
      "url": "https://core.us.stedi.com/2023-08-01/transactions/c8dd1111-b8ca-4330e-aa73-e0de33314b8f/input"
    },
    {
      "artifactType": "application/json",
      "sizeBytes": 76898,
      "model": "transaction",
      "usage": "output",
      "url": "https://core.us.stedi.com/2023-08-01/transactions/c8dd3a67-b8ca-4b0e-kk73-55667882414b8f/output"
    }
  ],
  "partnership": {
    "partnershipId": "stedi_test-sender",
    "partnershipType": "x12",
    "sender": {
      "profileId": "test-sender"
    },
    "receiver": {
      "profileId": "stedi"
    }
  },
  "businessIdentifiers": [
    {
      "elementId": "127",
      "element": "BHT-03",
      "name": "Reference Identification",
      "value": "XXXXXX"
    }
  ],
  "x12": {
    "metadata": {
      "interchange": {
        "acknowledgmentRequestedCode": "0",
        "controlNumber": 1
      },
      "functionalGroup": {
        "controlNumber": 1,
        "release": "005010X222A1",
        "date": "2025-04-02",
        "time": "21:29:57",
        "functionalIdentifierCode": "HC"
      },
      "transaction": {
        "controlNumber": "0001",
        "transactionSetIdentifier": "837"
      },
      "receiver": {
        "applicationCode": "STEDI-TEST",
        "isa": {
          "qualifier": "ZZ",
          "id": "STEDI-TEST"
        }
      },
      "sender": {
        "applicationCode": "TestSender",
        "isa": {
          "qualifier": "ZZ",
          "id": "TestSender"
        }
      }
    },
    "transactionSetting": {
      "guideId": "01JQW6E5RSBSTKS3ZQ1SPR4019",
      "transactionSettingId": "01JQW6E72Q3HDXM40YYAQCBZDY"
    }
  }
}
```

#### 400

BadRequestException 400 response

**Schema:** `BadRequestExceptionResponseContent`

**Properties:**

- **`message`** (`string`) (required)
- **`code`** (`string`)
#### 401

UnauthorizedException 401 response

**Schema:** `UnauthorizedExceptionResponseContent`

**Properties:**

- **`message`** (`string`) (required)
- **`code`** (`string`)
#### 403

AccessDeniedException 403 response

**Schema:** `AccessDeniedExceptionResponseContent`

**Properties:**

- **`message`** (`string`) (required)
- **`code`** (`string`)
#### 404

ResourceNotFoundException 404 response

**Schema:** `ResourceNotFoundExceptionResponseContent`

**Properties:**

- **`message`** (`string`) (required)
- **`code`** (`string`)
#### 409

ResourceUnderChangeException 409 response

**Schema:** `ResourceUnderChangeExceptionResponseContent`

**Properties:**

- **`message`** (`string`) (required)
#### 422

UnprocessableEntityException 422 response

**Schema:** `UnprocessableEntityExceptionResponseContent`

**Properties:**

- **`message`** (`string`) (required)
- **`code`** (`string`)
#### 429

ThrottlingException 429 response

**Schema:** `ThrottlingExceptionResponseContent`

**Properties:**

- **`message`** (`string`) (required)
- **`code`** (`string`)
#### 500

ServiceException 500 response

**Schema:** `ServiceExceptionResponseContent`

**Properties:**

- **`message`** (`string`) (required)
- **`exceptionCause`** (`object`)
- **`exceptionCause.name`** (`string`)
- **`exceptionCause.message`** (`string`)
- **`exceptionCause.stack`** (`string`)
#### 503

ServiceUnavailableException 503 response

**Schema:** `ServiceUnavailableExceptionResponseContent`

**Properties:**

- **`message`** (`string`) (required)
- **`code`** (`string`)
#### 504

GatewayTimeoutException 504 response

**Schema:** `GatewayTimeoutExceptionResponseContent`

**Properties:**

- **`message`** (`string`) (required)
- **`code`** (`string`)


# API Reference
Source: https://www.stedi.com/docs/healthcare/api-reference


You can download our [OpenAPI](https://www.openapis.org/) specs below. OpenAPI is a standard, machine-readable format for describing HTTP APIs. You can use our OpenAPI spec for reference or to generate client code.

<CardGroup cols="3">
  <Card title="Claim submission and real-time eligibility" icon="hospital-line" href="https://github.com/Stedi/openApi/blob/main/healthcare.json" />

  <Card title="Claim attachments" icon="attachment-2" href="https://github.com/Stedi/openApi/blob/main/claims.json" />

  <Card title="Batch eligibility" icon="stack-line" href="https://github.com/Stedi/openApi/blob/main/manager.json" />

  <Card title="Transaction enrollment" icon="arrow-left-right-line" href="https://github.com/Stedi/openApi/blob/main/enrollment.json" />

  <Card title="Payers" icon="arrow-left-right-line" href="https://github.com/Stedi/openApi/blob/main/payers.json" />

  <Card title="Event destinations" icon="mail-check-line" href="https://github.com/Stedi/openApi/blob/main/event-destinations.json" />
</CardGroup>

## Clearinghouse APIs [#clearinghouse-apis]

Our APIs allow you to automate business flows like [eligibility checks](/healthcare/api-reference/post-healthcare-eligibility) and [claims processing](/healthcare/api-reference/post-healthcare-claims). We also offer APIs for retrieving [Stedi's up-to-date payer list](/healthcare/api-reference/get-payers) and [provider enrollments](/healthcare/api-reference/post-enrollment-create-provider) with payers.

## Authentication [#authentication]

You need an API key to use any Stedi API. You pass the API key in the `Authorization` header of every request and Stedi determines which resources you can access.

### API key types [#api-key-types]

You can create two types of Stedi API keys: Test and Production.

Test API keys allow you to send mock requests to Stedi healthcare APIs and receive realistic mock responses, so you can test your integration without sending PHI or PII.

* Test keys can only be used in test mode with approved test requests. APIs that support test keys include a list of approved test requests you can send.
* Test keys are currently supported for the [Real-Time Eligibility Check](/healthcare/api-reference/post-healthcare-eligibility) API.

Production API keys allow you to send transactions to trading partners and payers. All Stedi APIs support production API keys.

### Creating an API key [#creating-an-api-key]

To create an API key:

1. Go to the [API keys page](https://portal.stedi.com/app/settings/developer/api-keys) in your developer settings.
2. Click **Generate new API Key**.
3. Enter a name for your API key. We recommend using a unique name and adding a `test` or `production` prefix to indicate the key type.
4. Choose whether the key is for test or production use.
5. Click **Generate**. Stedi generates an API key and allows you to copy it.

<Warning>
  Make sure you copy your API key and store it in a safe location. Once you close the modal, Stedi will not show the API key again.
</Warning>

### API key access [#api-key-access]

Within your Stedi account, members can be assigned to roles with different permissions. Production API keys inherit the permissions of the account member who created them and keep those permissions even if the creator's role is later updated.

### Passing the API key [#passing-the-api-key]

Every request you send needs to include an API key. You pass the API key in the `Authorization` header. For example, if your API key is `Jclcke.ZHqS3demo4dS16XZ1KeyBY7`, you would insert it into the header according to the following example:

```bash
curl --request POST \
  --url https://core.us.stedi.com/2023-08-01/x12/partnerships/{partnershipId}/generate-edi \
  --header 'Authorization: Jclcke.ZHqS3demo4dS16XZ1KeyBY7' \
  --header 'Content-Type: application/json' \
  --data '{ ... }'
```

<Note>
  Stedi supports the previous method of prefixing the API key with `Key` (e.g.
  `Authorization: Key Jclcke.ZHqS3demo4dS16XZ1KeyBY7`) for
  backwards-compatibility.
</Note>

### Deleting an API key [#deleting-an-api-key]

API keys don't expire automatically. To revoke an API key, delete it from the [API keys page](https://portal.stedi.com/app/settings/developer/api-keys) in your Stedi account.

## Pagination [#pagination]

When you request a list of resources, the response may contain a subset of available responses. In that case, the response will include a key called `next_page_token`. To retrieve the next page of results, repeat the request, but add the query parameter `page_token` and give it the value you received in the response.

For example, when you call the [List Transactions API](/healthcare/api-reference/get-list-transactions), the result contains a list of every transaction within your Stedi account and a token for the next page.

```javascript
{
  "items": [ ... ],
  "next_page_token": "2t7M75ZN1w4OnYFKKT0SUkT95w_ULzPR"
}
```

You can then request the next page of results like this:

```bash
  curl --request GET \
    --url https://core.us.stedi.com/2023-08-01/transactions?page_token=2t7M75ZN1w4OnYFKKT0SUkT95w_ULzPR \
    --header "Authorization: ${STEDI_API_KEY}"
```

As long as the response contains `next_page_token`, there are more results available. If a response doesn't contain `next_page_token`, then you're on the last page.

## Error Responses [#error-responses]

If you make a request that the API can't fulfill, the response code will be in the `4xx` range and the response body will contain the following two fields.

* `error` – A code indicating what went wrong.
* `message` – A human-readable message describing what went wrong.

You can use `error` to write code that handles the error and you can use `message` when you're debugging the problem yourself. If a response needs to report multiple errors, it will include an array called `errors`, but even in that case, the `error` and `message` fields will be available at top level.

It's possible for a response to contain both a result and an error. This happens when something went wrong, but the API is able to give a partial or best-effort result.

### `403` Unauthorized [#403-unauthorized]

When you receive a `403` error from Stedi, it's likely due to one of the following reasons:

* Your API key is invalid or expired.
* You accidentally sent a `GET` request to an endpoint that only accepts `POST` requests.
* Your IP address was previously flagged as malicious. Stedi uses the Amazon Web Services (AWS) Web Application Filter (WAF) as a layer of security for our APIs. Our WAF configurations include AWS-managed rules that determine whether to allow or block each request. One set of rules blocks requests when the [source IP address is determined to be malicious](https://docs.aws.amazon.com/waf/latest/developerguide/aws-managed-rule-groups-ip-rep.html#aws-managed-rule-groups-ip-rep-amazon), based on Amazon internal threat intelligence. We've seen this happen most often with requests sent from Google Cloud Platform (GCP), but it can occasionally happen with requests sent through other platforms as well. You can fix this issue by routing your requests through a dedicated virtual private cloud (VPC) with a static IP address.

## Limits [#limits]

Stedi enforces two types of limits on API endpoints to ensure system stability and fair usage across all customers:

* **Rate limits** control how many requests you can send per second. The rate limit is pooled across all endpoints in each category.
* **Concurrency limits** control how many requests Stedi will process simultaneously (in-flight requests). Some endpoints share a concurrency pool, while others have individual limits.

Both limits must be satisfied for a request to succeed. For example:

* Claims processing endpoints share a rate limit pool of 100 total requests per second. For example, you could send 40 requests to the Professional Claims JSON endpoint and 60 requests to the Dental Claims JSON endpoint in the same second.
* However, claim submission endpoints are also part of a shared concurrency pool that allows up to 100 concurrent requests across all included endpoints. If 100 requests are already processing in that concurrency pool, Stedi rejects additional requests even if you haven't exceeded the per-second rate limit.

When you exceed either a rate limit or concurrency limit, Stedi rejects additional requests with a `429` HTTP status code. Rejected requests have the following error message:

```json
{
  "message": "The request can't be submitted because the sender's submission has been throttled: CUSTOMER_LIMIT",
  "code": "TOO_MANY_REQUESTS"
}
```

### Rate limits [#rate-limits]

Stedi enforces the following rate limits. The rate limit is pooled across all endpoints in each category:

{/* prettier-ignore-start */}

| Endpoints                                                                                                                                                                                                                                                                                                                                                                                                                                                   | Rate limit          |
| ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------- |
| Claims processing<ul><li>Professional Claims JSON</li><li>Professional Claims Raw X12</li><li>Dental Claims JSON</li><li>Dental Claims Raw X12</li><li>Institutional Claims JSON</li><li>Institutional Claims Raw X12</li><li>CMS-1500 PDF: Business Identifier</li><li>CMS-1500 PDF: Transaction ID</li><li>Create Claim Attachment JSON</li><li>Submit Claim Attachment Raw X12</li><li>277CA Report</li><li>835 ERA Report</li><li>835 ERA PDF</li></ul> | 100 requests/second |
| Transaction enrollment<ul><li>Create Provider</li><li>Retrieve Provider</li><li>List Providers</li><li>Update Provider</li><li>Delete Provider</li><li>Create Enrollment</li><li>Retrieve Enrollment</li><li>Download Enrollment Document</li><li>List Enrollments</li><li>Update Enrollment</li><li>Update Enrollment Task</li><li>Upload Enrollment Document</li><li>Delete Enrollment</li><li>Delete Enrollment Document</li></ul>                       | 100 requests/second |

{/* prettier-ignore-end */}

### Concurrency limits [#concurrency-limits]

Stedi's clearinghouse endpoints are subject to the following concurrency limits per customer account. To request an increase to your default account concurrency limits, contact Stedi support in Slack or Teams.

When endpoints share a concurrency pool, the total number of in-flight requests across all endpoints in the pool cannot exceed the shared limit. When endpoints are not pooled, the concurrency limit applies to that individual endpoint only.

{/* prettier-ignore-start */}

| Endpoints                                                                                                                                                                                                                                              | Shared pool | Default concurrency limit |
| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ----------- | ------------------------- |
| <ul><li>Real-Time Eligibility Check JSON</li><li>Real-Time Eligibility Check Raw X12</li><li>Real-Time Claim Status JSON</li><li>Real-Time Claim Status Raw X12</li></ul>                                                                              | Yes         | 50                        |
| <ul><li>Professional Claims JSON</li><li>Professional Claims Raw X12</li><li>Institutional Claims JSON</li><li>Dental Claims JSON</li><li>Dental Claims Raw X12</li><li>Create Claim Attachment JSON</li><li>Submit Claim Attachment Raw X12</li></ul> | Yes         | 100                       |
| <ul><li>CMS-1500 PDF: Business Identifier</li><li>CMS-1500 PDF: Transaction ID</li><li>277CA Report</li><li>835 ERA Report</li></ul>                                                                                                                   | Yes         | 100                       |
| Coordination of Benefits Check                                                                                                                                                                                                                         | No          | 50                        |
| Insurance Discovery Check                                                                                                                                                                                                                              | No          | 5                         |
| Insurance Discovery Check Results                                                                                                                                                                                                                      | No          | 5                         |

{/* prettier-ignore-end */}

## API clients [#api-clients]

We strongly recommend determining the HIPAA and/or other security requirements for your organization before you begin testing with an API client. At a minimum, if you're testing APIs that handle PHI (Protected Health Information) from your local machine, we recommend using a client that defaults to local-only storage.

### Not recommended [#not-recommended]

We **don't recommend** using Postman for requests containing Protected Health Information (PHI) because Postman defaults to storing request history - including full request payloads - on its cloud servers. You can't turn this feature off without impractical workarounds. So if your company doesn't have a BAA in place with Postman, you could unintentionally fall short of HIPAA requirements when testing.

You can learn more about why Postman isn't safe for requests containing PHI in our blog: [Postman is probably not HIPAA compliant](https://www.stedi.com/blog/postman-is-probably-not-hipaa-compliant).

### Recommended [#recommended]

The following open-source API clients have an offline-first approach. Each client also supports OpenAPI imports, which you can use to import the Stedi OpenAPI specs.

* [Bruno](https://www.usebruno.com/): A local-only API client built to avoid cloud syncing. Bruno has several interfaces, including a desktop app, CLI, and VS Code extension. [GitHub repository](https://github.com/usebruno/bruno)
* [Pororoca](https://pororoca.io/): A desktop-only API client with no cloud sync, built for secure local testing. Poroca's data policy states that no data is synced to remote servers. [GitHub repository](https://github.com/alexandrehtrb/Pororoca)
* [Yaak](https://yaak.app/): A simple, fast desktop API client. Yaak supports several import formats, including Postman collections, OpenAPI, and Insomnia. [GitHub repository](https://github.com/mountain-loop/yaak)

Ensure your security and compliance teams review the tool you choose carefully, especially because applications evolve over time.

## Idempotency keys [#idempotency-keys]

Idempotency allows you to make an API request multiple times without causing different outcomes. We **strongly recommend** adding idempotency keys to claim submission requests to prevent sending duplicate claims to payers when there are network errors or other intermittent failures.

We support idempotency keys for the following endpoints:

* [Professional Claims (837P) JSON](/healthcare/api-reference/post-healthcare-claims)
* [Professional Claims (837P) Raw X12](/healthcare/api-reference/post-healthcare-claims-raw-x12)
* [Dental Claims (837D) JSON](/healthcare/api-reference/post-healthcare-dental-claims)
* [Dental Claims (837D) Raw X12](/healthcare/api-reference/post-healthcare-dental-claims-raw-x12)
* [Institutional Claims (837I) JSON](/healthcare/api-reference/post-healthcare-institutional-claims)
* [Institutional Claims (837I) Raw X12](/healthcare/api-reference/post-healthcare-institutional-claims-raw-x12)

### How idempotency works [#how-idempotency-works]

You can safely retry requests with the same idempotency key as many times as necessary within 24 hours after making the first request. Within the 24 hour period, if you reuse the same key with different request contents (change the HTTP method, path, or request body), Stedi returns a `422 Unprocessable Entity` error. After 24 hours, Stedi allows the request to execute again even if you submit the same idempotency token.

If you reuse the same key on a new request while the original request is still being processed, Stedi returns a `409 Conflict`. You can retry the request after the original request is completed. The `409` response includes a `Retry-After` header indicating a suggested number of seconds to wait before retrying.

### Generating keys [#generating-keys]

For APIs that support idempotency, you can generate and include an idempotency key within the `Idempotency-Key` header of your request. Our implementation conforms to the draft IETF [Idempotency-Key HTTP Header Field](https://datatracker.ietf.org/doc/draft-ietf-httpapi-idempotency-key-header/) RFC.

The token can be any unique string, such as a UUID. Common approaches to generating tokens are:

* Use an algorithm that generates a token with enough randomness, like UUID v4.
* Derive the key from data related to the API call, like the provider control number.

### Adding keys to your request [#adding-keys-to-your-request]

Once you have generated your idempotency key, include it in the header of your API request. The following example shows the header in a request:

```bash
curl --request POST \
  --url https://healthcare.us.stedi.com/2024-04-01/change/medicalnetwork/professionalclaims/v3/submission \
  --header 'Authorization: ${STEDI_API_KEY}' \
  --header 'Idempotency-Key: 5b6f6d3e-2c6d-4e6f-8e6f-6d3e2c6d4e6f' \
  --header 'Content-Type: application/json' \
  --data '{ ... }'
```

## API upgrades [#api-upgrades]

We strive to maintain backwards compatibility. The following changes are considered backwards compatible:

* New API resources
* Additional optional parameters to API requests
* Additional fields in API responses
* Changes in the order of properties in API responses
* Changes in human-readable error messages
* Downgrading mandatory parameters to optional parameters.

When we introduce a breaking change, we release a root-level, dated version.

# Eligibility mock requests
Source: https://www.stedi.com/docs/healthcare/api-reference/mock-requests-eligibility-checks


When you submit the following requests with a [test API key](/healthcare/api-reference#api-key-types), Stedi returns mock benefits data from the specified payer you can use for testing. Each example includes request formats for Stedi's JSON, Raw X12, and SOAP endpoints.

You can also submit most of these mock requests through the [New eligibility check](https://portal.stedi.com/app/healthcare/checks/create) form in the UI when you enable **Test mode**.

<Tip>
  Mock requests are free for testing purposes and won't incur any charges in
  your Stedi account.
</Tip>

## Test API key [#test-api-key]

When submitting these mock requests to the API, you must use a test API key for authentication. To create a test API key:

1. Go to the [API keys page](https://portal.stedi.com/app/settings/developer/api-keys) in developer settings.
2. Click **Generate new API Key**.
3. Enter a name for your API key. We recommend using a unique name and adding a `test` or `production` prefix to indicate the key type.
4. Select **Test** as the **Mode**.
5. Click **Generate**. Stedi generates an API key and lets you copy it.

When using a test API key, you can only send the following mock requests to the endpoint. Stedi returns an error if you try to send production data with a test API key.

## API clients [#api-clients]

You may want to use an API client to make testing and debugging easier.

We **don't recommend** using Postman for requests containing Protected Health Information (PHI) because Postman defaults to storing request history - including full request payloads - on its cloud servers. You can't turn this feature off without impractical workarounds.

Visit [API clients](/healthcare/api-reference#api-clients) for a list of recommended clients you can use instead.

## Eligibility check examples [#eligibility-check-examples]

The following examples work with all eligibility check endpoints. Each accordion contains tabs with request formats for:

* **JSON** - [Real-Time Eligibility Check](/healthcare/api-reference/post-healthcare-eligibility) endpoint
* **Raw X12** - [Raw X12](/healthcare/api-reference/post-healthcare-eligibility-raw-x12) endpoint
* **SOAP** - [CAQH CORE SOAP](/healthcare/api-reference/post-healthcare-eligibility-soap) endpoint

### Medical - Active coverage [#medical---active-coverage]

Request notes:

* `encounter`: Supports only service type code `30`.
* `provider`: You can use any organization name and any NPI, as long as it passes [check digit validation](https://www.cms.gov/Regulations-and-Guidance/Administrative-Simplification/NationalProvIdentStand/Downloads/NPIcheckdigit.pdf). To generate a dummy NPI, you can use [this free tool](https://jsfiddle.net/alexdresko/cLNB6).
* `subscriber`: You must use the exact values in the test request. Other birth dates, first names, last names, member IDs, and Social Security Numbers return errors.

#### Dependent [#dependent]

Each of these examples represent an eligibility check for a dependent. An individual qualifies as a dependent for eligibility checks when the subscriber's insurance plan lists them as a dependent AND the payer cannot uniquely identify them through information outside the subscriber's policy.

These example requests follow best practices for structuring eligibility checks. Specifically, all requests include the dependent's information, including their date of birth, in the `dependents` array. Some payers may allow different structures, such as sending the dependent's information in the `subscriber` object with the subscriber's member ID. However, we recommend following the guidance outlined in the [Real-Time Eligibility Check](/healthcare/api-reference/post-healthcare-eligibility#body.dependents) endpoint documentation for the most reliable results across all payers.

The way payers include dependent information in the response varies. Some contain the dependent's information in the `subscriber` object. Some include the actual subscriber's information in the `subscriber` object and the dependent's information in the `dependents` array.

**Aetna**

In this example, the dependent Jordan is the subscriber John's child. The response contains Jordan's information in the `dependents` array.

<Accordion title="Aetna - Mock request 1" id="aetna---mock-request-1">
  <Tabs items="[&#x22;Request - JSON&#x22;, &#x22;Request - Raw X12&#x22;, &#x22;Request - SOAP&#x22;]">
    <Tab value="Request - JSON">
      {/* schema:EligibilityCheckRequestContent */}

      ```bash test request for Aetna
      curl --request POST \
        --url 'https://healthcare.us.stedi.com/2024-04-01/change/medicalnetwork/eligibility/v3' \
        --header 'Authorization: Key {test_api_key}' \
        --header 'Content-Type: application/json' \
        --data '{
          "tradingPartnerServiceId": "60054",
          "provider": {
              "organizationName": "Provider Name",
              "npi": "1999999984"
          },
          "subscriber": {
              "firstName": "John",
              "lastName": "Doe",
              "memberId": "AETNA9wcSu"
          },
          "dependents": [
              {
                  "firstName": "Jordan",
                  "lastName": "Doe",
                  "dateOfBirth": "20010714"
              }
          ],
          "encounter": {
              "serviceTypeCodes": ["30"]
          }
      }'
      ```
    </Tab>

    <Tab value="Request - Raw X12">
      ```bash test request for Aetna
      curl --request POST \
        --url 'https://healthcare.us.stedi.com/2024-04-01/change/medicalnetwork/eligibility/v3/raw-x12' \
        --header 'Authorization: Key {test_api_key}' \
        --header 'Content-Type: application/json' \
        --data '{
          "x12": "ISA*00*          *00*          *ZZ*AV09311993     *01*030240928      *210101*1200*^*00501*000000001*0*P*>~GS*HS*1510848*030240928*20210101*120000*1*X*005010X279A1~ST*270*0001*005010X279A1~BHT*0022*13*00000000000000000000000000*20210101*1200~HL*1**20*1~NM1*PR*2*Aetna*****PI*60054~HL*2*1*21*1~NM1*1P*2*Provider Name*****XX*1999999984~HL*3*2*22*1~NM1*IL*1*Doe*John****MI*AETNA9wcSu~HL*4*3*23*0~TRN*1*00000000000000000000000000*3117151744~NM1*03*1*Doe*Jordan~DMG*D8*20010714~EQ*30~SE*14*0001~GE*1*1~IEA*1*000000001~"
        }'
      ```
    </Tab>

    <Tab value="Request - SOAP">
      ```bash test request for Aetna
      curl --request POST \
        --url 'https://healthcare.us.stedi.com/2025-06-01/protocols/caqh-core' \
        --header 'Content-Type: application/soap+xml' \
        --data '<soapenv:Envelope xmlns:soapenv="http://www.w3.org/2003/05/soap-envelope" xmlns:cor="http://www.caqh.org/SOAP/WSDL/CORERule2.2.0.xsd">
        <soapenv:Header>
          <wsse:Security soapenv:mustUnderstand="true" xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">
            <wsse:UsernameToken>
              <wsse:Username>STEDI-ACCOUNT-ID</wsse:Username>
              <wsse:Password>STEDI-API-KEY</wsse:Password>
            </wsse:UsernameToken>
          </wsse:Security>
        </soapenv:Header>
        <soapenv:Body>
            <cor:COREEnvelopeRealTimeRequest>
              <PayloadType>X12_270_Request_005010X279A1</PayloadType>
              <ProcessingMode>RealTime</ProcessingMode>
              <PayloadID>f81d4fae-7dec-11d0-a765-00a0c91e6b12</PayloadID>
              <TimeStamp>2007-08-30T10:20:34.000Z</TimeStamp>
              <SenderID>STEDI</SenderID>
              <ReceiverID>STEDI</ReceiverID>
              <CORERuleVersion>2.2.0</CORERuleVersion>
              <Payload><![CDATA[ISA*00*          *00*          *ZZ*AV09311993     *01*030240928      *210101*1200*^*00501*000000001*0*P*>~GS*HS*1510848*030240928*20210101*120000*1*X*005010X279A1~ST*270*0001*005010X279A1~BHT*0022*13*00000000000000000000000000*20210101*1200~HL*1**20*1~NM1*PR*2*Aetna*****PI*60054~HL*2*1*21*1~NM1*1P*2*Provider Name*****XX*1999999984~HL*3*2*22*1~NM1*IL*1*Doe*John****MI*AETNA9wcSu~HL*4*3*23*0~TRN*1*00000000000000000000000000*3117151744~NM1*03*1*Doe*Jordan~DMG*D8*20010714~EQ*30~SE*14*0001~GE*1*1~IEA*1*000000001~]]></Payload>
            </cor:COREEnvelopeRealTimeRequest>
        </soapenv:Body>
      </soapenv:Envelope>'
      ```
    </Tab>
  </Tabs>
</Accordion>

**Anthem Blue Cross Blue Shield of CA**

In this example, the dependent John is the subscriber Jane's spouse. The response contains John's information in the `dependents` array.

<Accordion title="Anthem BCBSCA - Mock request 1" id="anthem-bcbsca---mock-request-1">
  <Tabs items="[&#x22;Request - JSON&#x22;, &#x22;Request - Raw X12&#x22;, &#x22;Request - SOAP&#x22;]">
    <Tab value="Request - JSON">
      {/* schema:EligibilityCheckRequestContent */}

      ```bash test request for Anthem BCBSCA
      curl --request POST \
        --url 'https://healthcare.us.stedi.com/2024-04-01/change/medicalnetwork/eligibility/v3' \
        --header 'Authorization: Key {test_api_key}' \
        --header 'Content-Type: application/json' \
        --data '{
          "tradingPartnerServiceId": "040",
          "provider": {
              "organizationName": "Provider Name",
              "npi": "1999999984"
          },
          "subscriber": {
              "firstName": "Jane",
              "lastName": "Doe",
              "memberId": "CGMBCBSCA123"
          },
          "dependents": [
              {
                  "firstName": "John",
                  "lastName": "Doe",
                  "dateOfBirth": "19750101"
              }
          ],
          "encounter": {
              "serviceTypeCodes": ["30"]
          }
      }'
      ```
    </Tab>

    <Tab value="Request - Raw X12">
      ```bash test request for Anthem BCBSCA
      curl --request POST \
        --url 'https://healthcare.us.stedi.com/2024-04-01/change/medicalnetwork/eligibility/v3/raw-x12' \
        --header 'Authorization: Key {test_api_key}' \
        --header 'Content-Type: application/json' \
        --data '{
          "x12": "ISA*00*          *00*          *ZZ*AV09311993     *01*030240928      *210101*1200*^*00501*000000001*0*P*>~GS*HS*1510848*030240928*20210101*120000*1*X*005010X279A1~ST*270*0001*005010X279A1~BHT*0022*13*00000000000000000000000000*20210101*1200~HL*1**20*1~NM1*PR*2*Anthem Blue Cross Blue Shield of California*****PI*040~HL*2*1*21*1~NM1*1P*2*Provider Name*****XX*1999999984~HL*3*2*22*1~NM1*IL*1*Doe*Jane****MI*CGMBCBSCA123~HL*4*3*23*0~TRN*1*00000000000000000000000000*3117151744~NM1*03*1*Doe*John~DMG*D8*19750101~DTP*291*D8*20260420~EQ*30~SE*15*0001~GE*1*1~IEA*1*000000001~"
        }'
      ```
    </Tab>

    <Tab value="Request - SOAP">
      ```bash test request for Anthem BCBSCA
      curl --request POST \
        --url 'https://healthcare.us.stedi.com/2025-06-01/protocols/caqh-core' \
        --header 'Content-Type: application/soap+xml' \
        --data '<soapenv:Envelope xmlns:soapenv="http://www.w3.org/2003/05/soap-envelope" xmlns:cor="http://www.caqh.org/SOAP/WSDL/CORERule2.2.0.xsd">
        <soapenv:Header>
          <wsse:Security soapenv:mustUnderstand="true" xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">
            <wsse:UsernameToken>
              <wsse:Username>STEDI-ACCOUNT-ID</wsse:Username>
              <wsse:Password>STEDI-API-KEY</wsse:Password>
            </wsse:UsernameToken>
          </wsse:Security>
        </soapenv:Header>
        <soapenv:Body>
            <cor:COREEnvelopeRealTimeRequest>
              <PayloadType>X12_270_Request_005010X279A1</PayloadType>
              <ProcessingMode>RealTime</ProcessingMode>
              <PayloadID>f81d4fae-7dec-11d0-a765-00a0c91e6b12</PayloadID>
              <TimeStamp>2007-08-30T10:20:34.000Z</TimeStamp>
              <SenderID>STEDI</SenderID>
              <ReceiverID>STEDI</ReceiverID>
              <CORERuleVersion>2.2.0</CORERuleVersion>
              <Payload><![CDATA[ISA*00*          *00*          *ZZ*AV09311993     *01*030240928      *210101*1200*^*00501*000000001*0*P*>~GS*HS*1510848*030240928*20210101*120000*1*X*005010X279A1~ST*270*0001*005010X279A1~BHT*0022*13*00000000000000000000000000*20210101*1200~HL*1**20*1~NM1*PR*2*Anthem Blue Cross Blue Shield of California*****PI*040~HL*2*1*21*1~NM1*1P*2*Provider Name*****XX*1999999984~HL*3*2*22*1~NM1*IL*1*Doe*Jane****MI*CGMBCBSCA123~HL*4*3*23*0~TRN*1*00000000000000000000000000*3117151744~NM1*03*1*Doe*John~DMG*D8*19750101~DTP*291*D8*20260420~EQ*30~SE*15*0001~GE*1*1~IEA*1*000000001~]]></Payload>
            </cor:COREEnvelopeRealTimeRequest>
        </soapenv:Body>
      </soapenv:Envelope>'
      ```
    </Tab>
  </Tabs>
</Accordion>

**Blue Cross and Blue Shield of Texas**

In this example, the dependent Jane is the subscriber John's child. The response contains Jane's information in the `dependents` array.

<Accordion title="BCBSTX - Mock request 1" id="bcbstx---mock-request-1">
  <Tabs items="[&#x22;Request - JSON&#x22;, &#x22;Request - Raw X12&#x22;, &#x22;Request - SOAP&#x22;]">
    <Tab value="Request - JSON">
      {/* schema:EligibilityCheckRequestContent */}

      ```bash test request for BCBSTX
      curl --request POST \
        --url 'https://healthcare.us.stedi.com/2024-04-01/change/medicalnetwork/eligibility/v3' \
        --header 'Authorization: Key {test_api_key}' \
        --header 'Content-Type: application/json' \
        --data '{
          "tradingPartnerServiceId": "G84980",
          "provider": {
              "organizationName": "Provider Name",
              "npi": "1999999984"
          },
          "subscriber": {
              "firstName": "John",
              "lastName": "Doe",
              "memberId": "A2CBCBSTX123"
          },
          "dependents": [
              {
                  "firstName": "Jane",
                  "lastName": "Doe",
                  "dateOfBirth": "20150101"
              }
          ],
          "encounter": {
              "serviceTypeCodes": ["30"]
          }
      }'
      ```
    </Tab>

    <Tab value="Request - Raw X12">
      ```bash test request for BCBSTX
      curl --request POST \
        --url 'https://healthcare.us.stedi.com/2024-04-01/change/medicalnetwork/eligibility/v3/raw-x12' \
        --header 'Authorization: Key {test_api_key}' \
        --header 'Content-Type: application/json' \
        --data '{
          "x12": "ISA*00*          *00*          *ZZ*AV09311993     *01*030240928      *210101*1200*^*00501*000000001*0*P*>~GS*HS*1510848*030240928*20210101*120000*1*X*005010X279A1~ST*270*0001*005010X279A1~BHT*0022*13*00000000000000000000000000*20210101*1200~HL*1**20*1~NM1*PR*2*Blue Cross and Blue Shield of Texas*****PI*G84980~HL*2*1*21*1~NM1*1P*2*Provider Name*****XX*1999999984~HL*3*2*22*1~NM1*IL*1*Doe*John****MI*A2CBCBSTX123~HL*4*3*23*0~TRN*1*00000000000000000000000000*3117151744~NM1*03*1*Doe*Jane~DMG*D8*20150101~EQ*30~SE*14*0001~GE*1*1~IEA*1*000000001~"
        }'
      ```
    </Tab>

    <Tab value="Request - SOAP">
      ```bash test request for BCBSTX
      curl --request POST \
        --url 'https://healthcare.us.stedi.com/2025-06-01/protocols/caqh-core' \
        --header 'Content-Type: application/soap+xml' \
        --data '<soapenv:Envelope xmlns:soapenv="http://www.w3.org/2003/05/soap-envelope" xmlns:cor="http://www.caqh.org/SOAP/WSDL/CORERule2.2.0.xsd">
        <soapenv:Header>
          <wsse:Security soapenv:mustUnderstand="true" xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">
            <wsse:UsernameToken>
              <wsse:Username>STEDI-ACCOUNT-ID</wsse:Username>
              <wsse:Password>STEDI-API-KEY</wsse:Password>
            </wsse:UsernameToken>
          </wsse:Security>
        </soapenv:Header>
        <soapenv:Body>
            <cor:COREEnvelopeRealTimeRequest>
              <PayloadType>X12_270_Request_005010X279A1</PayloadType>
              <ProcessingMode>RealTime</ProcessingMode>
              <PayloadID>f81d4fae-7dec-11d0-a765-00a0c91e6b12</PayloadID>
              <TimeStamp>2007-08-30T10:20:34.000Z</TimeStamp>
              <SenderID>STEDI</SenderID>
              <ReceiverID>STEDI</ReceiverID>
              <CORERuleVersion>2.2.0</CORERuleVersion>
              <Payload><![CDATA[ISA*00*          *00*          *ZZ*AV09311993     *01*030240928      *210101*1200*^*00501*000000001*0*P*>~GS*HS*1510848*030240928*20210101*120000*1*X*005010X279A1~ST*270*0001*005010X279A1~BHT*0022*13*00000000000000000000000000*20210101*1200~HL*1**20*1~NM1*PR*2*Blue Cross and Blue Shield of Texas*****PI*G84980~HL*2*1*21*1~NM1*1P*2*Provider Name*****XX*1999999984~HL*3*2*22*1~NM1*IL*1*Doe*John****MI*A2CBCBSTX123~HL*4*3*23*0~TRN*1*00000000000000000000000000*3117151744~NM1*03*1*Doe*Jane~DMG*D8*20150101~EQ*30~SE*14*0001~GE*1*1~IEA*1*000000001~]]></Payload>
            </cor:COREEnvelopeRealTimeRequest>
        </soapenv:Body>
      </soapenv:Envelope>'
      ```
    </Tab>
  </Tabs>
</Accordion>

**Cigna**

In this example, the dependent Jordan is the subscriber's child. The response contains Jordan in the `subscriber` object with no `dependents` array, even though they are a dependent.

<Accordion title="Cigna - Mock request 1" id="cigna---mock-request-1">
  <Tabs items="[&#x22;Request - JSON&#x22;, &#x22;Request - Raw X12&#x22;, &#x22;Request - SOAP&#x22;]">
    <Tab value="Request - JSON">
      {/* schema:EligibilityCheckRequestContent */}

      ```bash test request for Cigna
      curl --request POST \
        --url 'https://healthcare.us.stedi.com/2024-04-01/change/medicalnetwork/eligibility/v3' \
        --header 'Authorization: Key {test_api_key}' \
        --header 'Content-Type: application/json' \
        --data '{
          "tradingPartnerServiceId": "62308",
          "provider": {
              "organizationName": "Provider Name",
              "npi": "1999999984"
          },
          "subscriber": {
              "firstName": "John",
              "lastName": "Doe",
              "memberId": "CIGNAJTUxNm"
          },
          "dependents": [
              {
                  "firstName": "Jordan",
                  "lastName": "Doe",
                  "dateOfBirth": "20150920"
              }
          ],
          "encounter": {
              "serviceTypeCodes": ["30"]
          }
      }'
      ```
    </Tab>

    <Tab value="Request - Raw X12">
      ```bash test request for Cigna
      curl --request POST \
        --url 'https://healthcare.us.stedi.com/2024-04-01/change/medicalnetwork/eligibility/v3/raw-x12' \
        --header 'Authorization: Key {test_api_key}' \
        --header 'Content-Type: application/json' \
        --data '{
          "x12": "ISA*00*          *00*          *ZZ*AV09311993     *01*030240928      *210101*1200*^*00501*000000001*0*P*>~GS*HS*1510848*030240928*20210101*120000*1*X*005010X279A1~ST*270*0001*005010X279A1~BHT*0022*13*00000000000000000000000000*20210101*1200~HL*1**20*1~NM1*PR*2*Cigna*****PI*62308~HL*2*1*21*1~NM1*1P*2*Provider Name*****XX*1999999984~HL*3*2*22*1~NM1*IL*1*Doe*John****MI*CIGNAJTUxNm~HL*4*3*23*0~TRN*1*00000000000000000000000000*3117151744~NM1*03*1*Doe*Jordan~DMG*D8*20150920~EQ*30~SE*14*0001~GE*1*1~IEA*1*000000001~"
        }'
      ```
    </Tab>

    <Tab value="Request - SOAP">
      ```bash test request for Cigna
      curl --request POST \
        --url 'https://healthcare.us.stedi.com/2025-06-01/protocols/caqh-core' \
        --header 'Content-Type: application/soap+xml' \
        --data '<soapenv:Envelope xmlns:soapenv="http://www.w3.org/2003/05/soap-envelope" xmlns:cor="http://www.caqh.org/SOAP/WSDL/CORERule2.2.0.xsd">
        <soapenv:Header>
          <wsse:Security soapenv:mustUnderstand="true" xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">
            <wsse:UsernameToken>
              <wsse:Username>STEDI-ACCOUNT-ID</wsse:Username>
              <wsse:Password>STEDI-API-KEY</wsse:Password>
            </wsse:UsernameToken>
          </wsse:Security>
        </soapenv:Header>
        <soapenv:Body>
            <cor:COREEnvelopeRealTimeRequest>
              <PayloadType>X12_270_Request_005010X279A1</PayloadType>
              <ProcessingMode>RealTime</ProcessingMode>
              <PayloadID>f81d4fae-7dec-11d0-a765-00a0c91e6b12</PayloadID>
              <TimeStamp>2007-08-30T10:20:34.000Z</TimeStamp>
              <SenderID>STEDI</SenderID>
              <ReceiverID>STEDI</ReceiverID>
              <CORERuleVersion>2.2.0</CORERuleVersion>
              <Payload><![CDATA[ISA*00*          *00*          *ZZ*AV09311993     *01*030240928      *210101*1200*^*00501*000000001*0*P*>~GS*HS*1510848*030240928*20210101*120000*1*X*005010X279A1~ST*270*0001*005010X279A1~BHT*0022*13*00000000000000000000000000*20210101*1200~HL*1**20*1~NM1*PR*2*Cigna*****PI*62308~HL*2*1*21*1~NM1*1P*2*Provider Name*****XX*1999999984~HL*3*2*22*1~NM1*IL*1*Doe*John****MI*CIGNAJTUxNm~HL*4*3*23*0~TRN*1*00000000000000000000000000*3117151744~NM1*03*1*Doe*Jordan~DMG*D8*20150920~EQ*30~SE*14*0001~GE*1*1~IEA*1*000000001~]]></Payload>
            </cor:COREEnvelopeRealTimeRequest>
        </soapenv:Body>
      </soapenv:Envelope>'
      ```
    </Tab>
  </Tabs>
</Accordion>

**Oscar Health**

In this example, the dependent Jane is the subscriber John's child. The response contains Jane's information in the `dependents` array.

<Accordion title="Oscar Health - Mock request 1" id="oscar-health---mock-request-1">
  <Tabs items="[&#x22;Request - JSON&#x22;, &#x22;Request - Raw X12&#x22;, &#x22;Request - SOAP&#x22;]">
    <Tab value="Request - JSON">
      {/* schema:EligibilityCheckRequestContent */}

      ```bash test request for Oscar Health
      curl --request POST \
        --url 'https://healthcare.us.stedi.com/2024-04-01/change/medicalnetwork/eligibility/v3' \
        --header 'Authorization: Key {test_api_key}' \
        --header 'Content-Type: application/json' \
        --data '{
          "tradingPartnerServiceId": "OSCAR",
          "provider": {
              "organizationName": "Provider Name",
              "npi": "1999999984"
          },
          "subscriber": {
              "firstName": "John",
              "lastName": "Doe",
              "memberId": "OSCAR123456"
          },
          "dependents": [
              {
                  "firstName": "Jane",
                  "lastName": "Doe",
                  "dateOfBirth": "20010101"
              }
          ],
          "encounter": {
              "serviceTypeCodes": ["30"]
          }
      }'
      ```
    </Tab>

    <Tab value="Request - Raw X12">
      ```bash test request for Oscar Health
      curl --request POST \
        --url 'https://healthcare.us.stedi.com/2024-04-01/change/medicalnetwork/eligibility/v3/raw-x12' \
        --header 'Authorization: Key {test_api_key}' \
        --header 'Content-Type: application/json' \
        --data '{
          "x12": "ISA*00*          *00*          *ZZ*AV09311993     *01*030240928      *210101*1200*^*00501*000000001*0*P*>~GS*HS*1510848*030240928*20210101*120000*1*X*005010X279A1~ST*270*0001*005010X279A1~BHT*0022*13*00000000000000000000000000*20210101*1200~HL*1**20*1~NM1*PR*2*Oscar Health*****PI*OSCAR~HL*2*1*21*1~NM1*1P*2*Provider Name*****XX*1999999984~HL*3*2*22*1~NM1*IL*1*Doe*John****MI*OSCAR123456~HL*4*3*23*0~TRN*1*00000000000000000000000000*3117151744~NM1*03*1*Doe*Jane~DMG*D8*20010101~EQ*30~SE*14*0001~GE*1*1~IEA*1*000000001~"
        }'
      ```
    </Tab>

    <Tab value="Request - SOAP">
      ```bash test request for Oscar Health
      curl --request POST \
        --url 'https://healthcare.us.stedi.com/2025-06-01/protocols/caqh-core' \
        --header 'Content-Type: application/soap+xml' \
        --data '<soapenv:Envelope xmlns:soapenv="http://www.w3.org/2003/05/soap-envelope" xmlns:cor="http://www.caqh.org/SOAP/WSDL/CORERule2.2.0.xsd">
        <soapenv:Header>
          <wsse:Security soapenv:mustUnderstand="true" xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">
            <wsse:UsernameToken>
              <wsse:Username>STEDI-ACCOUNT-ID</wsse:Username>
              <wsse:Password>STEDI-API-KEY</wsse:Password>
            </wsse:UsernameToken>
          </wsse:Security>
        </soapenv:Header>
        <soapenv:Body>
            <cor:COREEnvelopeRealTimeRequest>
              <PayloadType>X12_270_Request_005010X279A1</PayloadType>
              <ProcessingMode>RealTime</ProcessingMode>
              <PayloadID>f81d4fae-7dec-11d0-a765-00a0c91e6b12</PayloadID>
              <TimeStamp>2007-08-30T10:20:34.000Z</TimeStamp>
              <SenderID>STEDI</SenderID>
              <ReceiverID>STEDI</ReceiverID>
              <CORERuleVersion>2.2.0</CORERuleVersion>
              <Payload><![CDATA[ISA*00*          *00*          *ZZ*AV09311993     *01*030240928      *210101*1200*^*00501*000000001*0*P*>~GS*HS*1510848*030240928*20210101*120000*1*X*005010X279A1~ST*270*0001*005010X279A1~BHT*0022*13*00000000000000000000000000*20210101*1200~HL*1**20*1~NM1*PR*2*Oscar Health*****PI*OSCAR~HL*2*1*21*1~NM1*1P*2*Provider Name*****XX*1999999984~HL*3*2*22*1~NM1*IL*1*Doe*John****MI*OSCAR123456~HL*4*3*23*0~TRN*1*00000000000000000000000000*3117151744~NM1*03*1*Doe*Jane~DMG*D8*20010101~EQ*30~SE*14*0001~GE*1*1~IEA*1*000000001~]]></Payload>
            </cor:COREEnvelopeRealTimeRequest>
        </soapenv:Body>
      </soapenv:Envelope>'
      ```
    </Tab>
  </Tabs>
</Accordion>

**UnitedHealthcare**

In this example, the dependent Jane is the subscriber John's spouse. The response contains Jane's information in the `dependents` array.

<Accordion title="UnitedHealthcare - Mock request 1" id="unitedhealthcare---mock-request-1">
  <Tabs items="[&#x22;Request - JSON&#x22;, &#x22;Request - Raw X12&#x22;, &#x22;Request - SOAP&#x22;]">
    <Tab value="Request - JSON">
      {/* schema:EligibilityCheckRequestContent */}

      ```bash test request for UnitedHealthcare
      curl --request POST \
        --url 'https://healthcare.us.stedi.com/2024-04-01/change/medicalnetwork/eligibility/v3' \
        --header 'Authorization: Key {test_api_key}' \
        --header 'Content-Type: application/json' \
        --data '{
          "tradingPartnerServiceId": "87726",
          "provider": {
              "organizationName": "Provider Name",
              "npi": "1999999984"
          },
          "subscriber": {
              "firstName": "John",
              "lastName": "Doe",
              "memberId": "UHC202649"
          },
          "dependents": [
              {
                  "firstName": "Jane",
                  "lastName": "Doe",
                  "dateOfBirth": "19521121"
              }
          ],
          "encounter": {
              "serviceTypeCodes": ["30"]
          }
      }'
      ```
    </Tab>

    <Tab value="Request - Raw X12">
      ```bash test request for UnitedHealthcare
      curl --request POST \
        --url 'https://healthcare.us.stedi.com/2024-04-01/change/medicalnetwork/eligibility/v3/raw-x12' \
        --header 'Authorization: Key {test_api_key}' \
        --header 'Content-Type: application/json' \
        --data '{
          "x12": "ISA*00*          *00*          *ZZ*AV09311993     *01*030240928      *210101*1200*^*00501*000000001*0*P*>~GS*HS*1510848*030240928*20210101*120000*1*X*005010X279A1~ST*270*0001*005010X279A1~BHT*0022*13*00000000000000000000000000*20210101*1200~HL*1**20*1~NM1*PR*2*UnitedHealthcare*****PI*87726~HL*2*1*21*1~NM1*1P*2*Provider Name*****XX*1999999984~HL*3*2*22*1~NM1*IL*1*Doe*John****MI*UHC202649~HL*4*3*23*0~TRN*1*00000000000000000000000000*3117151744~NM1*03*1*Doe*Jane~DMG*D8*19521121~EQ*30~SE*14*0001~GE*1*1~IEA*1*000000001~"
        }'
      ```
    </Tab>

    <Tab value="Request - SOAP">
      ```bash test request for UnitedHealthcare
      curl --request POST \
        --url 'https://healthcare.us.stedi.com/2025-06-01/protocols/caqh-core' \
        --header 'Content-Type: application/soap+xml' \
        --data '<soapenv:Envelope xmlns:soapenv="http://www.w3.org/2003/05/soap-envelope" xmlns:cor="http://www.caqh.org/SOAP/WSDL/CORERule2.2.0.xsd">
        <soapenv:Header>
          <wsse:Security soapenv:mustUnderstand="true" xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">
            <wsse:UsernameToken>
              <wsse:Username>STEDI-ACCOUNT-ID</wsse:Username>
              <wsse:Password>STEDI-API-KEY</wsse:Password>
            </wsse:UsernameToken>
          </wsse:Security>
        </soapenv:Header>
        <soapenv:Body>
            <cor:COREEnvelopeRealTimeRequest>
              <PayloadType>X12_270_Request_005010X279A1</PayloadType>
              <ProcessingMode>RealTime</ProcessingMode>
              <PayloadID>f81d4fae-7dec-11d0-a765-00a0c91e6b12</PayloadID>
              <TimeStamp>2007-08-30T10:20:34.000Z</TimeStamp>
              <SenderID>STEDI</SenderID>
              <ReceiverID>STEDI</ReceiverID>
              <CORERuleVersion>2.2.0</CORERuleVersion>
              <Payload><![CDATA[ISA*00*          *00*          *ZZ*AV09311993     *01*030240928      *210101*1200*^*00501*000000001*0*P*>~GS*HS*1510848*030240928*20210101*120000*1*X*005010X279A1~ST*270*0001*005010X279A1~BHT*0022*13*00000000000000000000000000*20210101*1200~HL*1**20*1~NM1*PR*2*UnitedHealthcare*****PI*87726~HL*2*1*21*1~NM1*1P*2*Provider Name*****XX*1999999984~HL*3*2*22*1~NM1*IL*1*Doe*John****MI*UHC202649~HL*4*3*23*0~TRN*1*00000000000000000000000000*3117151744~NM1*03*1*Doe*Jane~DMG*D8*19521121~EQ*30~SE*14*0001~GE*1*1~IEA*1*000000001~]]></Payload>
            </cor:COREEnvelopeRealTimeRequest>
        </soapenv:Body>
      </soapenv:Envelope>'
      ```
    </Tab>
  </Tabs>
</Accordion>

#### Subscriber only [#subscriber-only]

The following examples request benefits information for the subscriber only. You send the subscriber's information in the `subscriber` object in the request. The payer's response contains the subscriber's information in the `subscriber` object and doesn't include any dependent information.

**Aetna**

<Accordion title="Aetna - Mock request 1" id="aetna---mock-request-1-1">
  <Tabs items="[&#x22;Request - JSON&#x22;, &#x22;Request - Raw X12&#x22;, &#x22;Request - SOAP&#x22;]">
    <Tab value="Request - JSON">
      {/* schema:EligibilityCheckRequestContent */}

      ```bash test request for Aetna
      curl --request POST \
        --url 'https://healthcare.us.stedi.com/2024-04-01/change/medicalnetwork/eligibility/v3' \
        --header 'Authorization: Key {test_api_key}' \
        --header 'Content-Type: application/json' \
        --data '{
          "tradingPartnerServiceId": "60054",
          "provider": {
              "organizationName": "Provider Name",
              "npi": "1999999984"
          },
          "subscriber": {
              "firstName": "Jane",
              "lastName": "Doe",
              "dateOfBirth": "20040404",
              "memberId": "AETNA12345"
          },
          "encounter": {
              "serviceTypeCodes": ["30"]
          }
      }'
      ```
    </Tab>

    <Tab value="Request - Raw X12">
      ```bash test request for Aetna
      curl --request POST \
        --url 'https://healthcare.us.stedi.com/2024-04-01/change/medicalnetwork/eligibility/v3/raw-x12' \
        --header 'Authorization: Key {test_api_key}' \
        --header 'Content-Type: application/json' \
        --data '{
          "x12": "ISA*00*          *00*          *ZZ*AV09311993     *01*030240928      *210101*1200*^*00501*000000001*0*P*>~GS*HS*1510848*030240928*20210101*120000*1*X*005010X279A1~ST*270*0001*005010X279A1~BHT*0022*13*00000000000000000000000000*20210101*1200~HL*1**20*1~NM1*PR*2*Aetna*****PI*60054~HL*2*1*21*1~NM1*1P*2*Provider Name*****XX*1999999984~HL*3*2*22*0~TRN*1*00000000000000000000000000*3117151744~NM1*IL*1*Doe*Jane****MI*AETNA12345~DMG*D8*20040404~EQ*30~SE*12*0001~GE*1*1~IEA*1*000000001~"
        }'
      ```
    </Tab>

    <Tab value="Request - SOAP">
      ```bash test request for Aetna
      curl --request POST \
        --url 'https://healthcare.us.stedi.com/2025-06-01/protocols/caqh-core' \
        --header 'Content-Type: application/soap+xml' \
        --data '<soapenv:Envelope xmlns:soapenv="http://www.w3.org/2003/05/soap-envelope" xmlns:cor="http://www.caqh.org/SOAP/WSDL/CORERule2.2.0.xsd">
        <soapenv:Header>
          <wsse:Security soapenv:mustUnderstand="true" xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">
            <wsse:UsernameToken>
              <wsse:Username>STEDI-ACCOUNT-ID</wsse:Username>
              <wsse:Password>STEDI-API-KEY</wsse:Password>
            </wsse:UsernameToken>
          </wsse:Security>
        </soapenv:Header>
        <soapenv:Body>
            <cor:COREEnvelopeRealTimeRequest>
              <PayloadType>X12_270_Request_005010X279A1</PayloadType>
              <ProcessingMode>RealTime</ProcessingMode>
              <PayloadID>f81d4fae-7dec-11d0-a765-00a0c91e6b12</PayloadID>
              <TimeStamp>2007-08-30T10:20:34.000Z</TimeStamp>
              <SenderID>STEDI</SenderID>
              <ReceiverID>STEDI</ReceiverID>
              <CORERuleVersion>2.2.0</CORERuleVersion>
              <Payload><![CDATA[ISA*00*          *00*          *ZZ*AV09311993     *01*030240928      *210101*1200*^*00501*000000001*0*P*>~GS*HS*1510848*030240928*20210101*120000*1*X*005010X279A1~ST*270*0001*005010X279A1~BHT*0022*13*00000000000000000000000000*20210101*1200~HL*1**20*1~NM1*PR*2*Aetna*****PI*60054~HL*2*1*21*1~NM1*1P*2*Provider Name*****XX*1999999984~HL*3*2*22*0~TRN*1*00000000000000000000000000*3117151744~NM1*IL*1*Doe*Jane****MI*AETNA12345~DMG*D8*20040404~EQ*30~SE*12*0001~GE*1*1~IEA*1*000000001~]]></Payload>
            </cor:COREEnvelopeRealTimeRequest>
        </soapenv:Body>
      </soapenv:Envelope>'
      ```
    </Tab>
  </Tabs>
</Accordion>

**Ambetter**

<Accordion title="Ambetter - Mock request 1" id="ambetter---mock-request-1">
  <Tabs items="[&#x22;Request - JSON&#x22;, &#x22;Request - Raw X12&#x22;, &#x22;Request - SOAP&#x22;]">
    <Tab value="Request - JSON">
      {/* schema:EligibilityCheckRequestContent */}

      ```bash test request for Ambetter
      curl --request POST \
        --url 'https://healthcare.us.stedi.com/2024-04-01/change/medicalnetwork/eligibility/v3' \
        --header 'Authorization: Key {test_api_key}' \
        --header 'Content-Type: application/json' \
        --data '{
          "tradingPartnerServiceId": "68069",
          "provider": {
              "organizationName": "Provider Name",
              "npi": "1999999984"
          },
          "subscriber": {
              "firstName": "John",
              "lastName": "Doe",
              "dateOfBirth": "19940404",
              "memberId": "AMBETTER123"
          },
          "encounter": {
              "serviceTypeCodes": ["30"]
          }
      }'
      ```
    </Tab>

    <Tab value="Request - Raw X12">
      ```bash test request for Ambetter
      curl --request POST \
        --url 'https://healthcare.us.stedi.com/2024-04-01/change/medicalnetwork/eligibility/v3/raw-x12' \
        --header 'Authorization: Key {test_api_key}' \
        --header 'Content-Type: application/json' \
        --data '{
          "x12": "ISA*00*          *00*          *ZZ*AV09311993     *01*030240928      *210101*1200*^*00501*000000001*0*P*>~GS*HS*1510848*030240928*20210101*120000*1*X*005010X279A1~ST*270*0001*005010X279A1~BHT*0022*13*00000000000000000000000000*20210101*1200~HL*1**20*1~NM1*PR*2*Centene (Medical)*****PI*68069~HL*2*1*21*1~NM1*1P*2*Provider Name*****XX*1999999984~HL*3*2*22*0~TRN*1*00000000000000000000000000*3117151744~NM1*IL*1*Doe*John****MI*AMBETTER123~DMG*D8*19940404~EQ*30~SE*12*0001~GE*1*1~IEA*1*000000001~"
        }'
      ```
    </Tab>

    <Tab value="Request - SOAP">
      ```bash test request for Ambetter
      curl --request POST \
        --url 'https://healthcare.us.stedi.com/2025-06-01/protocols/caqh-core' \
        --header 'Content-Type: application/soap+xml' \
        --data '<soapenv:Envelope xmlns:soapenv="http://www.w3.org/2003/05/soap-envelope" xmlns:cor="http://www.caqh.org/SOAP/WSDL/CORERule2.2.0.xsd">
        <soapenv:Header>
          <wsse:Security soapenv:mustUnderstand="true" xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">
            <wsse:UsernameToken>
              <wsse:Username>STEDI-ACCOUNT-ID</wsse:Username>
              <wsse:Password>STEDI-API-KEY</wsse:Password>
            </wsse:UsernameToken>
          </wsse:Security>
        </soapenv:Header>
        <soapenv:Body>
            <cor:COREEnvelopeRealTimeRequest>
              <PayloadType>X12_270_Request_005010X279A1</PayloadType>
              <ProcessingMode>RealTime</ProcessingMode>
              <PayloadID>f81d4fae-7dec-11d0-a765-00a0c91e6b12</PayloadID>
              <TimeStamp>2007-08-30T10:20:34.000Z</TimeStamp>
              <SenderID>STEDI</SenderID>
              <ReceiverID>STEDI</ReceiverID>
              <CORERuleVersion>2.2.0</CORERuleVersion>
              <Payload><![CDATA[ISA*00*          *00*          *ZZ*AV09311993     *01*030240928      *210101*1200*^*00501*000000001*0*P*>~GS*HS*1510848*030240928*20210101*120000*1*X*005010X279A1~ST*270*0001*005010X279A1~BHT*0022*13*00000000000000000000000000*20210101*1200~HL*1**20*1~NM1*PR*2*Centene (Medical)*****PI*68069~HL*2*1*21*1~NM1*1P*2*Provider Name*****XX*1999999984~HL*3*2*22*0~TRN*1*00000000000000000000000000*3117151744~NM1*IL*1*Doe*John****MI*AMBETTER123~DMG*D8*19940404~EQ*30~SE*12*0001~GE*1*1~IEA*1*000000001~]]></Payload>
            </cor:COREEnvelopeRealTimeRequest>
        </soapenv:Body>
      </soapenv:Envelope>'
      ```
    </Tab>
  </Tabs>
</Accordion>

**Cigna**

<Accordion title="Cigna - Mock request 1" id="cigna---mock-request-1-1">
    <Tabs items="[&#x22;Request - JSON&#x22;, &#x22;Request - Raw X12&#x22;, &#x22;Request - SOAP&#x22;]">
      <Tab value="Request - JSON">
        {/* schema:EligibilityCheckRequestContent */}

        ```bash test request for CIGNA
        curl --request POST \
          --url 'https://healthcare.us.stedi.com/2024-04-01/change/medicalnetwork/eligibility/v3' \
          --header 'Authorization: Key {test_api_key}' \
          --header 'Content-Type: application/json' \
          --data '{
            "controlNumber":"123456789",
            "tradingPartnerServiceId": "62308",
            "provider": {
                "organizationName": "Provider Name",
                "npi": "1999999984"
            },
            "subscriber": {
                "firstName": "James",
                "lastName": "Jones",
                "dateOfBirth": "19910202",
                "memberId": "23456789100"
            },
            "encounter": {
                "serviceTypeCodes": ["30"]
            }
        }'
        ```
      </Tab>

      <Tab value="Request - Raw X12">
        ```bash test request for CIGNA
        curl --request POST \
          --url 'https://healthcare.us.stedi.com/2024-04-01/change/medicalnetwork/eligibility/v3/raw-x12' \
          --header 'Authorization: Key {test_api_key}' \
          --header 'Content-Type: application/json' \
          --data '{
            "x12": "ISA*00*          *00*          *ZZ*AV09311993     *01*030240928      *210101*1200*^*00501*000000001*0*P*>~GS*HS*1510848*030240928*20210101*120000*1*X*005010X279A1~ST*270*0001*005010X279A1~BHT*0022*13*00000000000000000000000000*20210101*1200~HL*1**20*1~NM1*PR*2*Cigna*****PI*62308~HL*2*1*21*1~NM1*1P*2*Provider Name*****XX*1999999984~HL*3*2*22*0~TRN*1*00000000000000000000000000*3117151744~NM1*IL*1*Jones*James****MI*23456789100~DMG*D8*19910202~EQ*30~SE*12*0001~GE*1*1~IEA*1*000000001~"
          }'
        ```
      </Tab>

      <Tab value="Request - SOAP">
        ```bash test request for CIGNA
        curl --request POST \
          --url 'https://healthcare.us.stedi.com/2025-06-01/protocols/caqh-core' \
          --header 'Content-Type: application/soap+xml' \
          --data '<soapenv:Envelope xmlns:soapenv="http://www.w3.org/2003/05/soap-envelope" xmlns:cor="http://www.caqh.org/SOAP/WSDL/CORERule2.2.0.xsd">
          <soapenv:Header>
            <wsse:Security soapenv:mustUnderstand="true" xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">
              <wsse:UsernameToken>
                <wsse:Username>STEDI-ACCOUNT-ID</wsse:Username>
                <wsse:Password>STEDI-API-KEY</wsse:Password>
              </wsse:UsernameToken>
            </wsse:Security>
          </soapenv:Header>
          <soapenv:Body>
              <cor:COREEnvelopeRealTimeRequest>
                <PayloadType>X12_270_Request_005010X279A1</PayloadType>
                <ProcessingMode>RealTime</ProcessingMode>
                <PayloadID>f81d4fae-7dec-11d0-a765-00a0c91e6b12</PayloadID>
                <TimeStamp>2007-08-30T10:20:34.000Z</TimeStamp>
                <SenderID>STEDI</SenderID>
                <ReceiverID>STEDI</ReceiverID>
                <CORERuleVersion>2.2.0</CORERuleVersion>
                <Payload><![CDATA[ISA*00*          *00*          *ZZ*AV09311993     *01*030240928      *210101*1200*^*00501*000000001*0*P*>~GS*HS*1510848*030240928*20210101*120000*1*X*005010X279A1~ST*270*0001*005010X279A1~BHT*0022*13*00000000000000000000000000*20210101*1200~HL*1**20*1~NM1*PR*2*Cigna*****PI*62308~HL*2*1*21*1~NM1*1P*2*Provider Name*****XX*1999999984~HL*3*2*22*0~TRN*1*00000000000000000000000000*3117151744~NM1*IL*1*Jones*James****MI*23456789100~DMG*D8*19910202~EQ*30~SE*12*0001~GE*1*1~IEA*1*000000001~]]></Payload>
              </cor:COREEnvelopeRealTimeRequest>
          </soapenv:Body>
        </soapenv:Envelope>'
        ```
      </Tab>
    </Tabs>
</Accordion>

<Accordion title="Cigna - Mock request 2" id="cigna---mock-request-2">
  <Tabs items="[&#x22;Request - JSON&#x22;, &#x22;Request - Raw X12&#x22;, &#x22;Request - SOAP&#x22;]">
    <Tab value="Request - JSON">
      {/* schema:EligibilityCheckRequestContent */}

      ```bash test request for CIGNA
      curl --request POST \
        --url 'https://healthcare.us.stedi.com/2024-04-01/change/medicalnetwork/eligibility/v3' \
        --header 'Authorization: Key {test_api_key}' \
        --header 'Content-Type: application/json' \
        --data '{
          "tradingPartnerServiceId": "62308",
          "provider": {
              "organizationName": "Provider Name",
              "npi": "1999999984"
          },
          "subscriber": {
              "firstName": "Rolando",
              "lastName": "Arrojo",
              "dateOfBirth": "19710102",
              "memberId": "5643296"
          },
          "encounter": {
              "serviceTypeCodes": ["30"]
          }
      }'
      ```
    </Tab>

    <Tab value="Request - Raw X12">
      ```bash test request for CIGNA
      curl --request POST \
        --url 'https://healthcare.us.stedi.com/2024-04-01/change/medicalnetwork/eligibility/v3/raw-x12' \
        --header 'Authorization: Key {test_api_key}' \
        --header 'Content-Type: application/json' \
        --data '{
          "x12": "ISA*00*          *00*          *ZZ*AV09311993     *01*030240928      *210101*1200*^*00501*000000001*0*P*>~GS*HS*1510848*030240928*20210101*120000*1*X*005010X279A1~ST*270*0001*005010X279A1~BHT*0022*13*00000000000000000000000000*20210101*1200~HL*1**20*1~NM1*PR*2*Cigna*****PI*62308~HL*2*1*21*1~NM1*1P*2*Provider Name*****XX*1999999984~HL*3*2*22*0~TRN*1*00000000000000000000000000*3117151744~NM1*IL*1*Arrojo*Rolando****MI*5643296~DMG*D8*19710102~EQ*30~SE*12*0001~GE*1*1~IEA*1*000000001~"
        }'
      ```
    </Tab>

    <Tab value="Request - SOAP">
      ```bash test request for CIGNA
      curl --request POST \
        --url 'https://healthcare.us.stedi.com/2025-06-01/protocols/caqh-core' \
        --header 'Content-Type: application/soap+xml' \
        --data '<soapenv:Envelope xmlns:soapenv="http://www.w3.org/2003/05/soap-envelope" xmlns:cor="http://www.caqh.org/SOAP/WSDL/CORERule2.2.0.xsd">
        <soapenv:Header>
          <wsse:Security soapenv:mustUnderstand="true" xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">
            <wsse:UsernameToken>
              <wsse:Username>STEDI-ACCOUNT-ID</wsse:Username>
              <wsse:Password>STEDI-API-KEY</wsse:Password>
            </wsse:UsernameToken>
          </wsse:Security>
        </soapenv:Header>
        <soapenv:Body>
            <cor:COREEnvelopeRealTimeRequest>
              <PayloadType>X12_270_Request_005010X279A1</PayloadType>
              <ProcessingMode>RealTime</ProcessingMode>
              <PayloadID>f81d4fae-7dec-11d0-a765-00a0c91e6b12</PayloadID>
              <TimeStamp>2007-08-30T10:20:34.000Z</TimeStamp>
              <SenderID>STEDI</SenderID>
              <ReceiverID>STEDI</ReceiverID>
              <CORERuleVersion>2.2.0</CORERuleVersion>
              <Payload><![CDATA[ISA*00*          *00*          *ZZ*AV09311993     *01*030240928      *210101*1200*^*00501*000000001*0*P*>~GS*HS*1510848*030240928*20210101*120000*1*X*005010X279A1~ST*270*0001*005010X279A1~BHT*0022*13*00000000000000000000000000*20210101*1200~HL*1**20*1~NM1*PR*2*Cigna*****PI*62308~HL*2*1*21*1~NM1*1P*2*Provider Name*****XX*1999999984~HL*3*2*22*0~TRN*1*00000000000000000000000000*3117151744~NM1*IL*1*Arrojo*Rolando****MI*5643296~DMG*D8*19710102~EQ*30~SE*12*0001~GE*1*1~IEA*1*000000001~]]></Payload>
            </cor:COREEnvelopeRealTimeRequest>
        </soapenv:Body>
      </soapenv:Envelope>'
      ```
    </Tab>
  </Tabs>
</Accordion>

<Accordion title="Cigna - Mock request 3" id="cigna---mock-request-3">
  <Tabs items="[&#x22;Request - JSON&#x22;, &#x22;Request - Raw X12&#x22;, &#x22;Request - SOAP&#x22;]">
    <Tab value="Request - JSON">
      {/* schema:EligibilityCheckRequestContent */}

      ```bash test request for CIGNA
      curl --request POST \
        --url 'https://healthcare.us.stedi.com/2024-04-01/change/medicalnetwork/eligibility/v3' \
        --header 'Authorization: Key {test_api_key}' \
        --header 'Content-Type: application/json' \
        --data '{
          "tradingPartnerServiceId": "62308",
          "provider": {
              "organizationName": "Provider Name",
              "npi": "1999999984"
          },
          "subscriber": {
              "firstName": "Rod",
              "lastName": "Beck",
              "dateOfBirth": "19720203",
              "memberId": "R5TJR4HR4H"
          },
          "encounter": {
              "serviceTypeCodes": ["30"]
          }
      }'
      ```
    </Tab>

    <Tab value="Request - Raw X12">
      ```bash test request for CIGNA
      curl --request POST \
        --url 'https://healthcare.us.stedi.com/2024-04-01/change/medicalnetwork/eligibility/v3/raw-x12' \
        --header 'Authorization: Key {test_api_key}' \
        --header 'Content-Type: application/json' \
        --data '{
          "x12": "ISA*00*          *00*          *ZZ*AV09311993     *01*030240928      *210101*1200*^*00501*000000001*0*P*>~GS*HS*1510848*030240928*20210101*120000*1*X*005010X279A1~ST*270*0001*005010X279A1~BHT*0022*13*00000000000000000000000000*20210101*1200~HL*1**20*1~NM1*PR*2*Cigna*****PI*62308~HL*2*1*21*1~NM1*1P*2*Provider Name*****XX*1999999984~HL*3*2*22*0~TRN*1*00000000000000000000000000*3117151744~NM1*IL*1*Beck*Rod****MI*R5TJR4HR4H~DMG*D8*19720203~EQ*30~SE*12*0001~GE*1*1~IEA*1*000000001~"
        }'
      ```
    </Tab>

    <Tab value="Request - SOAP">
      ```bash test request for CIGNA
      curl --request POST \
        --url 'https://healthcare.us.stedi.com/2025-06-01/protocols/caqh-core' \
        --header 'Content-Type: application/soap+xml' \
        --data '<soapenv:Envelope xmlns:soapenv="http://www.w3.org/2003/05/soap-envelope" xmlns:cor="http://www.caqh.org/SOAP/WSDL/CORERule2.2.0.xsd">
        <soapenv:Header>
          <wsse:Security soapenv:mustUnderstand="true" xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">
            <wsse:UsernameToken>
              <wsse:Username>STEDI-ACCOUNT-ID</wsse:Username>
              <wsse:Password>STEDI-API-KEY</wsse:Password>
            </wsse:UsernameToken>
          </wsse:Security>
        </soapenv:Header>
        <soapenv:Body>
            <cor:COREEnvelopeRealTimeRequest>
              <PayloadType>X12_270_Request_005010X279A1</PayloadType>
              <ProcessingMode>RealTime</ProcessingMode>
              <PayloadID>f81d4fae-7dec-11d0-a765-00a0c91e6b12</PayloadID>
              <TimeStamp>2007-08-30T10:20:34.000Z</TimeStamp>
              <SenderID>STEDI</SenderID>
              <ReceiverID>STEDI</ReceiverID>
              <CORERuleVersion>2.2.0</CORERuleVersion>
              <Payload><![CDATA[ISA*00*          *00*          *ZZ*AV09311993     *01*030240928      *210101*1200*^*00501*000000001*0*P*>~GS*HS*1510848*030240928*20210101*120000*1*X*005010X279A1~ST*270*0001*005010X279A1~BHT*0022*13*00000000000000000000000000*20210101*1200~HL*1**20*1~NM1*PR*2*Cigna*****PI*62308~HL*2*1*21*1~NM1*1P*2*Provider Name*****XX*1999999984~HL*3*2*22*0~TRN*1*00000000000000000000000000*3117151744~NM1*IL*1*Beck*Rod****MI*R5TJR4HR4H~DMG*D8*19720203~EQ*30~SE*12*0001~GE*1*1~IEA*1*000000001~]]></Payload>
            </cor:COREEnvelopeRealTimeRequest>
        </soapenv:Body>
      </soapenv:Envelope>'
      ```
    </Tab>
  </Tabs>
</Accordion>

<Accordion title="Cigna - Mock request 4" id="cigna---mock-request-4">
  <Tabs items="[&#x22;Request - JSON&#x22;, &#x22;Request - Raw X12&#x22;, &#x22;Request - SOAP&#x22;]">
    <Tab value="Request - JSON">
      {/* schema:EligibilityCheckRequestContent */}

      ```bash test request for CIGNA
      curl --request POST \
        --url 'https://healthcare.us.stedi.com/2024-04-01/change/medicalnetwork/eligibility/v3' \
        --header 'Authorization: Key {test_api_key}' \
        --header 'Content-Type: application/json' \
        --data '{
          "tradingPartnerServiceId": "62308",
          "provider": {
              "organizationName": "Provider Name",
              "npi": "1999999984"
          },
          "subscriber": {
              "firstName": "David",
              "lastName": "Cone",
              "dateOfBirth": "19730304",
              "memberId": "5642296"
          },
          "encounter": {
              "serviceTypeCodes": ["30"]
          }
      }'
      ```
    </Tab>

    <Tab value="Request - Raw X12">
      ```bash test request for CIGNA
      curl --request POST \
        --url 'https://healthcare.us.stedi.com/2024-04-01/change/medicalnetwork/eligibility/v3/raw-x12' \
        --header 'Authorization: Key {test_api_key}' \
        --header 'Content-Type: application/json' \
        --data '{
          "x12": "ISA*00*          *00*          *ZZ*AV09311993     *01*030240928      *210101*1200*^*00501*000000001*0*P*>~GS*HS*1510848*030240928*20210101*120000*1*X*005010X279A1~ST*270*0001*005010X279A1~BHT*0022*13*00000000000000000000000000*20210101*1200~HL*1**20*1~NM1*PR*2*Cigna*****PI*62308~HL*2*1*21*1~NM1*1P*2*Provider Name*****XX*1999999984~HL*3*2*22*0~TRN*1*00000000000000000000000000*3117151744~NM1*IL*1*Cone*David****MI*5642296~DMG*D8*19730304~EQ*30~SE*12*0001~GE*1*1~IEA*1*000000001~"
        }'
      ```
    </Tab>

    <Tab value="Request - SOAP">
      ```bash test request for CIGNA
      curl --request POST \
        --url 'https://healthcare.us.stedi.com/2025-06-01/protocols/caqh-core' \
        --header 'Content-Type: application/soap+xml' \
        --data '<soapenv:Envelope xmlns:soapenv="http://www.w3.org/2003/05/soap-envelope" xmlns:cor="http://www.caqh.org/SOAP/WSDL/CORERule2.2.0.xsd">
        <soapenv:Header>
          <wsse:Security soapenv:mustUnderstand="true" xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">
            <wsse:UsernameToken>
              <wsse:Username>STEDI-ACCOUNT-ID</wsse:Username>
              <wsse:Password>STEDI-API-KEY</wsse:Password>
            </wsse:UsernameToken>
          </wsse:Security>
        </soapenv:Header>
        <soapenv:Body>
            <cor:COREEnvelopeRealTimeRequest>
              <PayloadType>X12_270_Request_005010X279A1</PayloadType>
              <ProcessingMode>RealTime</ProcessingMode>
              <PayloadID>f81d4fae-7dec-11d0-a765-00a0c91e6b12</PayloadID>
              <TimeStamp>2007-08-30T10:20:34.000Z</TimeStamp>
              <SenderID>STEDI</SenderID>
              <ReceiverID>STEDI</ReceiverID>
              <CORERuleVersion>2.2.0</CORERuleVersion>
              <Payload><![CDATA[ISA*00*          *00*          *ZZ*AV09311993     *01*030240928      *210101*1200*^*00501*000000001*0*P*>~GS*HS*1510848*030240928*20210101*120000*1*X*005010X279A1~ST*270*0001*005010X279A1~BHT*0022*13*00000000000000000000000000*20210101*1200~HL*1**20*1~NM1*PR*2*Cigna*****PI*62308~HL*2*1*21*1~NM1*1P*2*Provider Name*****XX*1999999984~HL*3*2*22*0~TRN*1*00000000000000000000000000*3117151744~NM1*IL*1*Cone*David****MI*5642296~DMG*D8*19730304~EQ*30~SE*12*0001~GE*1*1~IEA*1*000000001~]]></Payload>
            </cor:COREEnvelopeRealTimeRequest>
        </soapenv:Body>
      </soapenv:Envelope>'
      ```
    </Tab>
  </Tabs>
</Accordion>

<Accordion title="Cigna - Mock request 5" id="cigna---mock-request-5">
  <Tabs items="[&#x22;Request - JSON&#x22;, &#x22;Request - Raw X12&#x22;, &#x22;Request - SOAP&#x22;]">
    <Tab value="Request - JSON">
      {/* schema:EligibilityCheckRequestContent */}

      ```bash test request for CIGNA
      curl --request POST \
        --url 'https://healthcare.us.stedi.com/2024-04-01/change/medicalnetwork/eligibility/v3' \
        --header 'Authorization: Key {test_api_key}' \
        --header 'Content-Type: application/json' \
        --data '{
          "tradingPartnerServiceId": "62308",
          "provider": {
              "organizationName": "Provider Name",
              "npi": "1999999984"
          },
          "subscriber": {
              "firstName": "Frank",
              "lastName": "Castillo",
              "dateOfBirth": "19750405",
              "memberId": "FTRJRG3254"
          },
          "encounter": {
              "serviceTypeCodes": ["30"]
          }
      }'
      ```
    </Tab>

    <Tab value="Request - Raw X12">
      ```bash test request for CIGNA
      curl --request POST \
        --url 'https://healthcare.us.stedi.com/2024-04-01/change/medicalnetwork/eligibility/v3/raw-x12' \
        --header 'Authorization: Key {test_api_key}' \
        --header 'Content-Type: application/json' \
        --data '{
          "x12": "ISA*00*          *00*          *ZZ*AV09311993     *01*030240928      *210101*1200*^*00501*000000001*0*P*>~GS*HS*1510848*030240928*20210101*120000*1*X*005010X279A1~ST*270*0001*005010X279A1~BHT*0022*13*00000000000000000000000000*20210101*1200~HL*1**20*1~NM1*PR*2*Cigna*****PI*62308~HL*2*1*21*1~NM1*1P*2*Provider Name*****XX*1999999984~HL*3*2*22*0~TRN*1*00000000000000000000000000*3117151744~NM1*IL*1*Castillo*Frank****MI*FTRJRG3254~DMG*D8*19750405~EQ*30~SE*12*0001~GE*1*1~IEA*1*000000001~"
        }'
      ```
    </Tab>

    <Tab value="Request - SOAP">
      ```bash test request for CIGNA
      curl --request POST \
        --url 'https://healthcare.us.stedi.com/2025-06-01/protocols/caqh-core' \
        --header 'Content-Type: application/soap+xml' \
        --data '<soapenv:Envelope xmlns:soapenv="http://www.w3.org/2003/05/soap-envelope" xmlns:cor="http://www.caqh.org/SOAP/WSDL/CORERule2.2.0.xsd">
        <soapenv:Header>
          <wsse:Security soapenv:mustUnderstand="true" xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">
            <wsse:UsernameToken>
              <wsse:Username>STEDI-ACCOUNT-ID</wsse:Username>
              <wsse:Password>STEDI-API-KEY</wsse:Password>
            </wsse:UsernameToken>
          </wsse:Security>
        </soapenv:Header>
        <soapenv:Body>
            <cor:COREEnvelopeRealTimeRequest>
              <PayloadType>X12_270_Request_005010X279A1</PayloadType>
              <ProcessingMode>RealTime</ProcessingMode>
              <PayloadID>f81d4fae-7dec-11d0-a765-00a0c91e6b12</PayloadID>
              <TimeStamp>2007-08-30T10:20:34.000Z</TimeStamp>
              <SenderID>STEDI</SenderID>
              <ReceiverID>STEDI</ReceiverID>
              <CORERuleVersion>2.2.0</CORERuleVersion>
              <Payload><![CDATA[ISA*00*          *00*          *ZZ*AV09311993     *01*030240928      *210101*1200*^*00501*000000001*0*P*>~GS*HS*1510848*030240928*20210101*120000*1*X*005010X279A1~ST*270*0001*005010X279A1~BHT*0022*13*00000000000000000000000000*20210101*1200~HL*1**20*1~NM1*PR*2*Cigna*****PI*62308~HL*2*1*21*1~NM1*1P*2*Provider Name*****XX*1999999984~HL*3*2*22*0~TRN*1*00000000000000000000000000*3117151744~NM1*IL*1*Castillo*Frank****MI*FTRJRG3254~DMG*D8*19750405~EQ*30~SE*12*0001~GE*1*1~IEA*1*000000001~]]></Payload>
            </cor:COREEnvelopeRealTimeRequest>
        </soapenv:Body>
      </soapenv:Envelope>'
      ```
    </Tab>
  </Tabs>
</Accordion>

<Accordion title="Cigna - Mock request 6" id="cigna---mock-request-6">
  <Tabs items="[&#x22;Request - JSON&#x22;, &#x22;Request - Raw X12&#x22;, &#x22;Request - SOAP&#x22;]">
    <Tab value="Request - JSON">
      {/* schema:EligibilityCheckRequestContent */}

      ```bash test request for CIGNA
      curl --request POST \
        --url 'https://healthcare.us.stedi.com/2024-04-01/change/medicalnetwork/eligibility/v3' \
        --header 'Authorization: Key {test_api_key}' \
        --header 'Content-Type: application/json' \
        --data '{
          "tradingPartnerServiceId": "62308",
          "provider": {
              "organizationName": "Provider Name",
              "npi": "1999999984"
          },
          "subscriber": {
              "firstName": "Casey",
              "lastName": "Fossum",
              "dateOfBirth": "19760506",
              "memberId": "5641296"
          },
          "encounter": {
              "serviceTypeCodes": ["30"]
          }
      }'
      ```
    </Tab>

    <Tab value="Request - Raw X12">
      ```bash test request for CIGNA
      curl --request POST \
        --url 'https://healthcare.us.stedi.com/2024-04-01/change/medicalnetwork/eligibility/v3/raw-x12' \
        --header 'Authorization: Key {test_api_key}' \
        --header 'Content-Type: application/json' \
        --data '{
          "x12": "ISA*00*          *00*          *ZZ*AV09311993     *01*030240928      *210101*1200*^*00501*000000001*0*P*>~GS*HS*1510848*030240928*20210101*120000*1*X*005010X279A1~ST*270*0001*005010X279A1~BHT*0022*13*00000000000000000000000000*20210101*1200~HL*1**20*1~NM1*PR*2*Cigna*****PI*62308~HL*2*1*21*1~NM1*1P*2*Provider Name*****XX*1999999984~HL*3*2*22*0~TRN*1*00000000000000000000000000*3117151744~NM1*IL*1*Fossum*Casey****MI*5641296~DMG*D8*19760506~EQ*30~SE*12*0001~GE*1*1~IEA*1*000000001~"
        }'
      ```
    </Tab>

    <Tab value="Request - SOAP">
      ```bash test request for CIGNA
      curl --request POST \
        --url 'https://healthcare.us.stedi.com/2025-06-01/protocols/caqh-core' \
        --header 'Content-Type: application/soap+xml' \
        --data '<soapenv:Envelope xmlns:soapenv="http://www.w3.org/2003/05/soap-envelope" xmlns:cor="http://www.caqh.org/SOAP/WSDL/CORERule2.2.0.xsd">
        <soapenv:Header>
          <wsse:Security soapenv:mustUnderstand="true" xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">
            <wsse:UsernameToken>
              <wsse:Username>STEDI-ACCOUNT-ID</wsse:Username>
              <wsse:Password>STEDI-API-KEY</wsse:Password>
            </wsse:UsernameToken>
          </wsse:Security>
        </soapenv:Header>
        <soapenv:Body>
            <cor:COREEnvelopeRealTimeRequest>
              <PayloadType>X12_270_Request_005010X279A1</PayloadType>
              <ProcessingMode>RealTime</ProcessingMode>
              <PayloadID>f81d4fae-7dec-11d0-a765-00a0c91e6b12</PayloadID>
              <TimeStamp>2007-08-30T10:20:34.000Z</TimeStamp>
              <SenderID>STEDI</SenderID>
              <ReceiverID>STEDI</ReceiverID>
              <CORERuleVersion>2.2.0</CORERuleVersion>
              <Payload><![CDATA[ISA*00*          *00*          *ZZ*AV09311993     *01*030240928      *210101*1200*^*00501*000000001*0*P*>~GS*HS*1510848*030240928*20210101*120000*1*X*005010X279A1~ST*270*0001*005010X279A1~BHT*0022*13*00000000000000000000000000*20210101*1200~HL*1**20*1~NM1*PR*2*Cigna*****PI*62308~HL*2*1*21*1~NM1*1P*2*Provider Name*****XX*1999999984~HL*3*2*22*0~TRN*1*00000000000000000000000000*3117151744~NM1*IL*1*Fossum*Casey****MI*5641296~DMG*D8*19760506~EQ*30~SE*12*0001~GE*1*1~IEA*1*000000001~]]></Payload>
            </cor:COREEnvelopeRealTimeRequest>
        </soapenv:Body>
      </soapenv:Envelope>'
      ```
    </Tab>
  </Tabs>
</Accordion>

<Accordion title="Cigna - Mock request 7" id="cigna---mock-request-7">
  <Tabs items="[&#x22;Request - JSON&#x22;, &#x22;Request - Raw X12&#x22;, &#x22;Request - SOAP&#x22;]">
    <Tab value="Request - JSON">
      {/* schema:EligibilityCheckRequestContent */}

      ```bash test request for CIGNA
      curl --request POST \
        --url 'https://healthcare.us.stedi.com/2024-04-01/change/medicalnetwork/eligibility/v3' \
        --header 'Authorization: Key {test_api_key}' \
        --header 'Content-Type: application/json' \
        --data '{
          "tradingPartnerServiceId": "62308",
          "provider": {
              "organizationName": "Provider Name",
              "npi": "1999999984"
          },
          "subscriber": {
              "firstName": "Rich",
              "lastName": "Garces",
              "dateOfBirth": "19770607",
              "memberId": "DHW5445"
          },
          "encounter": {
              "serviceTypeCodes": ["30"]
          }
      }'
      ```
    </Tab>

    <Tab value="Request - Raw X12">
      ```bash test request for CIGNA
      curl --request POST \
        --url 'https://healthcare.us.stedi.com/2024-04-01/change/medicalnetwork/eligibility/v3/raw-x12' \
        --header 'Authorization: Key {test_api_key}' \
        --header 'Content-Type: application/json' \
        --data '{
          "x12": "ISA*00*          *00*          *ZZ*AV09311993     *01*030240928      *210101*1200*^*00501*000000001*0*P*>~GS*HS*1510848*030240928*20210101*120000*1*X*005010X279A1~ST*270*0001*005010X279A1~BHT*0022*13*00000000000000000000000000*20210101*1200~HL*1**20*1~NM1*PR*2*Cigna*****PI*62308~HL*2*1*21*1~NM1*1P*2*Provider Name*****XX*1999999984~HL*3*2*22*0~TRN*1*00000000000000000000000000*3117151744~NM1*IL*1*Garces*Rich****MI*DHW5445~DMG*D8*19770607~EQ*30~SE*12*0001~GE*1*1~IEA*1*000000001~"
        }'
      ```
    </Tab>

    <Tab value="Request - SOAP">
      ```bash test request for CIGNA
      curl --request POST \
        --url 'https://healthcare.us.stedi.com/2025-06-01/protocols/caqh-core' \
        --header 'Content-Type: application/soap+xml' \
        --data '<soapenv:Envelope xmlns:soapenv="http://www.w3.org/2003/05/soap-envelope" xmlns:cor="http://www.caqh.org/SOAP/WSDL/CORERule2.2.0.xsd">
        <soapenv:Header>
          <wsse:Security soapenv:mustUnderstand="true" xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">
            <wsse:UsernameToken>
              <wsse:Username>STEDI-ACCOUNT-ID</wsse:Username>
              <wsse:Password>STEDI-API-KEY</wsse:Password>
            </wsse:UsernameToken>
          </wsse:Security>
        </soapenv:Header>
        <soapenv:Body>
            <cor:COREEnvelopeRealTimeRequest>
              <PayloadType>X12_270_Request_005010X279A1</PayloadType>
              <ProcessingMode>RealTime</ProcessingMode>
              <PayloadID>f81d4fae-7dec-11d0-a765-00a0c91e6b12</PayloadID>
              <TimeStamp>2007-08-30T10:20:34.000Z</TimeStamp>
              <SenderID>STEDI</SenderID>
              <ReceiverID>STEDI</ReceiverID>
              <CORERuleVersion>2.2.0</CORERuleVersion>
              <Payload><![CDATA[ISA*00*          *00*          *ZZ*AV09311993     *01*030240928      *210101*1200*^*00501*000000001*0*P*>~GS*HS*1510848*030240928*20210101*120000*1*X*005010X279A1~ST*270*0001*005010X279A1~BHT*0022*13*00000000000000000000000000*20210101*1200~HL*1**20*1~NM1*PR*2*Cigna*****PI*62308~HL*2*1*21*1~NM1*1P*2*Provider Name*****XX*1999999984~HL*3*2*22*0~TRN*1*00000000000000000000000000*3117151744~NM1*IL*1*Garces*Rich****MI*DHW5445~DMG*D8*19770607~EQ*30~SE*12*0001~GE*1*1~IEA*1*000000001~]]></Payload>
            </cor:COREEnvelopeRealTimeRequest>
        </soapenv:Body>
      </soapenv:Envelope>'
      ```
    </Tab>
  </Tabs>
</Accordion>

**Humana**

<Accordion title="Humana - Mock request 1" id="humana---mock-request-1">
  <Tabs items="[&#x22;Request - JSON&#x22;, &#x22;Request - Raw X12&#x22;, &#x22;Request - SOAP&#x22;]">
    <Tab value="Request - JSON">
      {/* schema:EligibilityCheckRequestContent */}

      ```bash test request for Humana
      curl --request POST \
        --url 'https://healthcare.us.stedi.com/2024-04-01/change/medicalnetwork/eligibility/v3' \
        --header 'Authorization: Key {test_api_key}' \
        --header 'Content-Type: application/json' \
        --data '{
          "tradingPartnerServiceId": "61101",
          "provider": {
              "organizationName": "Provider Name",
              "npi": "1999999984"
          },
          "subscriber": {
              "firstName": "Jane",
              "lastName": "Doe",
              "dateOfBirth": "19750505",
              "memberId": "HUMANA123"
          },
          "encounter": {
              "serviceTypeCodes": ["30"]
          }
      }'
      ```
    </Tab>

    <Tab value="Request - Raw X12">
      ```bash test request for Humana
      curl --request POST \
        --url 'https://healthcare.us.stedi.com/2024-04-01/change/medicalnetwork/eligibility/v3/raw-x12' \
        --header 'Authorization: Key {test_api_key}' \
        --header 'Content-Type: application/json' \
        --data '{
          "x12": "ISA*00*          *00*          *ZZ*AV09311993     *01*030240928      *210101*1200*^*00501*000000001*0*P*>~GS*HS*1510848*030240928*20210101*120000*1*X*005010X279A1~ST*270*0001*005010X279A1~BHT*0022*13*00000000000000000000000000*20210101*1200~HL*1**20*1~NM1*PR*2*Humana*****PI*61101~HL*2*1*21*1~NM1*1P*2*Provider Name*****XX*1999999984~HL*3*2*22*0~TRN*1*00000000000000000000000000*3117151744~NM1*IL*1*Doe*Jane****MI*HUMANA123~DMG*D8*19750505~EQ*30~SE*12*0001~GE*1*1~IEA*1*000000001~"
        }'
      ```
    </Tab>

    <Tab value="Request - SOAP">
      ```bash test request for Humana
      curl --request POST \
        --url 'https://healthcare.us.stedi.com/2025-06-01/protocols/caqh-core' \
        --header 'Content-Type: application/soap+xml' \
        --data '<soapenv:Envelope xmlns:soapenv="http://www.w3.org/2003/05/soap-envelope" xmlns:cor="http://www.caqh.org/SOAP/WSDL/CORERule2.2.0.xsd">
        <soapenv:Header>
          <wsse:Security soapenv:mustUnderstand="true" xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">
            <wsse:UsernameToken>
              <wsse:Username>STEDI-ACCOUNT-ID</wsse:Username>
              <wsse:Password>STEDI-API-KEY</wsse:Password>
            </wsse:UsernameToken>
          </wsse:Security>
        </soapenv:Header>
        <soapenv:Body>
            <cor:COREEnvelopeRealTimeRequest>
              <PayloadType>X12_270_Request_005010X279A1</PayloadType>
              <ProcessingMode>RealTime</ProcessingMode>
              <PayloadID>f81d4fae-7dec-11d0-a765-00a0c91e6b12</PayloadID>
              <TimeStamp>2007-08-30T10:20:34.000Z</TimeStamp>
              <SenderID>STEDI</SenderID>
              <ReceiverID>STEDI</ReceiverID>
              <CORERuleVersion>2.2.0</CORERuleVersion>
              <Payload><![CDATA[ISA*00*          *00*          *ZZ*AV09311993     *01*030240928      *210101*1200*^*00501*000000001*0*P*>~GS*HS*1510848*030240928*20210101*120000*1*X*005010X279A1~ST*270*0001*005010X279A1~BHT*0022*13*00000000000000000000000000*20210101*1200~HL*1**20*1~NM1*PR*2*Humana*****PI*61101~HL*2*1*21*1~NM1*1P*2*Provider Name*****XX*1999999984~HL*3*2*22*0~TRN*1*00000000000000000000000000*3117151744~NM1*IL*1*Doe*Jane****MI*HUMANA123~DMG*D8*19750505~EQ*30~SE*12*0001~GE*1*1~IEA*1*000000001~]]></Payload>
            </cor:COREEnvelopeRealTimeRequest>
        </soapenv:Body>
      </soapenv:Envelope>'
      ```
    </Tab>
  </Tabs>
</Accordion>

**Kaiser Permanente Northern California**

<Accordion title="Kaiser Permanente - Mock request 1" id="kaiser-permanente---mock-request-1">
  <Tabs items="[&#x22;Request - JSON&#x22;, &#x22;Request - Raw X12&#x22;, &#x22;Request - SOAP&#x22;]">
    <Tab value="Request - JSON">
      {/* schema:EligibilityCheckRequestContent */}

      ```bash test request for Kaiser Permanente
      curl --request POST \
        --url 'https://healthcare.us.stedi.com/2024-04-01/change/medicalnetwork/eligibility/v3' \
        --header 'Authorization: Key {test_api_key}' \
        --header 'Content-Type: application/json' \
        --data '{
          "tradingPartnerServiceId": "KSRCN",
          "provider": {
              "organizationName": "Provider Name",
              "npi": "1999999984"
          },
          "subscriber": {
              "firstName": "Jane",
              "lastName": "Doe",
              "dateOfBirth": "20020202",
              "memberId": "KAISER123456"
          },
          "encounter": {
              "serviceTypeCodes": ["30"]
          }
      }'
      ```
    </Tab>

    <Tab value="Request - Raw X12">
      ```bash test request for Kaiser Permanente
      curl --request POST \
        --url 'https://healthcare.us.stedi.com/2024-04-01/change/medicalnetwork/eligibility/v3/raw-x12' \
        --header 'Authorization: Key {test_api_key}' \
        --header 'Content-Type: application/json' \
        --data '{
          "x12": "ISA*00*          *00*          *ZZ*AV09311993     *01*030240928      *210101*1200*^*00501*000000001*0*P*>~GS*HS*1510848*030240928*20210101*120000*1*X*005010X279A1~ST*270*0001*005010X279A1~BHT*0022*13*00000000000000000000000000*20210101*1200~HL*1**20*1~NM1*PR*2*Kaiser Foundation Health Plan Northern California*****PI*KSRCN~HL*2*1*21*1~NM1*1P*2*Provider Name*****XX*1999999984~HL*3*2*22*0~TRN*1*00000000000000000000000000*3117151744~NM1*IL*1*Doe*Jane****MI*KAISER123456~DMG*D8*20020202~EQ*30~SE*12*0001~GE*1*1~IEA*1*000000001~"
        }'
      ```
    </Tab>

    <Tab value="Request - SOAP">
      ```bash test request for Kaiser Permanente
      curl --request POST \
        --url 'https://healthcare.us.stedi.com/2025-06-01/protocols/caqh-core' \
        --header 'Content-Type: application/soap+xml' \
        --data '<soapenv:Envelope xmlns:soapenv="http://www.w3.org/2003/05/soap-envelope" xmlns:cor="http://www.caqh.org/SOAP/WSDL/CORERule2.2.0.xsd">
        <soapenv:Header>
          <wsse:Security soapenv:mustUnderstand="true" xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">
            <wsse:UsernameToken>
              <wsse:Username>STEDI-ACCOUNT-ID</wsse:Username>
              <wsse:Password>STEDI-API-KEY</wsse:Password>
            </wsse:UsernameToken>
          </wsse:Security>
        </soapenv:Header>
        <soapenv:Body>
            <cor:COREEnvelopeRealTimeRequest>
              <PayloadType>X12_270_Request_005010X279A1</PayloadType>
              <ProcessingMode>RealTime</ProcessingMode>
              <PayloadID>f81d4fae-7dec-11d0-a765-00a0c91e6b12</PayloadID>
              <TimeStamp>2007-08-30T10:20:34.000Z</TimeStamp>
              <SenderID>STEDI</SenderID>
              <ReceiverID>STEDI</ReceiverID>
              <CORERuleVersion>2.2.0</CORERuleVersion>
              <Payload><![CDATA[ISA*00*          *00*          *ZZ*AV09311993     *01*030240928      *210101*1200*^*00501*000000001*0*P*>~GS*HS*1510848*030240928*20210101*120000*1*X*005010X279A1~ST*270*0001*005010X279A1~BHT*0022*13*00000000000000000000000000*20210101*1200~HL*1**20*1~NM1*PR*2*Kaiser Foundation Health Plan Northern California*****PI*KSRCN~HL*2*1*21*1~NM1*1P*2*Provider Name*****XX*1999999984~HL*3*2*22*0~TRN*1*00000000000000000000000000*3117151744~NM1*IL*1*Doe*Jane****MI*KAISER123456~DMG*D8*20020202~EQ*30~SE*12*0001~GE*1*1~IEA*1*000000001~]]></Payload>
            </cor:COREEnvelopeRealTimeRequest>
        </soapenv:Body>
      </soapenv:Envelope>'
      ```
    </Tab>
  </Tabs>
</Accordion>

**National Centers for Medicare & Medicaid Services (CMS)**

<Accordion title="CMS - Mock request 1" id="cms---mock-request-1">
  <Tabs items="[&#x22;Request - JSON&#x22;, &#x22;Request - Raw X12&#x22;, &#x22;Request - SOAP&#x22;]">
    <Tab value="Request - JSON">
      {/* schema:EligibilityCheckRequestContent */}

      ```bash test request for CMS
      curl --request POST \
        --url 'https://healthcare.us.stedi.com/2024-04-01/change/medicalnetwork/eligibility/v3' \
        --header 'Authorization: Key {test_api_key}' \
        --header 'Content-Type: application/json' \
        --data '{
          "tradingPartnerServiceId": "CMS",
          "provider": {
              "organizationName": "Provider Name",
              "npi": "1999999984"
          },
          "subscriber": {
              "firstName": "Jane",
              "lastName": "Doe",
              "dateOfBirth": "19550505",
              "memberId": "1AA2CC3DD45"
          },
          "encounter": {
              "serviceTypeCodes": ["30"]
          }
      }'
      ```
    </Tab>

    <Tab value="Request - Raw X12">
      ```bash test request for CMS
      curl --request POST \
        --url 'https://healthcare.us.stedi.com/2024-04-01/change/medicalnetwork/eligibility/v3/raw-x12' \
        --header 'Authorization: Key {test_api_key}' \
        --header 'Content-Type: application/json' \
        --data '{
          "x12": "ISA*00*          *00*          *ZZ*AV09311993     *01*030240928      *210101*1200*^*00501*000000001*0*P*>~GS*HS*1510848*030240928*20210101*120000*1*X*005010X279A1~ST*270*0001*005010X279A1~BHT*0022*13*00000000000000000000000000*20260420*1841~HL*1**20*1~NM1*PR*2*CMS*****PI*CMS~HL*2*1*21*1~NM1*1P*2*Provider Name*****XX*1999999984~HL*3*2*22*0~TRN*1*00000000000000000000000000*3117151744~NM1*IL*1*Doe*Jane****MI*1AA2CC3DD45~DMG*D8*19550505~EQ*30~SE*12*0001~GE*1*1~IEA*1*000000001~"
        }'
      ```
    </Tab>

    <Tab value="Request - SOAP">
      ```bash test request for CMS
      curl --request POST \
        --url 'https://healthcare.us.stedi.com/2025-06-01/protocols/caqh-core' \
        --header 'Content-Type: application/soap+xml' \
        --data '<soapenv:Envelope xmlns:soapenv="http://www.w3.org/2003/05/soap-envelope" xmlns:cor="http://www.caqh.org/SOAP/WSDL/CORERule2.2.0.xsd">
        <soapenv:Header>
          <wsse:Security soapenv:mustUnderstand="true" xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">
            <wsse:UsernameToken>
              <wsse:Username>STEDI-ACCOUNT-ID</wsse:Username>
              <wsse:Password>STEDI-API-KEY</wsse:Password>
            </wsse:UsernameToken>
          </wsse:Security>
        </soapenv:Header>
        <soapenv:Body>
            <cor:COREEnvelopeRealTimeRequest>
              <PayloadType>X12_270_Request_005010X279A1</PayloadType>
              <ProcessingMode>RealTime</ProcessingMode>
              <PayloadID>f81d4fae-7dec-11d0-a765-00a0c91e6b12</PayloadID>
              <TimeStamp>2007-08-30T10:20:34.000Z</TimeStamp>
              <SenderID>STEDI</SenderID>
              <ReceiverID>STEDI</ReceiverID>
              <CORERuleVersion>2.2.0</CORERuleVersion>
              <Payload><![CDATA[ISA*00*          *00*          *ZZ*AV09311993     *01*030240928      *210101*1200*^*00501*000000001*0*P*>~GS*HS*1510848*030240928*20210101*120000*1*X*005010X279A1~ST*270*0001*005010X279A1~BHT*0022*13*00000000000000000000000000*20260420*1841~HL*1**20*1~NM1*PR*2*CMS*****PI*CMS~HL*2*1*21*1~NM1*1P*2*Provider Name*****XX*1999999984~HL*3*2*22*0~TRN*1*00000000000000000000000000*3117151744~NM1*IL*1*Doe*Jane****MI*1AA2CC3DD45~DMG*D8*19550505~EQ*30~SE*12*0001~GE*1*1~IEA*1*000000001~]]></Payload>
            </cor:COREEnvelopeRealTimeRequest>
        </soapenv:Body>
      </soapenv:Envelope>'
      ```
    </Tab>
  </Tabs>
</Accordion>

**UnitedHealthcare**

<Accordion title="UHC - Mock request 1" id="uhc---mock-request-1">
  <Tabs items="[&#x22;Request - JSON&#x22;, &#x22;Request - Raw X12&#x22;, &#x22;Request - SOAP&#x22;]">
    <Tab value="Request - JSON">
      {/* schema:EligibilityCheckRequestContent */}

      ```bash test request for UHC
      curl --request POST \
        --url 'https://healthcare.us.stedi.com/2024-04-01/change/medicalnetwork/eligibility/v3' \
        --header 'Authorization: Key {test_api_key}' \
        --header 'Content-Type: application/json' \
        --data '{
          "tradingPartnerServiceId": "87726",
          "provider": {
              "organizationName": "Provider Name",
              "npi": "1999999984"
          },
          "subscriber": {
              "firstName": "Jane",
              "lastName": "Doe",
              "dateOfBirth": "19710101",
              "memberId": "UHC123456"
          },
          "encounter": {
              "serviceTypeCodes": ["30"]
          }
      }'
      ```
    </Tab>

    <Tab value="Request - Raw X12">
      ```bash test request for UHC
      curl --request POST \
        --url 'https://healthcare.us.stedi.com/2024-04-01/change/medicalnetwork/eligibility/v3/raw-x12' \
        --header 'Authorization: Key {test_api_key}' \
        --header 'Content-Type: application/json' \
        --data '{
          "x12": "ISA*00*          *00*          *ZZ*AV09311993     *01*030240928      *210101*1200*^*00501*000000001*0*P*>~GS*HS*1510848*030240928*20210101*120000*1*X*005010X279A1~ST*270*0001*005010X279A1~BHT*0022*13*00000000000000000000000000*20210101*1200~HL*1**20*1~NM1*PR*2*UnitedHealthcare*****PI*87726~HL*2*1*21*1~NM1*1P*2*Provider Name*****XX*1999999984~HL*3*2*22*0~TRN*1*00000000000000000000000000*3117151744~NM1*IL*1*Doe*Jane****MI*UHC123456~DMG*D8*19710101~EQ*30~SE*12*0001~GE*1*1~IEA*1*000000001~"
        }'
      ```
    </Tab>

    <Tab value="Request - SOAP">
      ```bash test request for UHC
      curl --request POST \
        --url 'https://healthcare.us.stedi.com/2025-06-01/protocols/caqh-core' \
        --header 'Content-Type: application/soap+xml' \
        --data '<soapenv:Envelope xmlns:soapenv="http://www.w3.org/2003/05/soap-envelope" xmlns:cor="http://www.caqh.org/SOAP/WSDL/CORERule2.2.0.xsd">
        <soapenv:Header>
          <wsse:Security soapenv:mustUnderstand="true" xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">
            <wsse:UsernameToken>
              <wsse:Username>STEDI-ACCOUNT-ID</wsse:Username>
              <wsse:Password>STEDI-API-KEY</wsse:Password>
            </wsse:UsernameToken>
          </wsse:Security>
        </soapenv:Header>
        <soapenv:Body>
            <cor:COREEnvelopeRealTimeRequest>
              <PayloadType>X12_270_Request_005010X279A1</PayloadType>
              <ProcessingMode>RealTime</ProcessingMode>
              <PayloadID>f81d4fae-7dec-11d0-a765-00a0c91e6b12</PayloadID>
              <TimeStamp>2007-08-30T10:20:34.000Z</TimeStamp>
              <SenderID>STEDI</SenderID>
              <ReceiverID>STEDI</ReceiverID>
              <CORERuleVersion>2.2.0</CORERuleVersion>
              <Payload><![CDATA[ISA*00*          *00*          *ZZ*AV09311993     *01*030240928      *210101*1200*^*00501*000000001*0*P*>~GS*HS*1510848*030240928*20210101*120000*1*X*005010X279A1~ST*270*0001*005010X279A1~BHT*0022*13*00000000000000000000000000*20210101*1200~HL*1**20*1~NM1*PR*2*UnitedHealthcare*****PI*87726~HL*2*1*21*1~NM1*1P*2*Provider Name*****XX*1999999984~HL*3*2*22*0~TRN*1*00000000000000000000000000*3117151744~NM1*IL*1*Doe*Jane****MI*UHC123456~DMG*D8*19710101~EQ*30~SE*12*0001~GE*1*1~IEA*1*000000001~]]></Payload>
            </cor:COREEnvelopeRealTimeRequest>
        </soapenv:Body>
      </soapenv:Envelope>'
      ```
    </Tab>
  </Tabs>
</Accordion>

#### MBI lookup for CMS checks [#mbi-lookup-for-cms-checks]

You must include the patient's Medicare Beneficiary Identifier (MBI) in every eligibility check you submit to the Centers for Medicare and Medicaid Services ([Payer ID: CMS](https://www.stedi.com/healthcare/network/cms)). When patients don't know their MBI, you can use Stedi's eligibility APIs to perform an MBI lookup.

This mock request is for an MBI lookup with the patient's Social Security Number (SSN), but you can also perform an MBI lookup without an SSN. Visit [MBI lookup](/healthcare/mbi-lookup) for more information.

<Accordion title="MBI lookup mock request" id="mbi-lookup-mock-request">
  <Tabs items="[&#x22;Request - JSON&#x22;, &#x22;Request - Raw X12&#x22;, &#x22;Request - SOAP&#x22;]">
    <Tab value="Request - JSON">
      {/* schema:EligibilityCheckRequestContent */}

      ```bash test request for CMS MBI Lookup
      curl --request POST \
        --url 'https://healthcare.us.stedi.com/2024-04-01/change/medicalnetwork/eligibility/v3' \
        --header 'Authorization: Key <test_api_key>' \
        --header 'Content-Type: application/json' \
        --data '{
          "controlNumber": "112233445",
          "tradingPartnerServiceId": "MBILU",
          "provider": {
              "organizationName": "Provider Name",
              "npi": "1999999984"
          },
          "subscriber": {
              "lastName": "Doe",
              "dateOfBirth": "19550505",
              "ssn": "123456789"
          },
          "encounter": {
              "serviceTypeCodes": [
                  "30"
              ]
          }
      }'
      ```
    </Tab>

    <Tab value="Request - Raw X12">
      ```bash test request for CMS MBI Lookup
      curl --request POST \
        --url 'https://healthcare.us.stedi.com/2024-04-01/change/medicalnetwork/eligibility/v3/raw-x12' \
        --header 'Authorization: Key <test_api_key>' \
        --header 'Content-Type: application/json' \
        --data '{
          "x12": "ISA*00*          *00*          *ZZ*AV09311993     *01*030240928      *210101*1200*^*00501*000000001*0*P*>~GS*HS*1510848*030240928*20210101*120000*1*X*005010X279A1~ST*270*0001*005010X279A1~BHT*0022*13*00000000000000000000000000*20210101*1200~HL*1**20*1~NM1*PR*2*CMS MBI Lookup*****PI*MBILU~HL*2*1*21*1~NM1*1P*2*Provider Name*****XX*1999999984~HL*3*2*22*0~TRN*1*00000000000000000000000000*3117151744~NM1*IL*1*Doe*****MI*123456789~REF*SY*123456789~DMG*D8*19550505~EQ*30~SE*13*0001~GE*1*1~IEA*1*000000001~"
        }'
      ```
    </Tab>

    <Tab value="Request - SOAP">
      ```bash test request for CMS MBI Lookup
      curl --request POST \
        --url 'https://healthcare.us.stedi.com/2025-06-01/protocols/caqh-core' \
        --header 'Content-Type: application/soap+xml' \
        --data '<soapenv:Envelope xmlns:soapenv="http://www.w3.org/2003/05/soap-envelope" xmlns:cor="http://www.caqh.org/SOAP/WSDL/CORERule2.2.0.xsd">
        <soapenv:Header>
          <wsse:Security soapenv:mustUnderstand="true" xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">
            <wsse:UsernameToken>
              <wsse:Username>STEDI-ACCOUNT-ID</wsse:Username>
              <wsse:Password>STEDI-API-KEY</wsse:Password>
            </wsse:UsernameToken>
          </wsse:Security>
        </soapenv:Header>
        <soapenv:Body>
            <cor:COREEnvelopeRealTimeRequest>
              <PayloadType>X12_270_Request_005010X279A1</PayloadType>
              <ProcessingMode>RealTime</ProcessingMode>
              <PayloadID>f81d4fae-7dec-11d0-a765-00a0c91e6b12</PayloadID>
              <TimeStamp>2007-08-30T10:20:34.000Z</TimeStamp>
              <SenderID>STEDI</SenderID>
              <ReceiverID>STEDI</ReceiverID>
              <CORERuleVersion>2.2.0</CORERuleVersion>
              <Payload><![CDATA[ISA*00*          *00*          *ZZ*AV09311993     *01*030240928      *210101*1200*^*00501*000000001*0*P*>~GS*HS*1510848*030240928*20210101*120000*1*X*005010X279A1~ST*270*0001*005010X279A1~BHT*0022*13*00000000000000000000000000*20210101*1200~HL*1**20*1~NM1*PR*2*CMS MBI Lookup*****PI*MBILU~HL*2*1*21*1~NM1*1P*2*Provider Name*****XX*1999999984~HL*3*2*22*0~TRN*1*00000000000000000000000000*3117151744~NM1*IL*1*Doe*****MI*123456789~REF*SY*123456789~DMG*D8*19550505~EQ*30~SE*13*0001~GE*1*1~IEA*1*000000001~]]></Payload>
            </cor:COREEnvelopeRealTimeRequest>
        </soapenv:Body>
      </soapenv:Envelope>'
      ```
    </Tab>
  </Tabs>
</Accordion>

### Medical - Inactive coverage [#medical---inactive-coverage]

The following example requests benefits information for the subscriber.

**UnitedHealthcare**

<Accordion title="UHC - Mock request 1" id="uhc---mock-request-1-1">
  <Tabs items="[&#x22;Request - JSON&#x22;, &#x22;Request - Raw X12&#x22;, &#x22;Request - SOAP&#x22;]">
    <Tab value="Request - JSON">
      {/* schema:EligibilityCheckRequestContent */}

      ```bash request for UHC
      curl --request POST \
        --url 'https://healthcare.us.stedi.com/2024-04-01/change/medicalnetwork/eligibility/v3' \
        --header 'Authorization: Key {test_api_key}' \
        --header 'Content-Type: application/json' \
        --data '{
          "tradingPartnerServiceId": "87726",
          "provider": {
              "organizationName": "Provider Name",
              "npi": "1999999984"
          },
          "subscriber": {
              "firstName": "Jane",
              "lastName": "Doe",
              "dateOfBirth": "19710101",
              "memberId": "UHCINACTIVE"
          },
          "encounter": {
              "serviceTypeCodes": ["30"]
          }
      }'
      ```
    </Tab>

    <Tab value="Request - Raw X12">
      ```bash request for UHC
      curl --request POST \
        --url 'https://healthcare.us.stedi.com/2024-04-01/change/medicalnetwork/eligibility/v3/raw-x12' \
        --header 'Authorization: Key {test_api_key}' \
        --header 'Content-Type: application/json' \
        --data '{
          "x12": "ISA*00*          *00*          *ZZ*AV09311993     *01*030240928      *210101*1200*^*00501*000000001*0*P*>~GS*HS*1510848*030240928*20210101*120000*1*X*005010X279A1~ST*270*0001*005010X279A1~BHT*0022*13*00000000000000000000000000*20210101*1200~HL*1**20*1~NM1*PR*2*UnitedHealthcare*****PI*87726~HL*2*1*21*1~NM1*1P*2*Provider Name*****XX*1999999984~HL*3*2*22*0~TRN*1*00000000000000000000000000*3117151744~NM1*IL*1*Doe*Jane****MI*UHCINACTIVE~DMG*D8*19710101~EQ*30~SE*12*0001~GE*1*1~IEA*1*000000001~"
        }'
      ```
    </Tab>

    <Tab value="Request - SOAP">
      ```bash request for UHC
      curl --request POST \
        --url 'https://healthcare.us.stedi.com/2025-06-01/protocols/caqh-core' \
        --header 'Content-Type: application/soap+xml' \
        --data '<soapenv:Envelope xmlns:soapenv="http://www.w3.org/2003/05/soap-envelope" xmlns:cor="http://www.caqh.org/SOAP/WSDL/CORERule2.2.0.xsd">
        <soapenv:Header>
          <wsse:Security soapenv:mustUnderstand="true" xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">
            <wsse:UsernameToken>
              <wsse:Username>STEDI-ACCOUNT-ID</wsse:Username>
              <wsse:Password>STEDI-API-KEY</wsse:Password>
            </wsse:UsernameToken>
          </wsse:Security>
        </soapenv:Header>
        <soapenv:Body>
            <cor:COREEnvelopeRealTimeRequest>
              <PayloadType>X12_270_Request_005010X279A1</PayloadType>
              <ProcessingMode>RealTime</ProcessingMode>
              <PayloadID>f81d4fae-7dec-11d0-a765-00a0c91e6b12</PayloadID>
              <TimeStamp>2007-08-30T10:20:34.000Z</TimeStamp>
              <SenderID>STEDI</SenderID>
              <ReceiverID>STEDI</ReceiverID>
              <CORERuleVersion>2.2.0</CORERuleVersion>
              <Payload><![CDATA[ISA*00*          *00*          *ZZ*AV09311993     *01*030240928      *210101*1200*^*00501*000000001*0*P*>~GS*HS*1510848*030240928*20210101*120000*1*X*005010X279A1~ST*270*0001*005010X279A1~BHT*0022*13*00000000000000000000000000*20210101*1200~HL*1**20*1~NM1*PR*2*UnitedHealthcare*****PI*87726~HL*2*1*21*1~NM1*1P*2*Provider Name*****XX*1999999984~HL*3*2*22*0~TRN*1*00000000000000000000000000*3117151744~NM1*IL*1*Doe*Jane****MI*UHCINACTIVE~DMG*D8*19710101~EQ*30~SE*12*0001~GE*1*1~IEA*1*000000001~]]></Payload>
            </cor:COREEnvelopeRealTimeRequest>
        </soapenv:Body>
      </soapenv:Envelope>'
      ```
    </Tab>
  </Tabs>
</Accordion>

### Dental [#dental]

The following example requests benefits information for the subscriber.

Request notes:

* `encounter`: Supports only service type code `35`.
* `provider`: You can use any organization name and any NPI, as long as it passes [check digit validation](https://www.cms.gov/Regulations-and-Guidance/Administrative-Simplification/NationalProvIdentStand/Downloads/NPIcheckdigit.pdf). To generate a dummy NPI, you can use [this free tool](https://jsfiddle.net/alexdresko/cLNB6).
* `subscriber`: You must use the exact values in the test request. Other birthdates, first names, last names, and member IDs return errors.

**Ameritas**

<Accordion title="Ameritas - Mock request" id="ameritas---mock-request">
  <Tabs items="[&#x22;Request - JSON&#x22;, &#x22;Request - Raw X12&#x22;, &#x22;Request - SOAP&#x22;]">
    <Tab value="Request - JSON">
      {/* schema:EligibilityCheckRequestContent */}

      ```bash test request for Ameritas
      curl --request POST \
        --url 'https://healthcare.us.stedi.com/2024-04-01/change/medicalnetwork/eligibility/v3' \
        --header 'Authorization: Key {test_api_key}' \
        --header 'Content-Type: application/json' \
        --data '{
          "tradingPartnerServiceId": "AMTAS00425",
          "provider": {
              "firstName": "Plaque",
              "lastName": "Penguin",
              "npi": "1999999984"
          },
          "subscriber": {
              "firstName": "Falcon",
              "lastName": "Dent",
              "dateOfBirth": "19850607",
              "memberId": "007007007"
          },
          "encounter": {
              "serviceTypeCodes": ["35"]
          }
      }'
      ```
    </Tab>

    <Tab value="Request - Raw X12">
      ```bash test request for Ameritas
      curl --request POST \
        --url 'https://healthcare.us.stedi.com/2024-04-01/change/medicalnetwork/eligibility/v3/raw-x12' \
        --header 'Authorization: Key {test_api_key}' \
        --header 'Content-Type: application/json' \
        --data '{
          "x12": "ISA*00*          *00*          *ZZ*AV09311993     *01*030240928      *210101*1200*^*00501*000000001*0*P*>~GS*HS*1510848*030240928*20210101*120000*1*X*005010X279A1~ST*270*0001*005010X279A1~BHT*0022*13*00000000000000000000000000*20210101*1200~HL*1**20*1~NM1*PR*2*Ameritas*****PI*AMTAS00425~HL*2*1*21*1~NM1*1P*1*Penguin*Plaque****XX*1999999984~HL*3*2*22*0~TRN*1*00000000000000000000000000*3117151744~NM1*IL*1*Dent*Falcon****MI*007007007~DMG*D8*19850607~EQ*35~SE*12*0001~GE*1*1~IEA*1*000000001~"
        }'
      ```
    </Tab>

    <Tab value="Request - SOAP">
      ```bash test request for Ameritas
      curl --request POST \
        --url 'https://healthcare.us.stedi.com/2025-06-01/protocols/caqh-core' \
        --header 'Content-Type: application/soap+xml' \
        --data '<soapenv:Envelope xmlns:soapenv="http://www.w3.org/2003/05/soap-envelope" xmlns:cor="http://www.caqh.org/SOAP/WSDL/CORERule2.2.0.xsd">
        <soapenv:Header>
          <wsse:Security soapenv:mustUnderstand="true" xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">
            <wsse:UsernameToken>
              <wsse:Username>STEDI-ACCOUNT-ID</wsse:Username>
              <wsse:Password>STEDI-API-KEY</wsse:Password>
            </wsse:UsernameToken>
          </wsse:Security>
        </soapenv:Header>
        <soapenv:Body>
            <cor:COREEnvelopeRealTimeRequest>
              <PayloadType>X12_270_Request_005010X279A1</PayloadType>
              <ProcessingMode>RealTime</ProcessingMode>
              <PayloadID>f81d4fae-7dec-11d0-a765-00a0c91e6b12</PayloadID>
              <TimeStamp>2007-08-30T10:20:34.000Z</TimeStamp>
              <SenderID>STEDI</SenderID>
              <ReceiverID>STEDI</ReceiverID>
              <CORERuleVersion>2.2.0</CORERuleVersion>
              <Payload><![CDATA[ISA*00*          *00*          *ZZ*AV09311993     *01*030240928      *210101*1200*^*00501*000000001*0*P*>~GS*HS*1510848*030240928*20210101*120000*1*X*005010X279A1~ST*270*0001*005010X279A1~BHT*0022*13*00000000000000000000000000*20210101*1200~HL*1**20*1~NM1*PR*2*Ameritas*****PI*AMTAS00425~HL*2*1*21*1~NM1*1P*1*Penguin*Plaque****XX*1999999984~HL*3*2*22*0~TRN*1*00000000000000000000000000*3117151744~NM1*IL*1*Dent*Falcon****MI*007007007~DMG*D8*19850607~EQ*35~SE*12*0001~GE*1*1~IEA*1*000000001~]]></Payload>
            </cor:COREEnvelopeRealTimeRequest>
        </soapenv:Body>
      </soapenv:Envelope>'
      ```
    </Tab>
  </Tabs>
</Accordion>

**Anthem Blue Cross Blue Shield of CA**

<Accordion title="BCBSCA - Mock request" id="bcbsca---mock-request">
  <Tabs items="[&#x22;Request - JSON&#x22;, &#x22;Request - Raw X12&#x22;, &#x22;Request - SOAP&#x22;]">
    <Tab value="Request - JSON">
      {/* schema:EligibilityCheckRequestContent */}

      ```bash test request for BCBSCA
      curl --request POST \
        --url 'https://healthcare.us.stedi.com/2024-04-01/change/medicalnetwork/eligibility/v3' \
        --header 'Authorization: Key {test_api_key}' \
        --header 'Content-Type: application/json' \
        --data '{
          "tradingPartnerServiceId": "84103",
          "provider": {
              "organizationName": "One",
              "npi": "1999999984"
          },
          "subscriber": {
              "firstName": "Aardvark",
              "lastName": "Dent",
              "dateOfBirth": "19701212",
              "memberId": "AFK987654321"
          },
          "encounter": {
              "serviceTypeCodes": ["35"]
          }
      }'
      ```
    </Tab>

    <Tab value="Request - Raw X12">
      ```bash test request for BCBSCA
      curl --request POST \
        --url 'https://healthcare.us.stedi.com/2024-04-01/change/medicalnetwork/eligibility/v3/raw-x12' \
        --header 'Authorization: Key {test_api_key}' \
        --header 'Content-Type: application/json' \
        --data '{
          "x12": "ISA*00*          *00*          *ZZ*AV09311993     *01*030240928      *210101*1200*^*00501*000000001*0*P*>~GS*HS*1510848*030240928*20210101*120000*1*X*005010X279A1~ST*270*0001*005010X279A1~BHT*0022*13*00000000000000000000000000*20210101*1200~HL*1**20*1~NM1*PR*2*Anthem Blue Cross Blue Shield of California*****PI*84103~HL*2*1*21*1~NM1*1P*2*One*****XX*1999999984~HL*3*2*22*0~TRN*1*00000000000000000000000000*3117151744~NM1*IL*1*Dent*Aardvark****MI*AFK987654321~DMG*D8*19701212~DTP*291*D8*20260420~EQ*35~SE*13*0001~GE*1*1~IEA*1*000000001~"
        }'
      ```
    </Tab>

    <Tab value="Request - SOAP">
      ```bash test request for BCBSCA
      curl --request POST \
        --url 'https://healthcare.us.stedi.com/2025-06-01/protocols/caqh-core' \
        --header 'Content-Type: application/soap+xml' \
        --data '<soapenv:Envelope xmlns:soapenv="http://www.w3.org/2003/05/soap-envelope" xmlns:cor="http://www.caqh.org/SOAP/WSDL/CORERule2.2.0.xsd">
        <soapenv:Header>
          <wsse:Security soapenv:mustUnderstand="true" xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">
            <wsse:UsernameToken>
              <wsse:Username>STEDI-ACCOUNT-ID</wsse:Username>
              <wsse:Password>STEDI-API-KEY</wsse:Password>
            </wsse:UsernameToken>
          </wsse:Security>
        </soapenv:Header>
        <soapenv:Body>
            <cor:COREEnvelopeRealTimeRequest>
              <PayloadType>X12_270_Request_005010X279A1</PayloadType>
              <ProcessingMode>RealTime</ProcessingMode>
              <PayloadID>f81d4fae-7dec-11d0-a765-00a0c91e6b12</PayloadID>
              <TimeStamp>2007-08-30T10:20:34.000Z</TimeStamp>
              <SenderID>STEDI</SenderID>
              <ReceiverID>STEDI</ReceiverID>
              <CORERuleVersion>2.2.0</CORERuleVersion>
              <Payload><![CDATA[ISA*00*          *00*          *ZZ*AV09311993     *01*030240928      *210101*1200*^*00501*000000001*0*P*>~GS*HS*1510848*030240928*20210101*120000*1*X*005010X279A1~ST*270*0001*005010X279A1~BHT*0022*13*00000000000000000000000000*20210101*1200~HL*1**20*1~NM1*PR*2*Anthem Blue Cross Blue Shield of California*****PI*84103~HL*2*1*21*1~NM1*1P*2*One*****XX*1999999984~HL*3*2*22*0~TRN*1*00000000000000000000000000*3117151744~NM1*IL*1*Dent*Aardvark****MI*AFK987654321~DMG*D8*19701212~DTP*291*D8*20260420~EQ*35~SE*13*0001~GE*1*1~IEA*1*000000001~]]></Payload>
            </cor:COREEnvelopeRealTimeRequest>
        </soapenv:Body>
      </soapenv:Envelope>'
      ```
    </Tab>
  </Tabs>
</Accordion>

**Cigna**

<Accordion title="Cigna - Mock request" id="cigna---mock-request">
  <Tabs items="[&#x22;Request - JSON&#x22;, &#x22;Request - Raw X12&#x22;, &#x22;Request - SOAP&#x22;]">
    <Tab value="Request - JSON">
      {/* schema:EligibilityCheckRequestContent */}

      ```bash test request for Cigna
      curl --request POST \
        --url 'https://healthcare.us.stedi.com/2024-04-01/change/medicalnetwork/eligibility/v3' \
        --header 'Authorization: Key {test_api_key}' \
        --header 'Content-Type: application/json' \
        --data '{
          "tradingPartnerServiceId": "62308",
          "provider": {
              "organizationName": "One",
              "npi": "1999999984"
          },
          "subscriber": {
              "firstName": "Jaguar",
              "lastName": "Dent",
              "dateOfBirth": "19960505",
              "memberId": "U3141592653"
          },
          "encounter": {
              "serviceTypeCodes": ["35"]
          }
      }'
      ```
    </Tab>

    <Tab value="Request - Raw X12">
      ```bash test request for Cigna
      curl --request POST \
        --url 'https://healthcare.us.stedi.com/2024-04-01/change/medicalnetwork/eligibility/v3/raw-x12' \
        --header 'Authorization: Key {test_api_key}' \
        --header 'Content-Type: application/json' \
        --data '{
          "x12": "ISA*00*          *00*          *ZZ*AV09311993     *01*030240928      *210101*1200*^*00501*000000001*0*P*>~GS*HS*1510848*030240928*20210101*120000*1*X*005010X279A1~ST*270*0001*005010X279A1~BHT*0022*13*00000000000000000000000000*20210101*1200~HL*1**20*1~NM1*PR*2*Cigna*****PI*62308~HL*2*1*21*1~NM1*1P*2*One*****XX*1999999984~HL*3*2*22*0~TRN*1*00000000000000000000000000*3117151744~NM1*IL*1*Dent*Jaguar****MI*U3141592653~DMG*D8*19960505~EQ*35~SE*12*0001~GE*1*1~IEA*1*000000001~"
        }'
      ```
    </Tab>

    <Tab value="Request - SOAP">
      ```bash test request for Cigna
      curl --request POST \
        --url 'https://healthcare.us.stedi.com/2025-06-01/protocols/caqh-core' \
        --header 'Content-Type: application/soap+xml' \
        --data '<soapenv:Envelope xmlns:soapenv="http://www.w3.org/2003/05/soap-envelope" xmlns:cor="http://www.caqh.org/SOAP/WSDL/CORERule2.2.0.xsd">
        <soapenv:Header>
          <wsse:Security soapenv:mustUnderstand="true" xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">
            <wsse:UsernameToken>
              <wsse:Username>STEDI-ACCOUNT-ID</wsse:Username>
              <wsse:Password>STEDI-API-KEY</wsse:Password>
            </wsse:UsernameToken>
          </wsse:Security>
        </soapenv:Header>
        <soapenv:Body>
            <cor:COREEnvelopeRealTimeRequest>
              <PayloadType>X12_270_Request_005010X279A1</PayloadType>
              <ProcessingMode>RealTime</ProcessingMode>
              <PayloadID>f81d4fae-7dec-11d0-a765-00a0c91e6b12</PayloadID>
              <TimeStamp>2007-08-30T10:20:34.000Z</TimeStamp>
              <SenderID>STEDI</SenderID>
              <ReceiverID>STEDI</ReceiverID>
              <CORERuleVersion>2.2.0</CORERuleVersion>
              <Payload><![CDATA[ISA*00*          *00*          *ZZ*AV09311993     *01*030240928      *210101*1200*^*00501*000000001*0*P*>~GS*HS*1510848*030240928*20210101*120000*1*X*005010X279A1~ST*270*0001*005010X279A1~BHT*0022*13*00000000000000000000000000*20210101*1200~HL*1**20*1~NM1*PR*2*Cigna*****PI*62308~HL*2*1*21*1~NM1*1P*2*One*****XX*1999999984~HL*3*2*22*0~TRN*1*00000000000000000000000000*3117151744~NM1*IL*1*Dent*Jaguar****MI*U3141592653~DMG*D8*19960505~EQ*35~SE*12*0001~GE*1*1~IEA*1*000000001~]]></Payload>
            </cor:COREEnvelopeRealTimeRequest>
        </soapenv:Body>
      </soapenv:Envelope>'
      ```
    </Tab>
  </Tabs>
</Accordion>

**Cigna (with procedure code)**

<Accordion title="Cigna with procedure code - Mock request" id="cigna-with-procedure-code---mock-request">
  <Tabs items="[&#x22;Request - JSON&#x22;, &#x22;Request - Raw X12&#x22;, &#x22;Request - SOAP&#x22;]">
    <Tab value="Request - JSON">
      {/* schema:EligibilityCheckRequestContent */}

      ```bash test request for Cigna with procedure code
      curl --request POST \
        --url 'https://healthcare.us.stedi.com/2024-04-01/change/medicalnetwork/eligibility/v3' \
        --header 'Authorization: Key {test_api_key}' \
        --header 'Content-Type: application/json' \
        --data '{
          "tradingPartnerServiceId": "62308",
          "provider": {
              "organizationName": "Smith Associates",
              "npi": "1999999984"
          },
          "subscriber": {
              "firstName": "James",
              "lastName": "Doe",
              "dateOfBirth": "19010101",
              "memberId": "U9876543210"
          },
          "encounter": {
              "serviceTypeCodes": ["35", "24", "28", "41", "23", "36", "37", "25", "40", "27", "39", "38", "26"],
              "productOrServiceIDQualifier": "AD",
              "procedureCode": "D4341",
              "dateOfService": "20260401"
          }
      }'
      ```
    </Tab>

    <Tab value="Request - Raw X12">
      ```bash test request for Cigna with procedure code
      curl --request POST \
        --url 'https://healthcare.us.stedi.com/2024-04-01/change/medicalnetwork/eligibility/v3/raw-x12' \
        --header 'Authorization: Key {test_api_key}' \
        --header 'Content-Type: application/json' \
        --data '{
          "x12": "ISA*00*          *00*          *ZZ*AV09311993     *01*030240928      *210101*1200*^*00501*000000001*0*P*>~GS*HS*1510848*030240928*20210101*120000*1*X*005010X279A1~ST*270*0001*005010X279A1~BHT*0022*13*00000000000000000000000000*20210101*1200~HL*1**20*1~NM1*PR*2*Cigna*****PI*62308~HL*2*1*21*1~NM1*1P*2*Smith Associates*****XX*1999999984~HL*3*2*22*0~TRN*1*00000000000000000000000000*3117151744~NM1*IL*1*Doe*James****MI*U9876543210~DMG*D8*19010101~DTP*291*D8*20260401~EQ*35~EQ*24~EQ*28~EQ*41~EQ*23~EQ*36~EQ*37~EQ*25~EQ*40~EQ*27~EQ*39~EQ*38~EQ*26*AD>D4341~SE*25*0001~GE*1*1~IEA*1*000000001~"
        }'
      ```
    </Tab>

    <Tab value="Request - SOAP">
      ```bash test request for Cigna with procedure code
      curl --request POST \
        --url 'https://healthcare.us.stedi.com/2025-06-01/protocols/caqh-core' \
        --header 'Content-Type: application/soap+xml' \
        --data '<soapenv:Envelope xmlns:soapenv="http://www.w3.org/2003/05/soap-envelope" xmlns:cor="http://www.caqh.org/SOAP/WSDL/CORERule2.2.0.xsd">
        <soapenv:Header>
          <wsse:Security soapenv:mustUnderstand="true" xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">
            <wsse:UsernameToken>
              <wsse:Username>STEDI-ACCOUNT-ID</wsse:Username>
              <wsse:Password>STEDI-API-KEY</wsse:Password>
            </wsse:UsernameToken>
          </wsse:Security>
        </soapenv:Header>
        <soapenv:Body>
            <cor:COREEnvelopeRealTimeRequest>
              <PayloadType>X12_270_Request_005010X279A1</PayloadType>
              <ProcessingMode>RealTime</ProcessingMode>
              <PayloadID>f81d4fae-7dec-11d0-a765-00a0c91e6b12</PayloadID>
              <TimeStamp>2007-08-30T10:20:34.000Z</TimeStamp>
              <SenderID>STEDI</SenderID>
              <ReceiverID>STEDI</ReceiverID>
              <CORERuleVersion>2.2.0</CORERuleVersion>
              <Payload><![CDATA[ISA*00*          *00*          *ZZ*AV09311993     *01*030240928      *210101*1200*^*00501*000000001*0*P*>~GS*HS*1510848*030240928*20210101*120000*1*X*005010X279A1~ST*270*0001*005010X279A1~BHT*0022*13*00000000000000000000000000*20210101*1200~HL*1**20*1~NM1*PR*2*Cigna*****PI*62308~HL*2*1*21*1~NM1*1P*2*Smith Associates*****XX*1999999984~HL*3*2*22*0~TRN*1*00000000000000000000000000*3117151744~NM1*IL*1*Doe*James****MI*U9876543210~DMG*D8*19010101~DTP*291*D8*20260401~EQ*35~EQ*24~EQ*28~EQ*41~EQ*23~EQ*36~EQ*37~EQ*25~EQ*40~EQ*27~EQ*39~EQ*38~EQ*26*AD>D4341~SE*25*0001~GE*1*1~IEA*1*000000001~]]></Payload>
            </cor:COREEnvelopeRealTimeRequest>
        </soapenv:Body>
      </soapenv:Envelope>'
      ```
    </Tab>
  </Tabs>
</Accordion>

**Metlife**

<Accordion title="Metlife - Mock request" id="metlife---mock-request">
  <Tabs items="[&#x22;Request - JSON&#x22;, &#x22;Request - Raw X12&#x22;, &#x22;Request - SOAP&#x22;]">
    <Tab value="Request - JSON">
      {/* schema:EligibilityCheckRequestContent */}

      ```bash test request for Metlife
      curl --request POST \
        --url 'https://healthcare.us.stedi.com/2024-04-01/change/medicalnetwork/eligibility/v3' \
        --header 'Authorization: Key {test_api_key}' \
        --header 'Content-Type: application/json' \
        --data '{
          "tradingPartnerServiceId": "10134",
          "provider": {
              "organizationName": "One",
              "npi": "1999999984"
          },
          "subscriber": {
              "firstName": "Elephant",
              "lastName": "Dent",
              "dateOfBirth": "19840229",
              "memberId": "88877788"
          },
          "encounter": {
              "serviceTypeCodes": ["35"]
          }
      }'
      ```
    </Tab>

    <Tab value="Request - Raw X12">
      ```bash test request for Metlife
      curl --request POST \
        --url 'https://healthcare.us.stedi.com/2024-04-01/change/medicalnetwork/eligibility/v3/raw-x12' \
        --header 'Authorization: Key {test_api_key}' \
        --header 'Content-Type: application/json' \
        --data '{
          "x12": "ISA*00*          *00*          *ZZ*AV09311993     *01*030240928      *210101*1200*^*00501*000000001*0*P*>~GS*HS*1510848*030240928*20210101*120000*1*X*005010X279A1~ST*270*0001*005010X279A1~BHT*0022*13*00000000000000000000000000*20210101*1200~HL*1**20*1~NM1*PR*2*MetLife Dental Family*****PI*10134~HL*2*1*21*1~NM1*1P*2*One*****XX*1999999984~HL*3*2*22*0~TRN*1*00000000000000000000000000*3117151744~NM1*IL*1*Dent*Elephant****MI*88877788~DMG*D8*19840229~EQ*35~SE*12*0001~GE*1*1~IEA*1*000000001~"
        }'
      ```
    </Tab>

    <Tab value="Request - SOAP">
      ```bash test request for Metlife
      curl --request POST \
        --url 'https://healthcare.us.stedi.com/2025-06-01/protocols/caqh-core' \
        --header 'Content-Type: application/soap+xml' \
        --data '<soapenv:Envelope xmlns:soapenv="http://www.w3.org/2003/05/soap-envelope" xmlns:cor="http://www.caqh.org/SOAP/WSDL/CORERule2.2.0.xsd">
        <soapenv:Header>
          <wsse:Security soapenv:mustUnderstand="true" xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">
            <wsse:UsernameToken>
              <wsse:Username>STEDI-ACCOUNT-ID</wsse:Username>
              <wsse:Password>STEDI-API-KEY</wsse:Password>
            </wsse:UsernameToken>
          </wsse:Security>
        </soapenv:Header>
        <soapenv:Body>
            <cor:COREEnvelopeRealTimeRequest>
              <PayloadType>X12_270_Request_005010X279A1</PayloadType>
              <ProcessingMode>RealTime</ProcessingMode>
              <PayloadID>f81d4fae-7dec-11d0-a765-00a0c91e6b12</PayloadID>
              <TimeStamp>2007-08-30T10:20:34.000Z</TimeStamp>
              <SenderID>STEDI</SenderID>
              <ReceiverID>STEDI</ReceiverID>
              <CORERuleVersion>2.2.0</CORERuleVersion>
              <Payload><![CDATA[ISA*00*          *00*          *ZZ*AV09311993     *01*030240928      *210101*1200*^*00501*000000001*0*P*>~GS*HS*1510848*030240928*20210101*120000*1*X*005010X279A1~ST*270*0001*005010X279A1~BHT*0022*13*00000000000000000000000000*20210101*1200~HL*1**20*1~NM1*PR*2*MetLife Dental Family*****PI*10134~HL*2*1*21*1~NM1*1P*2*One*****XX*1999999984~HL*3*2*22*0~TRN*1*00000000000000000000000000*3117151744~NM1*IL*1*Dent*Elephant****MI*88877788~DMG*D8*19840229~EQ*35~SE*12*0001~GE*1*1~IEA*1*000000001~]]></Payload>
            </cor:COREEnvelopeRealTimeRequest>
        </soapenv:Body>
      </soapenv:Envelope>'
      ```
    </Tab>
  </Tabs>
</Accordion>

**UnitedHealthcare**

<Accordion title="UnitedHealthcare - Mock request" id="unitedhealthcare---mock-request">
  <Tabs items="[&#x22;Request - JSON&#x22;, &#x22;Request - Raw X12&#x22;, &#x22;Request - SOAP&#x22;]">
    <Tab value="Request - JSON">
      {/* schema:EligibilityCheckRequestContent */}

      ```bash test request for UnitedHealthcare
      curl --request POST \
        --url 'https://healthcare.us.stedi.com/2024-04-01/change/medicalnetwork/eligibility/v3' \
        --header 'Authorization: Key {test_api_key}' \
        --header 'Content-Type: application/json' \
        --data '{
          "tradingPartnerServiceId": "52133",
          "provider": {
              "organizationName": "One",
              "npi": "1999999984"
          },
          "subscriber": {
              "firstName": "Beaver",
              "lastName": "Dent",
              "dateOfBirth": "19690628",
              "memberId": "404404404"
          },
          "encounter": {
              "serviceTypeCodes": ["35"]
          }
      }'
      ```
    </Tab>

    <Tab value="Request - Raw X12">
      ```bash test request for UnitedHealthcare
      curl --request POST \
        --url 'https://healthcare.us.stedi.com/2024-04-01/change/medicalnetwork/eligibility/v3/raw-x12' \
        --header 'Authorization: Key {test_api_key}' \
        --header 'Content-Type: application/json' \
        --data '{
          "x12": "ISA*00*          *00*          *ZZ*AV09311993     *01*030240928      *210101*1200*^*00501*000000001*0*P*>~GS*HS*1510848*030240928*20210101*120000*1*X*005010X279A1~ST*270*0001*005010X279A1~BHT*0022*13*00000000000000000000000000*20210101*1200~HL*1**20*1~NM1*PR*2*UnitedHealthcare Dental*****PI*52133~HL*2*1*21*1~NM1*1P*2*One*****XX*1999999984~HL*3*2*22*0~TRN*1*00000000000000000000000000*3117151744~NM1*IL*1*Dent*Beaver****MI*404404404~DMG*D8*19690628~EQ*35~SE*12*0001~GE*1*1~IEA*1*000000001~"
        }'
      ```
    </Tab>

    <Tab value="Request - SOAP">
      ```bash test request for UnitedHealthcare
      curl --request POST \
        --url 'https://healthcare.us.stedi.com/2025-06-01/protocols/caqh-core' \
        --header 'Content-Type: application/soap+xml' \
        --data '<soapenv:Envelope xmlns:soapenv="http://www.w3.org/2003/05/soap-envelope" xmlns:cor="http://www.caqh.org/SOAP/WSDL/CORERule2.2.0.xsd">
        <soapenv:Header>
          <wsse:Security soapenv:mustUnderstand="true" xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">
            <wsse:UsernameToken>
              <wsse:Username>STEDI-ACCOUNT-ID</wsse:Username>
              <wsse:Password>STEDI-API-KEY</wsse:Password>
            </wsse:UsernameToken>
          </wsse:Security>
        </soapenv:Header>
        <soapenv:Body>
            <cor:COREEnvelopeRealTimeRequest>
              <PayloadType>X12_270_Request_005010X279A1</PayloadType>
              <ProcessingMode>RealTime</ProcessingMode>
              <PayloadID>f81d4fae-7dec-11d0-a765-00a0c91e6b12</PayloadID>
              <TimeStamp>2007-08-30T10:20:34.000Z</TimeStamp>
              <SenderID>STEDI</SenderID>
              <ReceiverID>STEDI</ReceiverID>
              <CORERuleVersion>2.2.0</CORERuleVersion>
              <Payload><![CDATA[ISA*00*          *00*          *ZZ*AV09311993     *01*030240928      *210101*1200*^*00501*000000001*0*P*>~GS*HS*1510848*030240928*20210101*120000*1*X*005010X279A1~ST*270*0001*005010X279A1~BHT*0022*13*00000000000000000000000000*20210101*1200~HL*1**20*1~NM1*PR*2*UnitedHealthcare Dental*****PI*52133~HL*2*1*21*1~NM1*1P*2*One*****XX*1999999984~HL*3*2*22*0~TRN*1*00000000000000000000000000*3117151744~NM1*IL*1*Dent*Beaver****MI*404404404~DMG*D8*19690628~EQ*35~SE*12*0001~GE*1*1~IEA*1*000000001~]]></Payload>
            </cor:COREEnvelopeRealTimeRequest>
        </soapenv:Body>
      </soapenv:Envelope>'
      ```
    </Tab>
  </Tabs>
</Accordion>

### Common AAA errors [#common-aaa-errors]

The following requests return mock data for the most common Payer `AAA` errors. Visit [Eligibility troubleshooting](/healthcare/eligibility-troubleshooting) for a complete list of AAA error codes, other common eligibility check issues, and recommended resolution steps.

#### 42 - Unable to respond at current time [#42---unable-to-respond-at-current-time]

The following example request returns a `42` AAA error code, indicating that the payer is unable to respond at the current time. This is typically a temporary issue with the payer's system, but it can also be an extended outage or the payer throttling your requests.

<Accordion title="42 - AAA Error - Mock request" id="42---aaa-error---mock-request">
  <Tabs items="[&#x22;Request - JSON&#x22;, &#x22;Request - Raw X12&#x22;, &#x22;Request - SOAP&#x22;]">
    <Tab value="Request - JSON">
      {/* schema:EligibilityCheckRequestContent */}

      ```bash request for UHC
      curl --request POST \
        --url 'https://healthcare.us.stedi.com/2024-04-01/change/medicalnetwork/eligibility/v3' \
        --header 'Authorization: Key {test_api_key}' \
        --header 'Content-Type: application/json' \
        --data '{
          "tradingPartnerServiceId": "87726",
          "provider": {
              "organizationName": "Medical Provider",
              "npi": "1999999984"
          },
          "subscriber": {
              "firstName": "Jane",
              "lastName": "Doe",
              "dateOfBirth": "20010101",
              "memberId": "UHCAAA42"
          },
          "encounter": {
              "serviceTypeCodes": ["30"]
          }
      }'
      ```
    </Tab>

    <Tab value="Request - Raw X12">
      ```bash request for UHC
      curl --request POST \
        --url 'https://healthcare.us.stedi.com/2024-04-01/change/medicalnetwork/eligibility/v3/raw-x12' \
        --header 'Authorization: Key {test_api_key}' \
        --header 'Content-Type: application/json' \
        --data '{
          "x12": "ISA*00*          *00*          *ZZ*AV09311993     *01*030240928      *210101*1200*^*00501*000000001*0*P*>~GS*HS*1510848*030240928*20210101*120000*1*X*005010X279A1~ST*270*0001*005010X279A1~BHT*0022*13*00000000000000000000000000*20210101*1200~HL*1**20*1~NM1*PR*2*UnitedHealthcare*****PI*87726~HL*2*1*21*1~NM1*1P*2*Medical Provider*****XX*1999999984~HL*3*2*22*0~TRN*1*00000000000000000000000000*3117151744~NM1*IL*1*Doe*Jane****MI*UHCAAA42~DMG*D8*20010101~EQ*30~SE*12*0001~GE*1*1~IEA*1*000000001~"
        }'
      ```
    </Tab>

    <Tab value="Request - SOAP">
      ```bash request for UHC
      curl --request POST \
        --url 'https://healthcare.us.stedi.com/2025-06-01/protocols/caqh-core' \
        --header 'Content-Type: application/soap+xml' \
        --data '<soapenv:Envelope xmlns:soapenv="http://www.w3.org/2003/05/soap-envelope" xmlns:cor="http://www.caqh.org/SOAP/WSDL/CORERule2.2.0.xsd">
        <soapenv:Header>
          <wsse:Security soapenv:mustUnderstand="true" xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">
            <wsse:UsernameToken>
              <wsse:Username>STEDI-ACCOUNT-ID</wsse:Username>
              <wsse:Password>STEDI-API-KEY</wsse:Password>
            </wsse:UsernameToken>
          </wsse:Security>
        </soapenv:Header>
        <soapenv:Body>
            <cor:COREEnvelopeRealTimeRequest>
              <PayloadType>X12_270_Request_005010X279A1</PayloadType>
              <ProcessingMode>RealTime</ProcessingMode>
              <PayloadID>f81d4fae-7dec-11d0-a765-00a0c91e6b12</PayloadID>
              <TimeStamp>2007-08-30T10:20:34.000Z</TimeStamp>
              <SenderID>STEDI</SenderID>
              <ReceiverID>STEDI</ReceiverID>
              <CORERuleVersion>2.2.0</CORERuleVersion>
              <Payload><![CDATA[ISA*00*          *00*          *ZZ*AV09311993     *01*030240928      *210101*1200*^*00501*000000001*0*P*>~GS*HS*1510848*030240928*20210101*120000*1*X*005010X279A1~ST*270*0001*005010X279A1~BHT*0022*13*00000000000000000000000000*20210101*1200~HL*1**20*1~NM1*PR*2*UnitedHealthcare*****PI*87726~HL*2*1*21*1~NM1*1P*2*Medical Provider*****XX*1999999984~HL*3*2*22*0~TRN*1*00000000000000000000000000*3117151744~NM1*IL*1*Doe*Jane****MI*UHCAAA42~DMG*D8*20010101~EQ*30~SE*12*0001~GE*1*1~IEA*1*000000001~]]></Payload>
            </cor:COREEnvelopeRealTimeRequest>
        </soapenv:Body>
      </soapenv:Envelope>'
      ```
    </Tab>
  </Tabs>
</Accordion>

#### 43 - Invalid/Missing Provider Identification [#43---invalidmissing-provider-identification]

The following example request returns a `43` AAA error code. This error can occur if provider's NPI is not registered with the payer, the provider's NPI is not registered *correctly* with the payer, or the payer requires an agreement.

<Accordion title="43 - AAA Error - Mock request" id="43---aaa-error---mock-request">
  <Tabs items="[&#x22;Request - JSON&#x22;, &#x22;Request - Raw X12&#x22;, &#x22;Request - SOAP&#x22;]">
    <Tab value="Request - JSON">
      {/* schema:EligibilityCheckRequestContent */}

      ```bash request for UHC
      curl --request POST \
        --url 'https://healthcare.us.stedi.com/2024-04-01/change/medicalnetwork/eligibility/v3' \
        --header 'Authorization: Key {test_api_key}' \
        --header 'Content-Type: application/json' \
        --data '{
          "tradingPartnerServiceId": "87726",
          "provider": {
              "organizationName": "Medical Provider",
              "npi": "1999999984"
          },
          "subscriber": {
              "firstName": "Jane",
              "lastName": "Doe",
              "dateOfBirth": "19700101",
              "memberId": "UHCAAA43"
          },
          "encounter": {
              "serviceTypeCodes": ["30"]
          }
      }'
      ```
    </Tab>

    <Tab value="Request - Raw X12">
      ```bash request for UHC
      curl --request POST \
        --url 'https://healthcare.us.stedi.com/2024-04-01/change/medicalnetwork/eligibility/v3/raw-x12' \
        --header 'Authorization: Key {test_api_key}' \
        --header 'Content-Type: application/json' \
        --data '{
          "x12": "ISA*00*          *00*          *ZZ*AV09311993     *01*030240928      *210101*1200*^*00501*000000001*0*P*>~GS*HS*1510848*030240928*20210101*120000*1*X*005010X279A1~ST*270*0001*005010X279A1~BHT*0022*13*00000000000000000000000000*20210101*1200~HL*1**20*1~NM1*PR*2*UnitedHealthcare*****PI*87726~HL*2*1*21*1~NM1*1P*2*Medical Provider*****XX*1999999984~HL*3*2*22*0~TRN*1*00000000000000000000000000*3117151744~NM1*IL*1*Doe*Jane****MI*UHCAAA43~DMG*D8*19700101~EQ*30~SE*12*0001~GE*1*1~IEA*1*000000001~"
        }'
      ```
    </Tab>

    <Tab value="Request - SOAP">
      ```bash request for UHC
      curl --request POST \
        --url 'https://healthcare.us.stedi.com/2025-06-01/protocols/caqh-core' \
        --header 'Content-Type: application/soap+xml' \
        --data '<soapenv:Envelope xmlns:soapenv="http://www.w3.org/2003/05/soap-envelope" xmlns:cor="http://www.caqh.org/SOAP/WSDL/CORERule2.2.0.xsd">
        <soapenv:Header>
          <wsse:Security soapenv:mustUnderstand="true" xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">
            <wsse:UsernameToken>
              <wsse:Username>STEDI-ACCOUNT-ID</wsse:Username>
              <wsse:Password>STEDI-API-KEY</wsse:Password>
            </wsse:UsernameToken>
          </wsse:Security>
        </soapenv:Header>
        <soapenv:Body>
            <cor:COREEnvelopeRealTimeRequest>
              <PayloadType>X12_270_Request_005010X279A1</PayloadType>
              <ProcessingMode>RealTime</ProcessingMode>
              <PayloadID>f81d4fae-7dec-11d0-a765-00a0c91e6b12</PayloadID>
              <TimeStamp>2007-08-30T10:20:34.000Z</TimeStamp>
              <SenderID>STEDI</SenderID>
              <ReceiverID>STEDI</ReceiverID>
              <CORERuleVersion>2.2.0</CORERuleVersion>
              <Payload><![CDATA[ISA*00*          *00*          *ZZ*AV09311993     *01*030240928      *210101*1200*^*00501*000000001*0*P*>~GS*HS*1510848*030240928*20210101*120000*1*X*005010X279A1~ST*270*0001*005010X279A1~BHT*0022*13*00000000000000000000000000*20210101*1200~HL*1**20*1~NM1*PR*2*UnitedHealthcare*****PI*87726~HL*2*1*21*1~NM1*1P*2*Medical Provider*****XX*1999999984~HL*3*2*22*0~TRN*1*00000000000000000000000000*3117151744~NM1*IL*1*Doe*Jane****MI*UHCAAA43~DMG*D8*19700101~EQ*30~SE*12*0001~GE*1*1~IEA*1*000000001~]]></Payload>
            </cor:COREEnvelopeRealTimeRequest>
        </soapenv:Body>
      </soapenv:Envelope>'
      ```
    </Tab>
  </Tabs>
</Accordion>

#### 72 - Invalid/Missing Subscriber/Insured ID [#72---invalidmissing-subscriberinsured-id]

The following example request returns a `72` AAA error code. This error can occur if the subscriber member ID was incorrect in the request, the request does not meet the payer's requirements for the subscriber ID, or there is another unidentified error in the request data.

<Accordion title="72 - AAA Error - Mock request" id="72---aaa-error---mock-request">
  <Tabs items="[&#x22;Request - JSON&#x22;, &#x22;Request - Raw X12&#x22;, &#x22;Request - SOAP&#x22;]">
    <Tab value="Request - JSON">
      {/* schema:EligibilityCheckRequestContent */}

      ```bash request for UHC
      curl --request POST \
        --url 'https://healthcare.us.stedi.com/2024-04-01/change/medicalnetwork/eligibility/v3' \
        --header 'Authorization: Key {test_api_key}' \
        --header 'Content-Type: application/json' \
        --data '{
          "tradingPartnerServiceId": "87726",
          "provider": {
              "organizationName": "Medical Provider",
              "npi": "1999999984"
          },
          "subscriber": {
              "firstName": "John",
              "lastName": "Doe",
              "dateOfBirth": "19900101",
              "memberId": "UHCAAA72"
          },
          "encounter": {
              "serviceTypeCodes": ["30"]
          }
      }'
      ```
    </Tab>

    <Tab value="Request - Raw X12">
      ```bash request for UHC
      curl --request POST \
        --url 'https://healthcare.us.stedi.com/2024-04-01/change/medicalnetwork/eligibility/v3/raw-x12' \
        --header 'Authorization: Key {test_api_key}' \
        --header 'Content-Type: application/json' \
        --data '{
          "x12": "ISA*00*          *00*          *ZZ*AV09311993     *01*030240928      *210101*1200*^*00501*000000001*0*P*>~GS*HS*1510848*030240928*20210101*120000*1*X*005010X279A1~ST*270*0001*005010X279A1~BHT*0022*13*00000000000000000000000000*20210101*1200~HL*1**20*1~NM1*PR*2*UnitedHealthcare*****PI*87726~HL*2*1*21*1~NM1*1P*2*Medical Provider*****XX*1999999984~HL*3*2*22*0~TRN*1*00000000000000000000000000*3117151744~NM1*IL*1*Doe*John****MI*UHCAAA72~DMG*D8*19900101~EQ*30~SE*12*0001~GE*1*1~IEA*1*000000001~"
        }'
      ```
    </Tab>

    <Tab value="Request - SOAP">
      ```bash request for UHC
      curl --request POST \
        --url 'https://healthcare.us.stedi.com/2025-06-01/protocols/caqh-core' \
        --header 'Content-Type: application/soap+xml' \
        --data '<soapenv:Envelope xmlns:soapenv="http://www.w3.org/2003/05/soap-envelope" xmlns:cor="http://www.caqh.org/SOAP/WSDL/CORERule2.2.0.xsd">
        <soapenv:Header>
          <wsse:Security soapenv:mustUnderstand="true" xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">
            <wsse:UsernameToken>
              <wsse:Username>STEDI-ACCOUNT-ID</wsse:Username>
              <wsse:Password>STEDI-API-KEY</wsse:Password>
            </wsse:UsernameToken>
          </wsse:Security>
        </soapenv:Header>
        <soapenv:Body>
            <cor:COREEnvelopeRealTimeRequest>
              <PayloadType>X12_270_Request_005010X279A1</PayloadType>
              <ProcessingMode>RealTime</ProcessingMode>
              <PayloadID>f81d4fae-7dec-11d0-a765-00a0c91e6b12</PayloadID>
              <TimeStamp>2007-08-30T10:20:34.000Z</TimeStamp>
              <SenderID>STEDI</SenderID>
              <ReceiverID>STEDI</ReceiverID>
              <CORERuleVersion>2.2.0</CORERuleVersion>
              <Payload><![CDATA[ISA*00*          *00*          *ZZ*AV09311993     *01*030240928      *210101*1200*^*00501*000000001*0*P*>~GS*HS*1510848*030240928*20210101*120000*1*X*005010X279A1~ST*270*0001*005010X279A1~BHT*0022*13*00000000000000000000000000*20210101*1200~HL*1**20*1~NM1*PR*2*UnitedHealthcare*****PI*87726~HL*2*1*21*1~NM1*1P*2*Medical Provider*****XX*1999999984~HL*3*2*22*0~TRN*1*00000000000000000000000000*3117151744~NM1*IL*1*Doe*John****MI*UHCAAA72~DMG*D8*19900101~EQ*30~SE*12*0001~GE*1*1~IEA*1*000000001~]]></Payload>
            </cor:COREEnvelopeRealTimeRequest>
        </soapenv:Body>
      </soapenv:Envelope>'
      ```
    </Tab>
  </Tabs>
</Accordion>

#### 73 - Invalid/Missing Subscriber/Insured Name [#73---invalidmissing-subscriberinsured-name]

The following example request returns a `73` AAA error code. Payers send this error when the subscriber's name was incorrect, misspelled, or didn't meet the payer's requirements.

<Accordion title="73 - AAA Error - Mock request" id="73---aaa-error---mock-request">
  <Tabs items="[&#x22;Request - JSON&#x22;, &#x22;Request - Raw X12&#x22;, &#x22;Request - SOAP&#x22;]">
    <Tab value="Request - JSON">
      {/* schema:EligibilityCheckRequestContent */}

      ```bash request for UHC
      curl --request POST \
        --url 'https://healthcare.us.stedi.com/2024-04-01/change/medicalnetwork/eligibility/v3' \
        --header 'Authorization: Key {test_api_key}' \
        --header 'Content-Type: application/json' \
        --data '{
          "tradingPartnerServiceId": "87726",
          "provider": {
              "organizationName": "Medical Provider",
              "npi": "1999999984"
          },
          "subscriber": {
              "firstName": "John",
              "lastName": "Doe",
              "dateOfBirth": "19900101",
              "memberId": "UHCAAA73"
          },
          "encounter": {
              "serviceTypeCodes": ["30"]
          }
      }'
      ```
    </Tab>

    <Tab value="Request - Raw X12">
      ```bash request for UHC
      curl --request POST \
        --url 'https://healthcare.us.stedi.com/2024-04-01/change/medicalnetwork/eligibility/v3/raw-x12' \
        --header 'Authorization: Key {test_api_key}' \
        --header 'Content-Type: application/json' \
        --data '{
          "x12": "ISA*00*          *00*          *ZZ*AV09311993     *01*030240928      *210101*1200*^*00501*000000001*0*P*>~GS*HS*1510848*030240928*20210101*120000*1*X*005010X279A1~ST*270*0001*005010X279A1~BHT*0022*13*00000000000000000000000000*20210101*1200~HL*1**20*1~NM1*PR*2*UnitedHealthcare*****PI*87726~HL*2*1*21*1~NM1*1P*2*Medical Provider*****XX*1999999984~HL*3*2*22*0~TRN*1*00000000000000000000000000*3117151744~NM1*IL*1*Doe*John****MI*UHCAAA73~DMG*D8*19900101~EQ*30~SE*12*0001~GE*1*1~IEA*1*000000001~"
        }'
      ```
    </Tab>

    <Tab value="Request - SOAP">
      ```bash request for UHC
      curl --request POST \
        --url 'https://healthcare.us.stedi.com/2025-06-01/protocols/caqh-core' \
        --header 'Content-Type: application/soap+xml' \
        --data '<soapenv:Envelope xmlns:soapenv="http://www.w3.org/2003/05/soap-envelope" xmlns:cor="http://www.caqh.org/SOAP/WSDL/CORERule2.2.0.xsd">
        <soapenv:Header>
          <wsse:Security soapenv:mustUnderstand="true" xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">
            <wsse:UsernameToken>
              <wsse:Username>STEDI-ACCOUNT-ID</wsse:Username>
              <wsse:Password>STEDI-API-KEY</wsse:Password>
            </wsse:UsernameToken>
          </wsse:Security>
        </soapenv:Header>
        <soapenv:Body>
            <cor:COREEnvelopeRealTimeRequest>
              <PayloadType>X12_270_Request_005010X279A1</PayloadType>
              <ProcessingMode>RealTime</ProcessingMode>
              <PayloadID>f81d4fae-7dec-11d0-a765-00a0c91e6b12</PayloadID>
              <TimeStamp>2007-08-30T10:20:34.000Z</TimeStamp>
              <SenderID>STEDI</SenderID>
              <ReceiverID>STEDI</ReceiverID>
              <CORERuleVersion>2.2.0</CORERuleVersion>
              <Payload><![CDATA[ISA*00*          *00*          *ZZ*AV09311993     *01*030240928      *210101*1200*^*00501*000000001*0*P*>~GS*HS*1510848*030240928*20210101*120000*1*X*005010X279A1~ST*270*0001*005010X279A1~BHT*0022*13*00000000000000000000000000*20210101*1200~HL*1**20*1~NM1*PR*2*UnitedHealthcare*****PI*87726~HL*2*1*21*1~NM1*1P*2*Medical Provider*****XX*1999999984~HL*3*2*22*0~TRN*1*00000000000000000000000000*3117151744~NM1*IL*1*Doe*John****MI*UHCAAA73~DMG*D8*19900101~EQ*30~SE*12*0001~GE*1*1~IEA*1*000000001~]]></Payload>
            </cor:COREEnvelopeRealTimeRequest>
        </soapenv:Body>
      </soapenv:Envelope>'
      ```
    </Tab>
  </Tabs>
</Accordion>

#### 75 - Subscriber/Insured Not Found [#75---subscriberinsured-not-found]

The following example request returns a `75` AAA error code. This error occurs when the payer can't find the subscriber in their database. We recommend verifying the subscriber details and trying different combinations of `firstName`, `lastName`, `dateOfBirth`, and `memberId`. Note that not all payers support all search combinations.

<Accordion title="75 - AAA Error - Mock request" id="75---aaa-error---mock-request">
  <Tabs items="[&#x22;Request - JSON&#x22;, &#x22;Request - Raw X12&#x22;, &#x22;Request - SOAP&#x22;]">
    <Tab value="Request - JSON">
      {/* schema:EligibilityCheckRequestContent */}

      ```bash request for UHC
      curl --request POST \
        --url 'https://healthcare.us.stedi.com/2024-04-01/change/medicalnetwork/eligibility/v3' \
        --header 'Authorization: Key {test_api_key}' \
        --header 'Content-Type: application/json' \
        --data '{
          "tradingPartnerServiceId": "87726",
          "provider": {
              "organizationName": "Medical Provider",
              "npi": "1999999984"
          },
          "subscriber": {
              "firstName": "Jane",
              "lastName": "Doe",
              "dateOfBirth": "19900101",
              "memberId": "UHCAAA75"
          },
          "encounter": {
              "serviceTypeCodes": ["30"]
          }
      }'
      ```
    </Tab>

    <Tab value="Request - Raw X12">
      ```bash request for UHC
      curl --request POST \
        --url 'https://healthcare.us.stedi.com/2024-04-01/change/medicalnetwork/eligibility/v3/raw-x12' \
        --header 'Authorization: Key {test_api_key}' \
        --header 'Content-Type: application/json' \
        --data '{
          "x12": "ISA*00*          *00*          *ZZ*AV09311993     *01*030240928      *210101*1200*^*00501*000000001*0*P*>~GS*HS*1510848*030240928*20210101*120000*1*X*005010X279A1~ST*270*0001*005010X279A1~BHT*0022*13*00000000000000000000000000*20210101*1200~HL*1**20*1~NM1*PR*2*UnitedHealthcare*****PI*87726~HL*2*1*21*1~NM1*1P*2*Medical Provider*****XX*1999999984~HL*3*2*22*0~TRN*1*00000000000000000000000000*3117151744~NM1*IL*1*Doe*Jane****MI*UHCAAA75~DMG*D8*19900101~EQ*30~SE*12*0001~GE*1*1~IEA*1*000000001~"
        }'
      ```
    </Tab>

    <Tab value="Request - SOAP">
      ```bash request for UHC
      curl --request POST \
        --url 'https://healthcare.us.stedi.com/2025-06-01/protocols/caqh-core' \
        --header 'Content-Type: application/soap+xml' \
        --data '<soapenv:Envelope xmlns:soapenv="http://www.w3.org/2003/05/soap-envelope" xmlns:cor="http://www.caqh.org/SOAP/WSDL/CORERule2.2.0.xsd">
        <soapenv:Header>
          <wsse:Security soapenv:mustUnderstand="true" xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">
            <wsse:UsernameToken>
              <wsse:Username>STEDI-ACCOUNT-ID</wsse:Username>
              <wsse:Password>STEDI-API-KEY</wsse:Password>
            </wsse:UsernameToken>
          </wsse:Security>
        </soapenv:Header>
        <soapenv:Body>
            <cor:COREEnvelopeRealTimeRequest>
              <PayloadType>X12_270_Request_005010X279A1</PayloadType>
              <ProcessingMode>RealTime</ProcessingMode>
              <PayloadID>f81d4fae-7dec-11d0-a765-00a0c91e6b12</PayloadID>
              <TimeStamp>2007-08-30T10:20:34.000Z</TimeStamp>
              <SenderID>STEDI</SenderID>
              <ReceiverID>STEDI</ReceiverID>
              <CORERuleVersion>2.2.0</CORERuleVersion>
              <Payload><![CDATA[ISA*00*          *00*          *ZZ*AV09311993     *01*030240928      *210101*1200*^*00501*000000001*0*P*>~GS*HS*1510848*030240928*20210101*120000*1*X*005010X279A1~ST*270*0001*005010X279A1~BHT*0022*13*00000000000000000000000000*20210101*1200~HL*1**20*1~NM1*PR*2*UnitedHealthcare*****PI*87726~HL*2*1*21*1~NM1*1P*2*Medical Provider*****XX*1999999984~HL*3*2*22*0~TRN*1*00000000000000000000000000*3117151744~NM1*IL*1*Doe*Jane****MI*UHCAAA75~DMG*D8*19900101~EQ*30~SE*12*0001~GE*1*1~IEA*1*000000001~]]></Payload>
            </cor:COREEnvelopeRealTimeRequest>
        </soapenv:Body>
      </soapenv:Envelope>'
      ```
    </Tab>
  </Tabs>
</Accordion>

#### 79 - Invalid Participant Identification [#79---invalid-participant-identification]

The following example request returns a `79` AAA error code. This error occurs when there is a problem connecting with the payer. Contact Stedi support for assistance.

<Accordion title="79 - AAA Error - Mock request" id="79---aaa-error---mock-request">
  <Tabs items="[&#x22;Request - JSON&#x22;, &#x22;Request - Raw X12&#x22;, &#x22;Request - SOAP&#x22;]">
    <Tab value="Request - JSON">
      {/* schema:EligibilityCheckRequestContent */}

      ```bash request for UHC
      curl --request POST \
        --url 'https://healthcare.us.stedi.com/2024-04-01/change/medicalnetwork/eligibility/v3' \
        --header 'Authorization: Key {test_api_key}' \
        --header 'Content-Type: application/json' \
        --data '{
          "tradingPartnerServiceId": "87726",
          "provider": {
              "organizationName": "Medical Provider",
              "npi": "1999999984"
          },
          "subscriber": {
              "firstName": "John",
              "lastName": "Doe",
              "dateOfBirth": "19700101",
              "memberId": "UHCAAA79"
          },
          "encounter": {
              "serviceTypeCodes": ["30"]
          }
      }'
      ```
    </Tab>

    <Tab value="Request - Raw X12">
      ```bash request for UHC
      curl --request POST \
        --url 'https://healthcare.us.stedi.com/2024-04-01/change/medicalnetwork/eligibility/v3/raw-x12' \
        --header 'Authorization: Key {test_api_key}' \
        --header 'Content-Type: application/json' \
        --data '{
          "x12": "ISA*00*          *00*          *ZZ*AV09311993     *01*030240928      *210101*1200*^*00501*000000001*0*P*>~GS*HS*1510848*030240928*20210101*120000*1*X*005010X279A1~ST*270*0001*005010X279A1~BHT*0022*13*00000000000000000000000000*20210101*1200~HL*1**20*1~NM1*PR*2*UnitedHealthcare*****PI*87726~HL*2*1*21*1~NM1*1P*2*Medical Provider*****XX*1999999984~HL*3*2*22*0~TRN*1*00000000000000000000000000*3117151744~NM1*IL*1*Doe*John****MI*UHCAAA79~DMG*D8*19700101~EQ*30~SE*12*0001~GE*1*1~IEA*1*000000001~"
        }'
      ```
    </Tab>

    <Tab value="Request - SOAP">
      ```bash request for UHC
      curl --request POST \
        --url 'https://healthcare.us.stedi.com/2025-06-01/protocols/caqh-core' \
        --header 'Content-Type: application/soap+xml' \
        --data '<soapenv:Envelope xmlns:soapenv="http://www.w3.org/2003/05/soap-envelope" xmlns:cor="http://www.caqh.org/SOAP/WSDL/CORERule2.2.0.xsd">
        <soapenv:Header>
          <wsse:Security soapenv:mustUnderstand="true" xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">
            <wsse:UsernameToken>
              <wsse:Username>STEDI-ACCOUNT-ID</wsse:Username>
              <wsse:Password>STEDI-API-KEY</wsse:Password>
            </wsse:UsernameToken>
          </wsse:Security>
        </soapenv:Header>
        <soapenv:Body>
            <cor:COREEnvelopeRealTimeRequest>
              <PayloadType>X12_270_Request_005010X279A1</PayloadType>
              <ProcessingMode>RealTime</ProcessingMode>
              <PayloadID>f81d4fae-7dec-11d0-a765-00a0c91e6b12</PayloadID>
              <TimeStamp>2007-08-30T10:20:34.000Z</TimeStamp>
              <SenderID>STEDI</SenderID>
              <ReceiverID>STEDI</ReceiverID>
              <CORERuleVersion>2.2.0</CORERuleVersion>
              <Payload><![CDATA[ISA*00*          *00*          *ZZ*AV09311993     *01*030240928      *210101*1200*^*00501*000000001*0*P*>~GS*HS*1510848*030240928*20210101*120000*1*X*005010X279A1~ST*270*0001*005010X279A1~BHT*0022*13*00000000000000000000000000*20210101*1200~HL*1**20*1~NM1*PR*2*UnitedHealthcare*****PI*87726~HL*2*1*21*1~NM1*1P*2*Medical Provider*****XX*1999999984~HL*3*2*22*0~TRN*1*00000000000000000000000000*3117151744~NM1*IL*1*Doe*John****MI*UHCAAA79~DMG*D8*19700101~EQ*30~SE*12*0001~GE*1*1~IEA*1*000000001~]]></Payload>
            </cor:COREEnvelopeRealTimeRequest>
        </soapenv:Body>
      </soapenv:Envelope>'
      ```
    </Tab>
  </Tabs>
</Accordion>

## Test the Stedi Agent [#test-the-stedi-agent]

The [Stedi Agent](/healthcare/send-eligibility-checks-ui#retry-with-the-stedi-agent) resolves recoverable eligibility check errors automatically with the same best practices our Support team uses for troubleshooting. You can run the following mock eligibility check to evaluate the Stedi Agent.

<Accordion title="Stedi Agent - Mock request" id="stedi-agent---mock-request">
  <Tabs items="[&#x22;Request - JSON&#x22;, &#x22;Request - Raw X12&#x22;, &#x22;Request - SOAP&#x22;]">
    <Tab value="Request - JSON">
      {/* schema:EligibilityCheckRequestContent */}

      ```bash test request for Stedi Agent
      curl --request POST \
        --url 'https://healthcare.us.stedi.com/2024-04-01/change/medicalnetwork/eligibility/v3' \
        --header 'Authorization: Key {test_api_key}' \
        --header 'Content-Type: application/json' \
        --data '{
          "tradingPartnerServiceId": "STEDI",
          "subscriber": {
            "lastName": "Prohas",
            "memberId": "23051322",
            "firstName": "Bernie"
          },
          "provider": {
            "organizationName": "STEDI",
            "npi": "1999999984"
          }
      }'
      ```
    </Tab>

    <Tab value="Request - Raw X12">
      ```bash test request for Stedi Agent
      curl --request POST \
        --url 'https://healthcare.us.stedi.com/2024-04-01/change/medicalnetwork/eligibility/v3/raw-x12' \
        --header 'Authorization: Key {test_api_key}' \
        --header 'Content-Type: application/json' \
        --data '{
          "x12": "ISA*00*          *00*          *ZZ*AV09311993     *01*030240928      *210101*1200*^*00501*000000001*0*P*>~GS*HS*1510848*030240928*20210101*120000*1*X*005010X279A1~ST*270*0001*005010X279A1~BHT*0022*13*00000000000000000000000000*20210101*1200~HL*1**20*1~NM1*PR*2*Stedi Test Payer*****PI*STEDI~HL*2*1*21*1~NM1*1P*2*STEDI*****XX*1447848577~HL*3*2*22*0~TRN*1*00000000000000000000000000*3117151744~NM1*IL*1*Prohas*Bernie****MI*23051322~EQ*30~SE*11*0001~GE*1*1~IEA*1*000000001~"
        }'
      ```
    </Tab>

    <Tab value="Request - SOAP">
      ```bash test request for Stedi Agent
      curl --request POST \
        --url 'https://healthcare.us.stedi.com/2025-06-01/protocols/caqh-core' \
        --header 'Content-Type: application/soap+xml' \
        --data '<soapenv:Envelope xmlns:soapenv="http://www.w3.org/2003/05/soap-envelope" xmlns:cor="http://www.caqh.org/SOAP/WSDL/CORERule2.2.0.xsd">
        <soapenv:Header>
          <wsse:Security soapenv:mustUnderstand="true" xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">
            <wsse:UsernameToken>
              <wsse:Username>STEDI-ACCOUNT-ID</wsse:Username>
              <wsse:Password>STEDI-API-KEY</wsse:Password>
            </wsse:UsernameToken>
          </wsse:Security>
        </soapenv:Header>
        <soapenv:Body>
            <cor:COREEnvelopeRealTimeRequest>
              <PayloadType>X12_270_Request_005010X279A1</PayloadType>
              <ProcessingMode>RealTime</ProcessingMode>
              <PayloadID>f81d4fae-7dec-11d0-a765-00a0c91e6b12</PayloadID>
              <TimeStamp>2007-08-30T10:20:34.000Z</TimeStamp>
              <SenderID>STEDI</SenderID>
              <ReceiverID>STEDI</ReceiverID>
              <CORERuleVersion>2.2.0</CORERuleVersion>
              <Payload><![CDATA[ISA*00*          *00*          *ZZ*AV09311993     *01*030240928      *210101*1200*^*00501*000000001*0*P*>~GS*HS*1510848*030240928*20210101*120000*1*X*005010X279A1~ST*270*0001*005010X279A1~BHT*0022*13*00000000000000000000000000*20210101*1200~HL*1**20*1~NM1*PR*2*Stedi Test Payer*****PI*STEDI~HL*2*1*21*1~NM1*1P*2*STEDI*****XX*1447848577~HL*3*2*22*0~TRN*1*00000000000000000000000000*3117151744~NM1*IL*1*Prohas*Bernie****MI*23051322~EQ*30~SE*11*0001~GE*1*1~IEA*1*000000001~]]></Payload>
            </cor:COREEnvelopeRealTimeRequest>
        </soapenv:Body>
      </soapenv:Envelope>'
      ```
    </Tab>
  </Tabs>
</Accordion>

This check intentionally fails so you can watch the agent resolve issues in real time. Specifically, it returns `AAA` error `73` (Invalid/Missing Subscriber/Insured Name).

Once the check is complete, you can use it to test the Stedi Agent's troubleshooting capabilities:

1. Go to the [Eligibility searches](https://portal.stedi.com/app/healthcare/eligibility) page in your Stedi account.
2. Click your account name in the side navigation and toggle **Test mode** to **ON**.
3. Click the failed mock eligibility check to review its details.
4. Click **Resolve with Stedi Agent**. The agent runs in **Debug view** to fix the error and eventually produce a successful mock eligibility response.

# Coordination of Benefits Check
Source: https://www.stedi.com/docs/healthcare/api-reference/post-coordination-of-benefits


Coordination of benefits (COB) checks help you determine whether patients are covered by multiple health plans, whether coverage overlap requires coordination of benefits, and each payer's responsibility for payment (primacy).

1. Call this endpoint with a JSON payload. Each check **must** be for a Stedi-supported payer with which the patient has coverage. Visit the [Payer Network](https://www.stedi.com/healthcare/network?filter=eyJ0cmFuc2FjdGlvbkZpbHRlcnMiOnsiMjcwIjp7fSwiMjc2Ijp7fSwiODM1Ijp7fSwiODM3UCI6e30sIjgzN0kiOnt9LCI4MzdEIjp7fSwiQ09CIjp7ImlzU3VwcG9ydGVkIjp0cnVlfSwiMjc1VSI6e319LCJjb3ZlcmFnZVR5cGVzIjpbXX0%3D) for a complete list of supported payers.
2. Stedi searches a national database containing 245+ million patient coverage records from 45+ health plans, ASOs, TPAs, and others, including participation from the vast majority of national commercial health plans. Data is updated weekly to ensure accuracy.
3. The endpoint returns information about the patient's active health plans, the responsibility sequence number for each payer if available (such as primary or secondary), and whether coordination of benefits is required.

## API Specification

Submit a coordination of benefits (COB) check in JSON format

**Endpoint:** `POST /coordination-of-benefits`

**Base URL:** `https://healthcare.us.stedi.com/2024-04-01`

### Request Body

**Schema:** `CoordinationOfBenefitsRequestContent`

**Properties:**

- **`dependent`** (`object`): A dependent for which you want to check coordination of benefits.
- An individual qualifies as a dependent when they are listed as a dependent on the subscriber's insurance plan AND the payer cannot uniquely identify them through information outside the subscriber's policy. For example, if the dependent has their own member ID number, you should identify them in the `subscriber` object instead.
- The demographic information you provide **must** patch the payer's data exactly. For example, if the payer has the dependent's name as `Jonathan Doe`, a COB request for `Jon Doe` will fail because the name doesn't match the payer's records.
- **`dependent.dateOfBirth`** (`string`) (required): The dependent's date of birth.
- **`dependent.firstName`** (`string`) (required): The dependent's first name.
- **`dependent.lastName`** (`string`) (required): The dependent's last name.
- **`dependent.ssn`** (`string`): The dependent's Social Security Number (SSN).
- **`encounter`** (`object`) (required): Information about the encounter.
- You can submit COB checks with the `30` service type code for Health Benefit Plan Coverage. This is the broadest service type code that covers all medical services and subtypes included in the patient’s health plan.
- The service dates you provide **must** be within the past 2 years. COB checks don't support requests with dates outside of this range.
- Don't send service dates that are in the future. Future service dates typically result in errors from the payer.
- If you don't specify a service date (either a single day or a range of dates), Stedi defaults to using the current date.
- **`encounter.beginningDateOfService`** (`string`): The beginning date of service. If you include this value, you must also include the `endDateOfService`.
- **`encounter.dateOfService`** (`string`): The date of service of the encounter.
- **`encounter.endDateOfService`** (`string`): The end date of service. If you include this value, you must also include the `beginningDateOfService`.
- **`encounter.serviceTypeCode`** (`string`): The service type code for the encounter. If not provided, the default value is `30`.
  - Allowed values: `30`
- **`provider`** (`object`) (required): Information about the entity requesting the coverage.
- **`provider.firstName`** (`string`): The provider's first name. This property is required if the provider is an individual.
- **`provider.lastName`** (`string`): The provider's last name. This property is required if the provider is an individual.
- **`provider.npi`** (`string`) (required): The provider's [National Provider Identifier (NPI)](https://www.stedi.com/docs/healthcare/national-provider-identifier).
- **`provider.organizationName`** (`string`): The provider's business name.
- **`subscriber`** (`object`) (required): The primary policyholder for the insurance plan _or_ a dependent with a unique member ID. If a dependent has a unique member ID, include their information here and leave `dependent` empty.



The demographic information you provide **must** match the payer's data exactly. For example, if the payer has the subscriber's name as `Jonathan Doe`, a COB request for `Jon Doe` will fail because the name doesn't match the payer's records. Also note that:
  - Any prefix on the member's card is considered part of the `memberID` used for the search.
  - Mismatches in the `memberId` are one of the most common causes of `Member Not Found` errors. We strongly recommend first performing an [Eligibility Check](https://www.stedi.com/docs/healthcare/api-reference/post-healthcare-eligibility) and using the `memberId` in the response to populate your COB check.
  - We recommend including the `ssn` property in addition to the `memberId` if possible. This allows Stedi to do an additional search for the patient when the `memberId` doesn't return a match.
  - Stedi can identify coverage overlap for the same payer if the member ID differs between the two coverages.
- **`subscriber.dateOfBirth`** (`string`) (required): The subscriber's date of birth.
- **`subscriber.firstName`** (`string`) (required): The patient's first name.
- **`subscriber.lastName`** (`string`) (required): The patient's last name.
- **`subscriber.memberId`** (`string`): The member ID for the subscriber's insurance policy. 

You must provide at least one of the `memberId` or `ssn` properties in the request. However, we recommend including both if possible. This allows Stedi to do an additional search for patient information when the `memberId` doesn't return a match.
- **`subscriber.ssn`** (`string`): The subscriber's Social Security Number (SSN). 

You must provide at least one of the `memberId` or `ssn` properties in the request. However, we recommend including both if possible. This allows Stedi to do an additional search for patient information when the `memberId` doesn't return a match.
- **`tradingPartnerServiceId`** (`string`) (required): The payer ID. Visit the [Payer Network](https://www.stedi.com/healthcare/network) for a complete list of supported payers for COB checks.
 - Each check **must** be for a participating health plan for which the patient has coverage. For example, if the patient has coverage from Cigna and UnitedHealthcare, a COB check to Aetna will return an error.
 - Medicare and Medicare Advantage plans aren't supported. If you submit a COB check for a Medicare or Medicare Advantage plan, the request will fail with an `AAA` = `75` error (Subscriber/Insured Not Found).
 - Ensure that you're sending the request to the correct payer entity. For example, Blue Cross Blue Shield (BCBS) has multiple entities that operate in different states. If you send a request to the wrong entity, the request will fail with an `AAA` = `75` error (Subscriber/Insured Not Found).
 - You must include leading `0` characters - payer IDs are alphanumeric strings and must be treated as complete strings, not integers. For example, use `00540` for SISCO, not `540`.

**Example:**

```json
{
  "dependent": {
    "dateOfBirth": "2002-12-31",
    "firstName": "Jordan",
    "lastName": "Doe"
  },
  "encounter": {
    "dateOfService": "2024-08-02",
    "serviceTypeCode": "30"
  },
  "provider": {
    "npi": "1999999984",
    "organizationName": "ACME Health Services"
  },
  "subscriber": {
    "dateOfBirth": "1985-05-27",
    "firstName": "John",
    "lastName": "Doe",
    "memberId": "W000000000"
  },
  "tradingPartnerServiceId": "SOMEID"
}
```

### Responses

#### 200

CoordinationOfBenefits 200 response

**Schema:** `CoordinationOfBenefitsResponseContent`

**Properties:**

- **`benefitsInformation`** (`array of COBBenefitsInformation objects`): Information about the patient's healthcare benefits, including:
- Active coverage with the health plan identified in the COB request
- Coverage overlap (if it exists) with one or more payers
- Payer primacy details (if Stedi was able to determine)
- Benefits details, such as coverage dates and service types
- **`benefitsInformation[].benefitsDateInformation`** (`object`): Dates associated with the benefits. Dates listed only apply to the `benefitsInformation` object in which this benefitsDateInformation is provided.
- **`benefitsInformation[].benefitsDateInformation.benefitBegin`** (`string`): The date the benefits begin.
- **`benefitsInformation[].benefitsDateInformation.benefitEnd`** (`string`): The date the benefits end.
- **`benefitsInformation[].benefitsDateInformation.coordinationOfBenefits`** (`string`): Date or date range used for coordination of benefits instance.
- **`benefitsInformation[].benefitsDateInformation.periodEnd`** (`string`): The end of the coverage overlap. Included when Stedi finds an instance of coverage overlap.
- **`benefitsInformation[].benefitsDateInformation.periodStart`** (`string`): The start of the coverage overlap Included when Stedi finds an instance of coverage overlap.
- **`benefitsInformation[].benefitsDateInformation.planBegin`** (`string`): Coverage start date. If multiple coverage start dates exist due to different start dates on various coverage/service types, this date applies to the medical coverage.
- **`benefitsInformation[].benefitsRelatedEntities`** (`array of COBBenefitsRelatedEntity objects`): Contains either information about another payer with which the patient has coverage or information about the subscriber associated with the additional health plan.

For example, if you submit a COB check for a dependent to Cigna and Stedi finds additional coverage through Aetna, the `benefitsInformation[].benefitsRelatedEntities` instance would include subscriber details for the Aetna plan.
- **`benefitsInformation[].benefitsRelatedEntities[].entityFirstname`** (`string`): The entity's first name, when the entity is a subscriber.
- **`benefitsInformation[].benefitsRelatedEntities[].entityIdentification`** (`string`): Code identifying the type of `entityIdentificationValue`.
  - Allowed values: `MI`, `PI`
- **`benefitsInformation[].benefitsRelatedEntities[].entityIdentificationValue`** (`string`): The identification number for the entity, qualified by the code in `entityIdentification`. The ID returned in this property is proprietary to our COB check product, so you can't use it as the Payer ID for eligibility checks or other API requests to Stedi. It likely doesn't match the Payer IDs listed in the [Payer Network](https://www.stedi.com/healthcare/network).
- **`benefitsInformation[].benefitsRelatedEntities[].entityIdentifier`** (`string`): Identifies the type of `benefitsInformation[].benefitsRelatedEntities`.
  - Allowed values: `Insured or Subscriber`, `Payer`, `Primary Payer`, `Secondary Payer`, `Tertiary Payer`
- **`benefitsInformation[].benefitsRelatedEntities[].entityLastname`** (`string`): The entity's last name, when the entity is a subscriber.
- **`benefitsInformation[].benefitsRelatedEntities[].entityMiddlename`** (`string`): The entity's middle name or initial, when the entity is a subscriber.
- **`benefitsInformation[].benefitsRelatedEntities[].entityName`** (`string`): The payer's business name, when the entity is a payer.
- **`benefitsInformation[].code`** (`string`): The code indicating the type of benefits information. Can be `1` - Active Coverage, `6` - Inactive, `R` - Other or Additional Payor, or `V` - Cannot Process.
  - Allowed values: `1`, `6`, `R`, `V`
- **`benefitsInformation[].name`** (`string`): The full name of the benefits information code.
  - Allowed values: `Active Coverage`, `Inactive`, `Other or Additional Payor`, `Cannot Process`
- **`benefitsInformation[].serviceTypeCodes`** (`array of strings`): Code identifying the type of services.
- **`benefitsInformation[].serviceTypes`** (`array of strings`): The full names of the service type codes.
- **`benefitsInformation[].subscriber`** (`object`)
- **`benefitsInformation[].subscriber.dateOfBirth`** (`string`): The subscriber's date of birth.
- **`coordinationOfBenefits`** (`object`)
- **`coordinationOfBenefits.benefitOverlap`** (`boolean`): If set to `true`, the COB response contains benefits overlap. A benefits overlap indicates that the patient has active coverage from two or more payers for the same service type code, including the subtypes of medical coverage.
- **`coordinationOfBenefits.classification`** (`string`): The classification for the benefits that have been discovered in the COB response. Stedi returns one of the following values:
    - `CobInstanceExistsPrimacyDetermined`: COB Instance Exists and Primacy was determined
    - `CobInstanceExistsPrimacyUndetermined`: COB Instance Exists and Primacy was NOT determined
    - `CoverageOverlapNoBenefitOverlap`: Coverage Overlap detected with no Benefit Overlap
    - `CoverageOverlapExistsNotSubjectToCob`: Coverage Overlap exists and is not subject to COB
    - `MemberFoundNoCob`: Member found, no COB found
- **`coordinationOfBenefits.coverageOverlap`** (`boolean`): If set to `true`, the COB response contains a coverage overlap, meaning that the patient has active coverage with two or more payers during the service date submitted in the COB request.
    - Coverage overlap can be for coverages from the same payer if the member ID is different between the two coverages.
    - A coverage overlap is necessary for a COB instance to exist.
    - A coverage overlap can exist without there being a COB instance if either of the two coverages is not subject to COB for any reason.
- **`coordinationOfBenefits.instanceExists`** (`boolean`): If set to `true`, the COB response contains at least one coordination of benefits instance.
- **`coordinationOfBenefits.primacyDetermined`** (`boolean`): If set to `true`, Stedi was able to determine the primary payer for the patient. If Stedi was unable to determine the primary payer, you must contact the payers directly to determine primacy.
- **`dependent`** (`object`): Information about the dependent listed in the original COB request.
- **`dependent.aaaErrors`** (`array of EligibilityCheckError objects`): When a COB request fails, the response contains one or more `AAA` errors that specify the reasons for the rejection and any recommended follow-up actions.
- **`dependent.aaaErrors[].code`** (`string`): This is a superset of all the possible codes in the sub-loops, as all errors are bubbled up to the top level of the response

Payers may sometimes return other non-compliant values.
  - Allowed values: `04`, `15`, `33`, `35`, `41`, `42`, `43`, `44`, `45`, `46`, `47`, `48`, `49`, `50`, `51`, `52`, `53`, `54`, `55`, `56`, `57`, `58`, `60`, `61`, `62`, `63`, `64`, `65`, `66`, `67`, `68`, `69`, `70`, `71`, `72`, `73`, `74`, `75`, `76`, `77`, `78`, `79`, `80`, `97`, `98`, `AA`, `AE`, `AF`, `AG`, `AO`, `CI`, `E8`, `IA`, `MA`, `T4`
- **`dependent.aaaErrors[].description`** (`string`): The error description.
- **`dependent.aaaErrors[].field`** (`string`): The error type, `AAA`.
- **`dependent.aaaErrors[].followupAction`** (`string`): Payers may sometimes return other non-compliant values.
  - Allowed values: `Please Correct and Resubmit`, `Resubmission Not Allowed`, `Please Resubmit Original Transaction`, `Resubmission Allowed`, `Do Not Resubmit; Inquiry Initiated to a Third Party`, `Please Wait 30 Days and Resubmit`, `Please Wait 10 Days and Resubmit`, `Do Not Resubmit; We Will Hold Your Request and Respond Again Shortly`
- **`dependent.aaaErrors[].location`** (`string`): The location of the error within the original X12 EDI response.
- **`dependent.aaaErrors[].possibleResolutions`** (`string`): Information to help you correct the error.

We periodically update this guidance, so these strings may change at any time and may differ between eligibility responses. **Don't build programmatic logic that depends on matching these strings exactly.**
- **`dependent.address`** (`object`)
- **`dependent.address.address1`** (`string`): The first line of the address.
- **`dependent.address.address2`** (`string`): The second line of the address.
- **`dependent.address.city`** (`string`): The city.
- **`dependent.address.countryCode`** (`string`): The two-letter country code from [Part 1 of ISO 3166](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2).
- **`dependent.address.countrySubDivisionCode`** (`string`): The country subdivision code from [Part 2 of ISO 3166](https://en.wikipedia.org/wiki/ISO_3166-2).
- **`dependent.address.postalCode`** (`string`): The United States or Canadian postal code, excluding punctuation and blanks.
- **`dependent.address.state`** (`string`): The US state or Canadian province code with unknown option. For example, `TN` for Tennessee or `NB` for New Brunswick.

Payers may sometimes return other non-compliant values.
  - Allowed values: `NL`, `PE`, `NS`, `NB`, `QC`, `ON`, `MB`, `SK`, `AB`, `BC`, `YT`, `NT`, `NU`, `DC`, `AS`, `GU`, `MP`, `PR`, `UM`, `VI`, `AA`, `AE`, `AP`, `AK`, `AL`, `AR`, `AZ`, `CA`, `CO`, `CT`, `DE`, `FL`, `GA`, `HI`, `IA`, `ID`, `IL`, `IN`, `KS`, `KY`, `LA`, `MA`, `MD`, `ME`, `MI`, `MN`, `MO`, `MS`, `MT`, `NC`, `ND`, `NE`, `NH`, `NJ`, `NM`, `NV`, `NY`, `OH`, `OK`, `OR`, `PA`, `RI`, `SC`, `SD`, `TN`, `TX`, `UT`, `VA`, `VT`, `WA`, `WI`, `WV`, `WY`
- **`dependent.birthSequenceNumber`** (`string`): The number assigned to each family member born with the same birth date, such as twins or triplets. Indicates the birth order when there are multiple births associated with the provided birth date.
- **`dependent.dateOfBirth`** (`string`): The dependent's date of birth.
- **`dependent.firstName`** (`string`): The dependent's first name.
- **`dependent.gender`** (`string`)
  - Allowed values: `M`, `F`, `U`
- **`dependent.groupNumber`** (`string`): The group number associated with the subscriber's insurance policy.
- **`dependent.lastName`** (`string`): The dependent's last name.
- **`dependent.memberId`** (`string`): The member ID for the subscriber's insurance policy.
- **`dependent.middleName`** (`string`): The dependent's middle name or initial.
- **`dependent.relationToSubscriber`** (`string`): The name of the `relationToSubscriberCode`.
  - Allowed values: `Spouse`, `Child`, `Employee`, `Unknown`, `Organ Donor`, `Cadaver Donor`, `Life Partner`, `Other Relationship`
- **`dependent.relationToSubscriberCode`** (`string`): The code indicating the dependent's relationship to the subscriber.
  - Allowed values: `01`, `19`, `20`, `21`, `39`, `40`, `53`, `G8`
- **`dependent.ssn`** (`string`): The dependent's Social Security Number (SSN).
- **`errors`** (`array of EligibilityCheckError objects`): If the COB request fails, the COB response contains one or more `AAA` errors that specify the reasons for the rejection and any recommended follow-up actions.
- **`errors[].code`** (`string`): This is a superset of all the possible codes in the sub-loops, as all errors are bubbled up to the top level of the response

Payers may sometimes return other non-compliant values.
  - Allowed values: `04`, `15`, `33`, `35`, `41`, `42`, `43`, `44`, `45`, `46`, `47`, `48`, `49`, `50`, `51`, `52`, `53`, `54`, `55`, `56`, `57`, `58`, `60`, `61`, `62`, `63`, `64`, `65`, `66`, `67`, `68`, `69`, `70`, `71`, `72`, `73`, `74`, `75`, `76`, `77`, `78`, `79`, `80`, `97`, `98`, `AA`, `AE`, `AF`, `AG`, `AO`, `CI`, `E8`, `IA`, `MA`, `T4`
- **`errors[].description`** (`string`): The error description.
- **`errors[].field`** (`string`): The error type, `AAA`.
- **`errors[].followupAction`** (`string`): Payers may sometimes return other non-compliant values.
  - Allowed values: `Please Correct and Resubmit`, `Resubmission Not Allowed`, `Please Resubmit Original Transaction`, `Resubmission Allowed`, `Do Not Resubmit; Inquiry Initiated to a Third Party`, `Please Wait 30 Days and Resubmit`, `Please Wait 10 Days and Resubmit`, `Do Not Resubmit; We Will Hold Your Request and Respond Again Shortly`
- **`errors[].location`** (`string`): The location of the error within the original X12 EDI response.
- **`errors[].possibleResolutions`** (`string`): Information to help you correct the error.

We periodically update this guidance, so these strings may change at any time and may differ between eligibility responses. **Don't build programmatic logic that depends on matching these strings exactly.**
- **`meta`** (`object`)
- **`meta.applicationMode`** (`string`): The type of data in the request. Stedi uses `production` to identify transactions processed in our live clearinghouse environment.
- **`meta.outboundTraceId`** (`string`): The value provided in the `submitterTransactionIdentifier` property in the original COB request.
- **`meta.traceId`** (`string`): A unique ID Stedi assigns to the COB request.
- **`payer`** (`object`)
- **`payer.name`** (`string`): The payer's name, such as `CIGNA`.
- **`payer.payerIdentification`** (`string`): The `tradingPartnerServiceId` (Payer ID) you used to identify the payer in the COB request.
- **`planDateInformation`** (`object`): Dates associated with the patient's health plan coverage. This information is used to determine their eligibility for benefits.
- The provided dates apply to every benefit within the patient's health plan unless specifically noted within a `benefitsInformation[].benefitsDateInformation` object.
- If the payer sends back date(s) that are different for the subscriber and dependents, Stedi includes only the dates for the dependent in this object and omits the subscriber's date(s). Dependents can have different coverage dates than the subscriber due to qualifying life events, such as starting a new job or passing the age limit for coverage through their parent's plan.
- **`planDateInformation.planBegin`** (`string`): When the patient's health plan coverage begins.
- **`planDateInformation.planEnd`** (`string`): When the patient's health plan coverage ends.
- **`provider`** (`object`): Information about the entity that submitted the original eligibility check request. This may be an individual practitioner, a medical group, a hospital, or another type of healthcare provider.
- **`provider.aaaErrors`** (`array of EligibilityCheckError objects`): When a COB request fails, the response contains one or more `AAA` errors that specify the reasons for the rejection and any recommended follow-up actions.
- **`provider.aaaErrors[].code`** (`string`): This is a superset of all the possible codes in the sub-loops, as all errors are bubbled up to the top level of the response

Payers may sometimes return other non-compliant values.
  - Allowed values: `04`, `15`, `33`, `35`, `41`, `42`, `43`, `44`, `45`, `46`, `47`, `48`, `49`, `50`, `51`, `52`, `53`, `54`, `55`, `56`, `57`, `58`, `60`, `61`, `62`, `63`, `64`, `65`, `66`, `67`, `68`, `69`, `70`, `71`, `72`, `73`, `74`, `75`, `76`, `77`, `78`, `79`, `80`, `97`, `98`, `AA`, `AE`, `AF`, `AG`, `AO`, `CI`, `E8`, `IA`, `MA`, `T4`
- **`provider.aaaErrors[].description`** (`string`): The error description.
- **`provider.aaaErrors[].field`** (`string`): The error type, `AAA`.
- **`provider.aaaErrors[].followupAction`** (`string`): Payers may sometimes return other non-compliant values.
  - Allowed values: `Please Correct and Resubmit`, `Resubmission Not Allowed`, `Please Resubmit Original Transaction`, `Resubmission Allowed`, `Do Not Resubmit; Inquiry Initiated to a Third Party`, `Please Wait 30 Days and Resubmit`, `Please Wait 10 Days and Resubmit`, `Do Not Resubmit; We Will Hold Your Request and Respond Again Shortly`
- **`provider.aaaErrors[].location`** (`string`): The location of the error within the original X12 EDI response.
- **`provider.aaaErrors[].possibleResolutions`** (`string`): Information to help you correct the error.

We periodically update this guidance, so these strings may change at any time and may differ between eligibility responses. **Don't build programmatic logic that depends on matching these strings exactly.**
- **`provider.npi`** (`string`): The provider's [National Provider Identifier (NPI)](https://www.stedi.com/docs/healthcare/national-provider-identifier).
- **`provider.providerFirstName`** (`string`): The provider's first name. This applies to providers that are an individual.
- **`provider.providerName`** (`string`): The provider's last name. This applies to providers that are an individual.
- **`provider.providerOrgName`** (`string`): The provider's organization name.
- **`subscriber`** (`object`): Information about the primary policyholder for the insurance plan listed in the COB request.
- **`subscriber.aaaErrors`** (`array of EligibilityCheckError objects`): When a payer rejects your request, the response contains one or more `AAA` errors that specify the reasons for the rejection and any recommended follow-up actions.
- **`subscriber.aaaErrors[].code`** (`string`): This is a superset of all the possible codes in the sub-loops, as all errors are bubbled up to the top level of the response

Payers may sometimes return other non-compliant values.
  - Allowed values: `04`, `15`, `33`, `35`, `41`, `42`, `43`, `44`, `45`, `46`, `47`, `48`, `49`, `50`, `51`, `52`, `53`, `54`, `55`, `56`, `57`, `58`, `60`, `61`, `62`, `63`, `64`, `65`, `66`, `67`, `68`, `69`, `70`, `71`, `72`, `73`, `74`, `75`, `76`, `77`, `78`, `79`, `80`, `97`, `98`, `AA`, `AE`, `AF`, `AG`, `AO`, `CI`, `E8`, `IA`, `MA`, `T4`
- **`subscriber.aaaErrors[].description`** (`string`): The error description.
- **`subscriber.aaaErrors[].field`** (`string`): The error type, `AAA`.
- **`subscriber.aaaErrors[].followupAction`** (`string`): Payers may sometimes return other non-compliant values.
  - Allowed values: `Please Correct and Resubmit`, `Resubmission Not Allowed`, `Please Resubmit Original Transaction`, `Resubmission Allowed`, `Do Not Resubmit; Inquiry Initiated to a Third Party`, `Please Wait 30 Days and Resubmit`, `Please Wait 10 Days and Resubmit`, `Do Not Resubmit; We Will Hold Your Request and Respond Again Shortly`
- **`subscriber.aaaErrors[].location`** (`string`): The location of the error within the original X12 EDI response.
- **`subscriber.aaaErrors[].possibleResolutions`** (`string`): Information to help you correct the error.

We periodically update this guidance, so these strings may change at any time and may differ between eligibility responses. **Don't build programmatic logic that depends on matching these strings exactly.**
- **`subscriber.address`** (`object`)
- **`subscriber.address.address1`** (`string`): The first line of the address.
- **`subscriber.address.address2`** (`string`): The second line of the address.
- **`subscriber.address.city`** (`string`): The city.
- **`subscriber.address.countryCode`** (`string`): The two-letter country code from [Part 1 of ISO 3166](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2).
- **`subscriber.address.countrySubDivisionCode`** (`string`): The country subdivision code from [Part 2 of ISO 3166](https://en.wikipedia.org/wiki/ISO_3166-2).
- **`subscriber.address.postalCode`** (`string`): The United States or Canadian postal code, excluding punctuation and blanks.
- **`subscriber.address.state`** (`string`): The US state or Canadian province code with unknown option. For example, `TN` for Tennessee or `NB` for New Brunswick.

Payers may sometimes return other non-compliant values.
  - Allowed values: `NL`, `PE`, `NS`, `NB`, `QC`, `ON`, `MB`, `SK`, `AB`, `BC`, `YT`, `NT`, `NU`, `DC`, `AS`, `GU`, `MP`, `PR`, `UM`, `VI`, `AA`, `AE`, `AP`, `AK`, `AL`, `AR`, `AZ`, `CA`, `CO`, `CT`, `DE`, `FL`, `GA`, `HI`, `IA`, `ID`, `IL`, `IN`, `KS`, `KY`, `LA`, `MA`, `MD`, `ME`, `MI`, `MN`, `MO`, `MS`, `MT`, `NC`, `ND`, `NE`, `NH`, `NJ`, `NM`, `NV`, `NY`, `OH`, `OK`, `OR`, `PA`, `RI`, `SC`, `SD`, `TN`, `TX`, `UT`, `VA`, `VT`, `WA`, `WI`, `WV`, `WY`
- **`subscriber.birthSequenceNumber`** (`string`): The number assigned to each family member born with the same birth date, such as twins or triplets. Indicates the birth order when there are multiple births associated with the provided birth date.
- **`subscriber.dateOfBirth`** (`string`): The subscriber's date of birth.
- **`subscriber.firstName`** (`string`): The subscriber's first name.
- **`subscriber.gender`** (`string`)
  - Allowed values: `M`, `F`, `U`
- **`subscriber.groupNumber`** (`string`): The group number associated with the subscriber's insurance policy.
- **`subscriber.lastName`** (`string`): The subscriber's last name.
- **`subscriber.memberId`** (`string`): The member ID for the subscriber's insurance policy.
- **`subscriber.middleName`** (`string`): The subscriber's middle name or initial.
- **`subscriber.ssn`** (`string`): The subscriber's Social Security Number (SSN).

**Example:**

```json
{
  "benefitsInformation": [
    {
      "benefitsDateInformation": {
        "benefitBegin": "2023-03-01"
      },
      "code": "1",
      "name": "Active Coverage",
      "serviceTypeCodes": [
        "1"
      ],
      "serviceTypes": [
        "Medical Care"
      ],
      "subscriber": {
        "dateOfBirth": "2002-02-27"
      }
    },
    {
      "benefitsDateInformation": {
        "benefitBegin": "2023-03-01"
      },
      "code": "1",
      "name": "Active Coverage",
      "serviceTypeCodes": [
        "88"
      ],
      "serviceTypes": [
        "Pharmacy"
      ],
      "subscriber": {
        "dateOfBirth": "2002-02-27"
      }
    },
    {
      "benefitsDateInformation": {
        "benefitBegin": "2023-03-01"
      },
      "code": "1",
      "name": "Active Coverage",
      "serviceTypeCodes": [
        "AL"
      ],
      "serviceTypes": [
        "Vision (Optometry)"
      ],
      "subscriber": {
        "dateOfBirth": "2002-02-27"
      }
    },
    {
      "benefitsDateInformation": {
        "coordinationOfBenefits": "2024-07-01"
      },
      "benefitsRelatedEntities": [
        {
          "entityIdentification": "PI",
          "entityIdentificationValue": "1006",
          "entityIdentifier": "Primary Payer",
          "entityName": "CIGNA"
        },
        {
          "entityFirstname": "JOHN",
          "entityIdentification": "MI",
          "entityIdentificationValue": "00000000000",
          "entityIdentifier": "Insured or Subscriber",
          "entityLastname": "DOE",
          "entityMiddlename": "X"
        }
      ],
      "code": "R",
      "name": "Other or Additional Payor",
      "serviceTypeCodes": [
        "1"
      ],
      "serviceTypes": [
        "Medical Care"
      ],
      "subscriber": {
        "dateOfBirth": "2002-12-31"
      }
    }
  ],
  "coordinationOfBenefits": {
    "benefitOverlap": true,
    "classification": "CobInstanceExistsPrimacyDetermined",
    "coverageOverlap": true,
    "instanceExists": true,
    "primacyDetermined": true
  },
  "dependent": {
    "address": {
      "address1": "1 MAIN ST.",
      "city": "NEW YORK",
      "postalCode": "10000",
      "state": "NY"
    },
    "dateOfBirth": "2002-12-31",
    "firstName": "JORDAN",
    "gender": "M",
    "lastName": "DOE",
    "relationToSubscriber": "Child",
    "relationToSubscriberCode": "19"
  },
  "errors": [],
  "meta": {
    "applicationMode": "production",
    "outboundTraceId": "01JDQFT4W3KTWZNTADEZ55BFFX",
    "traceId": "01JDQFT4W3KTWZNTADEZ55BFFX"
  },
  "payer": {
    "name": "Aetna",
    "payerIdentification": "AETNA-USH"
  },
  "provider": {
    "npi": "1999999984",
    "providerName": "ACME Health Services"
  },
  "subscriber": {
    "address": {
      "address1": "1 MAIN ST.",
      "city": "NEW YORK",
      "postalCode": "10000",
      "state": "NY"
    },
    "firstName": "JOHN",
    "lastName": "DOE",
    "memberId": "W000000000"
  }
}
```

#### 400

CoordinationOfBenefits400Error 400 response

**Schema:** `CoordinationOfBenefits400ErrorResponseContent`

#### 403

AccessDeniedException 403 response

**Schema:** `AccessDeniedExceptionResponseContent`

**Properties:**

- **`code`** (`string`): Error classification code
- **`message`** (`string`) (required): Human-readable error message
#### 404

ResourceNotFoundException 404 response

**Schema:** `ResourceNotFoundExceptionResponseContent`

**Properties:**

- **`code`** (`string`): Error classification code
- **`message`** (`string`) (required): Human-readable error message
#### 429

ThrottlingException 429 response

**Schema:** `ThrottlingExceptionResponseContent`

**Properties:**

- **`code`** (`string`): Error classification code
- **`message`** (`string`) (required): Human-readable error message
#### 500

InternalFailureException 500 response

**Schema:** `InternalFailureExceptionResponseContent`

**Properties:**

- **`code`** (`string`): Error classification code
- **`message`** (`string`) (required): Human-readable error message
#### 503

ServiceUnavailableException 503 response

**Schema:** `ServiceUnavailableExceptionResponseContent`

**Properties:**

- **`code`** (`string`)
- **`message`** (`string`) (required)
#### 504

GatewayTimeoutException 504 response

**Schema:** `GatewayTimeoutExceptionResponseContent`

**Properties:**

- **`code`** (`string`)
- **`message`** (`string`) (required)


# Create Enrollment
Source: https://www.stedi.com/docs/healthcare/api-reference/post-enrollment-create-enrollment


This endpoint allows you to submit a [transaction enrollment](/healthcare/transaction-enrollment) request for a specific provider. You must create one enrollment request for each transaction type. For example, you would create three separate requests to enroll a provider for 837P claims (professional), 270 real-time eligibility checks, and 835 ERAs (claim payments).

1. Add the provider's details through either the [Providers page](https://portal.stedi.com/app/healthcare/enrollments) or the [Create Provider](/healthcare/api-reference/post-enrollment-create-provider) endpoint.
2. Call this endpoint to create the enrollment request. Set the `status` property to `DRAFT` for test enrollments. Set the `status` property to `STEDI_ACTION_REQUIRED` when you're ready for Stedi to begin processing the request.
3. The endpoint returns summary information about the enrollment request.

Once the status is set to `STEDI_ACTION_REQUIRED`, Stedi begins processing the enrollment request. You can track its progress through the Stedi portal or the API.

## Contact information [#contact-information]

You must submit a contact in `primaryContact`. This is where the payer will send communications about the enrollment, if needed.

The contact information you provide doesn't need to match the existing contact information on the provider record. This allows you to specify different contacts for different payers as needed.

When adding a contact, follow these best practices:

* The provider's name and address should match exactly what the payer has on file. Some payers reject enrollment requests with addresses that don't match their records.
* However, you may want to set the phone number or email to your own contact details. Do this when you want the payer to contact you about the enrollment instead of the provider directly.

## API Specification

Creates a new transaction enrollment request. Transaction enrollment registers a provider to exchange specific transaction types with a payer.

**Endpoint:** `POST /enrollments`

**Base URL:** `https://enrollments.us.stedi.com/2024-09-01`

### Request Body

**Schema:** `CreateEnrollmentRequestContent`

**Properties:**

- **`aggregationPreference`** (`any`): Preference for how the payer should group 835 Electronic Remittance Advice (ERA) transactions. Only set this property for 835 ERA enrollments.
  - If you include this property for a non-ERA enrollment, Stedi rejects the enrollment request with an HTTP `400` error.
  - If the payer doesn't support the requested aggregation type, Stedi rejects the enrollment request with an HTTP `400` error.
  - If not set, Stedi automatically selects a default based on the payer's supported aggregation types and the available identifiers for the provider.
  - Stedi will attempt to enroll with this preference, but it's not guaranteed. Each payer has its own restrictions and behaviors.
- **`aggregationPreference (variant 1).taxId`** (`string`) (required): The Taxpayer Identification Number (TIN) the payer should use for aggregation.
- **`aggregationPreference (variant 2).npi`** (`string`) (required): The National Provider Identifier (NPI) the payer should use for aggregation.
- **`payer`** (`object`) (required): The payer you want to enroll with.
- **`payer.id`** (`string`): Use `idOrAlias` instead. This property will be removed in the future.
- **`payer.idOrAlias`** (`string`): The payer ID. Visit the [Payer Network](https://www.stedi.com/healthcare/network) for a complete list.
 - You can use the primary payer ID, the Stedi payer ID, or any listed aliases for the payer.
 - You must include leading `0` characters - payer IDs are alphanumeric strings and must be treated as complete strings, not integers. For example, use `00540` for SISCO, not `540`.
- **`primaryContact`** (`object`) (required): The contact information for the provider. These contacts appear as prepopulated options for contact information when creating enrollment requests for this provider in the Stedi portal. They aren't automatically added to enrollment requests.

These contacts should specify where payers should send communications about the enrollment, if needed.
  - Either `organizationName` _or_ `firstName` and `lastName` are required.
  - The name and address should match exactly what the payer has on file for the provider. Some payers reject enrollment requests with addresses that don't match their records.
  - If you're submitting enrollment requests on a provider's behalf, you may want to set the phone number and email to your own contact details. Do this when you want the payer to contact you about the enrollment status instead of the provider directly.
  - These contacts are for convenience only. You can specify different contacts on enrollment requests as needed.
- **`primaryContact.city`** (`string`) (required): The contact's city. This should match exactly what the payer has on file for the provider.
- **`primaryContact.email`** (`string`) (required): The contact's email address. Set this to where you want the payer to send communications regarding the enrollment. This can be different from the provider's email if needed.
- **`primaryContact.firstName`** (`string`): The contact's first name. This should match exactly what the payer has on file for the provider.
- **`primaryContact.lastName`** (`string`): The contact's last name. This should match exactly what the payer has on file for the provider.
- **`primaryContact.organizationName`** (`string`): The contact's business name. This should match exactly what the payer has on file for the provider.
- **`primaryContact.phone`** (`string`) (required): The contact's phone number. Set this to where you want the payer to direct communications regarding the enrollment. This can be different from the provider's phone number if needed.
- **`primaryContact.state`** (`string`) (required): United States state and territory codes using standard two-letter abbreviations.
  - Allowed values: `AA`, `AE`, `AK`, `AL`, `AP`, `AR`, `AS`, `AZ`, `CA`, `CO`, `CT`, `DC`, `DE`, `FL`, `FM`, `GA`, `GU`, `HI`, `IA`, `ID`, `IL`, `IN`, `KS`, `KY`, `LA`, `MA`, `MD`, `ME`, `MH`, `MI`, `MN`, `MO`, `MP`, `MS`, `MT`, `NC`, `ND`, `NE`, `NH`, `NJ`, `NM`, `NV`, `NY`, `OH`, `OK`, `OR`, `PA`, `PR`, `PW`, `RI`, `SC`, `SD`, `TN`, `TX`, `UT`, `VT`, `VA`, `VI`, `WA`, `WV`, `WI`, `WY`
- **`primaryContact.streetAddress1`** (`string`) (required): The contact's street address, including the street number, name, and any suite or apartment number. This should match exactly what the payer has on file for the provider.
- **`primaryContact.streetAddress2`** (`string`): The contact's street address continued. This should match exactly what the payer has on file for the provider.
- **`primaryContact.zipCode`** (`string`) (required): The contact's five-digit ZIP code. This should match exactly what the payer has on file for the provider.
- **`provider`** (`object`) (required): The provider you want to enroll with the payer. This must be an existing provider record within Stedi.
- **`provider.id`** (`string`) (required): The Stedi-assigned identifier for the provider. The [Create Provider](https://www.stedi.com/docs/api-reference/healthcare/post-enrollment-create-provider) endpoint returns this as the `id` property.
- **`providerTransactionAccessNumber`** (`string`): This property is required for payers that require a Provider Transaction Access Number (PTAN).

The PTAN is a Medicare-issued number given to providers upon enrollment with Medicare. This number is usually six digits and is assigned based on the type of service and the location of the provider. Upon enrollment, Medicare Administrating Contracting (MAC) providers should receive their assigned PTAN number in their approval letter.
- **`reason`** (`string`): This shape is deprecated since 2025-10-07: Only Stedi can set or update this property, and it will be removed in a future release.
- **`requestedEffectiveDate`** (`string`): The requested effective date for the enrollment in YYYYMMDD format. This is the date you'd like the enrollment to take effect with the payer. For example, setting this to `20260601` for an 835 Electronic Remittance Advice (ERAs) enrollment means you want to start receiving ERAs through Stedi on that date.

Stedi processes enrollments accordingly, but can't guarantee that the enrollment will be effective on this exact date.
  - You can submit today's date or a future date up to 6 months from today.
  - If not set for draft enrollments, this property remains empty.
  - If not set for submitted enrollments, Stedi defaults to the enrollment's submission date.
  - If you include this property for a payer that doesn't support requested effective dates, Stedi rejects the request with an HTTP `400` error.
- **`source`** (`string`): The source of the enrollment.
  - Allowed values: `API`, `UI`, `IMPORT`, `AUTO_ENROLLMENT`, `AUTOMATED_TASK`
- **`status`** (`string`): The enrollment's status when it is first created. You can create enrollments in either `DRAFT` or `STEDI_ACTION_REQUIRED` status. The default status is `DRAFT` if not specified. When you're ready for Stedi to begin processing the enrollment, set the status to `STEDI_ACTION_REQUIRED`. Once an enrollment is set to `STEDI_ACTION_REQUIRED`, only Stedi can set or update its status.
  - Allowed values: `DRAFT`, `SUBMITTED`, `STEDI_ACTION_REQUIRED`
- **`transactions`** (`any`) (required): Specifies which transaction types are included in the enrollment.
- **`transactions (variant 1).eligibilityCheck`** (`object`) (required): Represents the enrollment status for a specific transaction type.
- **`transactions (variant 1).eligibilityCheck.enroll`** (`boolean`) (required)
- **`transactions (variant 2).claimStatus`** (`object`) (required): Represents the enrollment status for a specific transaction type.
- **`transactions (variant 2).claimStatus.enroll`** (`boolean`) (required)
- **`transactions (variant 3).professionalClaimSubmission`** (`object`) (required): Represents the enrollment status for a specific transaction type.
- **`transactions (variant 3).professionalClaimSubmission.enroll`** (`boolean`) (required)
- **`transactions (variant 4).institutionalClaimSubmission`** (`object`) (required): Represents the enrollment status for a specific transaction type.
- **`transactions (variant 4).institutionalClaimSubmission.enroll`** (`boolean`) (required)
- **`transactions (variant 5).dentalClaimSubmission`** (`object`) (required): Represents the enrollment status for a specific transaction type.
- **`transactions (variant 5).dentalClaimSubmission.enroll`** (`boolean`) (required)
- **`transactions (variant 6).claimPayment`** (`object`) (required): Represents the enrollment status for a specific transaction type.
- **`transactions (variant 6).claimPayment.enroll`** (`boolean`) (required)
- **`transactions (variant 7).solicitedClaimAttachment`** (`object`) (required): Represents the enrollment status for a specific transaction type.
- **`transactions (variant 7).solicitedClaimAttachment.enroll`** (`boolean`) (required)
- **`transactions (variant 8).unsolicitedClaimAttachment`** (`object`) (required): Represents the enrollment status for a specific transaction type.
- **`transactions (variant 8).unsolicitedClaimAttachment.enroll`** (`boolean`) (required)
- **`userEmail`** (`string`) (required): The email address where Stedi should send updates about the enrollment. We'll use it to notify you when there are next steps and send updates on the enrollment's status.
 - This email address can be different from the `primaryContact.email` where the payer sends communications about the enrollment.
 - For [automatic enrollment requests](https://www.stedi.com/docs/healthcare/create-manage-transaction-enrollments#automatic-enrollment-requests), Stedi sets this to the oldest account member with the Admin role.

**Example:**

```json
{
  "aggregationPreference": {
    "taxId": "123456789"
  },
  "payer": {
    "idOrAlias": "87726"
  },
  "primaryContact": {
    "city": "A City",
    "email": "test@example.com",
    "firstName": "John",
    "lastName": "Doe",
    "phone": "5551234567",
    "state": "MD",
    "streetAddress1": "123 Some Str.",
    "zipCode": "20814"
  },
  "provider": {
    "id": "db6665c5-7b97-4af9-8c68-a00a336c2998"
  },
  "requestedEffectiveDate": "20240301",
  "status": "STEDI_ACTION_REQUIRED",
  "transactions": {
    "claimPayment": {
      "enroll": true
    }
  },
  "userEmail": "test@example.com"
}
```

### Responses

#### 200

CreateEnrollment 200 response

**Schema:** `CreateEnrollmentResponseContent`

**Properties:**

- **`aggregationPreference`** (`any`): Preference for how the payer should group 835 Electronic Remittance Advice (ERA) transactions. Only set this property for 835 ERA enrollments.
  - If you include this property for a non-ERA enrollment, Stedi rejects the enrollment request with an HTTP `400` error.
  - If the payer doesn't support the requested aggregation type, Stedi rejects the enrollment request with an HTTP `400` error.
  - If not set, Stedi automatically selects a default based on the payer's supported aggregation types and the available identifiers for the provider.
  - Stedi will attempt to enroll with this preference, but it's not guaranteed. Each payer has its own restrictions and behaviors.
- **`aggregationPreference (variant 1).taxId`** (`string`) (required): The Taxpayer Identification Number (TIN) the payer should use for aggregation.
- **`aggregationPreference (variant 2).npi`** (`string`) (required): The National Provider Identifier (NPI) the payer should use for aggregation.
- **`createdAt`** (`string`) (required): The date and time when the enrollment was created within Stedi.
- **`documents`** (`array of EnrollmentDocument objects`): Documents associated with this enrollment, excluding deleted documents.
- **`documents[].contentType`** (`string`): The content type of the document.
- **`documents[].createdAt`** (`string`) (required): The date and time when the document was created.
- **`documents[].enrollmentId`** (`string`) (required): The enrollment ID this document is associated with.
- **`documents[].id`** (`string`) (required): The unique identifier for the document.
- **`documents[].name`** (`string`) (required): The name of the document.
- **`documents[].size`** (`number`): The size of the document in bytes.
- **`documents[].status`** (`string`) (required): Indicates whether the document file has been successfully uploaded to Stedi.
  - Allowed values: `PENDING`, `UPLOADED`, `FAILED`, `DELETED`
- **`documents[].taskId`** (`string`): The task ID associated with this document, if it was created or processed as part of a task.
- **`documents[].updatedAt`** (`string`) (required): The date and time when the document was last updated.
- **`history`** (`array of EnrollmentHistoryEntry objects`): The history of updates to this enrollment, such as status changes. This property is experimental and may change in the future.
- **`history[].changedAt`** (`string`) (required): The date and time when this change occurred.
- **`history[].changedBy`** (`string`) (required): The source or system that triggered this change.
- **`history[].newStatus`** (`string`) (required): The status of the enrollment. You can submit enrollments with either `DRAFT` or `STEDI_ACTION_REQUIRED` status - the default is `DRAFT` if not included. Set this to `STEDI_ACTION_REQUIRED` when you're ready for Stedi to begin processing the enrollment. Once an enrollment is `STEDI_ACTION_REQUIRED`, only Stedi can set or update its status.
  - Allowed values: `DRAFT`, `SUBMITTED`, `PROVISIONING`, `LIVE`, `REJECTED`, `CANCELED`, `STEDI_ACTION_REQUIRED`, `PROVIDER_ACTION_REQUIRED`
- **`history[].previousStatus`** (`string`): The status of the enrollment. You can submit enrollments with either `DRAFT` or `STEDI_ACTION_REQUIRED` status - the default is `DRAFT` if not included. Set this to `STEDI_ACTION_REQUIRED` when you're ready for Stedi to begin processing the enrollment. Once an enrollment is `STEDI_ACTION_REQUIRED`, only Stedi can set or update its status.
  - Allowed values: `DRAFT`, `SUBMITTED`, `PROVISIONING`, `LIVE`, `REJECTED`, `CANCELED`, `STEDI_ACTION_REQUIRED`, `PROVIDER_ACTION_REQUIRED`
- **`history[].type`** (`string`) (required): The type of change recorded in the enrollment history.
  - Allowed values: `STATUS_CHANGE`
- **`id`** (`string`) (required): The Stedi-assigned identifier for the enrollment request.
- **`lastEraReceivedAt`** (`string`): The timestamp of the most recent 835 ERA (Electronic Remittance Advice) Stedi received for this enrollment, based on the enrollment's payer ID, provider NPI, and provider tax ID. Stedi automatically updates this property for each new ERA.
  - This property is only returned for ERA enrollments in `LIVE` status with at least one matching ERA from the payer.
  - If this timestamp doesn't match your expected timeline for ERA processing, there may be an upstream issue. Contact Stedi support for assistance.
- **`payer`** (`object`) (required): Output structure containing payer information in enrollment responses.
- **`payer.name`** (`string`): The payer's name, such as `Cigna` or `UnitedHealthcare`.
- **`payer.stediPayerId`** (`string`) (required): The unique Stedi assigned identifier for the payer.
- **`payer.submittedPayerIdOrAlias`** (`string`): The payer ID or alias used when creating the enrollment request. For example, `62308` and `CIGNA` are both supported for Cigna. You can find a list of all supported payer IDs and aliases in the [Payer Network](https://www.stedi.com/healthcare/network).
- **`primaryContact`** (`object`) (required): The contact information for the provider. These contacts appear as prepopulated options for contact information when creating enrollment requests for this provider in the Stedi portal. They aren't automatically added to enrollment requests.

These contacts should specify where payers should send communications about the enrollment, if needed.
  - Either `organizationName` _or_ `firstName` and `lastName` are required.
  - The name and address should match exactly what the payer has on file for the provider. Some payers reject enrollment requests with addresses that don't match their records.
  - If you're submitting enrollment requests on a provider's behalf, you may want to set the phone number and email to your own contact details. Do this when you want the payer to contact you about the enrollment status instead of the provider directly.
  - These contacts are for convenience only. You can specify different contacts on enrollment requests as needed.
- **`primaryContact.city`** (`string`) (required): The contact's city. This should match exactly what the payer has on file for the provider.
- **`primaryContact.email`** (`string`) (required): The contact's email address. Set this to where you want the payer to send communications regarding the enrollment. This can be different from the provider's email if needed.
- **`primaryContact.firstName`** (`string`): The contact's first name. This should match exactly what the payer has on file for the provider.
- **`primaryContact.lastName`** (`string`): The contact's last name. This should match exactly what the payer has on file for the provider.
- **`primaryContact.organizationName`** (`string`): The contact's business name. This should match exactly what the payer has on file for the provider.
- **`primaryContact.phone`** (`string`) (required): The contact's phone number. Set this to where you want the payer to direct communications regarding the enrollment. This can be different from the provider's phone number if needed.
- **`primaryContact.state`** (`string`) (required): United States state and territory codes using standard two-letter abbreviations.
  - Allowed values: `AA`, `AE`, `AK`, `AL`, `AP`, `AR`, `AS`, `AZ`, `CA`, `CO`, `CT`, `DC`, `DE`, `FL`, `FM`, `GA`, `GU`, `HI`, `IA`, `ID`, `IL`, `IN`, `KS`, `KY`, `LA`, `MA`, `MD`, `ME`, `MH`, `MI`, `MN`, `MO`, `MP`, `MS`, `MT`, `NC`, `ND`, `NE`, `NH`, `NJ`, `NM`, `NV`, `NY`, `OH`, `OK`, `OR`, `PA`, `PR`, `PW`, `RI`, `SC`, `SD`, `TN`, `TX`, `UT`, `VT`, `VA`, `VI`, `WA`, `WV`, `WI`, `WY`
- **`primaryContact.streetAddress1`** (`string`) (required): The contact's street address, including the street number, name, and any suite or apartment number. This should match exactly what the payer has on file for the provider.
- **`primaryContact.streetAddress2`** (`string`): The contact's street address continued. This should match exactly what the payer has on file for the provider.
- **`primaryContact.zipCode`** (`string`) (required): The contact's five-digit ZIP code. This should match exactly what the payer has on file for the provider.
- **`provider`** (`object`) (required): Complete provider information including both read-only and mutable fields.
- **`provider.id`** (`string`) (required): The Stedi-assigned identifier for the provider. The [Create Provider](https://www.stedi.com/docs/api-reference/healthcare/post-enrollment-create-provider) endpoint returns this as the `id` property.
- **`provider.name`** (`string`) (required): The provider's name, such as `Example Dental Associates, LLC`.
- **`provider.npi`** (`string`) (required): The provider's National Provider Identifier (NPI). This is a 10-digit number assigned by the Centers for Medicare & Medicaid Services (CMS) to healthcare providers in the United States. It is used to identify providers in healthcare transactions.
- **`provider.taxId`** (`string`) (required): The provider's tax identification number (SSN or EIN). This is used to identify the provider for tax and administrative purposes.
- **`provider.taxIdType`** (`string`) (required): The type of tax identification number. This indicates whether the tax ID is a Social Security Number (SSN) or Employer Identification Number (EIN).
- **`providerTransactionAccessNumber`** (`string`): This property is required for payers that require a Provider Transaction Access Number (PTAN).

The PTAN is a Medicare-issued number given to providers upon enrollment with Medicare. This number is usually six digits and is assigned based on the type of service and the location of the provider. Upon enrollment, Medicare Administrating Contracting (MAC) providers should receive their assigned PTAN number in their approval letter.
- **`reason`** (`string`): Reasons why the enrollment request is still in `PROVISIONING` status, may take additional time to process, or was rejected by the payer. Only Stedi can set or update this property.
- **`requestedEffectiveDate`** (`string`): The requested effective date for the enrollment in YYYYMMDD format. This is the date the submitter would like the enrollment to take effect with the payer. If not provided during submission, Stedi defaults to the enrollment's submission date.

Not all payers support requested effective dates. Stedi can't guarantee that the enrollment will be effective with the payer on this exact date.
- **`source`** (`string`): The source of the enrollment.
  - Allowed values: `API`, `UI`, `IMPORT`, `AUTO_ENROLLMENT`, `AUTOMATED_TASK`
- **`status`** (`string`): The status of the enrollment. You can submit enrollments with either `DRAFT` or `STEDI_ACTION_REQUIRED` status - the default is `DRAFT` if not included. Set this to `STEDI_ACTION_REQUIRED` when you're ready for Stedi to begin processing the enrollment. Once an enrollment is `STEDI_ACTION_REQUIRED`, only Stedi can set or update its status.
  - Allowed values: `DRAFT`, `SUBMITTED`, `PROVISIONING`, `LIVE`, `REJECTED`, `CANCELED`, `STEDI_ACTION_REQUIRED`, `PROVIDER_ACTION_REQUIRED`
- **`statusLastUpdatedAt`** (`string`) (required): The date and time when the enrollment status was last updated. This timestamp is used to track enrollment processing durations and enables filtering to identify recently changed enrollments. It automatically updates whenever an enrollment's status changes but remains unchanged during other updates.
- **`submittedAt`** (`string`): The date and time when the enrollment was submitted. If the enrollment is in `DRAFT` status, `submittedAt` is not present. When the enrollment transitions from draft to `STEDI_ACTION_REQUIRED`, `submittedAt` is updated to the submission time. If the enrollment was created and submitted immediately, the `submittedAt` time will be equal or close to the `createdAt` time.
- **`tasks`** (`array of Task objects`): Tasks associated with this enrollment representing work that needs to be completed. Each task has a responsible party and specific definition.
- **`tasks[].completedAt`** (`string`): The timestamp when the task was completed.
- **`tasks[].definition`** (`any`) (required): A discriminated union of task definitions. Supports multiple task types with future extensibility.
- **`tasks[].definition (variant 1).manualTask`** (`object`) (required): A task assigned to a responsible party that requires them to collect and submit a defined set of fields. The task is completed by supplying a `ManualTaskResponse` whose values satisfy the declared `fields`.
- **`tasks[].definition (variant 1).manualTask.fields`** (`array of ManualTaskField objects`) (required): Fields required to complete the task. Each entry defines the key, human-readable label, optional description, and type for values in the response. Can be empty for instruction-only tasks.
- **`tasks[].definition (variant 1).manualTask.fields[].description`** (`string`): Additional context explaining what to provide in the response. For example, details about what supporting documentation (such as the provider's W-9 form) is required.
- **`tasks[].definition (variant 1).manualTask.fields[].fieldType`** (`string`) (required): The accepted field types for a manual task.
  - Allowed values: `TEXT`, `DOCUMENT`
- **`tasks[].definition (variant 1).manualTask.fields[].key`** (`string`) (required): A unique identifier for this field within the task, such as `ENROLLMENT_FORM`.
- **`tasks[].definition (variant 1).manualTask.fields[].label`** (`string`) (required): Human-readable label for this field, such as `Provider NPI` or `Tax ID`.
- **`tasks[].definition (variant 1).manualTask.instructions`** (`string`) (required): Instructions for completing the task.
- **`tasks[].definition (variant 1).manualTask.links`** (`array of TaskLink objects`): Links to help complete the task. This can include payer portals, reference documentation, or document download links for Stedi-provided template PDFs.
- **`tasks[].definition (variant 1).manualTask.links[].label`** (`string`) (required): Descriptive label for the URL, such as `Provider Portal` or `W-9 Template`.
- **`tasks[].definition (variant 1).manualTask.links[].url`** (`string`) (required): The URL for the resource.
- **`tasks[].id`** (`string`) (required): The unique, Stedi-assigned identifier for the task.
- **`tasks[].isComplete`** (`boolean`) (required): Whether the task has been marked as complete through either the API or the Stedi portal.
- **`tasks[].rank`** (`number`) (required): The rank order of this task. Tasks with lower numbers must be completed first. For example, a task with rank `1` must be completed before a task with rank `2`.
- **`tasks[].responseData`** (`any`): A discriminated union of task response data. Contains structured data collected when completing specific task types.
- **`tasks[].responseData (variant 1).manualTask`** (`object`) (required): Values provided when updating or completing a manual task. Visit [Manage enrollment tasks](https://www.stedi.com/docs/healthcare/transaction-enrollment-tasks-documents#api) for details.
- **`tasks[].responseData (variant 1).manualTask.values`** (`array of ManualTaskResponseKeyValue objects`) (required): Values for fields in the task definition. Each value's `key` must have a corresponding field `key`. When updating a task without completing it, you can submit a subset of fields; the supplied values are merged into any previously saved values. Completing a task (`completed: true`) requires a value for every field.
- **`tasks[].responseData (variant 1).manualTask.values[].key`** (`string`) (required): Identifier that matches a field `key` in the task definition.
- **`tasks[].responseData (variant 1).manualTask.values[].value`** (`any`) (required): The value supplied for a `ManualTaskField`. The variant used must match the field's declared `FieldType`. Supply multiple entries with distinct keys to capture multiple documents or values.
- **`tasks[].responseData (variant 1).manualTask.values[].value (variant 1).text`** (`string`) (required): Free-form text when the `fieldType` is `TEXT`.
- **`tasks[].responseData (variant 1).manualTask.values[].value (variant 2).document`** (`object`) (required): A reference to a document uploaded to enrollment, supplied as the `document` variant of a `ManualTaskResponseValue`.
- **`tasks[].responseData (variant 1).manualTask.values[].value (variant 2).document.documentId`** (`string`) (required): The `documentId` returned for a file uploaded through the [Upload Enrollment Document](https://www.stedi.com/docs/healthcare/api-reference/post-enrollment-document-upload) endpoint.
- **`tasks[].responsibleParty`** (`string`) (required): The party responsible for completing a task.
  - Allowed values: `PROVIDER`, `STEDI`
- **`transactions`** (`any`) (required): Specifies which transaction types are included in the enrollment.
- **`transactions (variant 1).eligibilityCheck`** (`object`) (required): Represents the enrollment status for a specific transaction type.
- **`transactions (variant 1).eligibilityCheck.enroll`** (`boolean`) (required)
- **`transactions (variant 2).claimStatus`** (`object`) (required): Represents the enrollment status for a specific transaction type.
- **`transactions (variant 2).claimStatus.enroll`** (`boolean`) (required)
- **`transactions (variant 3).professionalClaimSubmission`** (`object`) (required): Represents the enrollment status for a specific transaction type.
- **`transactions (variant 3).professionalClaimSubmission.enroll`** (`boolean`) (required)
- **`transactions (variant 4).institutionalClaimSubmission`** (`object`) (required): Represents the enrollment status for a specific transaction type.
- **`transactions (variant 4).institutionalClaimSubmission.enroll`** (`boolean`) (required)
- **`transactions (variant 5).dentalClaimSubmission`** (`object`) (required): Represents the enrollment status for a specific transaction type.
- **`transactions (variant 5).dentalClaimSubmission.enroll`** (`boolean`) (required)
- **`transactions (variant 6).claimPayment`** (`object`) (required): Represents the enrollment status for a specific transaction type.
- **`transactions (variant 6).claimPayment.enroll`** (`boolean`) (required)
- **`transactions (variant 7).solicitedClaimAttachment`** (`object`) (required): Represents the enrollment status for a specific transaction type.
- **`transactions (variant 7).solicitedClaimAttachment.enroll`** (`boolean`) (required)
- **`transactions (variant 8).unsolicitedClaimAttachment`** (`object`) (required): Represents the enrollment status for a specific transaction type.
- **`transactions (variant 8).unsolicitedClaimAttachment.enroll`** (`boolean`) (required)
- **`updatedAt`** (`string`) (required): The date and time when the enrollment was updated.
- **`userEmail`** (`string`) (required): The email address where Stedi should send updates about the enrollment. We'll use it to notify you when there are next steps and send updates on the enrollment's status.
 - This email address can be different from the `primaryContact.email` where the payer sends communications about the enrollment.
 - For [automatic enrollment requests](https://www.stedi.com/docs/healthcare/create-manage-transaction-enrollments#automatic-enrollment-requests), Stedi sets this to the oldest account member with the Admin role.

**Example:**

```json
{
  "aggregationPreference": {
    "taxId": "123456789"
  },
  "createdAt": "2023-11-07T05:31:56Z",
  "history": [
    {
      "changedAt": "2023-11-07T05:31:56Z",
      "changedBy": "test@example.com",
      "newStatus": "DRAFT",
      "type": "STATUS_CHANGE"
    },
    {
      "changedAt": "2023-11-07T05:31:56Z",
      "changedBy": "test@example.com",
      "newStatus": "STEDI_ACTION_REQUIRED",
      "previousStatus": "DRAFT",
      "type": "STATUS_CHANGE"
    }
  ],
  "id": "db6675c5-7bg7-4af9-8c68-a54a336d2911",
  "payer": {
    "name": "UnitedHealthcare",
    "stediPayerId": "KMQTZ",
    "submittedPayerIdOrAlias": "87726"
  },
  "primaryContact": {
    "city": "A City",
    "email": "test@example.com",
    "firstName": "John",
    "lastName": "Doe",
    "phone": "5551234567",
    "state": "MD",
    "streetAddress1": "123 Some Str.",
    "zipCode": "20814"
  },
  "provider": {
    "id": "db6665c5-7b97-4af9-8c68-a00a336c2998",
    "name": "Test Medical Provider",
    "npi": "1234567890",
    "taxId": "123456789",
    "taxIdType": "EIN"
  },
  "requestedEffectiveDate": "20240301",
  "source": "API",
  "status": "STEDI_ACTION_REQUIRED",
  "statusLastUpdatedAt": "2023-11-07T05:31:56Z",
  "submittedAt": "2023-11-07T05:31:56Z",
  "transactions": {
    "claimPayment": {
      "enroll": true
    }
  },
  "updatedAt": "2023-11-07T05:31:56Z",
  "userEmail": "test@example.com"
}
```

#### 400

ValidationException 400 response

**Schema:** `ValidationExceptionResponseContent`

**Properties:**

- **`fieldList`** (`array of ValidationExceptionField objects`): A list of specific failures encountered while validating the input.
A member can appear in this list more than once if it failed to satisfy multiple constraints.
- **`fieldList[].message`** (`string`) (required): A detailed description of the validation failure.
- **`fieldList[].path`** (`string`) (required): A JSONPointer expression to the structure member whose value failed to satisfy the modeled constraints.
- **`message`** (`string`) (required): A summary of the validation failure.
#### 401

UnauthorizedException 401 response

**Schema:** `UnauthorizedExceptionResponseContent`

**Properties:**

- **`code`** (`string`): Error classification code
- **`message`** (`string`) (required): Human-readable error message
#### 403

AccessDeniedException 403 response

**Schema:** `AccessDeniedExceptionResponseContent`

**Properties:**

- **`code`** (`string`): Error classification code
- **`message`** (`string`) (required): Human-readable error message
#### 404

ResourceNotFoundException 404 response

**Schema:** `ResourceNotFoundExceptionResponseContent`

**Properties:**

- **`code`** (`string`): Error classification code
- **`message`** (`string`) (required): Human-readable error message
#### 429

QuotaExceededException 429 response

**Schema:** `QuotaExceededExceptionResponseContent`

**Properties:**

- **`code`** (`string`): Error classification code
- **`message`** (`string`) (required): Human-readable error message
#### 500

InternalFailureException 500 response

**Schema:** `InternalFailureExceptionResponseContent`

**Properties:**

- **`code`** (`string`): Error classification code
- **`message`** (`string`) (required): Human-readable error message
#### 503

ServiceUnavailableException 503 response

**Schema:** `ServiceUnavailableExceptionResponseContent`

**Properties:**

- **`code`** (`string`): Error classification code
- **`message`** (`string`) (required): Human-readable error message
#### 504

GatewayTimeoutException 504 response

**Schema:** `GatewayTimeoutExceptionResponseContent`

**Properties:**

- **`code`** (`string`): Error classification code
- **`message`** (`string`) (required): Human-readable error message


# Create Provider
Source: https://www.stedi.com/docs/healthcare/api-reference/post-enrollment-create-provider


This endpoint allows you to create a provider record with the details required for [transaction enrollment](/healthcare/transaction-enrollment).

1. Call this endpoint with the provider's details.
2. The endpoint returns the created provider record, including the provider `id`, which you'll need when creating enrollment requests.

You can now add the provider to one or more transaction enrollment requests.

You can review and manage all providers you create through this endpoint on the [Providers page](https://portal.stedi.com/app/healthcare/providers).

## Contact information [#contact-information]

You can add one or more `contacts` to a provider record. Contacts on the provider record are for convenience - they allow the Stedi portal to prepopulate contact information options when you create enrollment requests manually. However, they **aren't** automatically added to enrollment requests you submit through the portal or API, and you can submit different contact information in enrollment requests for the provider as needed.

When adding a contact, follow these best practices:

* The provider's name and address should match exactly what payers have on file. Some payers reject enrollment requests with addresses that don't match their records. Remember that you can add different contacts to enrollment requests for specific payers if needed.
* However, you may want to set the phone number or email to your own contact details. Do this when you want the payer to contact you about the enrollment instead of the provider directly.

## API Specification

Creates a new provider record. Providers must be created before they can be enrolled with payers.

**Endpoint:** `POST /providers`

**Base URL:** `https://enrollments.us.stedi.com/2024-09-01`

### Request Body

**Schema:** `CreateProviderRequestContent`

**Properties:**

- **`contacts`** (`array of ProviderContact objects`): The contact information for the provider. These contacts appear as prepopulated options for contact information when creating enrollment requests for this provider in the Stedi portal. They aren't automatically added to enrollment requests.

These contacts should specify where payers should send communications about the enrollment, if needed.
  - Either `organizationName` _or_ `firstName` and `lastName` are required.
  - The name and address should match exactly what the payer has on file for the provider. Some payers reject enrollment requests with addresses that don't match their records.
  - If you're submitting enrollment requests on a provider's behalf, you may want to set the phone number and email to your own contact details. Do this when you want the payer to contact you about the enrollment status instead of the provider directly.
  - These contacts are for convenience only. You can specify different contacts on enrollment requests as needed.
- **`contacts[].city`** (`string`) (required): The contact's city. This should match exactly what the payer has on file for the provider.
- **`contacts[].email`** (`string`) (required): The contact's email address. Set this to where you want the payer to send communications regarding the enrollment. This can be different from the provider's email if needed.
- **`contacts[].firstName`** (`string`): The contact's first name. This should match exactly what the payer has on file for the provider.
- **`contacts[].lastName`** (`string`): The contact's last name. This should match exactly what the payer has on file for the provider.
- **`contacts[].organizationName`** (`string`): The contact's business name. This should match exactly what the payer has on file for the provider.
- **`contacts[].phone`** (`string`) (required): The contact's phone number. Set this to where you want the payer to direct communications regarding the enrollment. This can be different from the provider's phone number if needed.
- **`contacts[].state`** (`string`) (required): United States state and territory codes using standard two-letter abbreviations.
  - Allowed values: `AA`, `AE`, `AK`, `AL`, `AP`, `AR`, `AS`, `AZ`, `CA`, `CO`, `CT`, `DC`, `DE`, `FL`, `FM`, `GA`, `GU`, `HI`, `IA`, `ID`, `IL`, `IN`, `KS`, `KY`, `LA`, `MA`, `MD`, `ME`, `MH`, `MI`, `MN`, `MO`, `MP`, `MS`, `MT`, `NC`, `ND`, `NE`, `NH`, `NJ`, `NM`, `NV`, `NY`, `OH`, `OK`, `OR`, `PA`, `PR`, `PW`, `RI`, `SC`, `SD`, `TN`, `TX`, `UT`, `VT`, `VA`, `VI`, `WA`, `WV`, `WI`, `WY`
- **`contacts[].streetAddress1`** (`string`) (required): The contact's street address, including the street number, name, and any suite or apartment number. This should match exactly what the payer has on file for the provider.
- **`contacts[].streetAddress2`** (`string`): The contact's street address continued. This should match exactly what the payer has on file for the provider.
- **`contacts[].zipCode`** (`string`) (required): The contact's five-digit ZIP code. This should match exactly what the payer has on file for the provider.
- **`name`** (`string`) (required): The provider's business name. This is typically the provider's practice name, such as `Dental Associates, LLC`, but it can also be the provider's first and last name.
- **`npi`** (`string`) (required): The provider's [National Provider Identifier (NPI)](https://npiregistry.cms.hhs.gov/search). This is a 10-digit number that is unique to the provider.

Each provider record must have a unique `npi` and `taxId` combination. For example, you can create two provider records with the same `npi` as long as they have different values for `taxId`.
- **`taxId`** (`string`) (required): The provider's tax ID, as specified by `taxIdType`. This identifier has to be provided without any separators, such as dashes or spaces. For example 111-22-3333 is invalid but `111223333` is valid.

Each provider record must have a unique `npi` and `taxId` combination. For example, you can create two provider records with the same `taxId` as long as they have different values for `npi`.
- **`taxIdType`** (`string`) (required): The type of tax identification number. Organizations (Type 2 NPIs) must use `EIN`, while individual providers (Type 1 NPIs) can use either `EIN` or `SSN`.
  - Allowed values: `EIN`, `SSN`

**Example:**

```json
{
  "contacts": [
    {
      "city": "Chevy Chase",
      "email": "bob@fortdental.center",
      "firstName": "Bob",
      "lastName": "Dentist",
      "phone": "5551232135",
      "state": "MD",
      "streetAddress1": "123 Some Str",
      "zipCode": "20814"
    },
    {
      "city": "Chevy Chase",
      "email": "tom@fortdental.center",
      "firstName": "Tom",
      "lastName": "Dentist",
      "phone": "5551232133",
      "state": "MD",
      "streetAddress1": "123 Some Str",
      "zipCode": "20814"
    }
  ],
  "name": "BDQ Dental Inc",
  "npi": "1999999992",
  "taxId": "555123456",
  "taxIdType": "EIN"
}
```

### Responses

#### 200

CreateProvider 200 response

**Schema:** `CreateProviderResponseContent`

**Properties:**

- **`contacts`** (`array of ProviderContact objects`): The contact information for the provider. These contacts appear as prepopulated options for contact information when creating enrollment requests for this provider in the Stedi portal. They aren't automatically added to enrollment requests.

These contacts should specify where payers should send communications about the enrollment, if needed.
- **`contacts[].city`** (`string`) (required): The contact's city. This should match exactly what the payer has on file for the provider.
- **`contacts[].email`** (`string`) (required): The contact's email address. Set this to where you want the payer to send communications regarding the enrollment. This can be different from the provider's email if needed.
- **`contacts[].firstName`** (`string`): The contact's first name. This should match exactly what the payer has on file for the provider.
- **`contacts[].lastName`** (`string`): The contact's last name. This should match exactly what the payer has on file for the provider.
- **`contacts[].organizationName`** (`string`): The contact's business name. This should match exactly what the payer has on file for the provider.
- **`contacts[].phone`** (`string`) (required): The contact's phone number. Set this to where you want the payer to direct communications regarding the enrollment. This can be different from the provider's phone number if needed.
- **`contacts[].state`** (`string`) (required): United States state and territory codes using standard two-letter abbreviations.
  - Allowed values: `AA`, `AE`, `AK`, `AL`, `AP`, `AR`, `AS`, `AZ`, `CA`, `CO`, `CT`, `DC`, `DE`, `FL`, `FM`, `GA`, `GU`, `HI`, `IA`, `ID`, `IL`, `IN`, `KS`, `KY`, `LA`, `MA`, `MD`, `ME`, `MH`, `MI`, `MN`, `MO`, `MP`, `MS`, `MT`, `NC`, `ND`, `NE`, `NH`, `NJ`, `NM`, `NV`, `NY`, `OH`, `OK`, `OR`, `PA`, `PR`, `PW`, `RI`, `SC`, `SD`, `TN`, `TX`, `UT`, `VT`, `VA`, `VI`, `WA`, `WV`, `WI`, `WY`
- **`contacts[].streetAddress1`** (`string`) (required): The contact's street address, including the street number, name, and any suite or apartment number. This should match exactly what the payer has on file for the provider.
- **`contacts[].streetAddress2`** (`string`): The contact's street address continued. This should match exactly what the payer has on file for the provider.
- **`contacts[].zipCode`** (`string`) (required): The contact's five-digit ZIP code. This should match exactly what the payer has on file for the provider.
- **`createdAt`** (`string`): The date and time Stedi created the provider record.
- **`id`** (`string`) (required): A unique identifier Stedi assigns to this provider.
- **`name`** (`string`) (required): The provider's business name. This is typically the provider's practice name, such as `Dental Associates, LLC`, but it can also be the provider's first and last name.
- **`npi`** (`string`) (required): The provider's [National Provider Identifier (NPI)](https://npiregistry.cms.hhs.gov/search). This is a 10-digit number that is unique to the provider.

Each provider record must have a unique `npi` and `taxId` combination. For example, you can create two provider records with the same `npi` as long as they have different values for `taxId`.
- **`taxId`** (`string`): The provider's tax ID, as specified by `taxIdType`. This identifier has to be provided without any separators, such as dashes or spaces. For example 111-22-3333 is invalid but `111223333` is valid.

Each provider record must have a unique `npi` and `taxId` combination. For example, you can create two provider records with the same `taxId` as long as they have different values for `npi`.
- **`taxIdType`** (`string`): The type of tax identification number. Organizations (Type 2 NPIs) must use `EIN`, while individual providers (Type 1 NPIs) can use either `EIN` or `SSN`.
  - Allowed values: `EIN`, `SSN`
- **`updatedAt`** (`string`): The date and time Stedi last updated the provider record.

**Example:**

```json
{
  "contacts": [
    {
      "city": "Chevy Chase",
      "email": "bob@fortdental.center",
      "firstName": "Bob",
      "lastName": "Dentist",
      "organizationName": "",
      "phone": "5551232135",
      "state": "MD",
      "streetAddress1": "123 Some Str",
      "zipCode": "20814"
    },
    {
      "city": "Chevy Chase",
      "email": "tom@fortdental.center",
      "firstName": "Tom",
      "lastName": "Dentist",
      "organizationName": "",
      "phone": "5551232133",
      "state": "MD",
      "streetAddress1": "123 Some Str",
      "zipCode": "20814"
    }
  ],
  "createdAt": "2024-11-18T17:39:52.406Z",
  "id": "10334e76-f073-4b5d-8984-81d8e5107857",
  "name": "BDQ Dental Inc",
  "npi": "1999999992",
  "taxId": "555123456",
  "taxIdType": "EIN",
  "updatedAt": "2024-11-18T17:39:52.406Z"
}
```

#### 400

ValidationException 400 response

**Schema:** `ValidationExceptionResponseContent`

**Properties:**

- **`fieldList`** (`array of ValidationExceptionField objects`): A list of specific failures encountered while validating the input.
A member can appear in this list more than once if it failed to satisfy multiple constraints.
- **`fieldList[].message`** (`string`) (required): A detailed description of the validation failure.
- **`fieldList[].path`** (`string`) (required): A JSONPointer expression to the structure member whose value failed to satisfy the modeled constraints.
- **`message`** (`string`) (required): A summary of the validation failure.
#### 401

UnauthorizedException 401 response

**Schema:** `UnauthorizedExceptionResponseContent`

**Properties:**

- **`code`** (`string`): Error classification code
- **`message`** (`string`) (required): Human-readable error message
#### 403

AccessDeniedException 403 response

**Schema:** `AccessDeniedExceptionResponseContent`

**Properties:**

- **`code`** (`string`): Error classification code
- **`message`** (`string`) (required): Human-readable error message
#### 404

ResourceNotFoundException 404 response

**Schema:** `ResourceNotFoundExceptionResponseContent`

**Properties:**

- **`code`** (`string`): Error classification code
- **`message`** (`string`) (required): Human-readable error message
#### 429

QuotaExceededException 429 response

**Schema:** `QuotaExceededExceptionResponseContent`

**Properties:**

- **`code`** (`string`): Error classification code
- **`message`** (`string`) (required): Human-readable error message
#### 500

InternalFailureException 500 response

**Schema:** `InternalFailureExceptionResponseContent`

**Properties:**

- **`code`** (`string`): Error classification code
- **`message`** (`string`) (required): Human-readable error message
#### 503

ServiceUnavailableException 503 response

**Schema:** `ServiceUnavailableExceptionResponseContent`

**Properties:**

- **`code`** (`string`): Error classification code
- **`message`** (`string`) (required): Human-readable error message
#### 504

GatewayTimeoutException 504 response

**Schema:** `GatewayTimeoutExceptionResponseContent`

**Properties:**

- **`code`** (`string`): Error classification code
- **`message`** (`string`) (required): Human-readable error message


# Upload Enrollment Document
Source: https://www.stedi.com/docs/healthcare/api-reference/post-enrollment-document-upload


This endpoint returns a pre-signed URL to upload a PDF document to the specified [transaction enrollment](/healthcare/transaction-enrollment). You can only upload PDF documents required to complete a specific task on the enrollment.

1. Call this endpoint with the task ID for the task that requires the document upload and the enrollment ID for the associated transaction enrollment request. These IDs are returned in the responses for the [Retrieve Enrollment](/healthcare/api-reference/get-enrollment) and [List Enrollments](/healthcare/api-reference/get-enrollment-list-enrollments) endpoints.
2. The endpoint returns a pre-signed URL that you can use to upload the PDF document to the enrollment record. The URL expires in 24 hours.
3. Use a `PUT` request to upload the attachment file to the pre-signed URL (`uploadURL`) in the response. The request must include a `Content-Type` header set to `application/pdf`.

   ```bash
   curl --request PUT \
   --url "<uploadUrl>" \
   --header "Content-Type: application/pdf" \
   --upload-file /path/to/file.pdf
   ```

Stedi displays uploaded documents on the enrollment's details page in the Stedi portal.

## Poll for document status [#poll-for-document-status]

When you successfully upload the PDF to the pre-signed URL, the document record's status changes from `PENDING` to `UPLOADED`. You must wait for the document's status to change to `UPLOADED` before marking the associated task as complete. This typically takes less than 10 seconds.

You can poll the [Retrieve Enrollment](/healthcare/api-reference/get-enrollment) endpoint to determine when the status has been updated. The following example shows how to poll for a document's status.

<Accordion title="TypeScript example: Poll for document status" id="typescript-example-poll-for-document-status">
  ```typescript
  const STEDI_ENROLLMENTS_API = "https://enrollments.us.stedi.com";

  async function waitForDocumentUploadedStatus(
    enrollmentId: string,
    documentId: string,
    attempts = 5,
    intervalMs = 500,
  ): Promise<boolean> {
    const resource = new URL(
      `/2024-09-01/enrollments/${enrollmentId}`,
      STEDI_ENROLLMENTS_API,
    );

    for (let attempt = 0; attempt < attempts; attempt++) {
      const response = await fetch(resource, {
        headers: {
          authorization: "<stedi-api-key>",
        },
      });

      if (!response.ok) {
        throw new Error(`HTTP error, status: ${response.status}`);
      }

      const enrollment = await response.json();

      const documentUploaded = enrollment.documents?.some(
        (document) =>
          document.id === documentId && document.status === "UPLOADED",
      );

      if (documentUploaded) {
        return true;
      }

      if (attempt < attempts - 1) {
        await new Promise((resolve) => setTimeout(resolve, intervalMs));
      }
    }

    return false;
  }

  // Usage
  await waitForDocumentUploadedStatus(enrollmentId, documentId);
  ```
</Accordion>

## Pending documents [#pending-documents]

After 24 hours, Stedi automatically deletes any document records that are still in the `PENDING` status. You'll need to call this endpoint again to get a new pre-signed URL for uploading the document.

## API Specification

Returns a pre-signed URL to upload a PDF document for the specified transaction enrollment.

**Endpoint:** `POST /enrollments/{enrollmentId}/documents`

**Base URL:** `https://enrollments.us.stedi.com/2024-09-01`

### Parameters

- **`enrollmentId`** (path) (required): The enrollment ID for the transaction enrollment where you want to upload the PDF document. The enrollment ID is returned in the responses for the [Create Enrollment](/healthcare/api-reference/post-enrollment-create-enrollment) and [List Enrollments](/healthcare/api-reference/get-enrollment-list-enrollments) endpoints. It's also listed at the top of the [enrollment's details page](https://portal.stedi.com/app/healthcare/enrollments) in the Stedi portal.
  - Type: `string`

### Request Body

**Schema:** `CreateEnrollmentDocumentUploadRequestContent`

**Properties:**

- **`name`** (`string`) (required): The file name of the PDF document you want to upload. The name should include the file extension, such as `provider-license.pdf`. This name will be displayed in the Stedi portal.
- **`taskId`** (`string`) (required): The ID for the task associated with this document upload.

**Example:**

```json
{
  "name": "provider-license.pdf",
  "taskId": "11111111-1111-4111-8111-111111111111"
}
```

### Responses

#### 200

CreateEnrollmentDocumentUpload 200 response

**Schema:** `CreateEnrollmentDocumentUploadResponseContent`

**Properties:**

- **`documentId`** (`string`) (required): A unique identifier for the document record within Stedi.
- **`enrollmentId`** (`string`) (required): The enrollment ID for the transaction enrollment request associated with the PDF document.
- **`uploadUrl`** (`string`) (required): The pre-signed URL you can use to upload the PDF document. This URL expires after 24 hours.

**Example:**

```json
{
  "documentId": "doc-123e4567-e89b-12d3-a456-426614174000",
  "enrollmentId": "db6675c5-7bg7-4af9-8c68-a54a336d2911",
  "uploadUrl": "https://s3.amazonaws.com/enrollment-documents/db6675c5-7bg7-4af9-8c68-a54a336d2911/provider-license.pdf?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=..."
}
```

#### 400

ValidationException 400 response

**Schema:** `ValidationExceptionResponseContent`

**Properties:**

- **`fieldList`** (`array of ValidationExceptionField objects`): A list of specific failures encountered while validating the input.
A member can appear in this list more than once if it failed to satisfy multiple constraints.
- **`fieldList[].message`** (`string`) (required): A detailed description of the validation failure.
- **`fieldList[].path`** (`string`) (required): A JSONPointer expression to the structure member whose value failed to satisfy the modeled constraints.
- **`message`** (`string`) (required): A summary of the validation failure.
#### 401

UnauthorizedException 401 response

**Schema:** `UnauthorizedExceptionResponseContent`

**Properties:**

- **`code`** (`string`): Error classification code
- **`message`** (`string`) (required): Human-readable error message
#### 403

AccessDeniedException 403 response

**Schema:** `AccessDeniedExceptionResponseContent`

**Properties:**

- **`code`** (`string`): Error classification code
- **`message`** (`string`) (required): Human-readable error message
#### 404

ResourceNotFoundException 404 response

**Schema:** `ResourceNotFoundExceptionResponseContent`

**Properties:**

- **`code`** (`string`): Error classification code
- **`message`** (`string`) (required): Human-readable error message
#### 429

QuotaExceededException 429 response

**Schema:** `QuotaExceededExceptionResponseContent`

**Properties:**

- **`code`** (`string`): Error classification code
- **`message`** (`string`) (required): Human-readable error message
#### 500

InternalFailureException 500 response

**Schema:** `InternalFailureExceptionResponseContent`

**Properties:**

- **`code`** (`string`): Error classification code
- **`message`** (`string`) (required): Human-readable error message
#### 503

ServiceUnavailableException 503 response

**Schema:** `ServiceUnavailableExceptionResponseContent`

**Properties:**

- **`code`** (`string`): Error classification code
- **`message`** (`string`) (required): Human-readable error message
#### 504

GatewayTimeoutException 504 response

**Schema:** `GatewayTimeoutExceptionResponseContent`

**Properties:**

- **`code`** (`string`): Error classification code
- **`message`** (`string`) (required): Human-readable error message


# Update Enrollment
Source: https://www.stedi.com/docs/healthcare/api-reference/post-enrollment-update-enrollment


This endpoint allows you to update [transaction enrollments](/healthcare/transaction-enrollment) that are still in `DRAFT` status. If you need to make changes to an enrollment that is already in `STEDI_ACTION_REQUIRED`, `PROVIDER_ACTION_REQUIRED`, `PROVISIONING`, `LIVE`, `REJECTED`, or `CANCELED` status, contact support.

Calling this endpoint completely overwrites the previous request record. You **must** provide all the information for the enrollment in the request, not just the properties you want to update.

## API Specification

Updates an existing enrollment request. Only enrollments in DRAFT status can be updated. Once an enrollment is submitted, it cannot be modified.

**Endpoint:** `POST /enrollments/{enrollmentId}`

**Base URL:** `https://enrollments.us.stedi.com/2024-09-01`

### Parameters

- **`enrollmentId`** (path) (required): The Stedi-assigned identifier for the enrollment.
  - Type: `string`

### Request Body

**Schema:** `UpdateEnrollmentRequestContent`

**Properties:**

- **`aggregationPreference`** (`any`): Preference for how the payer should group 835 Electronic Remittance Advice (ERA) transactions. Only set this property for 835 ERA enrollments.
  - If you include this property for a non-ERA enrollment, Stedi rejects the enrollment request with an HTTP `400` error.
  - If the payer doesn't support the requested aggregation type, Stedi rejects the enrollment request with an HTTP `400` error.
  - If not set, Stedi automatically selects a default based on the payer's supported aggregation types and the available identifiers for the provider.
  - Stedi will attempt to enroll with this preference, but it's not guaranteed. Each payer has its own restrictions and behaviors.
- **`aggregationPreference (variant 1).taxId`** (`string`) (required): The Taxpayer Identification Number (TIN) the payer should use for aggregation.
- **`aggregationPreference (variant 2).npi`** (`string`) (required): The National Provider Identifier (NPI) the payer should use for aggregation.
- **`payer`** (`object`) (required): The payer you want to enroll with.
- **`payer.id`** (`string`): Use `idOrAlias` instead. This property will be removed in the future.
- **`payer.idOrAlias`** (`string`): The payer ID. Visit the [Payer Network](https://www.stedi.com/healthcare/network) for a complete list.
 - You can use the primary payer ID, the Stedi payer ID, or any listed aliases for the payer.
 - You must include leading `0` characters - payer IDs are alphanumeric strings and must be treated as complete strings, not integers. For example, use `00540` for SISCO, not `540`.
- **`primaryContact`** (`object`) (required): The contact information for the provider. These contacts appear as prepopulated options for contact information when creating enrollment requests for this provider in the Stedi portal. They aren't automatically added to enrollment requests.

These contacts should specify where payers should send communications about the enrollment, if needed.
  - Either `organizationName` _or_ `firstName` and `lastName` are required.
  - The name and address should match exactly what the payer has on file for the provider. Some payers reject enrollment requests with addresses that don't match their records.
  - If you're submitting enrollment requests on a provider's behalf, you may want to set the phone number and email to your own contact details. Do this when you want the payer to contact you about the enrollment status instead of the provider directly.
  - These contacts are for convenience only. You can specify different contacts on enrollment requests as needed.
- **`primaryContact.city`** (`string`) (required): The contact's city. This should match exactly what the payer has on file for the provider.
- **`primaryContact.email`** (`string`) (required): The contact's email address. Set this to where you want the payer to send communications regarding the enrollment. This can be different from the provider's email if needed.
- **`primaryContact.firstName`** (`string`): The contact's first name. This should match exactly what the payer has on file for the provider.
- **`primaryContact.lastName`** (`string`): The contact's last name. This should match exactly what the payer has on file for the provider.
- **`primaryContact.organizationName`** (`string`): The contact's business name. This should match exactly what the payer has on file for the provider.
- **`primaryContact.phone`** (`string`) (required): The contact's phone number. Set this to where you want the payer to direct communications regarding the enrollment. This can be different from the provider's phone number if needed.
- **`primaryContact.state`** (`string`) (required): United States state and territory codes using standard two-letter abbreviations.
  - Allowed values: `AA`, `AE`, `AK`, `AL`, `AP`, `AR`, `AS`, `AZ`, `CA`, `CO`, `CT`, `DC`, `DE`, `FL`, `FM`, `GA`, `GU`, `HI`, `IA`, `ID`, `IL`, `IN`, `KS`, `KY`, `LA`, `MA`, `MD`, `ME`, `MH`, `MI`, `MN`, `MO`, `MP`, `MS`, `MT`, `NC`, `ND`, `NE`, `NH`, `NJ`, `NM`, `NV`, `NY`, `OH`, `OK`, `OR`, `PA`, `PR`, `PW`, `RI`, `SC`, `SD`, `TN`, `TX`, `UT`, `VT`, `VA`, `VI`, `WA`, `WV`, `WI`, `WY`
- **`primaryContact.streetAddress1`** (`string`) (required): The contact's street address, including the street number, name, and any suite or apartment number. This should match exactly what the payer has on file for the provider.
- **`primaryContact.streetAddress2`** (`string`): The contact's street address continued. This should match exactly what the payer has on file for the provider.
- **`primaryContact.zipCode`** (`string`) (required): The contact's five-digit ZIP code. This should match exactly what the payer has on file for the provider.
- **`provider`** (`object`) (required): The provider you want to enroll with the payer. This must be an existing provider record within Stedi.
- **`provider.id`** (`string`) (required): The Stedi-assigned identifier for the provider. The [Create Provider](https://www.stedi.com/docs/api-reference/healthcare/post-enrollment-create-provider) endpoint returns this as the `id` property.
- **`providerTransactionAccessNumber`** (`string`): This property is required for payers that require a Provider Transaction Access Number (PTAN).

The PTAN is a Medicare-issued number given to providers upon enrollment with Medicare. This number is usually six digits and is assigned based on the type of service and the location of the provider. Upon enrollment, Medicare Administrating Contracting (MAC) providers should receive their assigned PTAN number in their approval letter.
- **`reason`** (`string`): This shape is deprecated since 2025-10-07: Only Stedi can set or update this property, and it will be removed in a future release.
- **`requestedEffectiveDate`** (`string`): The requested effective date for the enrollment in YYYYMMDD format. This is the date you'd like the enrollment to take effect with the payer. For example, setting this to `20260601` for an 835 Electronic Remittance Advice (ERAs) enrollment means you want to start receiving ERAs through Stedi on that date.

Stedi processes enrollments accordingly, but can't guarantee that the enrollment will be effective on this exact date.
  - You can submit today's date or a future date up to 6 months from today.
  - If not set for draft enrollments, this property remains empty.
  - If not set for submitted enrollments, Stedi defaults to the enrollment's submission date.
  - If you include this property for a payer that doesn't support requested effective dates, Stedi rejects the request with an HTTP `400` error.
- **`source`** (`string`): The source of the enrollment.
  - Allowed values: `API`, `UI`, `IMPORT`, `AUTO_ENROLLMENT`, `AUTOMATED_TASK`
- **`status`** (`string`): The status of the enrollment. You can submit enrollments with either `DRAFT` or `STEDI_ACTION_REQUIRED` status - the default is `DRAFT` if not included. Set this to `STEDI_ACTION_REQUIRED` when you're ready for Stedi to begin processing the enrollment. Once an enrollment is `STEDI_ACTION_REQUIRED`, only Stedi can set or update its status.
  - Allowed values: `DRAFT`, `SUBMITTED`, `PROVISIONING`, `LIVE`, `REJECTED`, `CANCELED`, `STEDI_ACTION_REQUIRED`, `PROVIDER_ACTION_REQUIRED`
- **`transactions`** (`any`) (required): Specifies which transaction types are included in the enrollment.
- **`transactions (variant 1).eligibilityCheck`** (`object`) (required): Represents the enrollment status for a specific transaction type.
- **`transactions (variant 1).eligibilityCheck.enroll`** (`boolean`) (required)
- **`transactions (variant 2).claimStatus`** (`object`) (required): Represents the enrollment status for a specific transaction type.
- **`transactions (variant 2).claimStatus.enroll`** (`boolean`) (required)
- **`transactions (variant 3).professionalClaimSubmission`** (`object`) (required): Represents the enrollment status for a specific transaction type.
- **`transactions (variant 3).professionalClaimSubmission.enroll`** (`boolean`) (required)
- **`transactions (variant 4).institutionalClaimSubmission`** (`object`) (required): Represents the enrollment status for a specific transaction type.
- **`transactions (variant 4).institutionalClaimSubmission.enroll`** (`boolean`) (required)
- **`transactions (variant 5).dentalClaimSubmission`** (`object`) (required): Represents the enrollment status for a specific transaction type.
- **`transactions (variant 5).dentalClaimSubmission.enroll`** (`boolean`) (required)
- **`transactions (variant 6).claimPayment`** (`object`) (required): Represents the enrollment status for a specific transaction type.
- **`transactions (variant 6).claimPayment.enroll`** (`boolean`) (required)
- **`transactions (variant 7).solicitedClaimAttachment`** (`object`) (required): Represents the enrollment status for a specific transaction type.
- **`transactions (variant 7).solicitedClaimAttachment.enroll`** (`boolean`) (required)
- **`transactions (variant 8).unsolicitedClaimAttachment`** (`object`) (required): Represents the enrollment status for a specific transaction type.
- **`transactions (variant 8).unsolicitedClaimAttachment.enroll`** (`boolean`) (required)
- **`userEmail`** (`string`) (required): The email address where Stedi should send updates about the enrollment. We'll use it to notify you when there are next steps and send updates on the enrollment's status.
 - This email address can be different from the `primaryContact.email` where the payer sends communications about the enrollment.
 - For [automatic enrollment requests](https://www.stedi.com/docs/healthcare/create-manage-transaction-enrollments#automatic-enrollment-requests), Stedi sets this to the oldest account member with the Admin role.

**Example:**

```json
{
  "aggregationPreference": {
    "taxId": "123456789"
  },
  "payer": {
    "idOrAlias": "87726"
  },
  "primaryContact": {
    "city": "A City",
    "email": "test@example.com",
    "firstName": "Updated First Name",
    "lastName": "Updated Last Name",
    "phone": "3331234567",
    "state": "MD",
    "streetAddress1": "123 Some Str.",
    "zipCode": "20814"
  },
  "provider": {
    "id": "db6665c5-7b97-4af9-8c68-a00a336c2998"
  },
  "requestedEffectiveDate": "20250301",
  "status": "STEDI_ACTION_REQUIRED",
  "transactions": {
    "claimPayment": {
      "enroll": true
    }
  },
  "userEmail": "test@example.com"
}
```

### Responses

#### 200

UpdateEnrollment 200 response

**Schema:** `UpdateEnrollmentResponseContent`

**Properties:**

- **`aggregationPreference`** (`any`): Preference for how the payer should group 835 Electronic Remittance Advice (ERA) transactions. Only set this property for 835 ERA enrollments.
  - If you include this property for a non-ERA enrollment, Stedi rejects the enrollment request with an HTTP `400` error.
  - If the payer doesn't support the requested aggregation type, Stedi rejects the enrollment request with an HTTP `400` error.
  - If not set, Stedi automatically selects a default based on the payer's supported aggregation types and the available identifiers for the provider.
  - Stedi will attempt to enroll with this preference, but it's not guaranteed. Each payer has its own restrictions and behaviors.
- **`aggregationPreference (variant 1).taxId`** (`string`) (required): The Taxpayer Identification Number (TIN) the payer should use for aggregation.
- **`aggregationPreference (variant 2).npi`** (`string`) (required): The National Provider Identifier (NPI) the payer should use for aggregation.
- **`createdAt`** (`string`) (required): The date and time when the enrollment was created within Stedi.
- **`documents`** (`array of EnrollmentDocument objects`): Documents associated with this enrollment, excluding deleted documents.
- **`documents[].contentType`** (`string`): The content type of the document.
- **`documents[].createdAt`** (`string`) (required): The date and time when the document was created.
- **`documents[].enrollmentId`** (`string`) (required): The enrollment ID this document is associated with.
- **`documents[].id`** (`string`) (required): The unique identifier for the document.
- **`documents[].name`** (`string`) (required): The name of the document.
- **`documents[].size`** (`number`): The size of the document in bytes.
- **`documents[].status`** (`string`) (required): Indicates whether the document file has been successfully uploaded to Stedi.
  - Allowed values: `PENDING`, `UPLOADED`, `FAILED`, `DELETED`
- **`documents[].taskId`** (`string`): The task ID associated with this document, if it was created or processed as part of a task.
- **`documents[].updatedAt`** (`string`) (required): The date and time when the document was last updated.
- **`history`** (`array of EnrollmentHistoryEntry objects`): The history of updates to this enrollment, such as status changes. This property is experimental and may change in the future.
- **`history[].changedAt`** (`string`) (required): The date and time when this change occurred.
- **`history[].changedBy`** (`string`) (required): The source or system that triggered this change.
- **`history[].newStatus`** (`string`) (required): The status of the enrollment. You can submit enrollments with either `DRAFT` or `STEDI_ACTION_REQUIRED` status - the default is `DRAFT` if not included. Set this to `STEDI_ACTION_REQUIRED` when you're ready for Stedi to begin processing the enrollment. Once an enrollment is `STEDI_ACTION_REQUIRED`, only Stedi can set or update its status.
  - Allowed values: `DRAFT`, `SUBMITTED`, `PROVISIONING`, `LIVE`, `REJECTED`, `CANCELED`, `STEDI_ACTION_REQUIRED`, `PROVIDER_ACTION_REQUIRED`
- **`history[].previousStatus`** (`string`): The status of the enrollment. You can submit enrollments with either `DRAFT` or `STEDI_ACTION_REQUIRED` status - the default is `DRAFT` if not included. Set this to `STEDI_ACTION_REQUIRED` when you're ready for Stedi to begin processing the enrollment. Once an enrollment is `STEDI_ACTION_REQUIRED`, only Stedi can set or update its status.
  - Allowed values: `DRAFT`, `SUBMITTED`, `PROVISIONING`, `LIVE`, `REJECTED`, `CANCELED`, `STEDI_ACTION_REQUIRED`, `PROVIDER_ACTION_REQUIRED`
- **`history[].type`** (`string`) (required): The type of change recorded in the enrollment history.
  - Allowed values: `STATUS_CHANGE`
- **`id`** (`string`) (required): The Stedi-assigned identifier for the enrollment request.
- **`lastEraReceivedAt`** (`string`): The timestamp of the most recent 835 ERA (Electronic Remittance Advice) Stedi received for this enrollment, based on the enrollment's payer ID, provider NPI, and provider tax ID. Stedi automatically updates this property for each new ERA.
  - This property is only returned for ERA enrollments in `LIVE` status with at least one matching ERA from the payer.
  - If this timestamp doesn't match your expected timeline for ERA processing, there may be an upstream issue. Contact Stedi support for assistance.
- **`payer`** (`object`) (required): Output structure containing payer information in enrollment responses.
- **`payer.name`** (`string`): The payer's name, such as `Cigna` or `UnitedHealthcare`.
- **`payer.stediPayerId`** (`string`) (required): The unique Stedi assigned identifier for the payer.
- **`payer.submittedPayerIdOrAlias`** (`string`): The payer ID or alias used when creating the enrollment request. For example, `62308` and `CIGNA` are both supported for Cigna. You can find a list of all supported payer IDs and aliases in the [Payer Network](https://www.stedi.com/healthcare/network).
- **`primaryContact`** (`object`) (required): The contact information for the provider. These contacts appear as prepopulated options for contact information when creating enrollment requests for this provider in the Stedi portal. They aren't automatically added to enrollment requests.

These contacts should specify where payers should send communications about the enrollment, if needed.
  - Either `organizationName` _or_ `firstName` and `lastName` are required.
  - The name and address should match exactly what the payer has on file for the provider. Some payers reject enrollment requests with addresses that don't match their records.
  - If you're submitting enrollment requests on a provider's behalf, you may want to set the phone number and email to your own contact details. Do this when you want the payer to contact you about the enrollment status instead of the provider directly.
  - These contacts are for convenience only. You can specify different contacts on enrollment requests as needed.
- **`primaryContact.city`** (`string`) (required): The contact's city. This should match exactly what the payer has on file for the provider.
- **`primaryContact.email`** (`string`) (required): The contact's email address. Set this to where you want the payer to send communications regarding the enrollment. This can be different from the provider's email if needed.
- **`primaryContact.firstName`** (`string`): The contact's first name. This should match exactly what the payer has on file for the provider.
- **`primaryContact.lastName`** (`string`): The contact's last name. This should match exactly what the payer has on file for the provider.
- **`primaryContact.organizationName`** (`string`): The contact's business name. This should match exactly what the payer has on file for the provider.
- **`primaryContact.phone`** (`string`) (required): The contact's phone number. Set this to where you want the payer to direct communications regarding the enrollment. This can be different from the provider's phone number if needed.
- **`primaryContact.state`** (`string`) (required): United States state and territory codes using standard two-letter abbreviations.
  - Allowed values: `AA`, `AE`, `AK`, `AL`, `AP`, `AR`, `AS`, `AZ`, `CA`, `CO`, `CT`, `DC`, `DE`, `FL`, `FM`, `GA`, `GU`, `HI`, `IA`, `ID`, `IL`, `IN`, `KS`, `KY`, `LA`, `MA`, `MD`, `ME`, `MH`, `MI`, `MN`, `MO`, `MP`, `MS`, `MT`, `NC`, `ND`, `NE`, `NH`, `NJ`, `NM`, `NV`, `NY`, `OH`, `OK`, `OR`, `PA`, `PR`, `PW`, `RI`, `SC`, `SD`, `TN`, `TX`, `UT`, `VT`, `VA`, `VI`, `WA`, `WV`, `WI`, `WY`
- **`primaryContact.streetAddress1`** (`string`) (required): The contact's street address, including the street number, name, and any suite or apartment number. This should match exactly what the payer has on file for the provider.
- **`primaryContact.streetAddress2`** (`string`): The contact's street address continued. This should match exactly what the payer has on file for the provider.
- **`primaryContact.zipCode`** (`string`) (required): The contact's five-digit ZIP code. This should match exactly what the payer has on file for the provider.
- **`provider`** (`object`) (required): Complete provider information including both read-only and mutable fields.
- **`provider.id`** (`string`) (required): The Stedi-assigned identifier for the provider. The [Create Provider](https://www.stedi.com/docs/api-reference/healthcare/post-enrollment-create-provider) endpoint returns this as the `id` property.
- **`provider.name`** (`string`) (required): The provider's name, such as `Example Dental Associates, LLC`.
- **`provider.npi`** (`string`) (required): The provider's National Provider Identifier (NPI). This is a 10-digit number assigned by the Centers for Medicare & Medicaid Services (CMS) to healthcare providers in the United States. It is used to identify providers in healthcare transactions.
- **`provider.taxId`** (`string`) (required): The provider's tax identification number (SSN or EIN). This is used to identify the provider for tax and administrative purposes.
- **`provider.taxIdType`** (`string`) (required): The type of tax identification number. This indicates whether the tax ID is a Social Security Number (SSN) or Employer Identification Number (EIN).
- **`providerTransactionAccessNumber`** (`string`): This property is required for payers that require a Provider Transaction Access Number (PTAN).

The PTAN is a Medicare-issued number given to providers upon enrollment with Medicare. This number is usually six digits and is assigned based on the type of service and the location of the provider. Upon enrollment, Medicare Administrating Contracting (MAC) providers should receive their assigned PTAN number in their approval letter.
- **`reason`** (`string`): Reasons why the enrollment request is still in `PROVISIONING` status, may take additional time to process, or was rejected by the payer. Only Stedi can set or update this property.
- **`requestedEffectiveDate`** (`string`): The requested effective date for the enrollment in YYYYMMDD format. This is the date the submitter would like the enrollment to take effect with the payer. If not provided during submission, Stedi defaults to the enrollment's submission date.

Not all payers support requested effective dates. Stedi can't guarantee that the enrollment will be effective with the payer on this exact date.
- **`source`** (`string`): The source of the enrollment.
  - Allowed values: `API`, `UI`, `IMPORT`, `AUTO_ENROLLMENT`, `AUTOMATED_TASK`
- **`status`** (`string`): The status of the enrollment. You can submit enrollments with either `DRAFT` or `STEDI_ACTION_REQUIRED` status - the default is `DRAFT` if not included. Set this to `STEDI_ACTION_REQUIRED` when you're ready for Stedi to begin processing the enrollment. Once an enrollment is `STEDI_ACTION_REQUIRED`, only Stedi can set or update its status.
  - Allowed values: `DRAFT`, `SUBMITTED`, `PROVISIONING`, `LIVE`, `REJECTED`, `CANCELED`, `STEDI_ACTION_REQUIRED`, `PROVIDER_ACTION_REQUIRED`
- **`statusLastUpdatedAt`** (`string`) (required): The date and time when the enrollment status was last updated. This timestamp is used to track enrollment processing durations and enables filtering to identify recently changed enrollments. It automatically updates whenever an enrollment's status changes but remains unchanged during other updates.
- **`submittedAt`** (`string`): The date and time when the enrollment was submitted. If the enrollment is in `DRAFT` status, `submittedAt` is not present. When the enrollment transitions from draft to `STEDI_ACTION_REQUIRED`, `submittedAt` is updated to the submission time. If the enrollment was created and submitted immediately, the `submittedAt` time will be equal or close to the `createdAt` time.
- **`tasks`** (`array of Task objects`): Tasks associated with this enrollment representing work that needs to be completed. Each task has a responsible party and specific definition.
- **`tasks[].completedAt`** (`string`): The timestamp when the task was completed.
- **`tasks[].definition`** (`any`) (required): A discriminated union of task definitions. Supports multiple task types with future extensibility.
- **`tasks[].definition (variant 1).manualTask`** (`object`) (required): A task assigned to a responsible party that requires them to collect and submit a defined set of fields. The task is completed by supplying a `ManualTaskResponse` whose values satisfy the declared `fields`.
- **`tasks[].definition (variant 1).manualTask.fields`** (`array of ManualTaskField objects`) (required): Fields required to complete the task. Each entry defines the key, human-readable label, optional description, and type for values in the response. Can be empty for instruction-only tasks.
- **`tasks[].definition (variant 1).manualTask.fields[].description`** (`string`): Additional context explaining what to provide in the response. For example, details about what supporting documentation (such as the provider's W-9 form) is required.
- **`tasks[].definition (variant 1).manualTask.fields[].fieldType`** (`string`) (required): The accepted field types for a manual task.
  - Allowed values: `TEXT`, `DOCUMENT`
- **`tasks[].definition (variant 1).manualTask.fields[].key`** (`string`) (required): A unique identifier for this field within the task, such as `ENROLLMENT_FORM`.
- **`tasks[].definition (variant 1).manualTask.fields[].label`** (`string`) (required): Human-readable label for this field, such as `Provider NPI` or `Tax ID`.
- **`tasks[].definition (variant 1).manualTask.instructions`** (`string`) (required): Instructions for completing the task.
- **`tasks[].definition (variant 1).manualTask.links`** (`array of TaskLink objects`): Links to help complete the task. This can include payer portals, reference documentation, or document download links for Stedi-provided template PDFs.
- **`tasks[].definition (variant 1).manualTask.links[].label`** (`string`) (required): Descriptive label for the URL, such as `Provider Portal` or `W-9 Template`.
- **`tasks[].definition (variant 1).manualTask.links[].url`** (`string`) (required): The URL for the resource.
- **`tasks[].id`** (`string`) (required): The unique, Stedi-assigned identifier for the task.
- **`tasks[].isComplete`** (`boolean`) (required): Whether the task has been marked as complete through either the API or the Stedi portal.
- **`tasks[].rank`** (`number`) (required): The rank order of this task. Tasks with lower numbers must be completed first. For example, a task with rank `1` must be completed before a task with rank `2`.
- **`tasks[].responseData`** (`any`): A discriminated union of task response data. Contains structured data collected when completing specific task types.
- **`tasks[].responseData (variant 1).manualTask`** (`object`) (required): Values provided when updating or completing a manual task. Visit [Manage enrollment tasks](https://www.stedi.com/docs/healthcare/transaction-enrollment-tasks-documents#api) for details.
- **`tasks[].responseData (variant 1).manualTask.values`** (`array of ManualTaskResponseKeyValue objects`) (required): Values for fields in the task definition. Each value's `key` must have a corresponding field `key`. When updating a task without completing it, you can submit a subset of fields; the supplied values are merged into any previously saved values. Completing a task (`completed: true`) requires a value for every field.
- **`tasks[].responseData (variant 1).manualTask.values[].key`** (`string`) (required): Identifier that matches a field `key` in the task definition.
- **`tasks[].responseData (variant 1).manualTask.values[].value`** (`any`) (required): The value supplied for a `ManualTaskField`. The variant used must match the field's declared `FieldType`. Supply multiple entries with distinct keys to capture multiple documents or values.
- **`tasks[].responseData (variant 1).manualTask.values[].value (variant 1).text`** (`string`) (required): Free-form text when the `fieldType` is `TEXT`.
- **`tasks[].responseData (variant 1).manualTask.values[].value (variant 2).document`** (`object`) (required): A reference to a document uploaded to enrollment, supplied as the `document` variant of a `ManualTaskResponseValue`.
- **`tasks[].responseData (variant 1).manualTask.values[].value (variant 2).document.documentId`** (`string`) (required): The `documentId` returned for a file uploaded through the [Upload Enrollment Document](https://www.stedi.com/docs/healthcare/api-reference/post-enrollment-document-upload) endpoint.
- **`tasks[].responsibleParty`** (`string`) (required): The party responsible for completing a task.
  - Allowed values: `PROVIDER`, `STEDI`
- **`transactions`** (`any`) (required): Specifies which transaction types are included in the enrollment.
- **`transactions (variant 1).eligibilityCheck`** (`object`) (required): Represents the enrollment status for a specific transaction type.
- **`transactions (variant 1).eligibilityCheck.enroll`** (`boolean`) (required)
- **`transactions (variant 2).claimStatus`** (`object`) (required): Represents the enrollment status for a specific transaction type.
- **`transactions (variant 2).claimStatus.enroll`** (`boolean`) (required)
- **`transactions (variant 3).professionalClaimSubmission`** (`object`) (required): Represents the enrollment status for a specific transaction type.
- **`transactions (variant 3).professionalClaimSubmission.enroll`** (`boolean`) (required)
- **`transactions (variant 4).institutionalClaimSubmission`** (`object`) (required): Represents the enrollment status for a specific transaction type.
- **`transactions (variant 4).institutionalClaimSubmission.enroll`** (`boolean`) (required)
- **`transactions (variant 5).dentalClaimSubmission`** (`object`) (required): Represents the enrollment status for a specific transaction type.
- **`transactions (variant 5).dentalClaimSubmission.enroll`** (`boolean`) (required)
- **`transactions (variant 6).claimPayment`** (`object`) (required): Represents the enrollment status for a specific transaction type.
- **`transactions (variant 6).claimPayment.enroll`** (`boolean`) (required)
- **`transactions (variant 7).solicitedClaimAttachment`** (`object`) (required): Represents the enrollment status for a specific transaction type.
- **`transactions (variant 7).solicitedClaimAttachment.enroll`** (`boolean`) (required)
- **`transactions (variant 8).unsolicitedClaimAttachment`** (`object`) (required): Represents the enrollment status for a specific transaction type.
- **`transactions (variant 8).unsolicitedClaimAttachment.enroll`** (`boolean`) (required)
- **`updatedAt`** (`string`) (required): The date and time when the enrollment was updated.
- **`userEmail`** (`string`) (required): The email address where Stedi should send updates about the enrollment. We'll use it to notify you when there are next steps and send updates on the enrollment's status.
 - This email address can be different from the `primaryContact.email` where the payer sends communications about the enrollment.
 - For [automatic enrollment requests](https://www.stedi.com/docs/healthcare/create-manage-transaction-enrollments#automatic-enrollment-requests), Stedi sets this to the oldest account member with the Admin role.

**Example:**

```json
{
  "aggregationPreference": {
    "taxId": "123456789"
  },
  "createdAt": "2024-11-07T05:31:56Z",
  "history": [
    {
      "changedAt": "2025-11-07T05:31:56Z",
      "changedBy": "test@example.com",
      "newStatus": "STEDI_ACTION_REQUIRED",
      "type": "STATUS_CHANGE"
    },
    {
      "changedAt": "2024-11-07T05:31:56Z",
      "changedBy": "test@example.com",
      "newStatus": "DRAFT",
      "type": "STATUS_CHANGE"
    }
  ],
  "id": "db6675c5-7bg7-4af9-8c68-a54a336d2911",
  "payer": {
    "name": "UnitedHealthcare",
    "stediPayerId": "KMQTZ",
    "submittedPayerIdOrAlias": "87726"
  },
  "primaryContact": {
    "city": "A City",
    "email": "test@example.com",
    "firstName": "Updated First Name",
    "lastName": "Updated Last Name",
    "phone": "3331234567",
    "state": "MD",
    "streetAddress1": "123 Some Str.",
    "zipCode": "20814"
  },
  "provider": {
    "id": "db6665c5-7b97-4af9-8c68-a00a336c2998",
    "name": "Test Medical Provider",
    "npi": "1234567890",
    "taxId": "123456789",
    "taxIdType": "EIN"
  },
  "requestedEffectiveDate": "20250301",
  "source": "API",
  "status": "STEDI_ACTION_REQUIRED",
  "statusLastUpdatedAt": "2024-11-07T05:31:56Z",
  "transactions": {
    "claimPayment": {
      "enroll": true
    }
  },
  "updatedAt": "2024-11-18T07:25:42Z",
  "userEmail": "test@example.com"
}
```

#### 400

ValidationException 400 response

**Schema:** `ValidationExceptionResponseContent`

**Properties:**

- **`fieldList`** (`array of ValidationExceptionField objects`): A list of specific failures encountered while validating the input.
A member can appear in this list more than once if it failed to satisfy multiple constraints.
- **`fieldList[].message`** (`string`) (required): A detailed description of the validation failure.
- **`fieldList[].path`** (`string`) (required): A JSONPointer expression to the structure member whose value failed to satisfy the modeled constraints.
- **`message`** (`string`) (required): A summary of the validation failure.
#### 401

UnauthorizedException 401 response

**Schema:** `UnauthorizedExceptionResponseContent`

**Properties:**

- **`code`** (`string`): Error classification code
- **`message`** (`string`) (required): Human-readable error message
#### 403

AccessDeniedException 403 response

**Schema:** `AccessDeniedExceptionResponseContent`

**Properties:**

- **`code`** (`string`): Error classification code
- **`message`** (`string`) (required): Human-readable error message
#### 404

ResourceNotFoundException 404 response

**Schema:** `ResourceNotFoundExceptionResponseContent`

**Properties:**

- **`code`** (`string`): Error classification code
- **`message`** (`string`) (required): Human-readable error message
#### 429

QuotaExceededException 429 response

**Schema:** `QuotaExceededExceptionResponseContent`

**Properties:**

- **`code`** (`string`): Error classification code
- **`message`** (`string`) (required): Human-readable error message
#### 500

InternalFailureException 500 response

**Schema:** `InternalFailureExceptionResponseContent`

**Properties:**

- **`code`** (`string`): Error classification code
- **`message`** (`string`) (required): Human-readable error message
#### 503

ServiceUnavailableException 503 response

**Schema:** `ServiceUnavailableExceptionResponseContent`

**Properties:**

- **`code`** (`string`): Error classification code
- **`message`** (`string`) (required): Human-readable error message
#### 504

GatewayTimeoutException 504 response

**Schema:** `GatewayTimeoutExceptionResponseContent`

**Properties:**

- **`code`** (`string`): Error classification code
- **`message`** (`string`) (required): Human-readable error message


# Update Provider
Source: https://www.stedi.com/docs/healthcare/api-reference/post-enrollment-update-provider


This endpoint allows you to update information for an existing provider. For example, you may want to add an additional contact.

Please note:

* Calling this endpoint completely overwrites the previous request record. You **must** provide all the information for the provider in the request, not just the properties you want to update.
* Updating a provider record doesn't affect associated enrollments that are in `SUBMITTED`, `PROVISIONING` or `LIVE` status. If you need to update the provider details for an enrollment with these statuses, contact support.

## API Specification

Updates an existing provider's information. Note that NPI and tax ID cannot be changed after creation.

**Endpoint:** `POST /providers/{providerId}`

**Base URL:** `https://enrollments.us.stedi.com/2024-09-01`

### Parameters

- **`providerId`** (path) (required): The Stedi-assigned identifier for the provider you want to update.
  - Type: `string`

### Request Body

**Schema:** `UpdateProviderRequestContent`

**Properties:**

- **`contacts`** (`array of ProviderContact objects`): The contact information for the provider. These contacts appear as prepopulated options for contact information when creating enrollment requests for this provider in the Stedi portal. They aren't automatically added to enrollment requests.

These contacts should specify where payers should send communications about the enrollment, if needed.
  - Either `organizationName` _or_ `firstName` and `lastName` are required.
  - The name and address should match exactly what the payer has on file for the provider. Some payers reject enrollment requests with addresses that don't match their records.
  - If you're submitting enrollment requests on a provider's behalf, you may want to set the phone number and email to your own contact details. Do this when you want the payer to contact you about the enrollment status instead of the provider directly.
  - These contacts are for convenience only. You can specify different contacts on enrollment requests as needed.
- **`contacts[].city`** (`string`) (required): The contact's city. This should match exactly what the payer has on file for the provider.
- **`contacts[].email`** (`string`) (required): The contact's email address. Set this to where you want the payer to send communications regarding the enrollment. This can be different from the provider's email if needed.
- **`contacts[].firstName`** (`string`): The contact's first name. This should match exactly what the payer has on file for the provider.
- **`contacts[].lastName`** (`string`): The contact's last name. This should match exactly what the payer has on file for the provider.
- **`contacts[].organizationName`** (`string`): The contact's business name. This should match exactly what the payer has on file for the provider.
- **`contacts[].phone`** (`string`) (required): The contact's phone number. Set this to where you want the payer to direct communications regarding the enrollment. This can be different from the provider's phone number if needed.
- **`contacts[].state`** (`string`) (required): United States state and territory codes using standard two-letter abbreviations.
  - Allowed values: `AA`, `AE`, `AK`, `AL`, `AP`, `AR`, `AS`, `AZ`, `CA`, `CO`, `CT`, `DC`, `DE`, `FL`, `FM`, `GA`, `GU`, `HI`, `IA`, `ID`, `IL`, `IN`, `KS`, `KY`, `LA`, `MA`, `MD`, `ME`, `MH`, `MI`, `MN`, `MO`, `MP`, `MS`, `MT`, `NC`, `ND`, `NE`, `NH`, `NJ`, `NM`, `NV`, `NY`, `OH`, `OK`, `OR`, `PA`, `PR`, `PW`, `RI`, `SC`, `SD`, `TN`, `TX`, `UT`, `VT`, `VA`, `VI`, `WA`, `WV`, `WI`, `WY`
- **`contacts[].streetAddress1`** (`string`) (required): The contact's street address, including the street number, name, and any suite or apartment number. This should match exactly what the payer has on file for the provider.
- **`contacts[].streetAddress2`** (`string`): The contact's street address continued. This should match exactly what the payer has on file for the provider.
- **`contacts[].zipCode`** (`string`) (required): The contact's five-digit ZIP code. This should match exactly what the payer has on file for the provider.
- **`name`** (`string`) (required): The provider's business name. This is typically the provider's practice name, such as `Dental Associates, LLC`, but it can also be the provider's first and last name.

**Example:**

```json
{
  "contacts": [
    {
      "city": "A City",
      "email": "bob@fortdental.center",
      "firstName": "Test",
      "lastName": "Tester",
      "phone": "5551234567",
      "state": "WA",
      "streetAddress1": "123 Some Str",
      "zipCode": "12345"
    }
  ],
  "name": "TEST Updated Dental Inc"
}
```

### Responses

#### 200

UpdateProvider 200 response

**Schema:** `UpdateProviderResponseContent`

**Properties:**

- **`contacts`** (`array of ProviderContact objects`): The contact information for the provider. These contacts appear as prepopulated options for contact information when creating enrollment requests for this provider in the Stedi portal. They aren't automatically added to enrollment requests.

These contacts should specify where payers should send communications about the enrollment, if needed.
- **`contacts[].city`** (`string`) (required): The contact's city. This should match exactly what the payer has on file for the provider.
- **`contacts[].email`** (`string`) (required): The contact's email address. Set this to where you want the payer to send communications regarding the enrollment. This can be different from the provider's email if needed.
- **`contacts[].firstName`** (`string`): The contact's first name. This should match exactly what the payer has on file for the provider.
- **`contacts[].lastName`** (`string`): The contact's last name. This should match exactly what the payer has on file for the provider.
- **`contacts[].organizationName`** (`string`): The contact's business name. This should match exactly what the payer has on file for the provider.
- **`contacts[].phone`** (`string`) (required): The contact's phone number. Set this to where you want the payer to direct communications regarding the enrollment. This can be different from the provider's phone number if needed.
- **`contacts[].state`** (`string`) (required): United States state and territory codes using standard two-letter abbreviations.
  - Allowed values: `AA`, `AE`, `AK`, `AL`, `AP`, `AR`, `AS`, `AZ`, `CA`, `CO`, `CT`, `DC`, `DE`, `FL`, `FM`, `GA`, `GU`, `HI`, `IA`, `ID`, `IL`, `IN`, `KS`, `KY`, `LA`, `MA`, `MD`, `ME`, `MH`, `MI`, `MN`, `MO`, `MP`, `MS`, `MT`, `NC`, `ND`, `NE`, `NH`, `NJ`, `NM`, `NV`, `NY`, `OH`, `OK`, `OR`, `PA`, `PR`, `PW`, `RI`, `SC`, `SD`, `TN`, `TX`, `UT`, `VT`, `VA`, `VI`, `WA`, `WV`, `WI`, `WY`
- **`contacts[].streetAddress1`** (`string`) (required): The contact's street address, including the street number, name, and any suite or apartment number. This should match exactly what the payer has on file for the provider.
- **`contacts[].streetAddress2`** (`string`): The contact's street address continued. This should match exactly what the payer has on file for the provider.
- **`contacts[].zipCode`** (`string`) (required): The contact's five-digit ZIP code. This should match exactly what the payer has on file for the provider.
- **`createdAt`** (`string`): The date and time Stedi created the provider record.
- **`id`** (`string`) (required): A unique identifier Stedi assigns to this provider.
- **`name`** (`string`) (required): The provider's business name. This is typically the provider's practice name, such as `Dental Associates, LLC`, but it can also be the provider's first and last name.
- **`npi`** (`string`) (required): The provider's [National Provider Identifier (NPI)](https://npiregistry.cms.hhs.gov/search). This is a 10-digit number that is unique to the provider.

Each provider record must have a unique `npi` and `taxId` combination. For example, you can create two provider records with the same `npi` as long as they have different values for `taxId`.
- **`taxId`** (`string`): The provider's tax ID, as specified by `taxIdType`. This identifier has to be provided without any separators, such as dashes or spaces. For example 111-22-3333 is invalid but `111223333` is valid.

Each provider record must have a unique `npi` and `taxId` combination. For example, you can create two provider records with the same `taxId` as long as they have different values for `npi`.
- **`taxIdType`** (`string`): The type of tax identification number. Organizations (Type 2 NPIs) must use `EIN`, while individual providers (Type 1 NPIs) can use either `EIN` or `SSN`.
  - Allowed values: `EIN`, `SSN`
- **`updatedAt`** (`string`): The date and time Stedi last updated the provider record.

**Example:**

```json
{
  "contacts": [
    {
      "city": "A City",
      "email": "bob@fortdental.center",
      "firstName": "Test",
      "lastName": "Tester",
      "organizationName": "",
      "phone": "5551234567",
      "state": "WA",
      "streetAddress1": "123 Some Str",
      "zipCode": "12345"
    }
  ],
  "createdAt": "2024-11-18T17:39:52.406Z",
  "id": "10334e76-f073-4b5d-8984-81d8e5107857",
  "name": "TEST Updated Dental Inc",
  "npi": "1999999999",
  "taxId": "111222333",
  "taxIdType": "EIN",
  "updatedAt": "2024-11-19T19:24:33.246Z"
}
```

#### 400

ValidationException 400 response

**Schema:** `ValidationExceptionResponseContent`

**Properties:**

- **`fieldList`** (`array of ValidationExceptionField objects`): A list of specific failures encountered while validating the input.
A member can appear in this list more than once if it failed to satisfy multiple constraints.
- **`fieldList[].message`** (`string`) (required): A detailed description of the validation failure.
- **`fieldList[].path`** (`string`) (required): A JSONPointer expression to the structure member whose value failed to satisfy the modeled constraints.
- **`message`** (`string`) (required): A summary of the validation failure.
#### 401

UnauthorizedException 401 response

**Schema:** `UnauthorizedExceptionResponseContent`

**Properties:**

- **`code`** (`string`): Error classification code
- **`message`** (`string`) (required): Human-readable error message
#### 403

AccessDeniedException 403 response

**Schema:** `AccessDeniedExceptionResponseContent`

**Properties:**

- **`code`** (`string`): Error classification code
- **`message`** (`string`) (required): Human-readable error message
#### 404

ResourceNotFoundException 404 response

**Schema:** `ResourceNotFoundExceptionResponseContent`

**Properties:**

- **`code`** (`string`): Error classification code
- **`message`** (`string`) (required): Human-readable error message
#### 429

QuotaExceededException 429 response

**Schema:** `QuotaExceededExceptionResponseContent`

**Properties:**

- **`code`** (`string`): Error classification code
- **`message`** (`string`) (required): Human-readable error message
#### 500

InternalFailureException 500 response

**Schema:** `InternalFailureExceptionResponseContent`

**Properties:**

- **`code`** (`string`): Error classification code
- **`message`** (`string`) (required): Human-readable error message
#### 503

ServiceUnavailableException 503 response

**Schema:** `ServiceUnavailableExceptionResponseContent`

**Properties:**

- **`code`** (`string`): Error classification code
- **`message`** (`string`) (required): Human-readable error message
#### 504

GatewayTimeoutException 504 response

**Schema:** `GatewayTimeoutExceptionResponseContent`

**Properties:**

- **`code`** (`string`): Error classification code
- **`message`** (`string`) (required): Human-readable error message


# Update Enrollment Task
Source: https://www.stedi.com/docs/healthcare/api-reference/post-enrollment-update-task


This endpoint updates the completion status and data of a task associated with a [transaction enrollment](/healthcare/transaction-enrollment).

Stedi adds tasks to an enrollment when specific actions are required to complete the enrollment process. For example, we might add a task to request additional information from the provider.

When the task's `responsibleParty` is set to `PROVIDER`, you can use this endpoint to mark the task as completed once the provider has taken the required action. You can also use this endpoint to mark tasks as incomplete if they were marked complete in error.

1. Call this endpoint with the `completed` property set to `true` to mark the task as completed. Optionally, provide additional details in the `responseData` object.

2. The endpoint returns the updated task record.

Stedi displays the task as completed in the Stedi portal and proceeds with the enrollment process.

## Task rank order [#task-rank-order]

You must complete tasks in the order defined by their `rank` property. For example, you can't complete a task with rank `2` if there's an uncompleted task on the enrollment record with rank `1`. If you try to complete a task out of order, the endpoint returns an HTTP `400` error.

## API Specification

Updates a task associated with an enrollment.

**Endpoint:** `POST /tasks/{taskId}`

**Base URL:** `https://enrollments.us.stedi.com/2024-09-01`

### Parameters

- **`taskId`** (path) (required): The Stedi-assigned identifier for the task to complete. You can get the task ID from either the [Retrieve Enrollment](/healthcare/api-reference/get-enrollment) or [List Enrollments](/healthcare/api-reference/get-enrollment-list-enrollments) endpoint.
  - Type: `string`

### Request Body

**Schema:** `UpdateTaskPostRequestContent`

**Properties:**

- **`completed`** (`boolean`): Indicates whether the task is completed. Set to `true` to mark the task as complete. If omitted, the default is `false`.
- **`responseData`** (`any`): A discriminated union of task response data. Contains structured data collected when completing specific task types.
- **`responseData (variant 1).manualTask`** (`object`) (required): Values provided when updating or completing a manual task. Visit [Manage enrollment tasks](https://www.stedi.com/docs/healthcare/transaction-enrollment-tasks-documents#api) for details.
- **`responseData (variant 1).manualTask.values`** (`array of ManualTaskResponseKeyValue objects`) (required): Values for fields in the task definition. Each value's `key` must have a corresponding field `key`. When updating a task without completing it, you can submit a subset of fields; the supplied values are merged into any previously saved values. Completing a task (`completed: true`) requires a value for every field.
- **`responseData (variant 1).manualTask.values[].key`** (`string`) (required): Identifier that matches a field `key` in the task definition.
- **`responseData (variant 1).manualTask.values[].value`** (`any`) (required): The value supplied for a `ManualTaskField`. The variant used must match the field's declared `FieldType`. Supply multiple entries with distinct keys to capture multiple documents or values.
- **`responseData (variant 1).manualTask.values[].value (variant 1).text`** (`string`) (required): Free-form text when the `fieldType` is `TEXT`.
- **`responseData (variant 1).manualTask.values[].value (variant 2).document`** (`object`) (required): A reference to a document uploaded to enrollment, supplied as the `document` variant of a `ManualTaskResponseValue`.
- **`responseData (variant 1).manualTask.values[].value (variant 2).document.documentId`** (`string`) (required): The `documentId` returned for a file uploaded through the [Upload Enrollment Document](https://www.stedi.com/docs/healthcare/api-reference/post-enrollment-document-upload) endpoint.

**Example:**

```json
{
  "completed": true,
  "responseData": {
    "manualTask": {
      "values": [
        {
          "key": "medicaidId",
          "value": {
            "text": "ABCD12"
          }
        }
      ]
    }
  }
}
```

### Responses

#### 200

UpdateTaskPost 200 response

**Schema:** `UpdateTaskPostResponseContent`

**Properties:**

- **`task`** (`object`) (required): A task representing work that needs to be completed.
- **`task.completedAt`** (`string`): The timestamp when the task was completed.
- **`task.definition`** (`any`) (required): A discriminated union of task definitions. Supports multiple task types with future extensibility.
- **`task.definition (variant 1).manualTask`** (`object`) (required): A task assigned to a responsible party that requires them to collect and submit a defined set of fields. The task is completed by supplying a `ManualTaskResponse` whose values satisfy the declared `fields`.
- **`task.definition (variant 1).manualTask.fields`** (`array of ManualTaskField objects`) (required): Fields required to complete the task. Each entry defines the key, human-readable label, optional description, and type for values in the response. Can be empty for instruction-only tasks.
- **`task.definition (variant 1).manualTask.fields[].description`** (`string`): Additional context explaining what to provide in the response. For example, details about what supporting documentation (such as the provider's W-9 form) is required.
- **`task.definition (variant 1).manualTask.fields[].fieldType`** (`string`) (required): The accepted field types for a manual task.
  - Allowed values: `TEXT`, `DOCUMENT`
- **`task.definition (variant 1).manualTask.fields[].key`** (`string`) (required): A unique identifier for this field within the task, such as `ENROLLMENT_FORM`.
- **`task.definition (variant 1).manualTask.fields[].label`** (`string`) (required): Human-readable label for this field, such as `Provider NPI` or `Tax ID`.
- **`task.definition (variant 1).manualTask.instructions`** (`string`) (required): Instructions for completing the task.
- **`task.definition (variant 1).manualTask.links`** (`array of TaskLink objects`): Links to help complete the task. This can include payer portals, reference documentation, or document download links for Stedi-provided template PDFs.
- **`task.definition (variant 1).manualTask.links[].label`** (`string`) (required): Descriptive label for the URL, such as `Provider Portal` or `W-9 Template`.
- **`task.definition (variant 1).manualTask.links[].url`** (`string`) (required): The URL for the resource.
- **`task.id`** (`string`) (required): The unique, Stedi-assigned identifier for the task.
- **`task.isComplete`** (`boolean`) (required): Whether the task has been marked as complete through either the API or the Stedi portal.
- **`task.rank`** (`number`) (required): The rank order of this task. Tasks with lower numbers must be completed first. For example, a task with rank `1` must be completed before a task with rank `2`.
- **`task.responseData`** (`any`): A discriminated union of task response data. Contains structured data collected when completing specific task types.
- **`task.responseData (variant 1).manualTask`** (`object`) (required): Values provided when updating or completing a manual task. Visit [Manage enrollment tasks](https://www.stedi.com/docs/healthcare/transaction-enrollment-tasks-documents#api) for details.
- **`task.responseData (variant 1).manualTask.values`** (`array of ManualTaskResponseKeyValue objects`) (required): Values for fields in the task definition. Each value's `key` must have a corresponding field `key`. When updating a task without completing it, you can submit a subset of fields; the supplied values are merged into any previously saved values. Completing a task (`completed: true`) requires a value for every field.
- **`task.responseData (variant 1).manualTask.values[].key`** (`string`) (required): Identifier that matches a field `key` in the task definition.
- **`task.responseData (variant 1).manualTask.values[].value`** (`any`) (required): The value supplied for a `ManualTaskField`. The variant used must match the field's declared `FieldType`. Supply multiple entries with distinct keys to capture multiple documents or values.
- **`task.responseData (variant 1).manualTask.values[].value (variant 1).text`** (`string`) (required): Free-form text when the `fieldType` is `TEXT`.
- **`task.responseData (variant 1).manualTask.values[].value (variant 2).document`** (`object`) (required): A reference to a document uploaded to enrollment, supplied as the `document` variant of a `ManualTaskResponseValue`.
- **`task.responseData (variant 1).manualTask.values[].value (variant 2).document.documentId`** (`string`) (required): The `documentId` returned for a file uploaded through the [Upload Enrollment Document](https://www.stedi.com/docs/healthcare/api-reference/post-enrollment-document-upload) endpoint.
- **`task.responsibleParty`** (`string`) (required): The party responsible for completing a task.
  - Allowed values: `PROVIDER`, `STEDI`

**Example:**

```json
{
  "task": {
    "completedAt": "2024-06-01T12:00:00Z",
    "definition": {
      "manualTask": {
        "fields": [
          {
            "fieldType": "TEXT",
            "key": "medicaidId",
            "label": "Medicaid Provider Identifier"
          }
        ],
        "instructions": "Please provide your Medicaid Provider Identifier."
      }
    },
    "id": "01937d50-1234-7890-abcd-567890abcdef",
    "isComplete": true,
    "rank": 1,
    "responseData": {
      "manualTask": {
        "values": [
          {
            "key": "medicaidId",
            "value": {
              "text": "ABCD12"
            }
          }
        ]
      }
    },
    "responsibleParty": "PROVIDER"
  }
}
```

#### 400

ValidationException 400 response

**Schema:** `ValidationExceptionResponseContent`

**Properties:**

- **`fieldList`** (`array of ValidationExceptionField objects`): A list of specific failures encountered while validating the input.
A member can appear in this list more than once if it failed to satisfy multiple constraints.
- **`fieldList[].message`** (`string`) (required): A detailed description of the validation failure.
- **`fieldList[].path`** (`string`) (required): A JSONPointer expression to the structure member whose value failed to satisfy the modeled constraints.
- **`message`** (`string`) (required): A summary of the validation failure.
#### 401

UnauthorizedException 401 response

**Schema:** `UnauthorizedExceptionResponseContent`

**Properties:**

- **`code`** (`string`): Error classification code
- **`message`** (`string`) (required): Human-readable error message
#### 403

AccessDeniedException 403 response

**Schema:** `AccessDeniedExceptionResponseContent`

**Properties:**

- **`code`** (`string`): Error classification code
- **`message`** (`string`) (required): Human-readable error message
#### 404

ResourceNotFoundException 404 response

**Schema:** `ResourceNotFoundExceptionResponseContent`

**Properties:**

- **`code`** (`string`): Error classification code
- **`message`** (`string`) (required): Human-readable error message
#### 429

QuotaExceededException 429 response

**Schema:** `QuotaExceededExceptionResponseContent`

**Properties:**

- **`code`** (`string`): Error classification code
- **`message`** (`string`) (required): Human-readable error message
#### 500

InternalFailureException 500 response

**Schema:** `InternalFailureExceptionResponseContent`

**Properties:**

- **`code`** (`string`): Error classification code
- **`message`** (`string`) (required): Human-readable error message
#### 503

ServiceUnavailableException 503 response

**Schema:** `ServiceUnavailableExceptionResponseContent`

**Properties:**

- **`code`** (`string`): Error classification code
- **`message`** (`string`) (required): Human-readable error message
#### 504

GatewayTimeoutException 504 response

**Schema:** `GatewayTimeoutExceptionResponseContent`

**Properties:**

- **`code`** (`string`): Error classification code
- **`message`** (`string`) (required): Human-readable error message


# Batch Eligibility Check (270)
Source: https://www.stedi.com/docs/healthcare/api-reference/post-healthcare-batch-eligibility


You may want to periodically conduct asynchronous [batch eligibility checks](/healthcare/batch-refresh-eligibility-checks) for your entire patient population or a subset of patients, such as those who have active care plans or who have future services scheduled. These data refreshes allow you to proactively reach out to patients when they lose or change coverage.

* Call this endpoint with a JSON payload containing one or more eligibility checks. You can submit up to 10,000 individual eligibility checks within a single batch, and you can submit as many batches as you need to process. Use the optional `maxRetryHours` property to configure the automatic retry period for checks that fail due to payer connectivity issues.
* The endpoint returns a synchronous response containing a `batchId` that you can use to retrieve the results of these checks later, using the [Poll Batch Eligibility Checks](/healthcare/api-reference/get-healthcare-polling-eligibility) endpoint.
* Stedi translates each eligibility check included in the request to the X12 270 EDI format and sends it to the appropriate payer.

## Start with real-time checks [#start-with-real-time-checks]

Batch checks have a longer feedback cycle than real-time checks because you don't receive the payer's response immediately. That's why we strongly recommend starting with real-time checks when integrating with a new payer or working with eligibility checks for the first time. To perform synchronous eligibility checks, use the [Real-Time Eligibility Check](/healthcare/api-reference/post-healthcare-eligibility) endpoint.

## API Specification

Submit multiple eligibility checks for Stedi to process asynchronously

**Endpoint:** `POST /eligibility-manager/batch-eligibility`

**Base URL:** `https://manager.us.stedi.com/2024-04-01`

### Parameters

- **`X-Forwarded-For`** (header): 
  - Type: `string`

### Request Body

**Schema:** `BatchEligibilityChecksRequestContent`

**Properties:**

- **`items`** (`array of BatchEligibilityChecksItem objects`) (required): Each entry in this array represents a single eligibility check. You can submit up to 10,000 eligibility checks in a single request. **Warning:** If _any_ of the individual checks contain invalid JSON data, such as missing required properties or invalid values, Stedi rejects the entire batch with a `400` status code and returns errors to help you correct the issues.
- **`items[].controlNumber`** (`string`): Stedi generates a control number for each eligibility check, so you don’t need to include this property in your request.
- **`items[].dependents`** (`array of RequestDependent objects`): A dependent for which you want to retrieve benefits information.
- You can only submit one dependent per eligibility check.
- Only include the patient's information here when they are listed as a dependent on the subscriber's insurance plan AND the payer cannot uniquely identify them through information outside the subscriber's policy. For example, if the dependent has their own member ID number, you should identify them in the `subscriber` object instead. This includes member IDs that differ only by a suffix, such as `01`, because the patient can still be uniquely identified.
- Most Medicaid plans don't support dependents, with a [few exceptions](https://www.stedi.com/docs/healthcare/send-eligibility-checks#medicaid-dependents). Sending this array to payers that don't support dependents will either cause an error, or the payer may ignore the information and return results for the subscriber instead.
- Each payer has different requirements, so you should supply the fields necessary for each payer to identify the dependent in their system. However, we **strongly recommend** including the dependent's date of birth in the request when available because many payers return errors without it.
- Enter the patient's name exactly as written on their insurance card, if available, including any special or punctuation characters such as apostrophes, hyphens (dashes), or spaces. Visit [patient names](https://www.stedi.com/docs/healthcare/send-eligibility-checks#patient-names) for all best practices to avoid unnecessary failures.
- **`items[].dependents[].additionalIdentification`** (`object`): Use this object when you need to provide an additional identification number for the dependent. This is rarely required for standard eligibility checks.
- **`items[].dependents[].additionalIdentification.agencyClaimNumber`** (`string`): The Property and Casualty Claim Number associated with the patient. You should only submit this value when when you are submitting an eligibility request to a property and casualty payer.
- **`items[].dependents[].additionalIdentification.contractNumber`** (`string`): The contract number for an existing contract between the payer and the provider requesting the eligibility check.
- **`items[].dependents[].additionalIdentification.healthInsuranceClaimNumber`** (`string`): This property is never used in practice.
- **`items[].dependents[].additionalIdentification.identificationCardSerialNumber`** (`string`): The identification card serial number. You can include this when the ID card has a number in addition to the member ID number. The Identification Card Serial Number uniquely identifies the card when multiple cards have been or will be issued to a member, such as a replacement card.
- **`items[].dependents[].additionalIdentification.insurancePolicyNumber`** (`string`): The insurance policy number.
- **`items[].dependents[].additionalIdentification.medicalRecordIdentificationNumber`** (`string`): The medical record identification number.
- **`items[].dependents[].additionalIdentification.memberIdentificationNumber`** (`string`): Not intended for most use cases. Only set this when the property and casualty patient identifier is a member ID that would be used in an 837 claim submission.

If the patient has their own member ID for the health plan, you should identify them in the `subscriber` object. If the patient doesn't have their own member ID, don't set this property.
- **`items[].dependents[].additionalIdentification.patientAccountNumber`** (`string`): The patient account number.
- **`items[].dependents[].additionalIdentification.planNetworkIdentificationNumber`** (`string`): The plan network identification number.
- **`items[].dependents[].additionalIdentification.planNumber`** (`string`): The insurance plan number.
- **`items[].dependents[].additionalIdentification.policyNumber`** (`string`): The insurance group or policy number.
- **`items[].dependents[].address`** (`object`): Address information for the dependent. When providing address information, we recommend including `state` for member identification in addition to the required `address1` and `city` properties.
- **`items[].dependents[].address.address1`** (`string`) (required): The first line of the address.
- **`items[].dependents[].address.address2`** (`string`): The second line of the address.
- **`items[].dependents[].address.city`** (`string`) (required): The city.
- **`items[].dependents[].address.countryCode`** (`string`): The two-letter country code from [Part 1 of ISO 3166](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2).
- **`items[].dependents[].address.countrySubDivisionCode`** (`string`): The country subdivision code from [Part 2 of ISO 3166](https://en.wikipedia.org/wiki/ISO_3166-2).
- **`items[].dependents[].address.postalCode`** (`string`): The United States or Canadian postal code, excluding punctuation and blanks.
- **`items[].dependents[].address.state`** (`string`): The US state or Canadian province code. For example, `TN` for Tennessee or `NB` for New Brunswick.
  - Allowed values: `NL`, `PE`, `NS`, `NB`, `QC`, `ON`, `MB`, `SK`, `AB`, `BC`, `YT`, `NT`, `NU`, `DC`, `AS`, `GU`, `MP`, `PR`, `UM`, `VI`, `AA`, `AE`, `AP`, `AK`, `AL`, `AR`, `AZ`, `CA`, `CO`, `CT`, `DE`, `FL`, `GA`, `HI`, `IA`, `ID`, `IL`, `IN`, `KS`, `KY`, `LA`, `MA`, `MD`, `ME`, `MI`, `MN`, `MO`, `MS`, `MT`, `NC`, `ND`, `NE`, `NH`, `NJ`, `NM`, `NV`, `NY`, `OH`, `OK`, `OR`, `PA`, `RI`, `SC`, `SD`, `TN`, `TX`, `UT`, `VA`, `VT`, `WA`, `WI`, `WV`, `WY`
- **`items[].dependents[].beginningCardIssueDate`** (`string`): The date the insurance card was issued. Use when you need to specify a date range. Provide the end of the range in the `endCardIssueDate` property.
- **`items[].dependents[].beginningPlanIssueDate`** (`string`): The date the insurance plan begins. Use when you need to specify a date range. Provide the end of the range in the `endPlanIssueDate` property.
- **`items[].dependents[].birthSequenceNumber`** (`string`): The number assigned to each family member born with the same birth date, such as twins or triplets. Use to indicate the birth order when there are multiple births associated with the provided birth date.
- **`items[].dependents[].dateOfBirth`** (`string`): The dependent's date of birth (DOB). We **strongly recommend** including the DOB in your request. Many payers need this information to identify the patient in their system and will immediately return an error when it's not provided.
- **`items[].dependents[].eligibilityCategory`** (`string`): The eligibility category for the dependent.
- **`items[].dependents[].endCardIssueDate`** (`string`): The date the insurance card expires. Use when you need to specify a date range. Provide the start of the range in the `beginningCardIssueDate` property.
- **`items[].dependents[].endPlanIssueDate`** (`string`): The date the insurance plan ends. Use when you need to specify a date range. Provide the start of the range in the `beginningPlanIssueDate` property.
- **`items[].dependents[].firstName`** (`string`): The dependent's first name.
- **`items[].dependents[].gender`** (`string`)
  - Allowed values: `M`, `F`
- **`items[].dependents[].groupNumber`** (`string`): The group number for the dependent's insurance plan.
- **`items[].dependents[].healthCareCodeInformation`** (`array of HealthCareInformation objects`): Information about the dependent's health care diagnosis. You can include up to eight entries in this array. 

The first array entry must have `diagnosisTypeCode` set to `ABK`. All subsequent entries must have `diagnosisTypeCode` set to `ABF`.
- **`items[].dependents[].healthCareCodeInformation[].diagnosisCode`** (`string`) (required): The diagnosis code. Omit the decimal points in diagnosis codes - the decimal point is assumed.
- **`items[].dependents[].healthCareCodeInformation[].diagnosisTypeCode`** (`string`) (required): The type of diagnosis code you are providing. You can set to `BK` - International Classification of Diseases Clinical Modification (ICD-9-CM) Principal Diagnosis, `ABK` - International Classification of Diseases Clinical Modification (ICD-10-CM) Principal Diagnosis, `BF`- International Classification of Diseases Clinical Modification (ICD-9-CM) Diagnosis, or `ABF`- International Classification of Diseases Clinical Modification (ICD-10-CM) Diagnosis. 

 Note that ICD-9 codes are **deprecated** and should no longer be used in eligibility checks.
  - Allowed values: `BK`, `ABK`, `BF`, `ABF`
- **`items[].dependents[].idCard`** (`string`): The dependent's insurance card number.
- **`items[].dependents[].idCardIssueDate`** (`string`): The date the insurance card was issued. Use to specify a single date.
- **`items[].dependents[].individualRelationshipCode`** (`string`): The dependent's relationship to the subscriber. You can set this to `01` - Spouse, `19` - Child, `34` - Other Adult.
  - Allowed values: `01`, `19`, `34`
- **`items[].dependents[].issueNumber`** (`string`): The issue number for the dependent's insurance policy.
- **`items[].dependents[].lastName`** (`string`): The dependent's last name. **Don't** include the dependent's name suffix, such as Jr. or III. Use the designated `suffix` property instead.
- **`items[].dependents[].memberId`** (`string`): This shape is deprecated: This property is no longer used.
- **`items[].dependents[].middleName`** (`string`): The dependent's middle name or middle initial.
- **`items[].dependents[].planIssueDate`** (`string`): The date the insurance plan begins. Use to specify a single date.
- **`items[].dependents[].providerCode`** (`string`): Use this for providers that are not requesting the eligibility check - the requestor is specified in the `provider` object. For example, if you are a hospital making an eligibility request, this is where you would specify information about a referring provider's role. 

 You can use one of the following: `AD` - Admitting, `AT` - Attending, `BI` - Billing, `CO` - Consulting, `CV` - Covering, `H` - Hospital, `HH` - Home Health Care, `LA` - Laboratory, `OT` - Other Physician, `P1` - Pharmacist, `P2` - Pharmacy, `PC` - Primary Care Physician, `PE`- Performing, `R`- Rural Health Clinic, `RF` - Referring, `SB` - Submitting, `SK` - Skilled Nursing Facility, `SU` - Supervising
  - Allowed values: `AD`, `AT`, `BI`, `CO`, `CV`, `H`, `HH`, `LA`, `OT`, `P1`, `P2`, `PC`, `PE`, `R`, `RF`, `SK`, `SU`
- **`items[].dependents[].providerIdentifier`** (`string`): The provider identifier you specified in the `referenceIdentificationQualifier` property. For example, the provider's National Provider ID or Federal Taxpayer Identification number. If you set the `referenceIdentificationQualifier` to `PXC`, then this property should contain the provider's taxonomy code.
- **`items[].dependents[].referenceIdentificationQualifier`** (`string`): The type of `providerIdentifier` you are using. Use for providers that are not requesting the eligibility check, such as the referring provider.
- Set to `HPI` when the National Provider ID is mandated for use.
- Set to `PXC` if you're identifying a type of specialty associated with services provided to the dependent. 
 
 Otherwise, you can set to the following: `9K` - Servicer, `D3` - National Council for Prescription Drug Programs Pharmacy Number, `EI` - Employer's Identification Number, `HPI` - Centers for Medicare and Medicaid Services National Provider Identifier, `PXC` - Health Care Provider Taxonomy Code, `SY` - Social Security Number, `TJ` - Federal Taxpayer's Identification Number
  - Allowed values: `9K`, `D3`, `EI`, `HPI`, `PXC`, `SY`, `TJ`
- **`items[].dependents[].ssn`** (`string`): The dependent's social security number. Don't use this for Federally-administered programs, such as Medicare.
- **`items[].dependents[].suffix`** (`string`): The dependent's name suffix, such as Sr. or III. Only include the dependent's personal name suffix - **don't** include professional or academic titles, such as M.D. or MBA.
- **`items[].eligibilitySearchId`** (`string`): An identifier that allows Stedi to group eligibility checks for the same patient into a unified record in the Stedi portal called an [eligibility search](https://www.stedi.com/docs/healthcare/eligibility-searches-view).

This property is for use by Stedi tools only, such as Stedi's MCP server.
- **`items[].encounter`** (`object`): Details about the eligibility or benefit information you are requesting for the patient.
- If you don't specify either `serviceTypeCodes` or a `procedureCode` and `productOrServiceIDQualifier`, Stedi defaults to using `30` (Plan coverage and general benefits) as the only `serviceTypeCodes` value.
- You can specify either a single `dateOfService` or a `beginningDateOfService` and `endDateOfService`. The payer defaults to using the current date in their timezone if you don't include one.
- When checking eligibility for today, omit the `dateOfService` property to ensure consistent behavior across payers.
- We recommend submitting dates up to 12 months in the past or up to the end of the current month. Payers aren't required to support dates outside these ranges. However, some payers such as the Centers for Medicare and Medicaid Services (CMS) do support requests for dates further in the future - especially the next calendar month. Check the payer's documentation to determine their specific behavior.
- **`items[].encounter.beginningDateOfService`** (`string`): The beginning date of service. If you include this value, you must also include the `endDateOfService`.
- **`items[].encounter.dateOfService`** (`string`): The date of service. You can use this value to specify a single occasion, such as a doctor's visit. If you don't specify a service date (either a single day or a range of dates), the payer defaults to using the current date in their timezone.
- **`items[].encounter.diagnosisCodePointer`** (`array of strings`): Diagnosis code pointers in order of importance to the service. These pointers are an index to the ICD-10 codes you included in the `subscriber.healthCareCodeInformation` or `dependents.healthCareCodeInformation` object arrays. The pointer values can be from 1 - 8 (integer numbers). If you are including diagnosis codes, you **must** set at least one pointer here for the primary diagnosis. Then, you can add up to three additional pointers (up to four in total). Don't put ICD-10 codes here.
- **`items[].encounter.endDateOfService`** (`string`): The end date of service. If you include this value, you must also include the `beginningDateOfService`.
- **`items[].encounter.industryCode`** (`string`): The type of facility where the service was provided. You can set this to one of the [place of service codes](https://www.cms.gov/medicare/coding-billing/place-of-service-codes/code-sets).
  - Allowed values: `01`, `02`, `03`, `04`, `05`, `06`, `07`, `08`, `09`, `10`, `11`, `12`, `13`, `14`, `15`, `16`, `17`, `18`, `19`, `20`, `21`, `22`, `23`, `24`, `25`, `26`, `31`, `32`, `33`, `34`, `41`, `42`, `49`, `50`, `51`, `52`, `53`, `54`, `55`, `56`, `57`, `58`, `60`, `61`, `62`, `65`, `71`, `72`, `81`, `99`
- **`items[].encounter.medicalProcedures`** (`array of MedicalProcedure objects`): Use only when you need to send multiple procedure codes in a single request. Otherwise, use the `encounter.procedureCode` and `encounter.productOrServiceIDQualifier` properties.
- **`items[].encounter.medicalProcedures[].diagnosisCodePointer`** (`array of strings`): The diagnosis code pointer.
- **`items[].encounter.medicalProcedures[].procedureCode`** (`string`) (required): The procedure code.
- **`items[].encounter.medicalProcedures[].procedureModifiers`** (`array of strings`): Procedure modifiers that provide additional information related to the service.
- **`items[].encounter.medicalProcedures[].productOrServiceIDQualifier`** (`string`) (required): Code identifying the type/source of the `procedureCode`. You can set this to `AD` - American Dental Association Codes, `CJ` - Current Procedural Terminology (CPT) Codes, `HC` - Health Care Financing Administration Common Procedural Coding System (HCPCS) Codes, `ID` - International Classification of Diseases, 9th Revision, Clinical Modification (ICD-9-CM) - Procedure, `IV` - Home Infusion EDI Coalition (HIEC) Product/Service Code, `N4` - National Drug Code in 5-4-2 Format, or `ZZ` - Mutually Defined.
  - Allowed values: `AD`, `CJ`, `HC`, `ID`, `IV`, `N4`, `ZZ`
- **`items[].encounter.priorAuthorizationOrReferralNumber`** (`string`): The prior authorization or referral number for a particular benefit or procedure.
- **`items[].encounter.procedureCode`** (`string`): The procedure code.
- **`items[].encounter.procedureModifiers`** (`array of strings`): The procedure modifier that provides additional information related to the performance of the service.
- **`items[].encounter.productOrServiceIDQualifier`** (`string`): Code identifying the type/source of the `procedureCode`. You can set this to `AD` - American Dental Association Codes, `CJ` - Current Procedural Terminology (CPT) Codes, `HC` - Health Care Financing Administration Common Procedural Coding System (HCPCS) Codes, `ID` - International Classification of Diseases, 9th Revision, Clinical Modification (ICD-9-CM) - Procedure, `IV` - Home Infusion EDI Coalition (HIEC) Product/Service Code, `N4` - National Drug Code in 5-4-2 Format, or `ZZ` - Mutually Defined.
  - Allowed values: `AD`, `CJ`, `HC`, `ID`, `IV`, `N4`, `ZZ`
- **`items[].encounter.referenceIdentificationQualifier`** (`string`): The type of information you provided in the `priorAuthorizationOrReferralNumber` property. You can set this to `9F` - Referral Number or `G1` - Prior Authorization Number.
  - Allowed values: `9F`, `G1`
- **`items[].encounter.serviceTypeCodes`** (`array of strings`): One or more codes classifying the type of services for which you want to receive benefits information.

If you don't specify a service type code or a `procedureCode` and `productOrServiceIDQualifier`, Stedi defaults to using `30` - Health Benefit Plan Coverage. Visit [Service Type Codes](https://www.stedi.com/docs/healthcare/eligibility-stc-procedure-codes#full-stc-list) for a complete list.

Not all payers support all service type codes, and not all payers support multiple service type codes in the same request. We recommend including one service type code per request unless you're sure the payer supports multiple.

Payers aren't required to respond with exactly the same STC(s) in the response, so you may receive benefits information for STCs you didn't request. However, receiving different STCs can mean that the payer is ignoring the STC you sent, which is why we recommend [testing payers](https://www.stedi.com/docs/healthcare/eligibility-stc-procedure-codes#test-payer-stc-support) to determine their support for specific STCs.
- **`items[].externalPatientId`** (`string`): A unique identifier for the patient that Stedi uses to identify and correlate historical eligibility checks for the same individual. We recommend including this value in all requests.
- **`items[].informationReceiverName`** (`object`)
- **`items[].informationReceiverName.address`** (`object`): Address information for the provider.
  - Only include when specifically instructed by a payer, such as when the provider has multiple locations and you need to identify the specific location making the request.
  - You must include at least the `address1` and `city` properties.
- **`items[].informationReceiverName.address.address1`** (`string`) (required): The first line of the address.
- **`items[].informationReceiverName.address.address2`** (`string`): The second line of the address.
- **`items[].informationReceiverName.address.city`** (`string`) (required): The city.
- **`items[].informationReceiverName.address.countryCode`** (`string`): The two-letter country code from [Part 1 of ISO 3166](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2).
- **`items[].informationReceiverName.address.countrySubDivisionCode`** (`string`): The country subdivision code from [Part 2 of ISO 3166](https://en.wikipedia.org/wiki/ISO_3166-2).
- **`items[].informationReceiverName.address.postalCode`** (`string`): The United States or Canadian postal code, excluding punctuation and blanks.
- **`items[].informationReceiverName.address.state`** (`string`): The US state or Canadian province code. For example, `TN` for Tennessee or `NB` for New Brunswick.
  - Allowed values: `NL`, `PE`, `NS`, `NB`, `QC`, `ON`, `MB`, `SK`, `AB`, `BC`, `YT`, `NT`, `NU`, `DC`, `AS`, `GU`, `MP`, `PR`, `UM`, `VI`, `AA`, `AE`, `AP`, `AK`, `AL`, `AR`, `AZ`, `CA`, `CO`, `CT`, `DE`, `FL`, `GA`, `HI`, `IA`, `ID`, `IL`, `IN`, `KS`, `KY`, `LA`, `MA`, `MD`, `ME`, `MI`, `MN`, `MO`, `MS`, `MT`, `NC`, `ND`, `NE`, `NH`, `NJ`, `NM`, `NV`, `NY`, `OH`, `OK`, `OR`, `PA`, `RI`, `SC`, `SD`, `TN`, `TX`, `UT`, `VA`, `VT`, `WA`, `WI`, `WV`, `WY`
- **`items[].informationReceiverName.contactNumber`** (`string`)
- **`items[].informationReceiverName.contractNumber`** (`string`)
- **`items[].informationReceiverName.devicePinNumber`** (`string`)
- **`items[].informationReceiverName.facilityIdNumber`** (`string`)
- **`items[].informationReceiverName.facilityNetworkIdNumber`** (`string`)
- **`items[].informationReceiverName.federalTaxpayerIdentificationNumber`** (`string`)
- **`items[].informationReceiverName.informationReceiverAdditionalIdentifierState`** (`string`)
- **`items[].informationReceiverName.medicaidProviderNumber`** (`string`): The provider's Medicaid provider number.
- **`items[].informationReceiverName.medicareProviderNumber`** (`string`)
- **`items[].informationReceiverName.nationalProviderIdentifier`** (`string`)
- **`items[].informationReceiverName.priorIdentifierNumber`** (`string`)
- **`items[].informationReceiverName.providerPlanNetworkIdNumber`** (`string`)
- **`items[].informationReceiverName.socialSecurityNumber`** (`string`)
- **`items[].informationReceiverName.stateLicenceNumber`** (`string`)
- **`items[].informationReceiverName.submitterIdNumber`** (`string`)
- **`items[].portalPassword`** (`string`): The password that the provider uses to log in to the payer's portal. For payers Medicaid California, AltaMed, and Kern Family Health Care, this property is **required** and should be the [provider's PIN](https://www.stedi.com/docs/healthcare/eligibility-troubleshooting#portal-credentials). Otherwise, this is not commonly used.
- **`items[].portalUsername`** (`string`): The username that the provider uses to log in to the payer's portal. This is not commonly used.
- **`items[].provider`** (`object`) (required): Information about the entity requesting the eligibility check. This may be an individual practitioner, a medical group, a hospital, or another type of healthcare provider.
 - You must provide the `organizationName` (if the entity is an organization), or `firstName` and `lastName` (if the provider is an individual).
 - You must also provide an identifier - this is typically the provider's [National Provider Identifier](https://www.stedi.com/docs/healthcare/national-provider-identifier) (`npi`). If the provider doesn't have an NPI, you can supply an alternative, such as their `taxId` or `ssn`.
 - Don't include additional properties, such as `taxId` or `address`, unless they are specifically required or suggested by the payer.
- **`items[].provider.address`** (`object`): Address information for the provider.
  - Only include when specifically instructed by a payer, such as when the provider has multiple locations and you need to identify the specific location making the request.
  - You must include at least the `address1` and `city` properties.
- **`items[].provider.address.address1`** (`string`) (required): The first line of the address.
- **`items[].provider.address.address2`** (`string`): The second line of the address.
- **`items[].provider.address.city`** (`string`) (required): The city.
- **`items[].provider.address.countryCode`** (`string`): The two-letter country code from [Part 1 of ISO 3166](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2).
- **`items[].provider.address.countrySubDivisionCode`** (`string`): The country subdivision code from [Part 2 of ISO 3166](https://en.wikipedia.org/wiki/ISO_3166-2).
- **`items[].provider.address.postalCode`** (`string`): The United States or Canadian postal code, excluding punctuation and blanks.
- **`items[].provider.address.state`** (`string`): The US state or Canadian province code. For example, `TN` for Tennessee or `NB` for New Brunswick.
  - Allowed values: `NL`, `PE`, `NS`, `NB`, `QC`, `ON`, `MB`, `SK`, `AB`, `BC`, `YT`, `NT`, `NU`, `DC`, `AS`, `GU`, `MP`, `PR`, `UM`, `VI`, `AA`, `AE`, `AP`, `AK`, `AL`, `AR`, `AZ`, `CA`, `CO`, `CT`, `DE`, `FL`, `GA`, `HI`, `IA`, `ID`, `IL`, `IN`, `KS`, `KY`, `LA`, `MA`, `MD`, `ME`, `MI`, `MN`, `MO`, `MS`, `MT`, `NC`, `ND`, `NE`, `NH`, `NJ`, `NM`, `NV`, `NY`, `OH`, `OK`, `OR`, `PA`, `RI`, `SC`, `SD`, `TN`, `TX`, `UT`, `VA`, `VT`, `WA`, `WI`, `WV`, `WY`
- **`items[].provider.contactNumber`** (`string`): The provider's contract number. Only include when required by a payer.
This shape is deprecated: Use `contractNumber` instead.
- **`items[].provider.contractNumber`** (`string`): The provider's contract number. Only include when required by a payer.
- **`items[].provider.devicePinNumber`** (`string`): The provider's electronic device pin number. Only include when required by a payer.
- **`items[].provider.employersId`** (`string`): Deprecated; The submitter's Employer's Identification Number (EIN). Only use when an employer is checking the eligibility and benefits of their employees.
This shape is deprecated: This property is no longer used.
- **`items[].provider.facilityIdNumber`** (`string`): The ID number for the provider's facility. Only include when required by a payer.
- **`items[].provider.facilityNetworkIdNumber`** (`string`): The provider's facility network identification number. Only include when required by a payer.
- **`items[].provider.firstName`** (`string`): The provider's first name. This property is required if the provider is an individual.
- **`items[].provider.informationReceiverAdditionalIdentifierState`** (`string`): The two-character state ID of the state that assigned the `stateLicenseNumber`. Only include when required by a payer.
- **`items[].provider.lastName`** (`string`): The provider's last name. This property is required if the provider is an individual.
- **`items[].provider.medicaidProviderNumber`** (`string`): The provider's Medicaid provider number. Only include when required by a payer.
- **`items[].provider.medicareProviderNumber`** (`string`): The provider's Medicare provider number. Only include when required by a payer.
- **`items[].provider.npi`** (`string`): The provider's [National Provider Identifier (NPI)](https://www.stedi.com/docs/healthcare/national-provider-identifier). This identifier is required for all healthcare providers who are eligible to receive an NPI. Some non-traditional providers such as transportation services, durable medical equipment (DME) suppliers, or alternative medicine practitioners are not eligible to receive an NPI. If the provider doesn't have an NPI, requests with alternate IDs are virtually never supported. In the rare circumstance that a payer has instructed you to use an alternate ID, the payer will typically require you to supply either their `taxId` or `ssn` instead.
- **`items[].provider.organizationName`** (`string`): The provider's business name. This property is required if the provider is not an individual.
- **`items[].provider.payorId`** (`string`): Only used for payer-to-payer transactions, which are not currently supported. Do not use.
- **`items[].provider.pharmacyProcessorNumber`** (`string`): The provider's pharmacy processor number. Only include when specifically instructed by a payer - for example, when the provider doesn't have an [NPI](https://www.stedi.com/docs/healthcare/national-provider-identifier). This use case is very rarely supported, and is typically when the provider is a non-medical provider, such as a social worker, home health aide, or transportation service.
- **`items[].provider.priorIdentifierNumber`** (`string`): The provider's prior identifier number. Only include when required by a payer.
- **`items[].provider.providerCode`** (`string`)
  - Allowed values: `AD`, `AT`, `BI`, `CO`, `CV`, `H`, `HH`, `LA`, `OT`, `P1`, `P2`, `PC`, `PE`, `R`, `RF`, `SB`, `SK`, `SU`
- **`items[].provider.providerPlanNetworkIdNumber`** (`string`): The provider's plan network identification number. Only include when required by a payer.
- **`items[].provider.providerType`** (`string`): Identify the type of provider.
  - Allowed values: `payer`, `third-party administrator`, `employer`, `hospital`, `facility`, `gateway provider`, `plan sponsor`, `provider`
- **`items[].provider.referenceIdentification`** (`string`): The provider's [Taxonomy Code](https://x12.org/codes/provider-taxonomy-codes). Only used when the provider's taxonomy code is relevant to the eligibility/benefit inquiry. For example, an institutional provider such as a hospital may need to use a taxonomy code to specify a specific unit or department.
- **`items[].provider.serviceProviderNumber`** (`string`): The provider's service provider number. Only include when specifically instructed by a payer - for example, when the provider doesn't have an [NPI](https://www.stedi.com/docs/healthcare/national-provider-identifier). This use case is very rarely supported, and is typically when the provider is a non-medical provider, such as a social worker, home health aide, or transportation service.
- **`items[].provider.servicesPlanID`** (`string`)
- **`items[].provider.ssn`** (`string`): The provider's Social Security Number (SSN).
    - Only include when specifically instructed by a payer - for example, if the provider doesn't have an [NPI](https://www.stedi.com/docs/healthcare/national-provider-identifier). This use case is very rarely supported, and is typically when the provider is a non-medical provider, such as a social worker, home health aide, or transportation service.
    - If the payer has instructed you to send an EIN but the provider operates using their SSN, use provider.taxId instead of this field.
    - Don't use this for Federally-administered programs, such as Medicare.
- **`items[].provider.stateLicenceNumber`** (`string`): The provider's state license number. If you include this information, you must also include the `informationReceiverAdditionalIdentifierState`. Only include when required by a payer.
- **`items[].provider.submitterIdNumber`** (`string`): The provider's submitter identification number. Only include when required by a payer.
- **`items[].provider.taxId`** (`string`): The provider's Federal Taxpayer Identification Number. This is typically the provider's EIN (Employer Identification Number), but the provider's SSN may be used if the provider does not have an EIN. Only include if required by the payer.
- **`items[].submitterTransactionIdentifier`** (`string`) (required): A unique identifier for the eligibility check within this batch request. Stedi returns this identifier in the response for the [Poll Batch Eligibility Checks](https://www.stedi.com/docs/healthcare/api-reference/get-healthcare-polling-eligibility) endpoint.
- **`items[].subscriber`** (`object`) (required): The primary policyholder for the insurance plan _or_ a dependent with a unique member ID. If a dependent has a unique member ID, include their information here and leave `dependents` empty.
- At a minimum, our API requires that you supply at least one of these fields in the request: `memberId`, `dateOfBirth`, or `lastName`. However, each payer has different requirements, so you should supply the fields necessary for each payer to identify the subscriber in their system.
- When you provide all four of `memberId`, `dateOfBirth`, `firstName`, and `lastName`, payers are required to return a response if the member is in their database. Some payers may be able to search with less information, but this varies by payer.
- We recommend always including the patient's member ID when possible.
- Enter the patient's name exactly as written on their insurance card, if available, including any special or punctuation characters such as apostrophes, hyphens (dashes), or spaces. Visit [patient names](https://www.stedi.com/docs/healthcare/send-eligibility-checks#patient-names) for all best practices to avoid unnecessary failures.
- **`items[].subscriber.additionalIdentification`** (`object`): Use this object when you need to provide an identification number other than or in addition to the subscriber's member ID. For example, you may provide the patient account number.

Don't include the health insurance claim number or the medicaid recipient ID number here unless they are different from the member ID.
- **`items[].subscriber.additionalIdentification.agencyClaimNumber`** (`string`): The Property and Casualty Claim Number associated with the patient. You should only submit this value when when you are submitting an eligibility request to a property and casualty payer.
- **`items[].subscriber.additionalIdentification.contractNumber`** (`string`): The contract number for an existing contract between the payer and the provider requesting the eligibility check.
- **`items[].subscriber.additionalIdentification.healthInsuranceClaimNumber`** (`string`): The health insurance claim number.
- **`items[].subscriber.additionalIdentification.identificationCardSerialNumber`** (`string`): The identification card serial number. You can include this when the ID card has a number in addition to the member ID number. The Identification Card Serial Number uniquely identifies the card when multiple cards have been or will be issued to a member, such as a replacement card.
- **`items[].subscriber.additionalIdentification.insurancePolicyNumber`** (`string`): The insurance policy number.
- **`items[].subscriber.additionalIdentification.medicalRecordIdentificationNumber`** (`string`): The medical record identification number.
- **`items[].subscriber.additionalIdentification.memberIdentificationNumber`** (`string`): This property is never used in practice. Supply the subscriber's member ID in `subscriber.memberId`.
- **`items[].subscriber.additionalIdentification.patientAccountNumber`** (`string`): The patient account number.
- **`items[].subscriber.additionalIdentification.planNetworkIdentificationNumber`** (`string`): The plan network identification number.
- **`items[].subscriber.additionalIdentification.planNumber`** (`string`): The insurance plan number.
- **`items[].subscriber.additionalIdentification.policyNumber`** (`string`): The insurance group or policy number.
- **`items[].subscriber.address`** (`object`): Address information for the subscriber. When providing address information:
  - The `address1` and `city` properties are **required** for standard eligibility checks and MBI lookups with SSN. We also recommend including `state` for member identification.
  - When performing an [MBI lookup without SSN](https://www.stedi.com/docs/healthcare/mbi-lookup) (Payer ID: `MBILUNOSSN`), only `state` is required. You can omit `address1` and `city`.
- **`items[].subscriber.address.address1`** (`string`): The first line of the address. Required for all payers except payer ID `MBILUNOSSN`.
- **`items[].subscriber.address.address2`** (`string`): The second line of the address.
- **`items[].subscriber.address.city`** (`string`): The city. Required for all payers except payer ID `MBILUNOSSN`.
- **`items[].subscriber.address.countryCode`** (`string`): The two-letter country code from [Part 1 of ISO 3166](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2).
- **`items[].subscriber.address.countrySubDivisionCode`** (`string`): The country subdivision code from [Part 2 of ISO 3166](https://en.wikipedia.org/wiki/ISO_3166-2).
- **`items[].subscriber.address.postalCode`** (`string`): The United States or Canadian postal code, excluding punctuation and blanks.
- **`items[].subscriber.address.state`** (`string`): The US state or Canadian province code. For example, `TN` for Tennessee or `NB` for New Brunswick.
  - Allowed values: `NL`, `PE`, `NS`, `NB`, `QC`, `ON`, `MB`, `SK`, `AB`, `BC`, `YT`, `NT`, `NU`, `DC`, `AS`, `GU`, `MP`, `PR`, `UM`, `VI`, `AA`, `AE`, `AP`, `AK`, `AL`, `AR`, `AZ`, `CA`, `CO`, `CT`, `DE`, `FL`, `GA`, `HI`, `IA`, `ID`, `IL`, `IN`, `KS`, `KY`, `LA`, `MA`, `MD`, `ME`, `MI`, `MN`, `MO`, `MS`, `MT`, `NC`, `ND`, `NE`, `NH`, `NJ`, `NM`, `NV`, `NY`, `OH`, `OK`, `OR`, `PA`, `RI`, `SC`, `SD`, `TN`, `TX`, `UT`, `VA`, `VT`, `WA`, `WI`, `WV`, `WY`
- **`items[].subscriber.beginningCardIssueDate`** (`string`): The date the subscriber's insurance card was issued. Use when you need to specify a date range. Provide the end of the range in the `endCardIssueDate` property.
- **`items[].subscriber.beginningPlanIssueDate`** (`string`): The date the subscriber's insurance plan begins. Use when you need to specify a date range. Provide the end of the range in the `endPlanIssueDate` property.
- **`items[].subscriber.birthSequenceNumber`** (`string`): The number assigned to each family member born with the same birth date, such as twins or triplets. Use to indicate the birth order when there are multiple births associated with the provided birth date.
- **`items[].subscriber.caseNumber`** (`string`): The case number associated with the subscriber.
- **`items[].subscriber.coverageLevelCode`** (`string`): This property is no longer used.
- **`items[].subscriber.dateOfBirth`** (`string`): The subscriber's date of birth.
- **`items[].subscriber.endCardIssueDate`** (`string`): The date the subscriber's insurance card expires. Use when you need to specify a date range. Provide the start of the range in the `beginningCardIssueDate` property.
- **`items[].subscriber.endPlanIssueDate`** (`string`): The date the subscriber's insurance plan ends. Use when you need to specify a date range. Provide the start of the range in the `beginningPlanIssueDate` property.
- **`items[].subscriber.firstName`** (`string`): The patient's first name.
- **`items[].subscriber.gender`** (`string`)
  - Allowed values: `M`, `F`
- **`items[].subscriber.groupNumber`** (`string`): The group number associated with the subscriber's insurance policy.
- **`items[].subscriber.healthCareCodeInformation`** (`array of HealthCareInformation objects`): Information about the subscriber's health care diagnosis. You can include up to eight entries in this array. 

The first array entry must have `diagnosisTypeCode` set to `ABK`. All subsequent entries must have `diagnosisTypeCode` set to `ABF`.
- **`items[].subscriber.healthCareCodeInformation[].diagnosisCode`** (`string`) (required): The diagnosis code. Omit the decimal points in diagnosis codes - the decimal point is assumed.
- **`items[].subscriber.healthCareCodeInformation[].diagnosisTypeCode`** (`string`) (required): The type of diagnosis code you are providing. You can set to `BK` - International Classification of Diseases Clinical Modification (ICD-9-CM) Principal Diagnosis, `ABK` - International Classification of Diseases Clinical Modification (ICD-10-CM) Principal Diagnosis, `BF`- International Classification of Diseases Clinical Modification (ICD-9-CM) Diagnosis, or `ABF`- International Classification of Diseases Clinical Modification (ICD-10-CM) Diagnosis. 

 Note that ICD-9 codes are **deprecated** and should no longer be used in eligibility checks.
  - Allowed values: `BK`, `ABK`, `BF`, `ABF`
- **`items[].subscriber.idCard`** (`string`): The subscriber's identification card number. Include this property when this number is different than the subscriber's member ID. This is common in Medicaid.
- **`items[].subscriber.idCardIssueDate`** (`string`): The date the subscriber's insurance card was issued. Use to specify a single date.
- **`items[].subscriber.lastName`** (`string`): The subscriber's last name. **Don't** include the subscriber's name suffix, such as Jr. or III. Use the designated `suffix` property instead.
- **`items[].subscriber.medicaidRecipientIdentificationNumber`** (`string`): The Medicaid Recipient Identification Number. You can provide this number to identify the subscriber when it is the primary number the payer knows a member by (such as for Medicare or Medicaid). Do not supply this value unless it is different from the `memberId`.
- **`items[].subscriber.memberId`** (`string`): The member ID for the subscriber's insurance policy.
- **`items[].subscriber.middleName`** (`string`): The patient's middle name or middle initial.
- **`items[].subscriber.planIssueDate`** (`string`): The date the subscriber's insurance plan begins. Use to specify a single date.
- **`items[].subscriber.providerCode`** (`string`): Use this for providers that are not requesting the eligibility check - the requestor is specified in the `provider` object. For example, if you are a hospital making an eligibility request, this is where you would specify information about a referring provider's role. 

 This property is **required** when the `providerIdentifier` and `referenceIdentificationQualifier` properties are populated. 

 You can use one of the following: `AD` - Admitting, `AT` - Attending, `BI` - Billing, `CO` - Consulting, `CV` - Covering, `H` - Hospital, `HH` - Home Health Care, `LA` - Laboratory, `OT` - Other Physician, `P1` - Pharmacist, `P2` - Pharmacy, `PC` - Primary Care Physician, `PE` - Performing, `R` - Rural Health Clinic, `RF` - Referring, `SB` - Submitting, `SK` - Skilled Nursing Facility, `SU` - Supervising
  - Allowed values: `AD`, `AT`, `BI`, `CO`, `CV`, `H`, `HH`, `LA`, `OT`, `P1`, `P2`, `PC`, `PE`, `R`, `RF`, `SK`, `SU`
- **`items[].subscriber.providerIdentifier`** (`string`): The provider identifier you specified in the `referenceIdentificationQualifier` property. It is **required** if you set the `referenceIdentificationQualifier`. For example, this property could contain the provider's National Provider ID or Federal Taxpayer Identification number.

 If you set the `referenceIdentificationQualifier` to `PXC`, then this property should contain the provider's taxonomy code.
- **`items[].subscriber.referenceIdentificationQualifier`** (`string`): Use this for providers that are not requesting the eligibility check. This is the type of `providerIdentifier` you are providing.
- Set to `HPI` when the National Provider ID is mandated for use.
- Set to `PXC` if you're identifying a type of specialty associated with services provided to the subscriber. 
 
 Otherwise, you can set to the following: `9K` - Servicer, `D3` - National Council for Prescription Drug Programs Pharmacy Number, `EI` - Employer's Identification Number, `HPI` - Centers for Medicare and Medicaid Services National Provider Identifier, `PXC` - Health Care Provider Taxonomy Code, `SY - Social Security Number, `TJ` - Federal Taxpayer's Identification Number
  - Allowed values: `9K`, `D3`, `EI`, `HPI`, `PXC`, `SY`, `TJ`
- **`items[].subscriber.spendDownAmount`** (`string`): Identify the dollar amount the subscriber will apply toward their spend down amount, if required. For some Medicaid programs, individuals must pay a certain amount towards their healthcare cost (spend down) before coverage starts.
- **`items[].subscriber.spendDownTotalBilledAmount`** (`string`): The subscriber's spend down total billed amount.
- **`items[].subscriber.ssn`** (`string`): The subscriber's Social Security Number (SSN). Many commercial and government payers ignore this property due to concerns about member privacy. However, some Medicaid programs support alternative searches using the patient's Social Security Number, instead of the member ID.
- **`items[].subscriber.suffix`** (`string`): The name suffix, such as Jr., Sr., or III. Only include the subscriber's personal name suffix - **don't** include professional or academic titles, such as M.D. or MBA.
- **`items[].tradingPartnerName`** (`string`): The payer's name, such as Cigna or Aetna.
- **`items[].tradingPartnerServiceId`** (`string`) (required): The payer ID. Visit the [Payer Network](https://www.stedi.com/healthcare/network) for a complete list.
 - You can send requests using the primary payer ID, the Stedi payer ID, or any alias listed in the payer record.
 - You must include leading `0` characters - payer IDs are alphanumeric strings and must be treated as complete strings, not integers. For example, use `00540` for SISCO, not `540`.
- **`maxRetryHours`** (`integer`): The maximum number of hours that Stedi will retry eligibility checks in this batch that fail due to [payer connectivity issues](https://www.stedi.com/docs/healthcare/eligibility-troubleshooting#payer-connectivity-issues). Must be an integer between 8 and 24 hours. If not specified, the default is 8 hours.
- **`name`** (`string`): The name that Stedi will use when displaying this batch on the [Eligibility check batches page](https://portal.stedi.com/app/healthcare/checks/batch). It must be unique within your Stedi account. If you don't specify a name, Stedi sets this property to the autogenerated `batchId` returned in the response.

**Example:**

```json
{
  "items": [
    {
      "encounter": {
        "serviceTypeCodes": [
          "MH"
        ]
      },
      "provider": {
        "npi": "1234567891",
        "organizationName": "ACME Health Services"
      },
      "submitterTransactionIdentifier": "ABC123456789",
      "subscriber": {
        "dateOfBirth": "19750101",
        "firstName": "Jane",
        "lastName": "Doe",
        "memberId": "1234567890"
      },
      "tradingPartnerServiceId": "AHS"
    },
    {
      "encounter": {
        "serviceTypeCodes": [
          "78"
        ]
      },
      "provider": {
        "npi": "1234567891",
        "organizationName": "ACME Health Services"
      },
      "submitterTransactionIdentifier": "DEF123456799",
      "subscriber": {
        "dateOfBirth": "19750101",
        "firstName": "John",
        "lastName": "Doe",
        "memberId": "1234567892"
      },
      "tradingPartnerServiceId": "AHS"
    }
  ],
  "name": "march-2024-eligibility-batch"
}
```

### Responses

#### 200

BatchEligibilityChecks 200 response

**Schema:** `BatchEligibilityChecksResponseContent`

**Properties:**

- **`batchId`** (`string`) (required): An identifier for this batch of eligibility checks. You can use this identifier to retrieve the results of this batch using the [Poll Batch Eligibility Checks](https://www.stedi.com/docs/healthcare/api-reference/get-healthcare-polling-eligibility) endpoint.
- **`submittedAt`** (`string`) (required): The date and time that the batch of eligibility checks was submitted to Stedi for processing.

**Example:**

```json
{
  "batchId": "01928d19-df25-76c0-8d51-f5351260fa05",
  "submittedAt": "2023-11-07T05:31:56Z"
}
```

#### 400

ValidationException 400 response

**Schema:** `ValidationExceptionResponseContent`

**Properties:**

- **`fieldList`** (`array of ValidationExceptionField objects`): A list of specific failures encountered while validating the input.
A member can appear in this list more than once if it failed to satisfy multiple constraints.
- **`fieldList[].message`** (`string`) (required): A detailed description of the validation failure.
- **`fieldList[].path`** (`string`) (required): A JSONPointer expression to the structure member whose value failed to satisfy the modeled constraints.
- **`message`** (`string`) (required): A summary of the validation failure.
#### 401

UnauthorizedException 401 response

**Schema:** `UnauthorizedExceptionResponseContent`

**Properties:**

- **`code`** (`string`): Error classification code
- **`message`** (`string`) (required): Human-readable error message
#### 403

AccessDeniedException 403 response

**Schema:** `AccessDeniedExceptionResponseContent`

**Properties:**

- **`code`** (`string`): Error classification code
- **`message`** (`string`) (required): Human-readable error message
#### 404

ResourceNotFoundException 404 response

**Schema:** `ResourceNotFoundExceptionResponseContent`

**Properties:**

- **`code`** (`string`): Error classification code
- **`message`** (`string`) (required): Human-readable error message
#### 409

ResourceConflictException 409 response

**Schema:** `ResourceConflictExceptionResponseContent`

**Properties:**

- **`code`** (`string`): Error classification code
- **`message`** (`string`) (required): Human-readable error message
#### 500

InternalFailureException 500 response

**Schema:** `InternalFailureExceptionResponseContent`

**Properties:**

- **`code`** (`string`): Error classification code
- **`message`** (`string`) (required): Human-readable error message


# Real-Time Claim Status (276/277) Raw X12
Source: https://www.stedi.com/docs/healthcare/api-reference/post-healthcare-claim-status-raw-x12


You may need to submit a 276 real-time claim status request when you don't receive a 277CA or 835 ERA response from the payer within your expected timeframe. This endpoint is ideal if you have an existing system that generates X12 EDI files and you want to send them through Stedi.

1. Call this endpoint with a payload in [276 X12 EDI format](https://portal.stedi.com/app/guides/view/hipaa/claim-status-request-x212/01GRYB6A4XEJQ61Y2K2KT606E5).
   * The request must be for a production claim that has entered the payer's processing system. Requests for test claims or claims that the payer hasn't yet accepted won't return results.
   * Providing too much information can negatively affect the results. You should start with our [recommended base request](/healthcare/check-claim-status#x12-base-request).
2. Stedi validates the EDI and sends the transaction to the payer.
3. The endpoint returns a synchronous 277 claim status response from the payer in JSON format. The response contains information about the claims matching the criteria you provided in the request and their current status.

The response may contain information about more than one claim, if the payer has multiple claims on file that match the information you provided.

## API Specification

Submit a 276/277 real-time claim status check in raw X12 EDI format

**Endpoint:** `POST /change/medicalnetwork/claimstatus/v2/raw-x12`

**Base URL:** `https://healthcare.us.stedi.com/2024-04-01`

### Request Body

**Schema:** `ClaimStatusRawX12RequestContent`

**Properties:**

- **`x12`** (`string`) (required)

**Example:**

```json
{
  "x12": "ISA*00*          *00*          *ZZ*SENDER         *ZZ*RECEIVER       *250916*2048*^*00501*000000001*0*T*>~GS*HR*SENDERGS*RECEIVERGS*20250916*204811*1*X*005010X212~ST*276*0001*005010X212~BHT*0010*13*ABC276XXX*20250915*1425~HL*1**20*1~NM1*PR*2*UNITEDHEALTHCARE*****PI*87726~HL*2*1*21*1~NM1*41*2*PROVIDER NAME*****46*123456789~HL*3*2*19*1~NM1*1P*2*PROVIDER NAME*****XX*1999999984~HL*4*3*22*0~DMG*D8*19710101~NM1*IL*1*DOE*JANE****MI*UHC123456~TRN*1*123456789~DTP*472*RD8*20250630-20250702~SE*14*0001~GE*1*1~IEA*1*000000001~"
}
```

### Responses

#### 200

ClaimStatusRawX12 200 response

**Schema:** `ClaimStatusRawX12ResponseContent`

**Properties:**

- **`claims`** (`array of Claim objects`): The status information for the claim referenced in the original claim status request.

The payer may return multiple claims in the response if they have more than one claim on file that matches the information you provided.
- **`claims[].claimStatus`** (`object`): The status, required action, and paid information of a claim or service line.
- **`claims[].claimStatus.amountPaid`** (`string`): The total amount paid for the claim. May be zero when no payment is being made. Some payers can provide the adjudicated payment amount before they issue the remittance.
- **`claims[].claimStatus.checkIssueDate`** (`string`): The date the payer issued the check for payment. This may also contain a non-payment remittance advice date, if available from the payer.

This value is returned in ISO 8601 date format (YYYY-MM-DD). For example: 2026-03-04.
- **`claims[].claimStatus.checkNumber`** (`string`): The check identification number or electronic funds transfer (EFT) trace number. This number is used to track the payment. This may also contain a non-payment remittance advice Trace Number (835 or paper), if available from the payer.
- **`claims[].claimStatus.claimServiceDate`** (`string`): Either a single date (formatted as `YYYYMMDD`) or a range of dates (formatted as `YYYYMMDD-YYYYMMDD`) identifying the period of service related to the claim. This property is derived from the service level dates.
- **`claims[].claimStatus.clearingHouseClaimNumber`** (`string`): The claim number provided by the clearinghouse.
- **`claims[].claimStatus.effectiveDate`** (`string`): The date the claim was placed in this status by the payer's adjudication process.

This value is returned in ISO 8601 date format (YYYY-MM-DD). For example: 2026-03-04.
- **`claims[].claimStatus.entity`** (`string`): Entity descriptions corresponding to Entity Identifier codes.
  - Allowed values: `Health Maintenance Organization (HMO)`, `Oncology Center`, `Kidney Dialysis Unit`, `Preferred Provider Organization (PPO)`, `Acute Care Hospital`, `Provider`, `Military Facility`, `University, College or School`, `Outpatient Surgicenter`, `Physician, Clinic or Group Practice`, `Long Term Care Facility`, `Extended Care Facility`, `Psychiatric Health Facility`, `Laboratory`, `Retail Pharmacy`, `Home Health Care`, `Federal, State, County or City Facility`, `Third-Party Administrator`, `Miscellaneous Health Care Facility`, `Non-Health Care Miscellaneous Facility`, `Church Operated Facility`, `Partnership`, `Public Health Service Facility`, `Veterans Administration Facility`, `Public Health Service Indian Service Facility`, `Hospital Unit of an Institution (prison hospital, college infirmary, etc.)`, `Dependent`, `Hospital Unit Within an Institution for the Mentally Retarded`, `Tuberculosis and Other Respiratory Diseases Facility`, `Obstetrics and Gynecology Facility`, `Eye, Ear, Nose and Throat Facility`, `Rehabilitation Facility`, `Orthopedic Facility`, `Chronic Disease Facility`, `Other Specialty Facility`, `Children's General Facility`, `Children's Hospital Unit of an Institution`, `Children's Psychiatric Facility`, `Children's Tuberculosis and Other Respiratory Diseases Facility`, `Children's Eye, Ear, Nose and Throat Facility`, `Children's Rehabilitation Facility`, `Children's Orthopedic Facility`, `Children's Chronic Disease Facility`, `Children's Other Specialty Facility`, `Institution for Mental Retardation`, `Alcoholism and Other Chemical Dependency Facility`, `General Inpatient Care for AIDS/ARC Facility`, `AIDS/ARC Unit`, `Specialized Outpatient Program for AIDS/ARC`, `Alcohol/Drug Abuse or Dependency Inpatient Unit`, `Alcohol/Drug Abuse or Dependency Outpatient Services`, `Arthritis Treatment Center`, `Birthing Room/LDRP Room`, `Burn Care Unit`, `Cardiac Catherization Laboratory`, `Open-Heart Surgery Facility`, `Cardiac Intensive Care Unit`, `Angioplasty Facility`, `Chronic Obstructive Pulmonary Disease Service Facility`, `Emergency Department`, `Trauma Center (Certified)`, `Extracorporeal Shock-Wave Lithotripter (ESWL) Unit`, `Genetic Counseling/Screening Services`, `Adult Day Care Program Facility`, `Alzheimer's Diagnostic/Assessment Services`, `Comprehensive Geriatric Assessment Facility`, `Emergency Response (Geriatric) Unit`, `Geriatric Acute Care Unit`, `Geriatric Clinics`, `Respite Care Facility`, `Patient Education Unit`, `Community Health Promotion Facility`, `Worksite Health Promotion Facility`, `Hemodialysis Facility`, `Home Health Services`, `Hospice`, `Medical Surgical or Other Intensive Care Unit`, `Histopathology Laboratory`, `Blood Bank`, `Neonatal Intensive Care Unit`, `Obstetrics Unit`, `Occupational Health Services`, `Organized Outpatient Services`, `Pediatric Acute Inpatient Unit`, `Psychiatric Child/Adolescent Services`, `Psychiatric Consultation-Liaison Services`, `Psychiatric Education Services`, `Psychiatric Emergency Services`, `Psychiatric Geriatric Services`, `Psychiatric Inpatient Unit`, `Psychiatric Outpatient Services`, `Psychiatric Partial Hospitalization Program`, `Megavoltage Radiation Therapy Unit`, `Radioactive Implants Unit`, `Therapeutic Radioisotope Facility`, `X-Ray Radiation Therapy Unit`, `CT Scanner Unit`, `Diagnostic Radioisotope Facility`, `Magnetic Resonance Imaging (MRI) Facility`, `Ultrasound Unit`, `Rehabilitation Inpatient Unit`, `Rehabilitation Outpatient Services`, `Reproductive Health Services`, `Skilled Nursing or Other Long-Term Care Unit`, `Single Photon Emission Computerized Tomography (SPECT) Unit`, `Organized Social Work Service Facility`, `Outpatient Social Work Services`, `Emergency Department Social Work Services`, `Sports Medicine Clinic/Services`, `Hospital Auxiliary Unit`, `Patient Representative Services`, `Volunteer Services Department`, `Outpatient Surgery Services`, `Organ/Tissue Transplant Unit`, `Orthopedic Surgery Facility`, `Occupational Therapy Services`, `Physical Therapy Services`, `Recreational Therapy Services`, `Respiratory Therapy Services`, `Speech Therapy Services`, `Women's Health Center/Services`, `Cardiac Rehabilitation Program Facility`, `Non-Invasive Cardiac Assessment Services`, `Emergency Medical Technician`, `Disciplinary Contact`, `Case Manager`, `Place of Occurrence`, `Contracted Service Provider`, `Consultant's Office`, `Subcontractor`, `Service Supplier`, `Employer`, `Receiver`, `Claimant Authorized Representative`, `Data Processing Service Bureau`, `Performed At`, `Attending Physician`, `Operating Physician`, `Other Physician`, `Corrected Insured`, `Service Location`, `Hospital`, `Rendering Provider`, `Subscriber's Employer`, `Billing Provider`, `Pay-to Provider`, `Research Institute`, `Pharmacist`, `Admitting Surgeon`, `Commercial Insurer`, `Assistant Surgeon`, `Consulting Physician`, `Ordering Physician`, `Referring Provider`, `Dependent Name`, `Supervising Physician`, `Person or Other Entity Legally Responsible for a Child`, `Person or Other Entity With Whom a Child Resides`, `Previous Employer`, `Participating Laboratory`, `Facility`, `Physical Address`, `Mail Address`, `Dependent Insured`, `Clinic`, `Other Insured`, `Guardian`, `Paramedic`, `Paramedical Company`, `Previous Insured`, `Spouse Insured`, `Treatment Facility`, `Healthcare Professional Shortage Area (HPSA) Facility`, `Home Health Agency`, `Independent Physicians Association (IPA)`, `Injection Point`, `Insured or Subscriber`, `Insurer`, `Independent Lab`, `Legal Representative`, `Medical Insurance Carrier`, `Mammography Screening Center`, `Ordered By`, `Doctor of Optometry`, `Oxygen Therapy Facility`, `Patient Facility`, `Primary Insured or Subscriber`, `Primary Care Provider`, `Prior Insurance Carrier`, `Third Party Reviewing Preferred Provider Organization (PPO)`, `Third Party Repricing Preferred Provider Organization (PPO)`, `Primary Payer`, `Party to Receive Test Report`, `Party performing certification`, `Pickup Address`, `Pharmacy`, `Purchase Service Provider`, `Patient`, `Responsible Party`, `Policyholder`, `Physician`, `Managed Care`, `Chiropractor`, `Dentist`, `Doctor of Osteopathy`, `Podiatrist`, `Group Practice`, `Medical Doctor`, `Receiving Location`, `Rural Health Clinic`, `Skilled Nursing Facility`, `Secondary Payer`, `Service Provider`, `Supplier/Manufacturer`, `Transfer Point`, `Testing Laboratory`, `Third Party Reviewing Organization (TPO)`, `Transfer To`, `Tertiary Payer`, `Third Party Repricing Organization (TPO)`, `Nursing Home`, `Utilization Management Organization`, `Spouse`, `Durable Medical Equipment Supplier`, `Mutually Defined`
- **`claims[].claimStatus.entityCode`** (`string`): Entity Identifier codes used to identify organizational entities, physical locations, properties, or individuals.
  - Allowed values: `1E`, `1G`, `1H`, `1I`, `1O`, `1P`, `1Q`, `1R`, `1S`, `1T`, `1U`, `1V`, `1W`, `1X`, `1Y`, `1Z`, `2A`, `2B`, `2D`, `2E`, `2I`, `2K`, `2P`, `2Q`, `2S`, `2Z`, `03`, `3A`, `3C`, `3D`, `3E`, `3F`, `3G`, `3H`, `3I`, `3J`, `3K`, `3L`, `3M`, `3N`, `3O`, `3P`, `3Q`, `3R`, `3S`, `3T`, `3U`, `3V`, `3W`, `3X`, `3Y`, `3Z`, `4A`, `4B`, `4C`, `4D`, `4E`, `4F`, `4G`, `4H`, `4I`, `4J`, `4L`, `4M`, `4N`, `4O`, `4P`, `4Q`, `4R`, `4S`, `4U`, `4V`, `4W`, `4X`, `4Y`, `4Z`, `5A`, `5B`, `5C`, `5D`, `5E`, `5F`, `5G`, `5H`, `5I`, `5J`, `5K`, `5L`, `5M`, `5N`, `5O`, `5P`, `5Q`, `5R`, `5S`, `5T`, `5U`, `5V`, `5W`, `5X`, `5Y`, `5Z`, `6A`, `6B`, `6C`, `6D`, `6E`, `6F`, `6G`, `6H`, `6I`, `6J`, `6K`, `6L`, `6M`, `6N`, `6O`, `6P`, `6Q`, `6R`, `6S`, `6U`, `6V`, `6W`, `6X`, `6Y`, `7C`, `13`, `17`, `28`, `30`, `36`, `40`, `43`, `44`, `61`, `71`, `72`, `73`, `74`, `77`, `80`, `82`, `84`, `85`, `87`, `95`, `CK`, `CZ`, `D2`, `DD`, `DJ`, `DK`, `DN`, `DO`, `DQ`, `E1`, `E2`, `E7`, `E9`, `FA`, `FD`, `FE`, `G0`, `G3`, `GB`, `GD`, `GI`, `GJ`, `GK`, `GM`, `GY`, `HF`, `HH`, `I3`, `IJ`, `IL`, `IN`, `LI`, `LR`, `MR`, `MSC`, `OB`, `OD`, `OX`, `P0`, `P2`, `P3`, `P4`, `P6`, `P7`, `PRP`, `PT`, `PV`, `PW`, `QA`, `QB`, `QC`, `QD`, `QE`, `QH`, `QK`, `QL`, `QN`, `QO`, `QS`, `QV`, `QY`, `RC`, `RW`, `S4`, `SEP`, `SJ`, `SU`, `T4`, `TL`, `TQ`, `TT`, `TTP`, `TU`, `UH`, `X3`, `X4`, `X5`, `ZZ`
- **`claims[].claimStatus.paidDate`** (`string`): This is the date of denial or approval for the claim. This date may or may not be the same as the issue date of the check, EFT, or non-payment remittance. Some payers can provide this date before they issue the remittance.

This value is returned in ISO 8601 date format (YYYY-MM-DD). For example: 2026-03-04.
- **`claims[].claimStatus.patientAccountNumber`** (`string`): The patient account number provided by the service provider in the original claim. You can use this value to correlate the claim status response to the original claim.
- **`claims[].claimStatus.statusCategoryCode`** (`string`): The status category code. Visit [Claim Status Category Codes](https://x12.org/codes/claim-status-category-codes) in the official X12 documentation for a complete list.
- **`claims[].claimStatus.statusCategoryCodeValue`** (`string`): The description of the `statusCategoryCode`.
- **`claims[].claimStatus.statusCode`** (`string`): The status code used to identify the status of an entire claim or a service line. For example, `20` - Accepted for Processing. 

This is either a Health Care Claim Status Code or a National Council for Prescription Drug Programs (NCPDP) Reject/Payment Code, when the status is related to pharmacy claims.

 Visit [Claim Status Codes]([Health Care Claim Status Code](https://x12.org/codes/claim-status-codes) in the official X12 documentation or the [NCPDP website](https://ncpdp.org/) for a complete list of codes and their values.
- **`claims[].claimStatus.statusCodeValue`** (`string`): The description of the `statusCode`.
- **`claims[].claimStatus.submittedAmount`** (`string`): The total charges submitted for the claim. The total claim charge may change from the submitted claim total charge based on claims processing instructions, such as claim splitting. Some payers may not store the original submitted charge. Some HMO encounters supply zero as the amount of original charges.
- **`claims[].claimStatus.trackingNumber`** (`string`): This is the trace or reference number of the original claim status request.
- **`claims[].claimStatus.tradingPartnerClaimNumber`** (`string`): An identifier for the claim, assigned by the payer.
- **`claims[].serviceDetails`** (`array of ServiceDetail objects`): Information about specific service lines and their status. Payers may not return service line details for all claims, even when you requested them.
- **`claims[].serviceDetails[].service`** (`object`): Information about a service line listed in the referenced claim.
- **`claims[].serviceDetails[].service.amountPaid`** (`string`): The amount paid for the service line, expressed as a decimal. For example, `100.00`.
- **`claims[].serviceDetails[].service.procedureId`** (`string`): Identifying number for product or service.
- **`claims[].serviceDetails[].service.procedureModifiers`** (`array of strings`): Procedure modifier codes that provide additional information about the service performed.
- **`claims[].serviceDetails[].service.revenueCode`** (`string`): The National Uniform Billing Committee revenue code.
- **`claims[].serviceDetails[].service.serviceIdQualifier`** (`string`): The definition of the `serviceIdQualifierCode`. For example, `American Dental Association Codes`.
- **`claims[].serviceDetails[].service.serviceIdQualifierCode`** (`string`): A code identifying the type/source of the `procedureId`. Visit [Claims code lists](https://www.stedi.com/docs/healthcare/claims-code-lists#product-or-service-id-qualifier) for a complete list.
  - Allowed values: `AD`, `ER`, `HC`, `HP`, `IV`, `N4`, `NU`, `WK`
- **`claims[].serviceDetails[].service.submittedAmount`** (`string`): The amount submitted for the service line, expressed as a decimal. For example, `100.00`. This is the line item total on the current claim service status.
- **`claims[].serviceDetails[].service.submittedUnits`** (`string`): The number of units of service submitted.
- **`claims[].serviceDetails[].status`** (`array of Status objects`): Information about the status, required action, and paid information of a service line.
- **`claims[].serviceDetails[].status[].effectiveDate`** (`string`): The date the service line was placed in this status by the payer's adjudication process.

This value is returned in ISO 8601 date format (YYYY-MM-DD). For example: 2026-03-04.
- **`claims[].serviceDetails[].status[].entity`** (`string`): Entity descriptions corresponding to Entity Identifier codes.
  - Allowed values: `Health Maintenance Organization (HMO)`, `Oncology Center`, `Kidney Dialysis Unit`, `Preferred Provider Organization (PPO)`, `Acute Care Hospital`, `Provider`, `Military Facility`, `University, College or School`, `Outpatient Surgicenter`, `Physician, Clinic or Group Practice`, `Long Term Care Facility`, `Extended Care Facility`, `Psychiatric Health Facility`, `Laboratory`, `Retail Pharmacy`, `Home Health Care`, `Federal, State, County or City Facility`, `Third-Party Administrator`, `Miscellaneous Health Care Facility`, `Non-Health Care Miscellaneous Facility`, `Church Operated Facility`, `Partnership`, `Public Health Service Facility`, `Veterans Administration Facility`, `Public Health Service Indian Service Facility`, `Hospital Unit of an Institution (prison hospital, college infirmary, etc.)`, `Dependent`, `Hospital Unit Within an Institution for the Mentally Retarded`, `Tuberculosis and Other Respiratory Diseases Facility`, `Obstetrics and Gynecology Facility`, `Eye, Ear, Nose and Throat Facility`, `Rehabilitation Facility`, `Orthopedic Facility`, `Chronic Disease Facility`, `Other Specialty Facility`, `Children's General Facility`, `Children's Hospital Unit of an Institution`, `Children's Psychiatric Facility`, `Children's Tuberculosis and Other Respiratory Diseases Facility`, `Children's Eye, Ear, Nose and Throat Facility`, `Children's Rehabilitation Facility`, `Children's Orthopedic Facility`, `Children's Chronic Disease Facility`, `Children's Other Specialty Facility`, `Institution for Mental Retardation`, `Alcoholism and Other Chemical Dependency Facility`, `General Inpatient Care for AIDS/ARC Facility`, `AIDS/ARC Unit`, `Specialized Outpatient Program for AIDS/ARC`, `Alcohol/Drug Abuse or Dependency Inpatient Unit`, `Alcohol/Drug Abuse or Dependency Outpatient Services`, `Arthritis Treatment Center`, `Birthing Room/LDRP Room`, `Burn Care Unit`, `Cardiac Catherization Laboratory`, `Open-Heart Surgery Facility`, `Cardiac Intensive Care Unit`, `Angioplasty Facility`, `Chronic Obstructive Pulmonary Disease Service Facility`, `Emergency Department`, `Trauma Center (Certified)`, `Extracorporeal Shock-Wave Lithotripter (ESWL) Unit`, `Genetic Counseling/Screening Services`, `Adult Day Care Program Facility`, `Alzheimer's Diagnostic/Assessment Services`, `Comprehensive Geriatric Assessment Facility`, `Emergency Response (Geriatric) Unit`, `Geriatric Acute Care Unit`, `Geriatric Clinics`, `Respite Care Facility`, `Patient Education Unit`, `Community Health Promotion Facility`, `Worksite Health Promotion Facility`, `Hemodialysis Facility`, `Home Health Services`, `Hospice`, `Medical Surgical or Other Intensive Care Unit`, `Histopathology Laboratory`, `Blood Bank`, `Neonatal Intensive Care Unit`, `Obstetrics Unit`, `Occupational Health Services`, `Organized Outpatient Services`, `Pediatric Acute Inpatient Unit`, `Psychiatric Child/Adolescent Services`, `Psychiatric Consultation-Liaison Services`, `Psychiatric Education Services`, `Psychiatric Emergency Services`, `Psychiatric Geriatric Services`, `Psychiatric Inpatient Unit`, `Psychiatric Outpatient Services`, `Psychiatric Partial Hospitalization Program`, `Megavoltage Radiation Therapy Unit`, `Radioactive Implants Unit`, `Therapeutic Radioisotope Facility`, `X-Ray Radiation Therapy Unit`, `CT Scanner Unit`, `Diagnostic Radioisotope Facility`, `Magnetic Resonance Imaging (MRI) Facility`, `Ultrasound Unit`, `Rehabilitation Inpatient Unit`, `Rehabilitation Outpatient Services`, `Reproductive Health Services`, `Skilled Nursing or Other Long-Term Care Unit`, `Single Photon Emission Computerized Tomography (SPECT) Unit`, `Organized Social Work Service Facility`, `Outpatient Social Work Services`, `Emergency Department Social Work Services`, `Sports Medicine Clinic/Services`, `Hospital Auxiliary Unit`, `Patient Representative Services`, `Volunteer Services Department`, `Outpatient Surgery Services`, `Organ/Tissue Transplant Unit`, `Orthopedic Surgery Facility`, `Occupational Therapy Services`, `Physical Therapy Services`, `Recreational Therapy Services`, `Respiratory Therapy Services`, `Speech Therapy Services`, `Women's Health Center/Services`, `Cardiac Rehabilitation Program Facility`, `Non-Invasive Cardiac Assessment Services`, `Emergency Medical Technician`, `Disciplinary Contact`, `Case Manager`, `Place of Occurrence`, `Contracted Service Provider`, `Consultant's Office`, `Subcontractor`, `Service Supplier`, `Employer`, `Receiver`, `Claimant Authorized Representative`, `Data Processing Service Bureau`, `Performed At`, `Attending Physician`, `Operating Physician`, `Other Physician`, `Corrected Insured`, `Service Location`, `Hospital`, `Rendering Provider`, `Subscriber's Employer`, `Billing Provider`, `Pay-to Provider`, `Research Institute`, `Pharmacist`, `Admitting Surgeon`, `Commercial Insurer`, `Assistant Surgeon`, `Consulting Physician`, `Ordering Physician`, `Referring Provider`, `Dependent Name`, `Supervising Physician`, `Person or Other Entity Legally Responsible for a Child`, `Person or Other Entity With Whom a Child Resides`, `Previous Employer`, `Participating Laboratory`, `Facility`, `Physical Address`, `Mail Address`, `Dependent Insured`, `Clinic`, `Other Insured`, `Guardian`, `Paramedic`, `Paramedical Company`, `Previous Insured`, `Spouse Insured`, `Treatment Facility`, `Healthcare Professional Shortage Area (HPSA) Facility`, `Home Health Agency`, `Independent Physicians Association (IPA)`, `Injection Point`, `Insured or Subscriber`, `Insurer`, `Independent Lab`, `Legal Representative`, `Medical Insurance Carrier`, `Mammography Screening Center`, `Ordered By`, `Doctor of Optometry`, `Oxygen Therapy Facility`, `Patient Facility`, `Primary Insured or Subscriber`, `Primary Care Provider`, `Prior Insurance Carrier`, `Third Party Reviewing Preferred Provider Organization (PPO)`, `Third Party Repricing Preferred Provider Organization (PPO)`, `Primary Payer`, `Party to Receive Test Report`, `Party performing certification`, `Pickup Address`, `Pharmacy`, `Purchase Service Provider`, `Patient`, `Responsible Party`, `Policyholder`, `Physician`, `Managed Care`, `Chiropractor`, `Dentist`, `Doctor of Osteopathy`, `Podiatrist`, `Group Practice`, `Medical Doctor`, `Receiving Location`, `Rural Health Clinic`, `Skilled Nursing Facility`, `Secondary Payer`, `Service Provider`, `Supplier/Manufacturer`, `Transfer Point`, `Testing Laboratory`, `Third Party Reviewing Organization (TPO)`, `Transfer To`, `Tertiary Payer`, `Third Party Repricing Organization (TPO)`, `Nursing Home`, `Utilization Management Organization`, `Spouse`, `Durable Medical Equipment Supplier`, `Mutually Defined`
- **`claims[].serviceDetails[].status[].entityCode`** (`string`): Entity Identifier codes used to identify organizational entities, physical locations, properties, or individuals.
  - Allowed values: `1E`, `1G`, `1H`, `1I`, `1O`, `1P`, `1Q`, `1R`, `1S`, `1T`, `1U`, `1V`, `1W`, `1X`, `1Y`, `1Z`, `2A`, `2B`, `2D`, `2E`, `2I`, `2K`, `2P`, `2Q`, `2S`, `2Z`, `03`, `3A`, `3C`, `3D`, `3E`, `3F`, `3G`, `3H`, `3I`, `3J`, `3K`, `3L`, `3M`, `3N`, `3O`, `3P`, `3Q`, `3R`, `3S`, `3T`, `3U`, `3V`, `3W`, `3X`, `3Y`, `3Z`, `4A`, `4B`, `4C`, `4D`, `4E`, `4F`, `4G`, `4H`, `4I`, `4J`, `4L`, `4M`, `4N`, `4O`, `4P`, `4Q`, `4R`, `4S`, `4U`, `4V`, `4W`, `4X`, `4Y`, `4Z`, `5A`, `5B`, `5C`, `5D`, `5E`, `5F`, `5G`, `5H`, `5I`, `5J`, `5K`, `5L`, `5M`, `5N`, `5O`, `5P`, `5Q`, `5R`, `5S`, `5T`, `5U`, `5V`, `5W`, `5X`, `5Y`, `5Z`, `6A`, `6B`, `6C`, `6D`, `6E`, `6F`, `6G`, `6H`, `6I`, `6J`, `6K`, `6L`, `6M`, `6N`, `6O`, `6P`, `6Q`, `6R`, `6S`, `6U`, `6V`, `6W`, `6X`, `6Y`, `7C`, `13`, `17`, `28`, `30`, `36`, `40`, `43`, `44`, `61`, `71`, `72`, `73`, `74`, `77`, `80`, `82`, `84`, `85`, `87`, `95`, `CK`, `CZ`, `D2`, `DD`, `DJ`, `DK`, `DN`, `DO`, `DQ`, `E1`, `E2`, `E7`, `E9`, `FA`, `FD`, `FE`, `G0`, `G3`, `GB`, `GD`, `GI`, `GJ`, `GK`, `GM`, `GY`, `HF`, `HH`, `I3`, `IJ`, `IL`, `IN`, `LI`, `LR`, `MR`, `MSC`, `OB`, `OD`, `OX`, `P0`, `P2`, `P3`, `P4`, `P6`, `P7`, `PRP`, `PT`, `PV`, `PW`, `QA`, `QB`, `QC`, `QD`, `QE`, `QH`, `QK`, `QL`, `QN`, `QO`, `QS`, `QV`, `QY`, `RC`, `RW`, `S4`, `SEP`, `SJ`, `SU`, `T4`, `TL`, `TQ`, `TT`, `TTP`, `TU`, `UH`, `X3`, `X4`, `X5`, `ZZ`
- **`claims[].serviceDetails[].status[].statusCategoryCode`** (`string`): The category code for the status. Visit [Claim Status Category Codes](https://x12.org/codes/claim-status-category-codes) in the official X12 documentation for a complete list.
- **`claims[].serviceDetails[].status[].statusCategoryCodeValue`** (`string`): The description of the `statusCategoryCode`.
- **`claims[].serviceDetails[].status[].statusCode`** (`string`): The status code used to identify the status of an entire service line. This is either a [Health Care Claim Status Code](https://x12.org/codes/claim-status-codes) or a National Council for Prescription Drug Programs Reject/Payment Code, when the status is related to pharmacy claims.
- **`claims[].serviceDetails[].status[].statusCodeValue`** (`string`): The description of the `statusCode`.
- **`controlNumber`** (`string`): The control number the payer provided in the claim status response. This is used to identify the transaction.
- **`dependent`** (`object`)
- **`dependent.dateOfBirth`** (`string`): The dependent's date of birth.
- **`dependent.firstName`** (`string`) (required): The dependent's first name as specified on their insurance policy.
- **`dependent.gender`** (`string`): A code indicating the dependent's gender. If the claim set the dependent's gender to `U` for unknown, you should omit this property from the claim status request.
  - Allowed values: `M`, `F`
- **`dependent.groupNumber`** (`string`): The group number associated with the subscriber and dependent's insurance policy.
- **`dependent.lastName`** (`string`) (required): The dependent's last name as specified on their insurance policy.
- **`dependent.suffix`** (`string`): The dependent's name suffix, such as Sr. or III. Only include the dependent's personal name suffix - **don't** include professional or academic titles, such as M.D. or MBA.
- **`errorResponse`** (`object`)
- **`errorResponse.code`** (`string`)
- **`errorResponse.description`** (`string`)
- **`errorResponse.errors`** (`array of ErrorDetail objects`)
- **`errorResponse.errors[].code`** (`string`): The error code.
- **`errorResponse.errors[].description`** (`string`): The description of the error code.
- **`errorResponse.errors[].field`** (`string`): The attribute that caused the error.
- **`errorResponse.errors[].followupAction`** (`string`): Follow-up actions to correct the error.
- **`errorResponse.errors[].location`** (`string`): Where the error occurred within the request syntax. If this is a network or system error, there is no location attribute.
- **`errorResponse.errors[].value`** (`string`): The value that caused the error.
- **`errorResponse.transactionIdentifier`** (`object`)
- **`errorResponse.transactionIdentifier.customerTransactionId`** (`string`)
- **`errorResponse.transactionIdentifier.transactionId`** (`string`)
- **`implementationTransactionSetSyntaxError`** (`string`): The syntax error code in the 999 Implementation Acknowledgment. It indicates the type of error (if present) in the EDI request syntax. Visit `IK502` in the [Implementation Acknowledgment specification](https://portal.stedi.com/app/guides/view/hipaa/implementation-acknowledgment-x231/01HRF41ES1DVGCA6X1EHSRPFXZ#properties.heading.properties.transaction_set_response_header_AK2_loop.items.properties.transaction_set_response_trailer_IK5.properties.implementation_transaction_set_syntax_error_code_02) for a complete list.
- **`meta`** (`object`): Metadata about the response.
- **`meta.applicationMode`** (`string`): Identifies where this request can be found for support.
- **`meta.billerId`** (`string`): The biller ID assigned to this request.
- **`meta.senderId`** (`string`): The sender ID assigned to this request.
- **`meta.submitterId`** (`string`): The submitter ID assigned to this request.
- **`meta.traceId`** (`string`): The unique ID assigned to this request within Stedi.
- **`payer`** (`object`): Information about the payer listed in the referenced claim.
- **`payer.centersForMedicareAndMedicaidServicePlanId`** (`string`): The payer's Health Plan ID (HPID) or Other Entity Identifier (OEID).
- **`payer.contactInformation`** (`object`)
- **`payer.contactInformation.electronicDataInterChangeAccessNumber`** (`string`): The payer's Electronic Data Interchange Access number.
- **`payer.contactInformation.email`** (`string`): The payer's email address.
- **`payer.contactInformation.fax`** (`string`): The payer's fax number, without separators. For example, `5551123345` for `555-112-3345`
- **`payer.contactInformation.name`** (`string`): The payer contact name.
- **`payer.contactInformation.phone`** (`string`): The payer's telephone number. Phone numbers are formatted as AAABBBCCCC, where AAA represents the area code, BBB represents the telephone number prefix, and CCCC represents the telephone number. Phone numbers are provided without separators, such as dashes or parentheses. For example, `5551123345` for `555-112-3345`.
- **`payer.contactInformation.phoneExtension`** (`string`): The payer's telephone extension.
- **`payer.organizationName`** (`string`): The payer's organization name. For example `UNITEDHEALTHCARE`.
- **`payer.payerIdentification`** (`string`): The payer's identification number. This is the `tradingPartnerServiceId`.
- **`providers`** (`array of StatusResponseProvider objects`): Information about the billing and/or service providers related to the referenced claim.
- **`providers[].etin`** (`string`): The Electronic Transmitter Identification Number (ETIN).
- **`providers[].firstName`** (`string`): The provider's first name.
- **`providers[].lastName`** (`string`): The provider's last name.
- **`providers[].npi`** (`string`): The [National Provider Identification (NPI)](https://www.stedi.com/docs/healthcare/national-provider-identifier) number.
- **`providers[].organizationName`** (`string`): The provider's organization name.
- **`providers[].providerType`** (`string`) (required): Identifies the type of provider related to the referenced healthcare claim.
  - Allowed values: `BillingProvider`, `ServiceProvider`
- **`providers[].spn`** (`string`): The service provider number.
- **`providers[].taxId`** (`string`): The Taxpayer Identification Number (TIN).
- **`providers[].tin`** (`string`)
- **`reassociationKey`** (`string`): The control number for the transaction.
- **`status`** (`string`): The status of the entire claim.
- **`subscriber`** (`object`): Information about the subscriber listed in the referenced claim.
- You must set both the `dateOfBirth` and `gender` properties when the subscriber is the patient unless the gender is unknown. Stedi determines that the subscriber is the patient when the `dependent` object is not included in the request.
- If either `dateOfBirth` or `gender` is set, you must include both properties unless the gender is unknown.
- **`subscriber.dateOfBirth`** (`string`): The subscriber's date of birth.
- **`subscriber.firstName`** (`string`) (required): The subscriber's first name as specified on their policy.
- **`subscriber.gender`** (`string`): A code indicating the subscriber's gender. If the claim set the subscriber's gender to `U` for unknown, you should omit this property from the claim status request.
  - Allowed values: `M`, `F`
- **`subscriber.groupNumber`** (`string`): The group number associated with the subscriber's insurance policy.
- **`subscriber.lastName`** (`string`) (required): The subscriber's last name as specified on their policy. The subscriber can be an individual or a business entity.
- **`subscriber.memberId`** (`string`) (required): The subscriber's insurance member ID. This is the unique identifier for the subscriber on the insurance policy.
- **`subscriber.suffix`** (`string`): The subscriber's name suffix, such as Jr., Sr., or III. Only include the subscriber's personal name suffix - **don't** include professional or academic titles, such as M.D. or MBA.
- **`tradingPartnerServiceId`** (`string`): An ID for the payer you identified in the original claim status request. This value may differ from the `tradingPartnerServiceId` you submitted in the original request because it reflects the payer's internal concept of their ID, not necessarily the ID Stedi uses to route requests to this payer.
- **`transactionSetAcknowledgement`** (`string`): The acknowledgment code in the 999 Implementation Acknowledgment, an EDI file generated by the payer to acknowledge receipt of the claim status request. It indicates whether the claim status request was accepted or rejected due to errors in the EDI request syntax.
- **`warnings`** (`array of Warning objects`): Issues with your claim status request that could affect the results, or information about the response. For example, warnings can help explain why the request was rejected.
- **`warnings[].code`** (`string`): The warning code.
- **`warnings[].description`** (`string`): The warning description.
- **`x12`** (`string`): The raw X12 EDI response, which is either a 277 Status Request Response or a 999 Implementation Acknowledgment. A 999 indicates that the request data failed validation. Common failure reasons are missing required segments and invalid values.

**Example:**

```json
{
  "claims": [
    {
      "claimStatus": {
        "amountPaid": "108.77",
        "checkIssueDate": "2025-07-17",
        "checkNumber": "123456789",
        "claimServiceDate": "20250701",
        "effectiveDate": "2025-07-17",
        "paidDate": "2025-07-15",
        "patientAccountNumber": "12345678",
        "statusCategoryCode": "F1",
        "statusCategoryCodeValue": "Finalized/Payment - The claim/line has been paid.",
        "statusCode": "65",
        "statusCodeValue": "Claim/line has been paid.",
        "submittedAmount": "267.54",
        "trackingNumber": "0123456789",
        "tradingPartnerClaimNumber": "0123456789"
      },
      "serviceDetails": [
        {
          "service": {
            "amountPaid": "108.77",
            "procedureId": "90837",
            "serviceIdQualifier": "Health Care Financing Administration Common Procedural Coding System (HCPCS) Codes",
            "serviceIdQualifierCode": "HC",
            "submittedAmount": "267.54",
            "submittedUnits": "1"
          },
          "status": [
            {
              "effectiveDate": "2025-07-17",
              "statusCategoryCode": "F1",
              "statusCategoryCodeValue": "Finalized/Payment - The claim/line has been paid.",
              "statusCode": "107",
              "statusCodeValue": "Processed according to contract provisions (Contract refers to provisions that exist between the Health Plan and a Provider of Health Care Services)."
            }
          ]
        }
      ]
    }
  ],
  "controlNumber": "123456789",
  "payer": {
    "organizationName": "UNITEDHEALTHCARE",
    "payerIdentification": "87726"
  },
  "providers": [
    {
      "npi": "1999999984",
      "organizationName": "Provider Name",
      "providerType": "BillingProvider"
    }
  ],
  "subscriber": {
    "firstName": "Jane",
    "lastName": "Doe",
    "memberId": "UHC123456"
  },
  "tradingPartnerServiceId": "87726",
  "x12": "ISA*00*          *00*          *ZZ*RECEIVER       *ZZ*SENDER         *250912*1718*^*00501*123456789*0*T*:~GS*HN*RECEIVERGS*SENDERGS*20250912*171842*1*X*005010X212~ST*277*1001*005010X212~BHT*0010*08*0123456789*20250912*171841*DG~HL*1**20*1~NM1*PR*2*UNITEDHEALTHCARE*****PI*87726~HL*2*1*21*1~NM1*41*2*PROVIDER NAME*****46*1234567890~HL*3*2*19*1~NM1*1P*2*PROVIDER NAME*****XX*1999999984~HL*4*3*22*0~NM1*IL*1*DOE*JANE****MI*UHC123456~TRN*2*0123456789~STC*F1:65*20250717**267.54*108.77*20250715**20250717*123456789~REF*1K*0123456789~REF*EJ*12345678~DTP*472*D8*20250701~SVC*HC:90837:GT*267.54*108.77****1~STC*F1:107*20250717~DTP*472*D8*20250701~SE*19*1001~GE*1*1~IEA*1*123456789~"
}
```

#### 400

ValidationException 400 response

**Schema:** `ValidationExceptionResponseContent`

**Properties:**

- **`code`** (`string`): A code describing the type of validation failure.
- **`message`** (`string`) (required): A message describing the causes of the validation failure. There may be more than one.
#### 403

AccessDeniedException 403 response

**Schema:** `AccessDeniedExceptionResponseContent`

**Properties:**

- **`code`** (`string`): Error classification code
- **`message`** (`string`) (required): Human-readable error message
#### 404

ResourceNotFoundException 404 response

**Schema:** `ResourceNotFoundExceptionResponseContent`

**Properties:**

- **`code`** (`string`): Error classification code
- **`message`** (`string`) (required): Human-readable error message
#### 429

ThrottlingException 429 response

**Schema:** `ThrottlingExceptionResponseContent`

**Properties:**

- **`code`** (`string`): Error classification code
- **`message`** (`string`) (required): Human-readable error message
#### 500

InternalFailureException 500 response

**Schema:** `InternalFailureExceptionResponseContent`

**Properties:**

- **`code`** (`string`): Error classification code
- **`message`** (`string`) (required): Human-readable error message
#### 503

ServiceUnavailableException 503 response

**Schema:** `ServiceUnavailableExceptionResponseContent`

**Properties:**

- **`code`** (`string`)
- **`message`** (`string`) (required)
#### 504

GatewayTimeoutException 504 response

**Schema:** `GatewayTimeoutExceptionResponseContent`

**Properties:**

- **`code`** (`string`)
- **`message`** (`string`) (required)


# Real-Time Claim Status (276/277) JSON
Source: https://www.stedi.com/docs/healthcare/api-reference/post-healthcare-claim-status


You may need to submit a 276 real-time claim status request when you don't receive a 277CA claim acknowledgment or 835 Electronic Remittance Advice (ERA) response from the payer within your expected timeframe.

1. Call this endpoint with a JSON payload.
   * The request must be for a production claim that has entered the payer's processing system. Requests for test claims or claims that the payer hasn't yet accepted won't return results.
   * Providing too much information can negatively affect the results. You should start with our [recommended base request](/healthcare/check-claim-status#json-base-request).
2. Stedi generates the X12 276 EDI transaction and sends it to the payer.
3. The endpoint returns a synchronous 277 claim status response from the payer in JSON format. The response contains information about the claims matching the criteria you provided in the request and their current status.

The response may contain information about more than one claim, if the payer has multiple claims on file that match the information you provided.

## API Specification

Submit a 276/277 real-time claim status check in JSON format

**Endpoint:** `POST /change/medicalnetwork/claimstatus/v2`

**Base URL:** `https://healthcare.us.stedi.com/2024-04-01`

### Request Body

**Schema:** `ClaimStatusRequestContent`

**Properties:**

- **`controlNumber`** (`string`): Stedi generates a control number for each claim status check, so you don’t need to include this property in your request.
- **`dependent`** (`object`)
- **`dependent.dateOfBirth`** (`string`): The dependent's date of birth.
- **`dependent.firstName`** (`string`) (required): The dependent's first name as specified on their insurance policy.
- **`dependent.gender`** (`string`): A code indicating the dependent's gender. If the claim set the dependent's gender to `U` for unknown, you should omit this property from the claim status request.
  - Allowed values: `M`, `F`
- **`dependent.groupNumber`** (`string`): The group number associated with the subscriber and dependent's insurance policy.
- **`dependent.lastName`** (`string`) (required): The dependent's last name as specified on their insurance policy.
- **`dependent.suffix`** (`string`): The dependent's name suffix, such as Sr. or III. Only include the dependent's personal name suffix - **don't** include professional or academic titles, such as M.D. or MBA.
- **`encounter`** (`object`): Information about the referenced claim or claims for which you want to retrieve status information.
  - We recommend supplying a date range that is at least plus or minus 7 days from the date of the services listed in the claim, using the `beginningDateOfService` and `endDateOfService` properties. The payer may have stored a different date for the encounter than the one in your records, so providing a date range increases the likelihood that the payer will find a match.
  - Don't submit future dates - only submit date ranges up to and including today's date. Some payers reject requests containing future service dates.
- **`encounter.beginningDateOfService`** (`string`): The date the service began.
- **`encounter.billingType`** (`string`): The billing type reference ID. For example, the billing type for inpatient services is `111`.
- **`encounter.clearingHouseClaimNumber`** (`string`): The claim number provided by the clearinghouse.
- **`encounter.endDateOfService`** (`string`): The date the service ended.
- **`encounter.locationIdentifier`** (`string`): The application or location identifier. Required if the application or location system identifier is known.
- **`encounter.patientAccountNumber`** (`string`): The patient account number provided by the service provider.
- **`encounter.pharmacyPrescriptionNumber`** (`string`): The patient's pharmacy prescription number.
- **`encounter.submittedAmount`** (`string`): The total charges submitted for the claim. Note that not all payer systems retain the original submitted charges; they are sometimes changed during processing.
- **`encounter.trackingNumber`** (`string`): This is the tracking number assigned to the claim status request. It is returned in the response as `claims[].claimStatus.trackingNumber`. If the payer requires a tracking number and you do not supply one, Stedi generates a tracking number for you from a UUID.
- **`encounter.tradingPartnerClaimNumber`** (`string`): An identifier for the claim, assigned by the payer.
- **`providers`** (`array of StatusRequestProvider objects`) (required): Information about the billing provider and (optionally) service providers related to the referenced claim.
  - Exactly one billing provider is **required** in this array. Requests that include only a service provider are rejected with a `400` error.
  - For each provider, you must set the `providerType` and one of the following identifiers: `npi`, `taxId`, or `etin`.
  - When the `providerType` = `BillingProvider`, we recommend setting `etin` as the identifier.
- **`providers[].etin`** (`string`): The Electronic Transmitter Identification Number (ETIN). This identifier is preferred if the payer specifically assigned one for the provider. If not, most payers will accept the provider's [NPI](https://www.stedi.com/docs/healthcare/national-provider-identifier) or TIN instead.
- **`providers[].firstName`** (`string`): The provider's first name. Use when the provider is an individual.
- **`providers[].lastName`** (`string`): The provider's last name. Use when the provider is an individual.
- **`providers[].npi`** (`string`): The [National Provider Identification (NPI)](https://www.stedi.com/docs/healthcare/national-provider-identifier) number.
- **`providers[].organizationName`** (`string`): The provider's organization name. Use when the provider is not an individual, such as a hospital or clinic.
- **`providers[].providerType`** (`string`) (required): Identifies the type of provider related to the referenced healthcare claim.
  - Allowed values: `BillingProvider`, `ServiceProvider`
- **`providers[].spn`** (`string`): Deprecated; The service provider number. Use `npi` to identify the service provider instead.
- **`providers[].taxId`** (`string`): The Taxpayer Identification Number (TIN).
- **`providers[].tin`** (`string`)
- **`serviceLineInformation`** (`object`): Identify a service line listed in the referenced claim. Used to request status for a specific service line.
- **`serviceLineInformation.lineItemChargeAmount`** (`string`) (required): The original submitted charge for the service line, expressed as a decimal. For example, `100.00`.
- **`serviceLineInformation.lineItemControlNumber`** (`string`): An identifier for the service line. This matches the `claimInformation.serviceLines[].providerControlNumber` submitted for the service line in the original claim.
- **`serviceLineInformation.procedureCode`** (`string`) (required): The procedure code.
- **`serviceLineInformation.procedureModifiers`** (`array of strings`): A modifier code that clarifies or improves the reporting accuracy of the associated `procedureCode`. If not required, do not send.
- **`serviceLineInformation.productOrServiceIDQualifier`** (`string`) (required): A code identifying the type/source of the descriptive number used in Product/Service ID. Visit [Claims code lists](https://www.stedi.com/docs/healthcare/claims-code-lists#product-or-service-id-qualifier) for a complete list.
  - Allowed values: `AD`, `ER`, `HC`, `HP`, `IV`, `N4`, `NU`, `WK`
- **`serviceLineInformation.revenueCode`** (`string`): The revenue code for the service line. This is the National Uniform Billing Committee revenue code.
- **`serviceLineInformation.serviceLineDate`** (`string`) (required): The date the service line began.
- **`serviceLineInformation.serviceLineEndDate`** (`string`): The date the service line ended.
- **`serviceLineInformation.unitsOfServiceCount`** (`string`) (required): The number of units of service for the service line.
- **`serviceLinesInformation`** (`array of ServiceLineInformation objects`)
- **`serviceLinesInformation[].lineItemChargeAmount`** (`string`) (required): The original submitted charge for the service line, expressed as a decimal. For example, `100.00`.
- **`serviceLinesInformation[].lineItemControlNumber`** (`string`): An identifier for the service line. This matches the `claimInformation.serviceLines[].providerControlNumber` submitted for the service line in the original claim.
- **`serviceLinesInformation[].procedureCode`** (`string`) (required): The procedure code.
- **`serviceLinesInformation[].procedureModifiers`** (`array of strings`): A modifier code that clarifies or improves the reporting accuracy of the associated `procedureCode`. If not required, do not send.
- **`serviceLinesInformation[].productOrServiceIDQualifier`** (`string`) (required): A code identifying the type/source of the descriptive number used in Product/Service ID. Visit [Claims code lists](https://www.stedi.com/docs/healthcare/claims-code-lists#product-or-service-id-qualifier) for a complete list.
  - Allowed values: `AD`, `ER`, `HC`, `HP`, `IV`, `N4`, `NU`, `WK`
- **`serviceLinesInformation[].revenueCode`** (`string`): The revenue code for the service line. This is the National Uniform Billing Committee revenue code.
- **`serviceLinesInformation[].serviceLineDate`** (`string`) (required): The date the service line began.
- **`serviceLinesInformation[].serviceLineEndDate`** (`string`): The date the service line ended.
- **`serviceLinesInformation[].unitsOfServiceCount`** (`string`) (required): The number of units of service for the service line.
- **`subscriber`** (`object`) (required): Information about the subscriber listed in the referenced claim.
- You must set both the `dateOfBirth` and `gender` properties when the subscriber is the patient unless the gender is unknown. Stedi determines that the subscriber is the patient when the `dependent` object is not included in the request.
- If either `dateOfBirth` or `gender` is set, you must include both properties unless the gender is unknown.
- **`subscriber.dateOfBirth`** (`string`): The subscriber's date of birth.
- **`subscriber.firstName`** (`string`) (required): The subscriber's first name as specified on their policy.
- **`subscriber.gender`** (`string`): A code indicating the subscriber's gender. If the claim set the subscriber's gender to `U` for unknown, you should omit this property from the claim status request.
  - Allowed values: `M`, `F`
- **`subscriber.groupNumber`** (`string`): The group number associated with the subscriber's insurance policy.
- **`subscriber.lastName`** (`string`) (required): The subscriber's last name as specified on their policy. The subscriber can be an individual or a business entity.
- **`subscriber.memberId`** (`string`) (required): The subscriber's insurance member ID. This is the unique identifier for the subscriber on the insurance policy.
- **`subscriber.suffix`** (`string`): The subscriber's name suffix, such as Jr., Sr., or III. Only include the subscriber's personal name suffix - **don't** include professional or academic titles, such as M.D. or MBA.
- **`tradingPartnerName`** (`string`): This is the payer name, such as Cigna or Aetna.
- **`tradingPartnerServiceId`** (`string`) (required): The payer ID. Visit the [Payer Network](https://www.stedi.com/healthcare/network) for a complete list.
 - You can send requests using the primary payer ID, the Stedi payer ID, or any alias listed in the payer record.
 - You must include leading `0` characters - payer IDs are alphanumeric strings and must be treated as complete strings, not integers. For example, use `00540` for SISCO, not `540`.

**Example:**

```json
{
  "encounter": {
    "beginningDateOfService": "20250630",
    "endDateOfService": "20250702"
  },
  "providers": [
    {
      "npi": "1999999984",
      "organizationName": "Provider Name",
      "providerType": "BillingProvider"
    }
  ],
  "subscriber": {
    "dateOfBirth": "19710101",
    "firstName": "Jane",
    "lastName": "Doe",
    "memberId": "UHC123456"
  },
  "tradingPartnerServiceId": "87726"
}
```

### Responses

#### 200

ClaimStatus 200 response

**Schema:** `ClaimStatusResponseContent`

**Properties:**

- **`claims`** (`array of Claim objects`): The status information for the claim referenced in the original claim status request.

The payer may return multiple claims in the response if they have more than one claim on file that matches the information you provided.
- **`claims[].claimStatus`** (`object`): The status, required action, and paid information of a claim or service line.
- **`claims[].claimStatus.amountPaid`** (`string`): The total amount paid for the claim. May be zero when no payment is being made. Some payers can provide the adjudicated payment amount before they issue the remittance.
- **`claims[].claimStatus.checkIssueDate`** (`string`): The date the payer issued the check for payment. This may also contain a non-payment remittance advice date, if available from the payer.

This value is returned in ISO 8601 date format (YYYY-MM-DD). For example: 2026-03-04.
- **`claims[].claimStatus.checkNumber`** (`string`): The check identification number or electronic funds transfer (EFT) trace number. This number is used to track the payment. This may also contain a non-payment remittance advice Trace Number (835 or paper), if available from the payer.
- **`claims[].claimStatus.claimServiceDate`** (`string`): Either a single date (formatted as `YYYYMMDD`) or a range of dates (formatted as `YYYYMMDD-YYYYMMDD`) identifying the period of service related to the claim. This property is derived from the service level dates.
- **`claims[].claimStatus.clearingHouseClaimNumber`** (`string`): The claim number provided by the clearinghouse.
- **`claims[].claimStatus.effectiveDate`** (`string`): The date the claim was placed in this status by the payer's adjudication process.

This value is returned in ISO 8601 date format (YYYY-MM-DD). For example: 2026-03-04.
- **`claims[].claimStatus.entity`** (`string`): Entity descriptions corresponding to Entity Identifier codes.
  - Allowed values: `Health Maintenance Organization (HMO)`, `Oncology Center`, `Kidney Dialysis Unit`, `Preferred Provider Organization (PPO)`, `Acute Care Hospital`, `Provider`, `Military Facility`, `University, College or School`, `Outpatient Surgicenter`, `Physician, Clinic or Group Practice`, `Long Term Care Facility`, `Extended Care Facility`, `Psychiatric Health Facility`, `Laboratory`, `Retail Pharmacy`, `Home Health Care`, `Federal, State, County or City Facility`, `Third-Party Administrator`, `Miscellaneous Health Care Facility`, `Non-Health Care Miscellaneous Facility`, `Church Operated Facility`, `Partnership`, `Public Health Service Facility`, `Veterans Administration Facility`, `Public Health Service Indian Service Facility`, `Hospital Unit of an Institution (prison hospital, college infirmary, etc.)`, `Dependent`, `Hospital Unit Within an Institution for the Mentally Retarded`, `Tuberculosis and Other Respiratory Diseases Facility`, `Obstetrics and Gynecology Facility`, `Eye, Ear, Nose and Throat Facility`, `Rehabilitation Facility`, `Orthopedic Facility`, `Chronic Disease Facility`, `Other Specialty Facility`, `Children's General Facility`, `Children's Hospital Unit of an Institution`, `Children's Psychiatric Facility`, `Children's Tuberculosis and Other Respiratory Diseases Facility`, `Children's Eye, Ear, Nose and Throat Facility`, `Children's Rehabilitation Facility`, `Children's Orthopedic Facility`, `Children's Chronic Disease Facility`, `Children's Other Specialty Facility`, `Institution for Mental Retardation`, `Alcoholism and Other Chemical Dependency Facility`, `General Inpatient Care for AIDS/ARC Facility`, `AIDS/ARC Unit`, `Specialized Outpatient Program for AIDS/ARC`, `Alcohol/Drug Abuse or Dependency Inpatient Unit`, `Alcohol/Drug Abuse or Dependency Outpatient Services`, `Arthritis Treatment Center`, `Birthing Room/LDRP Room`, `Burn Care Unit`, `Cardiac Catherization Laboratory`, `Open-Heart Surgery Facility`, `Cardiac Intensive Care Unit`, `Angioplasty Facility`, `Chronic Obstructive Pulmonary Disease Service Facility`, `Emergency Department`, `Trauma Center (Certified)`, `Extracorporeal Shock-Wave Lithotripter (ESWL) Unit`, `Genetic Counseling/Screening Services`, `Adult Day Care Program Facility`, `Alzheimer's Diagnostic/Assessment Services`, `Comprehensive Geriatric Assessment Facility`, `Emergency Response (Geriatric) Unit`, `Geriatric Acute Care Unit`, `Geriatric Clinics`, `Respite Care Facility`, `Patient Education Unit`, `Community Health Promotion Facility`, `Worksite Health Promotion Facility`, `Hemodialysis Facility`, `Home Health Services`, `Hospice`, `Medical Surgical or Other Intensive Care Unit`, `Histopathology Laboratory`, `Blood Bank`, `Neonatal Intensive Care Unit`, `Obstetrics Unit`, `Occupational Health Services`, `Organized Outpatient Services`, `Pediatric Acute Inpatient Unit`, `Psychiatric Child/Adolescent Services`, `Psychiatric Consultation-Liaison Services`, `Psychiatric Education Services`, `Psychiatric Emergency Services`, `Psychiatric Geriatric Services`, `Psychiatric Inpatient Unit`, `Psychiatric Outpatient Services`, `Psychiatric Partial Hospitalization Program`, `Megavoltage Radiation Therapy Unit`, `Radioactive Implants Unit`, `Therapeutic Radioisotope Facility`, `X-Ray Radiation Therapy Unit`, `CT Scanner Unit`, `Diagnostic Radioisotope Facility`, `Magnetic Resonance Imaging (MRI) Facility`, `Ultrasound Unit`, `Rehabilitation Inpatient Unit`, `Rehabilitation Outpatient Services`, `Reproductive Health Services`, `Skilled Nursing or Other Long-Term Care Unit`, `Single Photon Emission Computerized Tomography (SPECT) Unit`, `Organized Social Work Service Facility`, `Outpatient Social Work Services`, `Emergency Department Social Work Services`, `Sports Medicine Clinic/Services`, `Hospital Auxiliary Unit`, `Patient Representative Services`, `Volunteer Services Department`, `Outpatient Surgery Services`, `Organ/Tissue Transplant Unit`, `Orthopedic Surgery Facility`, `Occupational Therapy Services`, `Physical Therapy Services`, `Recreational Therapy Services`, `Respiratory Therapy Services`, `Speech Therapy Services`, `Women's Health Center/Services`, `Cardiac Rehabilitation Program Facility`, `Non-Invasive Cardiac Assessment Services`, `Emergency Medical Technician`, `Disciplinary Contact`, `Case Manager`, `Place of Occurrence`, `Contracted Service Provider`, `Consultant's Office`, `Subcontractor`, `Service Supplier`, `Employer`, `Receiver`, `Claimant Authorized Representative`, `Data Processing Service Bureau`, `Performed At`, `Attending Physician`, `Operating Physician`, `Other Physician`, `Corrected Insured`, `Service Location`, `Hospital`, `Rendering Provider`, `Subscriber's Employer`, `Billing Provider`, `Pay-to Provider`, `Research Institute`, `Pharmacist`, `Admitting Surgeon`, `Commercial Insurer`, `Assistant Surgeon`, `Consulting Physician`, `Ordering Physician`, `Referring Provider`, `Dependent Name`, `Supervising Physician`, `Person or Other Entity Legally Responsible for a Child`, `Person or Other Entity With Whom a Child Resides`, `Previous Employer`, `Participating Laboratory`, `Facility`, `Physical Address`, `Mail Address`, `Dependent Insured`, `Clinic`, `Other Insured`, `Guardian`, `Paramedic`, `Paramedical Company`, `Previous Insured`, `Spouse Insured`, `Treatment Facility`, `Healthcare Professional Shortage Area (HPSA) Facility`, `Home Health Agency`, `Independent Physicians Association (IPA)`, `Injection Point`, `Insured or Subscriber`, `Insurer`, `Independent Lab`, `Legal Representative`, `Medical Insurance Carrier`, `Mammography Screening Center`, `Ordered By`, `Doctor of Optometry`, `Oxygen Therapy Facility`, `Patient Facility`, `Primary Insured or Subscriber`, `Primary Care Provider`, `Prior Insurance Carrier`, `Third Party Reviewing Preferred Provider Organization (PPO)`, `Third Party Repricing Preferred Provider Organization (PPO)`, `Primary Payer`, `Party to Receive Test Report`, `Party performing certification`, `Pickup Address`, `Pharmacy`, `Purchase Service Provider`, `Patient`, `Responsible Party`, `Policyholder`, `Physician`, `Managed Care`, `Chiropractor`, `Dentist`, `Doctor of Osteopathy`, `Podiatrist`, `Group Practice`, `Medical Doctor`, `Receiving Location`, `Rural Health Clinic`, `Skilled Nursing Facility`, `Secondary Payer`, `Service Provider`, `Supplier/Manufacturer`, `Transfer Point`, `Testing Laboratory`, `Third Party Reviewing Organization (TPO)`, `Transfer To`, `Tertiary Payer`, `Third Party Repricing Organization (TPO)`, `Nursing Home`, `Utilization Management Organization`, `Spouse`, `Durable Medical Equipment Supplier`, `Mutually Defined`
- **`claims[].claimStatus.entityCode`** (`string`): Entity Identifier codes used to identify organizational entities, physical locations, properties, or individuals.
  - Allowed values: `1E`, `1G`, `1H`, `1I`, `1O`, `1P`, `1Q`, `1R`, `1S`, `1T`, `1U`, `1V`, `1W`, `1X`, `1Y`, `1Z`, `2A`, `2B`, `2D`, `2E`, `2I`, `2K`, `2P`, `2Q`, `2S`, `2Z`, `03`, `3A`, `3C`, `3D`, `3E`, `3F`, `3G`, `3H`, `3I`, `3J`, `3K`, `3L`, `3M`, `3N`, `3O`, `3P`, `3Q`, `3R`, `3S`, `3T`, `3U`, `3V`, `3W`, `3X`, `3Y`, `3Z`, `4A`, `4B`, `4C`, `4D`, `4E`, `4F`, `4G`, `4H`, `4I`, `4J`, `4L`, `4M`, `4N`, `4O`, `4P`, `4Q`, `4R`, `4S`, `4U`, `4V`, `4W`, `4X`, `4Y`, `4Z`, `5A`, `5B`, `5C`, `5D`, `5E`, `5F`, `5G`, `5H`, `5I`, `5J`, `5K`, `5L`, `5M`, `5N`, `5O`, `5P`, `5Q`, `5R`, `5S`, `5T`, `5U`, `5V`, `5W`, `5X`, `5Y`, `5Z`, `6A`, `6B`, `6C`, `6D`, `6E`, `6F`, `6G`, `6H`, `6I`, `6J`, `6K`, `6L`, `6M`, `6N`, `6O`, `6P`, `6Q`, `6R`, `6S`, `6U`, `6V`, `6W`, `6X`, `6Y`, `7C`, `13`, `17`, `28`, `30`, `36`, `40`, `43`, `44`, `61`, `71`, `72`, `73`, `74`, `77`, `80`, `82`, `84`, `85`, `87`, `95`, `CK`, `CZ`, `D2`, `DD`, `DJ`, `DK`, `DN`, `DO`, `DQ`, `E1`, `E2`, `E7`, `E9`, `FA`, `FD`, `FE`, `G0`, `G3`, `GB`, `GD`, `GI`, `GJ`, `GK`, `GM`, `GY`, `HF`, `HH`, `I3`, `IJ`, `IL`, `IN`, `LI`, `LR`, `MR`, `MSC`, `OB`, `OD`, `OX`, `P0`, `P2`, `P3`, `P4`, `P6`, `P7`, `PRP`, `PT`, `PV`, `PW`, `QA`, `QB`, `QC`, `QD`, `QE`, `QH`, `QK`, `QL`, `QN`, `QO`, `QS`, `QV`, `QY`, `RC`, `RW`, `S4`, `SEP`, `SJ`, `SU`, `T4`, `TL`, `TQ`, `TT`, `TTP`, `TU`, `UH`, `X3`, `X4`, `X5`, `ZZ`
- **`claims[].claimStatus.paidDate`** (`string`): This is the date of denial or approval for the claim. This date may or may not be the same as the issue date of the check, EFT, or non-payment remittance. Some payers can provide this date before they issue the remittance.

This value is returned in ISO 8601 date format (YYYY-MM-DD). For example: 2026-03-04.
- **`claims[].claimStatus.patientAccountNumber`** (`string`): The patient account number provided by the service provider in the original claim. You can use this value to correlate the claim status response to the original claim.
- **`claims[].claimStatus.statusCategoryCode`** (`string`): The status category code. Visit [Claim Status Category Codes](https://x12.org/codes/claim-status-category-codes) in the official X12 documentation for a complete list.
- **`claims[].claimStatus.statusCategoryCodeValue`** (`string`): The description of the `statusCategoryCode`.
- **`claims[].claimStatus.statusCode`** (`string`): The status code used to identify the status of an entire claim or a service line. For example, `20` - Accepted for Processing. 

This is either a Health Care Claim Status Code or a National Council for Prescription Drug Programs (NCPDP) Reject/Payment Code, when the status is related to pharmacy claims.

 Visit [Claim Status Codes]([Health Care Claim Status Code](https://x12.org/codes/claim-status-codes) in the official X12 documentation or the [NCPDP website](https://ncpdp.org/) for a complete list of codes and their values.
- **`claims[].claimStatus.statusCodeValue`** (`string`): The description of the `statusCode`.
- **`claims[].claimStatus.submittedAmount`** (`string`): The total charges submitted for the claim. The total claim charge may change from the submitted claim total charge based on claims processing instructions, such as claim splitting. Some payers may not store the original submitted charge. Some HMO encounters supply zero as the amount of original charges.
- **`claims[].claimStatus.trackingNumber`** (`string`): This is the trace or reference number of the original claim status request.
- **`claims[].claimStatus.tradingPartnerClaimNumber`** (`string`): An identifier for the claim, assigned by the payer.
- **`claims[].serviceDetails`** (`array of ServiceDetail objects`): Information about specific service lines and their status. Payers may not return service line details for all claims, even when you requested them.
- **`claims[].serviceDetails[].service`** (`object`): Information about a service line listed in the referenced claim.
- **`claims[].serviceDetails[].service.amountPaid`** (`string`): The amount paid for the service line, expressed as a decimal. For example, `100.00`.
- **`claims[].serviceDetails[].service.procedureId`** (`string`): Identifying number for product or service.
- **`claims[].serviceDetails[].service.procedureModifiers`** (`array of strings`): Procedure modifier codes that provide additional information about the service performed.
- **`claims[].serviceDetails[].service.revenueCode`** (`string`): The National Uniform Billing Committee revenue code.
- **`claims[].serviceDetails[].service.serviceIdQualifier`** (`string`): The definition of the `serviceIdQualifierCode`. For example, `American Dental Association Codes`.
- **`claims[].serviceDetails[].service.serviceIdQualifierCode`** (`string`): A code identifying the type/source of the `procedureId`. Visit [Claims code lists](https://www.stedi.com/docs/healthcare/claims-code-lists#product-or-service-id-qualifier) for a complete list.
  - Allowed values: `AD`, `ER`, `HC`, `HP`, `IV`, `N4`, `NU`, `WK`
- **`claims[].serviceDetails[].service.submittedAmount`** (`string`): The amount submitted for the service line, expressed as a decimal. For example, `100.00`. This is the line item total on the current claim service status.
- **`claims[].serviceDetails[].service.submittedUnits`** (`string`): The number of units of service submitted.
- **`claims[].serviceDetails[].status`** (`array of Status objects`): Information about the status, required action, and paid information of a service line.
- **`claims[].serviceDetails[].status[].effectiveDate`** (`string`): The date the service line was placed in this status by the payer's adjudication process.

This value is returned in ISO 8601 date format (YYYY-MM-DD). For example: 2026-03-04.
- **`claims[].serviceDetails[].status[].entity`** (`string`): Entity descriptions corresponding to Entity Identifier codes.
  - Allowed values: `Health Maintenance Organization (HMO)`, `Oncology Center`, `Kidney Dialysis Unit`, `Preferred Provider Organization (PPO)`, `Acute Care Hospital`, `Provider`, `Military Facility`, `University, College or School`, `Outpatient Surgicenter`, `Physician, Clinic or Group Practice`, `Long Term Care Facility`, `Extended Care Facility`, `Psychiatric Health Facility`, `Laboratory`, `Retail Pharmacy`, `Home Health Care`, `Federal, State, County or City Facility`, `Third-Party Administrator`, `Miscellaneous Health Care Facility`, `Non-Health Care Miscellaneous Facility`, `Church Operated Facility`, `Partnership`, `Public Health Service Facility`, `Veterans Administration Facility`, `Public Health Service Indian Service Facility`, `Hospital Unit of an Institution (prison hospital, college infirmary, etc.)`, `Dependent`, `Hospital Unit Within an Institution for the Mentally Retarded`, `Tuberculosis and Other Respiratory Diseases Facility`, `Obstetrics and Gynecology Facility`, `Eye, Ear, Nose and Throat Facility`, `Rehabilitation Facility`, `Orthopedic Facility`, `Chronic Disease Facility`, `Other Specialty Facility`, `Children's General Facility`, `Children's Hospital Unit of an Institution`, `Children's Psychiatric Facility`, `Children's Tuberculosis and Other Respiratory Diseases Facility`, `Children's Eye, Ear, Nose and Throat Facility`, `Children's Rehabilitation Facility`, `Children's Orthopedic Facility`, `Children's Chronic Disease Facility`, `Children's Other Specialty Facility`, `Institution for Mental Retardation`, `Alcoholism and Other Chemical Dependency Facility`, `General Inpatient Care for AIDS/ARC Facility`, `AIDS/ARC Unit`, `Specialized Outpatient Program for AIDS/ARC`, `Alcohol/Drug Abuse or Dependency Inpatient Unit`, `Alcohol/Drug Abuse or Dependency Outpatient Services`, `Arthritis Treatment Center`, `Birthing Room/LDRP Room`, `Burn Care Unit`, `Cardiac Catherization Laboratory`, `Open-Heart Surgery Facility`, `Cardiac Intensive Care Unit`, `Angioplasty Facility`, `Chronic Obstructive Pulmonary Disease Service Facility`, `Emergency Department`, `Trauma Center (Certified)`, `Extracorporeal Shock-Wave Lithotripter (ESWL) Unit`, `Genetic Counseling/Screening Services`, `Adult Day Care Program Facility`, `Alzheimer's Diagnostic/Assessment Services`, `Comprehensive Geriatric Assessment Facility`, `Emergency Response (Geriatric) Unit`, `Geriatric Acute Care Unit`, `Geriatric Clinics`, `Respite Care Facility`, `Patient Education Unit`, `Community Health Promotion Facility`, `Worksite Health Promotion Facility`, `Hemodialysis Facility`, `Home Health Services`, `Hospice`, `Medical Surgical or Other Intensive Care Unit`, `Histopathology Laboratory`, `Blood Bank`, `Neonatal Intensive Care Unit`, `Obstetrics Unit`, `Occupational Health Services`, `Organized Outpatient Services`, `Pediatric Acute Inpatient Unit`, `Psychiatric Child/Adolescent Services`, `Psychiatric Consultation-Liaison Services`, `Psychiatric Education Services`, `Psychiatric Emergency Services`, `Psychiatric Geriatric Services`, `Psychiatric Inpatient Unit`, `Psychiatric Outpatient Services`, `Psychiatric Partial Hospitalization Program`, `Megavoltage Radiation Therapy Unit`, `Radioactive Implants Unit`, `Therapeutic Radioisotope Facility`, `X-Ray Radiation Therapy Unit`, `CT Scanner Unit`, `Diagnostic Radioisotope Facility`, `Magnetic Resonance Imaging (MRI) Facility`, `Ultrasound Unit`, `Rehabilitation Inpatient Unit`, `Rehabilitation Outpatient Services`, `Reproductive Health Services`, `Skilled Nursing or Other Long-Term Care Unit`, `Single Photon Emission Computerized Tomography (SPECT) Unit`, `Organized Social Work Service Facility`, `Outpatient Social Work Services`, `Emergency Department Social Work Services`, `Sports Medicine Clinic/Services`, `Hospital Auxiliary Unit`, `Patient Representative Services`, `Volunteer Services Department`, `Outpatient Surgery Services`, `Organ/Tissue Transplant Unit`, `Orthopedic Surgery Facility`, `Occupational Therapy Services`, `Physical Therapy Services`, `Recreational Therapy Services`, `Respiratory Therapy Services`, `Speech Therapy Services`, `Women's Health Center/Services`, `Cardiac Rehabilitation Program Facility`, `Non-Invasive Cardiac Assessment Services`, `Emergency Medical Technician`, `Disciplinary Contact`, `Case Manager`, `Place of Occurrence`, `Contracted Service Provider`, `Consultant's Office`, `Subcontractor`, `Service Supplier`, `Employer`, `Receiver`, `Claimant Authorized Representative`, `Data Processing Service Bureau`, `Performed At`, `Attending Physician`, `Operating Physician`, `Other Physician`, `Corrected Insured`, `Service Location`, `Hospital`, `Rendering Provider`, `Subscriber's Employer`, `Billing Provider`, `Pay-to Provider`, `Research Institute`, `Pharmacist`, `Admitting Surgeon`, `Commercial Insurer`, `Assistant Surgeon`, `Consulting Physician`, `Ordering Physician`, `Referring Provider`, `Dependent Name`, `Supervising Physician`, `Person or Other Entity Legally Responsible for a Child`, `Person or Other Entity With Whom a Child Resides`, `Previous Employer`, `Participating Laboratory`, `Facility`, `Physical Address`, `Mail Address`, `Dependent Insured`, `Clinic`, `Other Insured`, `Guardian`, `Paramedic`, `Paramedical Company`, `Previous Insured`, `Spouse Insured`, `Treatment Facility`, `Healthcare Professional Shortage Area (HPSA) Facility`, `Home Health Agency`, `Independent Physicians Association (IPA)`, `Injection Point`, `Insured or Subscriber`, `Insurer`, `Independent Lab`, `Legal Representative`, `Medical Insurance Carrier`, `Mammography Screening Center`, `Ordered By`, `Doctor of Optometry`, `Oxygen Therapy Facility`, `Patient Facility`, `Primary Insured or Subscriber`, `Primary Care Provider`, `Prior Insurance Carrier`, `Third Party Reviewing Preferred Provider Organization (PPO)`, `Third Party Repricing Preferred Provider Organization (PPO)`, `Primary Payer`, `Party to Receive Test Report`, `Party performing certification`, `Pickup Address`, `Pharmacy`, `Purchase Service Provider`, `Patient`, `Responsible Party`, `Policyholder`, `Physician`, `Managed Care`, `Chiropractor`, `Dentist`, `Doctor of Osteopathy`, `Podiatrist`, `Group Practice`, `Medical Doctor`, `Receiving Location`, `Rural Health Clinic`, `Skilled Nursing Facility`, `Secondary Payer`, `Service Provider`, `Supplier/Manufacturer`, `Transfer Point`, `Testing Laboratory`, `Third Party Reviewing Organization (TPO)`, `Transfer To`, `Tertiary Payer`, `Third Party Repricing Organization (TPO)`, `Nursing Home`, `Utilization Management Organization`, `Spouse`, `Durable Medical Equipment Supplier`, `Mutually Defined`
- **`claims[].serviceDetails[].status[].entityCode`** (`string`): Entity Identifier codes used to identify organizational entities, physical locations, properties, or individuals.
  - Allowed values: `1E`, `1G`, `1H`, `1I`, `1O`, `1P`, `1Q`, `1R`, `1S`, `1T`, `1U`, `1V`, `1W`, `1X`, `1Y`, `1Z`, `2A`, `2B`, `2D`, `2E`, `2I`, `2K`, `2P`, `2Q`, `2S`, `2Z`, `03`, `3A`, `3C`, `3D`, `3E`, `3F`, `3G`, `3H`, `3I`, `3J`, `3K`, `3L`, `3M`, `3N`, `3O`, `3P`, `3Q`, `3R`, `3S`, `3T`, `3U`, `3V`, `3W`, `3X`, `3Y`, `3Z`, `4A`, `4B`, `4C`, `4D`, `4E`, `4F`, `4G`, `4H`, `4I`, `4J`, `4L`, `4M`, `4N`, `4O`, `4P`, `4Q`, `4R`, `4S`, `4U`, `4V`, `4W`, `4X`, `4Y`, `4Z`, `5A`, `5B`, `5C`, `5D`, `5E`, `5F`, `5G`, `5H`, `5I`, `5J`, `5K`, `5L`, `5M`, `5N`, `5O`, `5P`, `5Q`, `5R`, `5S`, `5T`, `5U`, `5V`, `5W`, `5X`, `5Y`, `5Z`, `6A`, `6B`, `6C`, `6D`, `6E`, `6F`, `6G`, `6H`, `6I`, `6J`, `6K`, `6L`, `6M`, `6N`, `6O`, `6P`, `6Q`, `6R`, `6S`, `6U`, `6V`, `6W`, `6X`, `6Y`, `7C`, `13`, `17`, `28`, `30`, `36`, `40`, `43`, `44`, `61`, `71`, `72`, `73`, `74`, `77`, `80`, `82`, `84`, `85`, `87`, `95`, `CK`, `CZ`, `D2`, `DD`, `DJ`, `DK`, `DN`, `DO`, `DQ`, `E1`, `E2`, `E7`, `E9`, `FA`, `FD`, `FE`, `G0`, `G3`, `GB`, `GD`, `GI`, `GJ`, `GK`, `GM`, `GY`, `HF`, `HH`, `I3`, `IJ`, `IL`, `IN`, `LI`, `LR`, `MR`, `MSC`, `OB`, `OD`, `OX`, `P0`, `P2`, `P3`, `P4`, `P6`, `P7`, `PRP`, `PT`, `PV`, `PW`, `QA`, `QB`, `QC`, `QD`, `QE`, `QH`, `QK`, `QL`, `QN`, `QO`, `QS`, `QV`, `QY`, `RC`, `RW`, `S4`, `SEP`, `SJ`, `SU`, `T4`, `TL`, `TQ`, `TT`, `TTP`, `TU`, `UH`, `X3`, `X4`, `X5`, `ZZ`
- **`claims[].serviceDetails[].status[].statusCategoryCode`** (`string`): The category code for the status. Visit [Claim Status Category Codes](https://x12.org/codes/claim-status-category-codes) in the official X12 documentation for a complete list.
- **`claims[].serviceDetails[].status[].statusCategoryCodeValue`** (`string`): The description of the `statusCategoryCode`.
- **`claims[].serviceDetails[].status[].statusCode`** (`string`): The status code used to identify the status of an entire service line. This is either a [Health Care Claim Status Code](https://x12.org/codes/claim-status-codes) or a National Council for Prescription Drug Programs Reject/Payment Code, when the status is related to pharmacy claims.
- **`claims[].serviceDetails[].status[].statusCodeValue`** (`string`): The description of the `statusCode`.
- **`controlNumber`** (`string`): The control number the payer provided in the claim status response. This is used to identify the transaction.
- **`dependent`** (`object`)
- **`dependent.dateOfBirth`** (`string`): The dependent's date of birth.
- **`dependent.firstName`** (`string`) (required): The dependent's first name as specified on their insurance policy.
- **`dependent.gender`** (`string`): A code indicating the dependent's gender. If the claim set the dependent's gender to `U` for unknown, you should omit this property from the claim status request.
  - Allowed values: `M`, `F`
- **`dependent.groupNumber`** (`string`): The group number associated with the subscriber and dependent's insurance policy.
- **`dependent.lastName`** (`string`) (required): The dependent's last name as specified on their insurance policy.
- **`dependent.suffix`** (`string`): The dependent's name suffix, such as Sr. or III. Only include the dependent's personal name suffix - **don't** include professional or academic titles, such as M.D. or MBA.
- **`errorResponse`** (`object`)
- **`errorResponse.code`** (`string`)
- **`errorResponse.description`** (`string`)
- **`errorResponse.errors`** (`array of ErrorDetail objects`)
- **`errorResponse.errors[].code`** (`string`): The error code.
- **`errorResponse.errors[].description`** (`string`): The description of the error code.
- **`errorResponse.errors[].field`** (`string`): The attribute that caused the error.
- **`errorResponse.errors[].followupAction`** (`string`): Follow-up actions to correct the error.
- **`errorResponse.errors[].location`** (`string`): Where the error occurred within the request syntax. If this is a network or system error, there is no location attribute.
- **`errorResponse.errors[].value`** (`string`): The value that caused the error.
- **`errorResponse.transactionIdentifier`** (`object`)
- **`errorResponse.transactionIdentifier.customerTransactionId`** (`string`)
- **`errorResponse.transactionIdentifier.transactionId`** (`string`)
- **`implementationTransactionSetSyntaxError`** (`string`): The syntax error code in the 999 Implementation Acknowledgment. It indicates the type of error (if present) in the EDI request syntax. Visit `IK502` in the [Implementation Acknowledgment specification](https://portal.stedi.com/app/guides/view/hipaa/implementation-acknowledgment-x231/01HRF41ES1DVGCA6X1EHSRPFXZ#properties.heading.properties.transaction_set_response_header_AK2_loop.items.properties.transaction_set_response_trailer_IK5.properties.implementation_transaction_set_syntax_error_code_02) for a complete list.
- **`meta`** (`object`): Metadata about the response.
- **`meta.applicationMode`** (`string`): Identifies where this request can be found for support.
- **`meta.billerId`** (`string`): The biller ID assigned to this request.
- **`meta.senderId`** (`string`): The sender ID assigned to this request.
- **`meta.submitterId`** (`string`): The submitter ID assigned to this request.
- **`meta.traceId`** (`string`): The unique ID assigned to this request within Stedi.
- **`payer`** (`object`): Information about the payer listed in the referenced claim.
- **`payer.centersForMedicareAndMedicaidServicePlanId`** (`string`): The payer's Health Plan ID (HPID) or Other Entity Identifier (OEID).
- **`payer.contactInformation`** (`object`)
- **`payer.contactInformation.electronicDataInterChangeAccessNumber`** (`string`): The payer's Electronic Data Interchange Access number.
- **`payer.contactInformation.email`** (`string`): The payer's email address.
- **`payer.contactInformation.fax`** (`string`): The payer's fax number, without separators. For example, `5551123345` for `555-112-3345`
- **`payer.contactInformation.name`** (`string`): The payer contact name.
- **`payer.contactInformation.phone`** (`string`): The payer's telephone number. Phone numbers are formatted as AAABBBCCCC, where AAA represents the area code, BBB represents the telephone number prefix, and CCCC represents the telephone number. Phone numbers are provided without separators, such as dashes or parentheses. For example, `5551123345` for `555-112-3345`.
- **`payer.contactInformation.phoneExtension`** (`string`): The payer's telephone extension.
- **`payer.organizationName`** (`string`): The payer's organization name. For example `UNITEDHEALTHCARE`.
- **`payer.payerIdentification`** (`string`): The payer's identification number. This is the `tradingPartnerServiceId`.
- **`providers`** (`array of StatusResponseProvider objects`): Information about the billing and/or service providers related to the referenced claim.
- **`providers[].etin`** (`string`): The Electronic Transmitter Identification Number (ETIN).
- **`providers[].firstName`** (`string`): The provider's first name.
- **`providers[].lastName`** (`string`): The provider's last name.
- **`providers[].npi`** (`string`): The [National Provider Identification (NPI)](https://www.stedi.com/docs/healthcare/national-provider-identifier) number.
- **`providers[].organizationName`** (`string`): The provider's organization name.
- **`providers[].providerType`** (`string`) (required): Identifies the type of provider related to the referenced healthcare claim.
  - Allowed values: `BillingProvider`, `ServiceProvider`
- **`providers[].spn`** (`string`): The service provider number.
- **`providers[].taxId`** (`string`): The Taxpayer Identification Number (TIN).
- **`providers[].tin`** (`string`)
- **`reassociationKey`** (`string`): The control number for the transaction.
- **`status`** (`string`): The status of the entire claim.
- **`subscriber`** (`object`): Information about the subscriber listed in the referenced claim.
- You must set both the `dateOfBirth` and `gender` properties when the subscriber is the patient unless the gender is unknown. Stedi determines that the subscriber is the patient when the `dependent` object is not included in the request.
- If either `dateOfBirth` or `gender` is set, you must include both properties unless the gender is unknown.
- **`subscriber.dateOfBirth`** (`string`): The subscriber's date of birth.
- **`subscriber.firstName`** (`string`) (required): The subscriber's first name as specified on their policy.
- **`subscriber.gender`** (`string`): A code indicating the subscriber's gender. If the claim set the subscriber's gender to `U` for unknown, you should omit this property from the claim status request.
  - Allowed values: `M`, `F`
- **`subscriber.groupNumber`** (`string`): The group number associated with the subscriber's insurance policy.
- **`subscriber.lastName`** (`string`) (required): The subscriber's last name as specified on their policy. The subscriber can be an individual or a business entity.
- **`subscriber.memberId`** (`string`) (required): The subscriber's insurance member ID. This is the unique identifier for the subscriber on the insurance policy.
- **`subscriber.suffix`** (`string`): The subscriber's name suffix, such as Jr., Sr., or III. Only include the subscriber's personal name suffix - **don't** include professional or academic titles, such as M.D. or MBA.
- **`tradingPartnerServiceId`** (`string`): An ID for the payer you identified in the original claim status request. This value may differ from the `tradingPartnerServiceId` you submitted in the original request because it reflects the payer's internal concept of their ID, not necessarily the ID Stedi uses to route requests to this payer.
- **`transactionSetAcknowledgement`** (`string`): The acknowledgment code in the 999 Implementation Acknowledgment, an EDI file generated by the payer to acknowledge receipt of the claim status request. It indicates whether the claim status request was accepted or rejected due to errors in the EDI request syntax.
- **`warnings`** (`array of Warning objects`): Issues with your claim status request that could affect the results, or information about the response. For example, warnings can help explain why the request was rejected.
- **`warnings[].code`** (`string`): The warning code.
- **`warnings[].description`** (`string`): The warning description.
- **`x12`** (`string`): The raw X12 response from the payer.

**Example:**

```json
{
  "claims": [
    {
      "claimStatus": {
        "amountPaid": "108.77",
        "checkIssueDate": "2025-07-17",
        "checkNumber": "123456789",
        "claimServiceDate": "20250701",
        "effectiveDate": "2025-07-17",
        "paidDate": "2025-07-15",
        "patientAccountNumber": "12345678",
        "statusCategoryCode": "F1",
        "statusCategoryCodeValue": "Finalized/Payment - The claim/line has been paid.",
        "statusCode": "65",
        "statusCodeValue": "Claim/line has been paid.",
        "submittedAmount": "267.54",
        "trackingNumber": "0123456789",
        "tradingPartnerClaimNumber": "0123456789"
      },
      "serviceDetails": [
        {
          "service": {
            "amountPaid": "108.77",
            "procedureId": "90837",
            "serviceIdQualifier": "Health Care Financing Administration Common Procedural Coding System (HCPCS) Codes",
            "serviceIdQualifierCode": "HC",
            "submittedAmount": "267.54",
            "submittedUnits": "1"
          },
          "status": [
            {
              "effectiveDate": "2025-07-17",
              "statusCategoryCode": "F1",
              "statusCategoryCodeValue": "Finalized/Payment - The claim/line has been paid.",
              "statusCode": "107",
              "statusCodeValue": "Processed according to contract provisions (Contract refers to provisions that exist between the Health Plan and a Provider of Health Care Services)."
            }
          ]
        }
      ]
    }
  ],
  "controlNumber": "123456789",
  "payer": {
    "organizationName": "UNITEDHEALTHCARE",
    "payerIdentification": "87726"
  },
  "providers": [
    {
      "npi": "1999999984",
      "organizationName": "Provider Name",
      "providerType": "BillingProvider"
    }
  ],
  "subscriber": {
    "firstName": "Jane",
    "lastName": "Doe",
    "memberId": "UHC123456"
  },
  "tradingPartnerServiceId": "87726",
  "x12": "ISA*00*          *00*          *ZZ*STEDI          *01*117151744      *250912*1718*^*00501*123456789*0*P*:~GS*HN*STEDI*117151744*20250912*171842*1*X*005010X212~ST*277*1001*005010X212~BHT*0010*08*0123456789*20250912*171841*DG~HL*1**20*1~NM1*PR*2*UNITEDHEALTHCARE*****PI*87726~HL*2*1*21*1~NM1*41*2*PROVIDER NAME*****46*1234567890~HL*3*2*19*1~NM1*1P*2*PROVIDER NAME*****XX*1999999984~HL*4*3*22*0~NM1*IL*1*DOE*JANE****MI*UHC123456~TRN*2*0123456789~STC*F1:65*20250717**267.54*108.77*20250715**20250717*123456789~REF*1K*0123456789~REF*EJ*12345678~DTP*472*D8*20250701~SVC*HC:90837:GT*267.54*108.77****1~STC*F1:107*20250717~DTP*472*D8*20250701~SE*19*1001~GE*1*1~IEA*1*123456789~"
}
```

#### 400

ValidationException 400 response

**Schema:** `ValidationExceptionResponseContent`

**Properties:**

- **`code`** (`string`): A code describing the type of validation failure.
- **`message`** (`string`) (required): A message describing the causes of the validation failure. There may be more than one.
#### 403

AccessDeniedException 403 response

**Schema:** `AccessDeniedExceptionResponseContent`

**Properties:**

- **`code`** (`string`): Error classification code
- **`message`** (`string`) (required): Human-readable error message
#### 404

ResourceNotFoundException 404 response

**Schema:** `ResourceNotFoundExceptionResponseContent`

**Properties:**

- **`code`** (`string`): Error classification code
- **`message`** (`string`) (required): Human-readable error message
#### 429

ThrottlingException 429 response

**Schema:** `ThrottlingExceptionResponseContent`

**Properties:**

- **`code`** (`string`): Error classification code
- **`message`** (`string`) (required): Human-readable error message
#### 500

InternalFailureException 500 response

**Schema:** `InternalFailureExceptionResponseContent`

**Properties:**

- **`code`** (`string`): Error classification code
- **`message`** (`string`) (required): Human-readable error message
#### 503

ServiceUnavailableException 503 response

**Schema:** `ServiceUnavailableExceptionResponseContent`

**Properties:**

- **`code`** (`string`)
- **`message`** (`string`) (required)
#### 504

GatewayTimeoutException 504 response

**Schema:** `GatewayTimeoutExceptionResponseContent`

**Properties:**

- **`code`** (`string`)
- **`message`** (`string`) (required)


# Professional Claims (837P) Raw X12
Source: https://www.stedi.com/docs/healthcare/api-reference/post-healthcare-claims-raw-x12


This endpoint is ideal if you have an existing system that generates X12 EDI files and you want to send them through Stedi.

1. Call this endpoint with a payload in [837 X12 EDI format](https://portal.stedi.com/app/guides/view/hipaa/health-care-claim-professional-x222a1/01HR60MDFAGCSEJNKY8J38867Y).
2. Stedi validates the EDI and sends the claim to the payer.
3. The endpoint returns a response from Stedi in JSON format containing information about the claim you submitted and whether the submission was successful.

## Claim identifier [#claim-identifier]

`Loop 2300 REF02` (Claim Identifier for Transmission Intermediaries) has different usage rules depending on your role:

* **Providers:** Don't include `Loop 2300 REF02` when `REF01` = `D9` in your claim submission. It's reserved for clearinghouses and intermediaries. You can use `Loop 2300 CLM01` (Patient Control Number) to correlate claims with responses instead.
* **Clearinghouses and intermediaries:** You can optionally include `REF*D9` in your 837 submissions. Stedi always returns this value in `Loop 2200D REF*D9` of 277CA claim acknowledgments, allowing you to match these responses to the claim.

## CMS-1500 Claim Form PDF [#cms-1500-claim-form-pdf]

When you submit a professional claim, Stedi automatically generates a [1500 claim form](https://www.nucc.org/index.php/1500-claim-form-mainmenu-35) PDF. If you plan to send these PDFs to payers or retain them for your records, we strongly recommend reviewing the [CMS-1500 claim form PDF](/healthcare/cms-1500-claim-form-pdf) documentation to learn how to structure claim submissions for optimal generation, the correct printer settings for generated PDFs, and general best practices.

## API Specification

Submit an 837P professional claim in raw X12 EDI format

**Endpoint:** `POST /change/medicalnetwork/professionalclaims/v3/raw-x12-submission`

**Base URL:** `https://healthcare.us.stedi.com/2024-04-01`

### Parameters

- **`Idempotency-Key`** (header): A unique string to identify this request to the server. The key can be up to 255 characters. You can safely retry requests with the same idempotency key within 24 hours of making the first request. This prevents you from sending duplicate claims due to network errors or other intermittent failures. [Learn more](https://www.stedi.com/docs/api-reference/index#idempotency-keys).
  - Type: `string`

### Request Body

**Schema:** `ClaimsRawX12SubmissionRequestContent`

**Properties:**

- **`x12`** (`string`) (required)

**Example:**

```json
{
  "x12": "ISA*00*          *00*          *ZZ*574183004559   *ZZ*STEDITEST      *260213*2039*^*00501*000000039*0*T*>~GS*HC*574183004559*STEDITEST*20260213*203918*39*X*005010X222A1~ST*837*0001*005010X222A1~BHT*0019*00*01KHCBK84E40QQYJVXA5VVXG54*20260213*2038*CH~NM1*41*2*Test Data Health Services, Inc.*****46*123435~PER*IC**TE*5552223333~NM1*40*2*Cigna*****46*6400~HL*1**20*1~PRV*BI*PXC*2084P0800X~NM1*85*2*Therapy Associates*****XX*1999999984~N3*123 Some St*Floor 1~N4*A City*NY*123450000~REF*EI*123456789~PER*IC*Test Data Health Services, Inc.*TE*5553334444~HL*2*1*22*0~SBR*P*18*3335555******CI~NM1*IL*1*Anon*John****MI*U7777788888~N3*2222 Random St~N4*A City*NY*123450000~DMG*D8*20000101*M~NM1*PR*2*Cigna*****PI*6400~CLM*123456789*109.2***02>B>1*Y*A*Y*Y~HI*ABK>F1111~NM1*77*2*Smith Associates~N3*1234 Other St~N4*A City*NY*123450000~LX*1~SV1*HC>90837>95*109.2*UN*1***1~DTP*472*D8*20240101~REF*6R*111222333~SE*29*0001~GE*1*39~IEA*1*000000039~"
}
```

### Responses

#### 200

ClaimsRawX12Submission 200 response

**Schema:** `ClaimsRawX12SubmissionResponseContent`

**Properties:**

- **`claimReference`** (`object`): Information about the claim.
- **`claimReference.claimType`** (`string`): This shape is deprecated: Currently not used.
- **`claimReference.correlationId`** (`string`): An identifier Stedi assigns to the claim.
- **`claimReference.customerClaimNumber`** (`string`): A tracking number that Stedi assigns to the claim.
- **`claimReference.formatVersion`** (`string`): The X12 EDI version Stedi used to generate the claim for the payer. This is always `5010`.
- **`claimReference.patientControlNumber`** (`string`): The `patientControlNumber` from the original request, if supplied. This is a unique identifier that you assign to the claim so you can track the claim and correlate it with responses from the payer.
- **`claimReference.payerID`** (`string`): This shape is deprecated: Please use payerId.
- **`claimReference.payerId`** (`string`): The payer's ID. This is the same as the `tradingPartnerServiceId`.
- **`claimReference.rhclaimNumber`** (`string`): A tracking number Stedi assigns to the claim. This is the same as the `correlationId`.
- **`claimReference.serviceLines`** (`array of ServiceLineResponseIdentifier objects`): Contains a unique identifier for each service line, listed in the order the service lines were included in the claim. You can use these identifiers to correlate payer responses to specific service lines.
- **`claimReference.serviceLines[].lineItemControlNumber`** (`string`): A unique identifier for the service line, matching the value provided for the `claimInformation.serviceLines[].providerControlNumber` property in the claim submission. If you didn't provide a value for `providerControlNumber`, this property contains a randomly generated a ULID for the service line.
- **`claimReference.submitterId`** (`string`): Stedi's ID for the entity that submitted the claim.
- **`claimReference.timeOfResponse`** (`string`): A timestamp for Stedi's response to the claim submission.
- **`controlNumber`** (`string`): An identifier for the transaction.
- **`editResponses`** (`array of EditResponse objects`): Currently not used.
- **`editResponses[].allowOverride`** (`string`)
- **`editResponses[].badData`** (`string`)
- **`editResponses[].claimCorePath`** (`string`)
- **`editResponses[].editActivity`** (`string`)
- **`editResponses[].editName`** (`string`)
- **`editResponses[].element`** (`string`)
- **`editResponses[].errorDescription`** (`string`)
- **`editResponses[].fieldIndex`** (`string`)
- **`editResponses[].loop`** (`string`)
- **`editResponses[].phaseID`** (`string`)
- **`editResponses[].qualifierCode`** (`string`)
- **`editResponses[].referenceID`** (`string`)
- **`editResponses[].segment`** (`string`)
- **`editStatus`** (`string`): This shape is deprecated: Currently not used.
- **`errors`** (`array of ClaimsError objects`): Errors resulting from claim edits. You must review and fix these errors before resubmitting.
- **`errors[].code`** (`string`): The error code.
- **`errors[].description`** (`string`): The description of the error code.
- **`errors[].followupAction`** (`string`): Recommended followup actions to correct the error.
- **`errors[].location`** (`string`): Where the error is located in the original request.
- **`errors[].value`** (`string`): The value for the data causing the error.
- **`failure`** (`object`): Currently not used.
- **`failure.code`** (`string`)
- **`failure.description`** (`string`)
- **`httpStatusCode`** (`string`): Stedi can return the following status codes:
  - `200`: Stedi successfully generated the X12 EDI claim format required by the payer. It does not indicate whether the payer has accepted the claim - the payer will respond later with a 277CA containing this information. [Learn more about 277CAs](https://www.stedi.com/docs/healthcare/receive-claim-responses#response-types).
  - `400`: The request contains one or more problems with the claim data. Examples include missing required fields, invalid values, or incorrect data types. The response includes a message describing the problem.
  - `403`: The request is not permitted, such as using a test API key to submit a production transaction.
  - Allowed values: `200 OK`, `400 BAD_REQUEST`, `403 FORBIDDEN`
- **`meta`** (`object`): Metadata from Stedi about the request.
- **`meta.applicationMode`** (`string`): Indicates where this request can be found for support.
- **`meta.billerId`** (`string`): The biller ID assigned to this request.
- **`meta.senderId`** (`string`): The sender ID assigned to this request.
- **`meta.submitterId`** (`string`): The submitter ID assigned to this request.
- **`meta.traceId`** (`string`): The file execution ID, a unique identifier assigned to the processed file within the Stedi platform.
- **`payer`** (`object`): Information about the payer for the submitted claim.
- **`payer.payerID`** (`string`): This shape is deprecated: Please use payerId.
- **`payer.payerId`** (`string`): The payer's ID. This is the same as the `tradingPartnerServiceId`.
- **`payer.payerName`** (`string`): The payer's business name, such as Aetna or Cigna.
- **`status`** (`string`): The status of the claim submission.
- **`tradingPartnerServiceId`** (`string`): An ID for the payer you identified in the original claim. This value may differ from the `tradingPartnerServiceId` you submitted in the original request because it reflects the payer's internal concept of their ID, not necessarily the ID Stedi uses to route requests to this payer.
- **`warnings`** (`array of ClaimsWarning objects`): A list of warnings. Currently not used.
- **`warnings[].code`** (`string`): A machine-readable code indicating the type of problem.
- **`warnings[].description`** (`string`): A human-readable description of the problem.
- **`x12`** (`string`): A [277CA claim acknowledgment](https://www.stedi.com/docs/healthcare/claim-responses-overview#277ca-claim-acknowledgment) acceptance or rejection from Stedi in X12 EDI format. It indicates whether the claim has passed Stedi's claim edits.

When the claim fails one or more edits, the 277CA contains `STC` segments with information about each error. These are the same error codes that appear in the `errors` array.

Note that this 277CA only indicates whether Stedi has accepted or rejected the claim submission. You may receive additional 277CA acceptances or rejections as the claim is routed to the payer.

**Example:**

```json
{
  "claimReference": {
    "correlationId": "01J1M588QT2TAV2N093GNJ998T",
    "formatVersion": "5010",
    "patientControlNumber": "22266555",
    "payerId": "60054",
    "rhclaimNumber": "01J1M588QT2TAV2N093GNJ998T",
    "serviceLines": [
      {
        "lineItemControlNumber": "111222333"
      }
    ],
    "timeOfResponse": "2024-07-10T22:05:32.203Z"
  },
  "controlNumber": "000000001",
  "httpStatusCode": "200 OK",
  "meta": {
    "traceId": "b727b8e7-1f00-4011-bc6e-e41444d406d8"
  },
  "payer": {
    "payerId": "60054",
    "payerName": "Cigna"
  },
  "status": "SUCCESS",
  "tradingPartnerServiceId": "60054",
  "x12": "ISA*00*          *00*          *ZZ*STEDITEST      *ZZ*574183004559   *260213*1951*^*00501*980180479*0*T*>~GS*HN*STEDITEST*574183004559*20260213*195151*1*X*005010X214~ST*277*0001*005010X214~BHT*0085*08*01KHC8YJE8EY6A5HFR00Z5H305*20260213*195151*TH~HL*1**20*1~NM1*AY*2*STEDI INC*****46*117151744~TRN*1*01KHC8YJE8EY6A5HFR00Z5H305~DTP*050*D8*20260213~DTP*009*D8*20260213~HL*2*1*21*1~NM1*41*2*Test Data Health Services, Inc.*****46*123456~TRN*2*01KHC8Y4HNP0GVQ5NSVTPZBC0F~STC*A0>17>AY*20260213*WQ*109.2~QTY*90*1~AMT*YU*109.2~HL*3*2*19*1~NM1*85*2*Therapy Associates*****XX*1234567890~TRN*1*0~REF*TJ*123456789~QTY*QA*1~AMT*YU*109.2~HL*4*3*PT*0~NM1*QC*1*Anon*John****MI*U7777788888~TRN*2*111222333~STC*A1>20*20260213*WQ*109.2~DTP*472*RD8*20240101-20240101~SE*25*0001~GE*1*1~IEA*1*980180479~"
}
```

#### 400

ValidationException 400 response

**Schema:** `ValidationExceptionResponseContent`

**Properties:**

- **`code`** (`string`): A code describing the type of validation failure.
- **`message`** (`string`) (required): A message describing the causes of the validation failure. There may be more than one.
#### 403

AccessDeniedException 403 response

**Schema:** `AccessDeniedExceptionResponseContent`

**Properties:**

- **`code`** (`string`): Error classification code
- **`message`** (`string`) (required): Human-readable error message
#### 404

ResourceNotFoundException 404 response

**Schema:** `ResourceNotFoundExceptionResponseContent`

**Properties:**

- **`code`** (`string`): Error classification code
- **`message`** (`string`) (required): Human-readable error message
#### 409

ConflictException 409 response

**Schema:** `ConflictExceptionResponseContent`

**Properties:**

- **`message`** (`string`) (required): Why the request failed. The wording can change, so branch on the exception type, not this text.
#### 422

RequestChangedException 422 response

**Schema:** `RequestChangedExceptionResponseContent`

**Properties:**

- **`code`** (`string`): Unique error code identifying the specific type of error.
- **`message`** (`string`) (required): Human readable error message explaining why the request was rejected.
#### 429

ThrottlingException 429 response

**Schema:** `ThrottlingExceptionResponseContent`

**Properties:**

- **`code`** (`string`): Error classification code
- **`message`** (`string`) (required): Human-readable error message
#### 500

InternalFailureException 500 response

**Schema:** `InternalFailureExceptionResponseContent`

**Properties:**

- **`code`** (`string`): Error classification code
- **`message`** (`string`) (required): Human-readable error message
#### 503

ServiceUnavailableException 503 response

**Schema:** `ServiceUnavailableExceptionResponseContent`

**Properties:**

- **`code`** (`string`)
- **`message`** (`string`) (required)
#### 504

GatewayTimeoutException 504 response

**Schema:** `GatewayTimeoutExceptionResponseContent`

**Properties:**

- **`code`** (`string`)
- **`message`** (`string`) (required)


# Professional Claims (837P) JSON
Source: https://www.stedi.com/docs/healthcare/api-reference/post-healthcare-claims


This endpoint sends 837P professional claims to payers.

1. Call this endpoint with a JSON payload.
2. Stedi translates your request to the X12 837 EDI format and sends it to the payer.
3. The endpoint returns a response from Stedi in JSON format containing information about the claim you submitted and whether the submission was successful.

## CMS-1500 Claim Form PDF [#cms-1500-claim-form-pdf]

When you submit a professional claim, Stedi automatically generates a [1500 claim form](https://www.nucc.org/index.php/1500-claim-form-mainmenu-35) PDF. If you plan to send these PDFs to payers or retain them for your records, we strongly recommend reviewing the [CMS-1500 claim form PDF](/healthcare/cms-1500-claim-form-pdf) documentation to learn how to structure claim submissions for optimal generation, the correct printer settings for generated PDFs, and general best practices.

## API Specification

Submit an 837P professional claim in JSON format

**Endpoint:** `POST /change/medicalnetwork/professionalclaims/v3/submission`

**Base URL:** `https://healthcare.us.stedi.com/2024-04-01`

### Parameters

- **`Idempotency-Key`** (header): A unique string to identify this request to the server. The key can be up to 255 characters. You can safely retry requests with the same idempotency key within 24 hours of making the first request. This prevents you from sending duplicate claims due to network errors or other intermittent failures. [Learn more](https://www.stedi.com/docs/api-reference/index#idempotency-keys).
  - Type: `string`

### Request Body

**Schema:** `ClaimsSubmissionRequestContent`

**Properties:**

- **`billing`** (`object`) (required): Information about the billing provider.
- You must provide an `address` that is a physical location such as the office where care is delivered or an administrative facility.
- For tax identification, you must include either the provider's Social Security Number (SSN) in the `ssn` property _or_ their Employer Identification Number (EIN) in the `employerId` property, but not both.
- If the billing provider has an NPI, you must include it in the `npi` property. If the billing provider does not have an NPI, you must include either the `commercialNumber` or the `locationNumber` for identification. Some payers may require the `npi` **and** either the `commercialNumber` or the `locationNumber` as a secondary identifier.
- Some solo providers may use their SSN as their EIN. In this case, submit the SSN in the `ssn` property and leave the `employerId` property blank.
- **`billing.address`** (`object`)
- **`billing.address.address1`** (`string`) (required): The first line of the street address. This typically contains the building number and street name.
- **`billing.address.address2`** (`string`): The second line of the street address. This typically contains the apartment or suite number.
- **`billing.address.city`** (`string`) (required): The city name.
- **`billing.address.countryCode`** (`string`): Use the alpha-2 country codes from Part 1 of ISO 3166.
- **`billing.address.countrySubDivisionCode`** (`string`): Use the country subdivision codes from Part 2 of ISO 3166.
- **`billing.address.postalCode`** (`string`): The postal zone or zip code. For United States addresses, you must include the full nine-digit zip code with no separators, such as `100031502`. If you don't know the full zip code, you can find it using the [USPS ZIP Code Lookup](https://tools.usps.com/zip-code-lookup.htm) tool. Exclude punctuation and spaces.
- **`billing.address.state`** (`string`): The state or province code. Only required when the city is in the United States and Canada.
- **`billing.claimOfficeNumber`** (`string`): Claim Office Number.
- **`billing.commercialNumber`** (`string`): The billing provider's commercial number, as assigned by this payer. The commercial number is a unique identifier that the payer assigns to the provider. For providers without an NPI, you must provide either the `commercialNumber` or the `locationNumber` for identification.
- **`billing.contactInformation`** (`object`): You must include at least one communication method (phone, fax, or email) in this object.
- **`billing.contactInformation.email`** (`string`): The email address.
- **`billing.contactInformation.faxNumber`** (`string`): The fax number.
- **`billing.contactInformation.name`** (`string`): The full name of the person or office.
- **`billing.contactInformation.phoneExtension`** (`string`): The phone extension, if applicable.
- **`billing.contactInformation.phoneNumber`** (`string`): The phone number, formatted as AAABBBCCCC, where AAA represents the area code, BBB is the telephone number prefix, and CCCC is the telephone number. The phone number should only include the digits 0 to 9. Don't include separators, such as dashes, and don't include long distance access numbers, such as 1. For example, you would format the phone number 123-456-7890 as 1234567890.
- **`billing.employerId`** (`string`): The billing provider's Employer Identification Number (EIN). Typically a string of exactly nine numbers with no separators, unless otherwise instructed by the payer. If you include this value, you cannot include the `ssn`.
- **`billing.firstName`** (`string`): The billing provider's first name, if the provider is an individual.
- **`billing.lastName`** (`string`): The provider's last name, if the provider is an individual.
- **`billing.locationNumber`** (`string`): The billing provider's location number. For providers without an NPI, you must provide either the `commercialNumber` or the `locationNumber` for identification.
- **`billing.middleName`** (`string`): The provider's middle name or initial, if the provider is an individual.
- **`billing.naic`** (`string`): National Association of Insurance Commissioners (NAIC) Code.
- **`billing.npi`** (`string`): The billing provider's [National Provider Identifier (NPI)](https://www.stedi.com/docs/healthcare/national-provider-identifier). Optional. When the billing provider is not assigned an NPI, supply `commercialNumber` or `locationNumber` instead.
- **`billing.organizationName`** (`string`): The provider's business name.
- **`billing.payerIdentificationNumber`** (`string`): Payer Identification Number.
- **`billing.providerType`** (`string`): This field is now automatically populated and it only remains for backwards compatibility.
- **`billing.providerUpinNumber`** (`string`): Deprecated; do not use.
- **`billing.ssn`** (`string`): The billing provider's Social Security Number. Must be a string of exactly nine numbers with no separators. If you include this value, you cannot include the `employerId`.
- **`billing.stateLicenseNumber`** (`string`): The billing provider's state license number. This is assigned directly by a payer in order to identify the provider in their system. This is not commonly used.
- **`billing.suffix`** (`string`): The provider's name suffix, such as Jr. or III.
- **`billing.taxonomyCode`** (`string`): Code from the National Uniform Claims Committee [Health Care Provider Taxonomy Code Set](https://taxonomy.nucc.org/). This identifies the billing provider's type and/or area of specialty.
- **`claimIdentifier`** (`string`): A code specifying the type of transaction. Defaults to `CH` if not provided.
  - `31`: Only for use by state Medicaid agencies performing post payment recovery.
  - `CH`: Use when the transaction contains only fee for service claims or claims with at least one chargeable line item. Also use when it's not clear whether a transaction contains claims or capitated encounters, or if the transaction contains a mix of claims and capitated encounters.
  - `RP`: Use for capitated encounters. Also use when the transaction is being sent to an entity for purposes other than adjudication of a claim. For example, when you're sending the claim to a state health agency that is using the claim for health data reporting purposes.
  - Allowed values: `31`, `CH`, `RP`
- **`claimInformation`** (`object`) (required): Information about the healthcare claim. 

Note that the objects and properties marked as **required** are required for all claims, while others are conditionally required, depending on type of claim and claim circumstances. For example, you must always provide the patient's diagnosis codes in the `healthCareCodeInformation` object, but you only need to provide the `otherSubscriberInformation` object in coordination of benefits scenarios. When you include a conditionally required object, you must provide all of its required properties.
- **`claimInformation.ambulanceCertification`** (`array of AmbulanceCertification objects`): Required when the claim involves ambulance transport services.
- **`claimInformation.ambulanceCertification[].certificationConditionIndicator`** (`string`) (required): Code indicating whether there is an ambulance certification.
  - Allowed values: `N`, `Y`
- **`claimInformation.ambulanceCertification[].conditionCodes`** (`array of strings`) (required)
- **`claimInformation.ambulanceDropOffLocation`** (`object`)
- **`claimInformation.ambulanceDropOffLocation.address1`** (`string`) (required): The first line of the street address. This typically contains the building number and street name.
- **`claimInformation.ambulanceDropOffLocation.address2`** (`string`): The second line of the street address. This typically contains the apartment or suite number.
- **`claimInformation.ambulanceDropOffLocation.city`** (`string`) (required): The city name.
- **`claimInformation.ambulanceDropOffLocation.countryCode`** (`string`): Use the alpha-2 country codes from Part 1 of ISO 3166.
- **`claimInformation.ambulanceDropOffLocation.countrySubDivisionCode`** (`string`): Use the country subdivision codes from Part 2 of ISO 3166.
- **`claimInformation.ambulanceDropOffLocation.postalCode`** (`string`): The postal zone or zip code. For United States addresses, you must include the full nine-digit zip code with no separators, such as `100031502`. If you don't know the full zip code, you can find it using the [USPS ZIP Code Lookup](https://tools.usps.com/zip-code-lookup.htm) tool. Exclude punctuation and spaces.
- **`claimInformation.ambulanceDropOffLocation.state`** (`string`): The state or province code. Only required when the city is in the United States and Canada.
- **`claimInformation.ambulancePickUpLocation`** (`object`)
- **`claimInformation.ambulancePickUpLocation.address1`** (`string`) (required): The first line of the street address. This typically contains the building number and street name.
- **`claimInformation.ambulancePickUpLocation.address2`** (`string`): The second line of the street address. This typically contains the apartment or suite number.
- **`claimInformation.ambulancePickUpLocation.city`** (`string`) (required): The city name.
- **`claimInformation.ambulancePickUpLocation.countryCode`** (`string`): Use the alpha-2 country codes from Part 1 of ISO 3166.
- **`claimInformation.ambulancePickUpLocation.countrySubDivisionCode`** (`string`): Use the country subdivision codes from Part 2 of ISO 3166.
- **`claimInformation.ambulancePickUpLocation.postalCode`** (`string`): The postal zone or zip code. For United States addresses, you must include the full nine-digit zip code with no separators, such as `100031502`. If you don't know the full zip code, you can find it using the [USPS ZIP Code Lookup](https://tools.usps.com/zip-code-lookup.htm) tool. Exclude punctuation and spaces.
- **`claimInformation.ambulancePickUpLocation.state`** (`string`): The state or province code. Only required when the city is in the United States and Canada.
- **`claimInformation.ambulanceTransportInformation`** (`object`): Information about the ambulance service provided to the patient.
- **`claimInformation.ambulanceTransportInformation.ambulanceTransportReasonCode`** (`string`) (required): Code indicating the reason for ambulance transport. For example, `A` - Patient was transported to nearest facility for care of symptoms, complaints, or both. Visit [Claims code lists](https://www.stedi.com/docs/healthcare/claims-code-lists#ambulance-transport-reason-codes) for a complete list.
  - Allowed values: `A`, `B`, `C`, `D`, `E`
- **`claimInformation.ambulanceTransportInformation.patientWeightInPounds`** (`string`): The weight of the patient, in pounds, at the time of transport. Provide this value as a decimal, such as `150.5`
- **`claimInformation.ambulanceTransportInformation.roundTripPurposeDescription`** (`string`): The reason for the round trip ambulance service.
- **`claimInformation.ambulanceTransportInformation.stretcherPurposeDescription`** (`string`): The reason for usage of a stretcher during ambulance service.
- **`claimInformation.ambulanceTransportInformation.transportDistanceInMiles`** (`string`) (required): The number of miles the ambulance traveled to transport the patient. Provide this value as a decimal, such as `20.5`. Note that `0` (zero) is a valid value when ambulance services do not include a charge for mileage.
- **`claimInformation.anesthesiaRelatedSurgicalProcedure`** (`array of strings`): The surgical code. Required on claims where anesthesiology services are being billed or reported when the provider knows the surgical code and knows the adjudication of the claim will depend on provision of the surgical code.
- **`claimInformation.autoAccidentCountryCode`** (`string`): The country code where the accident occurred. Use when `relatedCausesCode` = `AA` and the accident occurred in a country other than US or Canada.
- **`claimInformation.autoAccidentStateCode`** (`string`): A code identifying the state or province in which the automobile accident occurred. Use this code when `relatedCausesCode` is set to `AA`.
- **`claimInformation.benefitsAssignmentCertificationIndicator`** (`string`) (required): A code indicating whether the patient or an authorized person has authorized the plan to remit payment directly to the provider. Use `W` when the patient refuses to assign benefits. Can be set to `N` - No (Payment should go to the patient), `Y` - Yes (Payment should go directly to the provider), or `W` - Not Applicable (use when patient refuses to assign benefits).
  - Allowed values: `N`, `W`, `Y`
- **`claimInformation.claimChargeAmount`** (`string`) (required): The total dollar amount charged for the services on this claim, expressed as a decimal. For example, `100.50`. This is the total amount before any adjustments or payments. The amount must balance to the sum of the service line charges.
- **`claimInformation.claimContractInformation`** (`object`): Required when the submitter is contractually obligated to supply this information on post-adjudicated claims.
- **`claimInformation.claimContractInformation.contractAmount`** (`string`): The total dollar amount of the contract, expressed as a decimal. For example, `100.50`.
- **`claimInformation.claimContractInformation.contractCode`** (`string`): The contract code. This is a unique identifier for the contract.
- **`claimInformation.claimContractInformation.contractPercentage`** (`string`): The allowance or charge percent, expressed as a decimal. For example, `0.80`.
- **`claimInformation.claimContractInformation.contractTypeCode`** (`string`) (required): A code identifying the type of contract. Can be set to `01` - Diagnosis Related Group (DRG), `02` - Per Diem, `03` - Variable Per Diem, `04` - Flat, `05` - Capitated, `06` - Percent, or `09` - Other.
  - Allowed values: `01`, `02`, `03`, `04`, `05`, `06`, `09`
- **`claimInformation.claimContractInformation.contractVersionIdentifier`** (`string`): An additional identifer for the contract. Identifies the revision level of a particular format, program, technique or algorithm.
- **`claimInformation.claimContractInformation.termsDiscountPercentage`** (`string`): Terms discount percentage, expressed as a percent, available to the purchaser if an invoice is paid on or before the Terms Discount Due Date.
- **`claimInformation.claimDateInformation`** (`object`): You must provide at least one date related to the claim. For example, the date on which the patient was admitted to the hospital.
- **`claimInformation.claimDateInformation.accidentDate`** (`string`): The date of the accident related to this claim. Required when `relatedCausesCode` is set to `AA` - Auto Accident or `OA` - Other Accident. Also required when `relatedCausesCode` is set to `EM` - Employment and this claim is the result of an accident.
- **`claimInformation.claimDateInformation.acuteManifestationDate`** (`string`): The date the patient first experienced acute symptoms for a chronic condition. Required when the `patientConditionCode` = `A` (Acute Condition) or `M` (Acute Manifestation of a Chronic Condition), the claim involves spinal manipulation, and the payer is Medicare.
- **`claimInformation.claimDateInformation.admissionDate`** (`string`): The date the patient was admitted to the hospital. Required on ambulance claims when the patient was known to be admitted to the hospital. Also required on inpatient claims.
- **`claimInformation.claimDateInformation.assumedAndRelinquishedCareBeginDate`** (`string`): The date the provider filing this claim assumed care from another provider during post-operative care. Required when providers share post-operative care (global surgery claims).
- **`claimInformation.claimDateInformation.assumedAndRelinquishedCareEndDate`** (`string`): The date the provider filing this claim relinquished post-operative care to another provider. Required when providers share post-operative care (global surgery claims).
- **`claimInformation.claimDateInformation.authorizedReturnToWorkDate`** (`string`): The date the provider has authorized the patient to return to work. Required on claims where this information is necessary for adjudication, such as workers compensation claims.
- **`claimInformation.claimDateInformation.disabilityBeginDate`** (`string`): The start date of the patient's disability period. You can include this date without providing a `disabilityEndDate` if the patient is currently disabled and the end date is unknown. Used for claims involving disability where the provider judges that the patient was or will be unable to perform the duties normally associated with their work.
- **`claimInformation.claimDateInformation.disabilityEndDate`** (`string`): The end date of the patient's disability period. You can include this date without including a `disabilityStartDate` if the patient is no longer disabled and the start date is unknown. Used for claims involving disability where the provider judges that the patient was or will be unable to perform the duties normally associated with their work.
- **`claimInformation.claimDateInformation.dischargeDate`** (`string`): The date the patient was discharged from the hospital. Required for inpatient claims when the patient was discharged from the facility and the discharge date is known
- **`claimInformation.claimDateInformation.firstContactDate`** (`string`): Date the patient first consulted the provider for their condition by any means. This is not necessarily the same as the initial treatment date. Required for Property and Casualty claims when state mandated.
- **`claimInformation.claimDateInformation.hearingAndVisionPrescriptionDate`** (`string`): The date of the patient's hearing and vision prescription. Required on claims where a prescription has been written for hearing devices or vision frames and lenses and it is being billed on this claim.
- **`claimInformation.claimDateInformation.initialTreatmentDate`** (`string`): The date the patient first received treatment for the current illness or condition. Required when the Initial Treatment Date is known to impact adjudication for claims involving spinal manipulation, physical therapy, occupational therapy, speech language pathology, dialysis, optical refractions, or pregnancy.
- **`claimInformation.claimDateInformation.lastMenstrualPeriodDate`** (`string`): The date of the patient's last menstrual period. Required when the provider believes the services on this claim are related to the patient's pregnancy.
- **`claimInformation.claimDateInformation.lastSeenDate`** (`string`): The date that the patient was seen by the attending or supervising physician for the qualifying medical condition related to the services performed. Required when claims involve services for routine foot care and this date is known to impact the payer's adjudication process.
- **`claimInformation.claimDateInformation.lastWorkedDate`** (`string`): The date the patient last worked, related to disability claims. Required on claims where this information is necessary for adjudication, such as workers compensation claims.
- **`claimInformation.claimDateInformation.lastXRayDate`** (`string`): The date of the patient's last x-ray. Required when claim involves spinal manipulation and an x-ray was taken.
- **`claimInformation.claimDateInformation.repricerReceivedDate`** (`string`): The date the repricing entity received the initial claim. Required when a repricer is passing the claim onto the payer.
- **`claimInformation.claimDateInformation.symptomDate`** (`string`): The date the patient began experiencing acute symptoms for the current illness or condition. Required for the initial medical service or visit performed in response to a medical emergency when the date is available and is different than the date of service.
- **`claimInformation.claimFilingCode`** (`string`) (required): A code identifying the type of claim. For example `DS` - Disability.
- Use `OF` when submitting Medicare Part D claims.
- Use `ZZ` when you don't know the type of insurance.
- Some payers reject claims with invalid codes. If you're not sure which code to use, we recommend running a [real-time eligibility check](https://www.stedi.com/docs/healthcare/api-reference/post-healthcare-eligibility) and using the value returned in the most relevant `benefitsInformation.insuranceTypeCode` property. Note that the eligibility response uses a different code list than claims, so you may need to map that code value to the appropriate claim filing code.


Visit [Claims code lists](https://www.stedi.com/docs/healthcare/claims-code-lists#claim-filing-indicator-codes) for a complete list.
  - Allowed values: `11`, `12`, `13`, `14`, `15`, `16`, `17`, `AM`, `BL`, `CH`, `CI`, `DS`, `FI`, `HM`, `LM`, `MA`, `MB`, `MC`, `OF`, `TV`, `VA`, `WC`, `ZZ`
- **`claimInformation.claimFrequencyCode`** (`string`) (required): Identify the type of claim. Can be set to: `1` - indicates an original claim, `7` - Indicates the new claim is a replacement or correction, `8` - Indicates the claim is void or canceled
  - Allowed values: `1`, `7`, `8`
- **`claimInformation.claimNote`** (`object`): Comments or special instructions related to the claim. Contains information required to substantiate the medical treatment that isn't provided elsewhere in the claim.
- **`claimInformation.claimNote.additionalInformation`** (`string`): Additional information.
- **`claimInformation.claimNote.certificationNarrative`** (`string`): Certification narrative.
- **`claimInformation.claimNote.diagnosisDescription`** (`string`): Additional information about the diagnosis.
- **`claimInformation.claimNote.goalRehabOrDischargePlans`** (`string`): Information about goals, rehabilitation potential, or discharge plans.
- **`claimInformation.claimNote.thirdPartOrgNotes`** (`string`): Notes from a third-party organization.
- **`claimInformation.claimPricingRepricingInformation`** (`object`): Repricing information to be completed by repricers, not providers. For capitated encounters, pricing or repricing information usually is not applicable and is provided to qualify other information within the claim.
- **`claimInformation.claimPricingRepricingInformation.exceptionCode`** (`string`): Code specifying the exception reason for consideration of out-of-network health care services. This is the reason generated by the third-party health organization. Visit [Claims code lists](https://www.stedi.com/docs/healthcare/claims-code-lists#exception-codes-2) for a complete list.
  - Allowed values: `1`, `2`, `3`, `4`, `5`, `6`
- **`claimInformation.claimPricingRepricingInformation.policyComplianceCode`** (`string`)
  - Allowed values: `1`, `2`, `3`, `4`, `5`
- **`claimInformation.claimPricingRepricingInformation.pricingMethodologyCode`** (`string`) (required): Code indicating the pricing or repricing methodology. Visit [Claims code lists](https://www.stedi.com/docs/healthcare/claims-code-lists#pricing-methodology-codes-2) for a complete list.
  - Allowed values: `00`, `01`, `02`, `03`, `04`, `05`, `06`, `07`, `08`, `09`, `10`, `11`, `12`, `13`, `14`
- **`claimInformation.claimPricingRepricingInformation.rejectReasonCode`** (`string`)
  - Allowed values: `T1`, `T2`, `T3`, `T4`, `T5`, `T6`
- **`claimInformation.claimPricingRepricingInformation.repricedAllowedAmount`** (`string`) (required): The dollar amount, expressed as a decimal. For example, `100.50`.
- **`claimInformation.claimPricingRepricingInformation.repricedApprovedAmbulatoryPatientGroupAmount`** (`string`): The dollar amount, expressed as a decimal.
- **`claimInformation.claimPricingRepricingInformation.repricedApprovedAmbulatoryPatientGroupCode`** (`string`): The code indicating the type of repricing.
- **`claimInformation.claimPricingRepricingInformation.repricedSavingAmount`** (`string`): The dollar amount, expressed as a decimal.
- **`claimInformation.claimPricingRepricingInformation.repricingOrganizationIdentifier`** (`string`): The identifier of the organization that repriced the claim.
- **`claimInformation.claimPricingRepricingInformation.repricingPerDiemOrFlatRateAmount`** (`string`): The pricing rate associated with per diem or flat rate repricing, expressed as a decimal.
- **`claimInformation.claimSupplementalInformation`** (`object`): Additional information or documentation required for the claim. This is where you can include information about [attachments](https://www.stedi.com/docs/healthcare/submit-claim-attachments), if applicable.
- **`claimInformation.claimSupplementalInformation.adjustedRepricedClaimNumber`** (`string`): Required when the repricer believes this information is necessary. Providers should not complete this property.
- **`claimInformation.claimSupplementalInformation.carePlanOversightNumber`** (`string`): Required when the physician is billing Medicare for Care Plan Oversight (CPO). This is the number of the home health agency or hospice providing Medicare covered services to the patient.
- **`claimInformation.claimSupplementalInformation.claimControlNumber`** (`string`): This is the Payer Claim Control Number (PCCN) for an existing claim that this claim is meant to replace or cancel. This property is generally **required** when the `claimInformation.claimFrequencyCode` is set to `7` or `8`. One exception to this guidance is Original Medicare, which specifies that you omit the PCCN from resubmissions.

Visit [Resubmit or cancel claims](https://www.stedi.com/docs/healthcare/resubmit-cancel-claims) for complete details and information about where to find the PCCN for an existing claim.
- **`claimInformation.claimSupplementalInformation.claimNumber`** (`string`): The claim number assigned by clearinghouse, van, etc.

Stedi overwrites this value when it sends the claim to the payer, so you shouldn't include this property in your request. We strongly recommend using the `claimInformation.patientControlNumber` property as your claim tracking ID.
- **`claimInformation.claimSupplementalInformation.cliaNumber`** (`string`): Required for all CLIA certified facilities performing CLIA covered laboratory services. When this claim contains both in-house and outsourced laboratory services, use the CLIA Number for laboratory services performed by the billing or rendering provider. You can report outsourced laboratory services in the `serviceLines` object.
- **`claimInformation.claimSupplementalInformation.demoProjectIdentifier`** (`string`): Required when it is necessary to identify claims that are atypical in ways such as content, purpose, and/or payment. For example, claims made as the result of a demonstration or a clinical trial.
- **`claimInformation.claimSupplementalInformation.investigationalDeviceExemptionNumber`** (`string`): Required when claim involves a Food and Drug Administration (FDA) assigned investigational device exemption (IDE) number. When more than one IDE applies, you must split into separate claims.
- **`claimInformation.claimSupplementalInformation.mammographyCertificationNumber`** (`string`): Required when mammography services are rendered by a certified mammography provider.
- **`claimInformation.claimSupplementalInformation.medicalRecordNumber`** (`string`): Required when the provider needs to identify the actual medical record of the patient for this episode of care.
- **`claimInformation.claimSupplementalInformation.medicareCrossoverReferenceId`** (`string`): Required when the submitter is Medicare and the claim is a Medigap or COB crossover claim.
- **`claimInformation.claimSupplementalInformation.priorAuthorizationNumber`** (`string`): Required when an authorization number is assigned by the payer or UMO _and_ the services on this claim were preauthorized. The UMO (Utilization Management Organization) is generally the entity empowered to make a decision regarding the outcome of a health services review or the owner of information.

If there are multiple prior authorization numbers associated with this claim, send one here and then override it as necessary for each service line in `claimInformation.serviceLines[].serviceLineReferenceInformation.priorAuthorization`.
- **`claimInformation.claimSupplementalInformation.referralNumber`** (`string`): Required when a referral number is assigned by the payer or Utilization Management Organization (UMO) _and_ a referral is involved.
- **`claimInformation.claimSupplementalInformation.reportInformation`** (`object`)
- **`claimInformation.claimSupplementalInformation.reportInformation.attachmentControlNumber`** (`string`): A control number assigned to the attachment. The payer uses this identifier to match the attachment to the claim.
  - You must include either this property or `attachmentId` in the request, but not both. Including both properties will result in an error.
  - We recommend using a ULID or UUID of up to 50 characters.
  - Stedi autogenerates a control number if you don't provide one.
- **`claimInformation.claimSupplementalInformation.reportInformation.attachmentId`** (`string`): The unique identifier for an attachment file you previously uploaded to Stedi. This value is returned in the `attachmentId` property of the [Create Claim Attachment (275) JSON](https://www.stedi.com/docs/healthcare/api-reference/post-healthcare-submit-claim-attachment) response. Stedi uses it to generate and submit the 275 claim attachment transaction to the payer.
  - This property is **required** when you're submitting attachment files through Stedi.
  - You must include either this property or `attachmentControlNumber` in the request, but not both. Including both properties will result in an error.
- **`claimInformation.claimSupplementalInformation.reportInformation.attachmentReportTypeCode`** (`string`) (required): Code indicating the title or contents of a document, report or supporting item. For example, `08` - Plan of Treatment or `CT` - Certification. Visit [Claims code lists](https://www.stedi.com/docs/healthcare/claims-code-lists#attachment-report-type-codes) for a complete list.
  - Allowed values: `03`, `04`, `05`, `06`, `07`, `08`, `09`, `10`, `11`, `13`, `15`, `21`, `A3`, `A4`, `AM`, `AS`, `B2`, `B3`, `B4`, `BR`, `BS`, `BT`, `CB`, `CK`, `CT`, `D2`, `DA`, `DB`, `DG`, `DJ`, `DS`, `EB`, `HC`, `HR`, `I5`, `IR`, `LA`, `M1`, `MT`, `NN`, `OB`, `OC`, `OD`, `OE`, `OX`, `OZ`, `P4`, `P5`, `PE`, `PN`, `PO`, `PQ`, `PY`, `PZ`, `RB`, `RR`, `RT`, `RX`, `SG`, `V5`, `XP`
- **`claimInformation.claimSupplementalInformation.reportInformation.attachmentTransmissionCode`** (`string`) (required): Code identifying the method by which the provider's report is attached. Can be set to `AA` - Available on Request at Provider Site, `BM` - By Mail, `EL` - Electronically Only, `EM` - E-Mail, `FT` - File Transfer, or `FX` - By Fax.

Set this to `EL` when you plan to submit attachments electronically through Stedi APIs.
  - Allowed values: `AA`, `BM`, `EL`, `EM`, `FT`, `FX`
- **`claimInformation.claimSupplementalInformation.reportInformations`** (`array of ReportInformation objects`): An array of report information for the claim. Use this when you need to submit multiple report information records. You can submit up to 10 objects in this array.

Required when you plan to submit [attachments](https://www.stedi.com/docs/healthcare/submit-claim-attachments) for the claim electronically through Stedi APIs or SFTP, when there is a paper attachment following this claim, or when the provider deems it necessary to identify that they have additional information at their office that is available upon request.
- **`claimInformation.claimSupplementalInformation.reportInformations[].attachmentControlNumber`** (`string`): A control number assigned to the attachment. The payer uses this identifier to match the attachment to the claim.
  - You must include either this property or `attachmentId` in the request, but not both. Including both properties will result in an error.
  - We recommend using a ULID or UUID of up to 50 characters.
  - Stedi autogenerates a control number if you don't provide one.
- **`claimInformation.claimSupplementalInformation.reportInformations[].attachmentId`** (`string`): The unique identifier for an attachment file you previously uploaded to Stedi. This value is returned in the `attachmentId` property of the [Create Claim Attachment (275) JSON](https://www.stedi.com/docs/healthcare/api-reference/post-healthcare-submit-claim-attachment) response. Stedi uses it to generate and submit the 275 claim attachment transaction to the payer.
  - This property is **required** when you're submitting attachment files through Stedi.
  - You must include either this property or `attachmentControlNumber` in the request, but not both. Including both properties will result in an error.
- **`claimInformation.claimSupplementalInformation.reportInformations[].attachmentReportTypeCode`** (`string`) (required): Code indicating the title or contents of a document, report or supporting item. For example, `08` - Plan of Treatment or `CT` - Certification. Visit [Claims code lists](https://www.stedi.com/docs/healthcare/claims-code-lists#attachment-report-type-codes) for a complete list.
  - Allowed values: `03`, `04`, `05`, `06`, `07`, `08`, `09`, `10`, `11`, `13`, `15`, `21`, `A3`, `A4`, `AM`, `AS`, `B2`, `B3`, `B4`, `BR`, `BS`, `BT`, `CB`, `CK`, `CT`, `D2`, `DA`, `DB`, `DG`, `DJ`, `DS`, `EB`, `HC`, `HR`, `I5`, `IR`, `LA`, `M1`, `MT`, `NN`, `OB`, `OC`, `OD`, `OE`, `OX`, `OZ`, `P4`, `P5`, `PE`, `PN`, `PO`, `PQ`, `PY`, `PZ`, `RB`, `RR`, `RT`, `RX`, `SG`, `V5`, `XP`
- **`claimInformation.claimSupplementalInformation.reportInformations[].attachmentTransmissionCode`** (`string`) (required): Code identifying the method by which the provider's report is attached. Can be set to `AA` - Available on Request at Provider Site, `BM` - By Mail, `EL` - Electronically Only, `EM` - E-Mail, `FT` - File Transfer, or `FX` - By Fax.

Set this to `EL` when you plan to submit attachments electronically through Stedi APIs.
  - Allowed values: `AA`, `BM`, `EL`, `EM`, `FT`, `FX`
- **`claimInformation.claimSupplementalInformation.repricedClaimNumber`** (`string`): Required when the repricer believes this information is necessary. Providers should not complete this property.
- **`claimInformation.claimSupplementalInformation.serviceAuthorizationExceptionCode`** (`string`): Code indicating the reason for the service authorization exception. Visit [Claims code lists](https://www.stedi.com/docs/healthcare/claims-code-lists#service-authorization-exception-codes) for a complete list.
  - Allowed values: `1`, `2`, `3`, `4`, `5`, `6`, `7`
- **`claimInformation.conditionInformation`** (`array of ConditionInformation objects`): Required when condition information applies to the claim. You can include up to 24 codes in the array. Visit the National Uniform Claim Committee for a complete list of possible [condition codes](https://www.nucc.org/index.php/code-sets-mainmenu-41/condition-codes-mainmenu-38).
- **`claimInformation.conditionInformation[].conditionCodes`** (`array of strings`) (required): An array of condition codes.
- **`claimInformation.deathDate`** (`string`): The patient's date of death.
- **`claimInformation.delayReasonCode`** (`string`): Code indicating the reason for the delay in claim submission. Visit [Claims code lists](https://www.stedi.com/docs/healthcare/claims-code-lists#delay-reason-codes) for a complete list.
  - Allowed values: `1`, `2`, `3`, `4`, `5`, `6`, `7`, `8`, `9`, `10`, `11`, `15`
- **`claimInformation.epsdtReferral`** (`object`): Required on Early & Periodic Screening, Diagnosis, and Treatment (EPSDT) claims when the screening service is being billed in this claim.
- **`claimInformation.epsdtReferral.certificationConditionCodeAppliesIndicator`** (`string`) (required): Code indicating whether an EPSDT referral was given to the patient. Can be set to `N` - No or `Y` - Yes.
  - Allowed values: `N`, `Y`
- **`claimInformation.epsdtReferral.conditionCodes`** (`array of strings`) (required): Code indicating the patient's status. Set to `AV` when the patient refused the referral. Set to `NU` when you set `certificationConditionCodeAppliesIndicator` to `N`. Set to `S2` when the patient is currently under treatment for the referred diagnostic or corrective health problem. Set to `ST` when _either_ the patient is referred to another provider for diagnostic or corrective treatment for at least one health problem identified during an initial or periodic screening service (not including dental referrals) _or_ the patient is scheduled for another appointment with the screening provider for diagnostic or corrective treatment for at least one health problem identified during an initial or periodic screening service (not including dental referrals).
- **`claimInformation.fileInformation`** (`string`): Please use the `fileInformationList` array instead.
- **`claimInformation.fileInformationList`** (`array of strings`): An array of additional information items the payer requested. Not commonly used.
- **`claimInformation.healthCareCodeInformation`** (`array of ClaimsHealthCareInformation objects`) (required): Details about the patient's healthcare diagnosis.
  - Use `ABK` as the type for the principal diagnosis code and `ABF` for any other diagnosis codes you include.
  - One `ABK` code is required as the first object, and then you can submit up to 11 `ABF` codes as needed. If you need to submit more codes than this, you must create additional, separate claims.
- **`claimInformation.healthCareCodeInformation[].diagnosisCode`** (`string`) (required): The diagnosis code.
  - You must submit a valid, billable code at the highest level of specificity. Include the 4th - 7th characters as applicable.
  - **Don't** submit the decimal point for ICD codes. The decimal point is implied.
  - **Don't** submit ICD-10 header codes. Header codes exist to group related codes and aren't valid for billing. These header codes can change with each new version of ICD-10, so we recommend reviewing your diagnosis codes every year to ensure that they aren't classified as header codes in the most recent version. To determine whether a code is a header code, you can also search the [Value Set Authority Center](https://vsac.nlm.nih.gov/context/cs). If the 'Header' property is set, the code is a header code and you shouldn't use it in claim submissions.
- **`claimInformation.healthCareCodeInformation[].diagnosisTypeCode`** (`string`) (required): Code indicating the specific industry code list. Can be set to `ABK` - International Classification of Diseases Clinical Modification (ICD-10-CM) Principal Diagnosis or `ABF` - International Classification of Diseases Clinical Modification (ICD-10-CM) Diagnosis.
  - Allowed values: `BK`, `ABK`, `BF`, `ABF`
- **`claimInformation.homeboundIndicator`** (`boolean`): Required for Medicare claims when an independent laboratory renders an EKG tracing or obtains a specimen from a homebound or institutionalized patient.
- **`claimInformation.otherSubscriberInformation`** (`array of OtherSubscriberInformation objects`): Required when other payers are known to potentially be involved in paying on this claim. This object contains information about other health plans under which the patient has coverage. It's used for coordination of benefits scenarios.
- **`claimInformation.otherSubscriberInformation[].benefitsAssignmentCertificationIndicator`** (`string`) (required): Code indicating whether or not the insured has authorized the plan to remit payment directly to the provider. Can be set to `N` - No (Payment should go to the patient), `Y` - Yes (Payment should go directly to the provider), or `W` - Not Applicable.
  - Allowed values: `N`, `W`, `Y`
- **`claimInformation.otherSubscriberInformation[].claimFilingIndicatorCode`** (`string`) (required): A code identifying the type of claim. For example `DS` - Disability. Use `OF` when submitting Medicare Part D claims. Use `ZZ` when you don't know the type of insurance. Visit [Claims code lists](https://www.stedi.com/docs/healthcare/claims-code-lists#claim-filing-indicator-codes) for a complete list.
  - Allowed values: `11`, `12`, `13`, `14`, `15`, `16`, `17`, `AM`, `BL`, `CH`, `CI`, `DS`, `FI`, `HM`, `LM`, `MA`, `MB`, `MC`, `OF`, `TV`, `VA`, `WC`, `ZZ`
- **`claimInformation.otherSubscriberInformation[].claimLevelAdjustments`** (`array of ClaimAdjustment objects`): Use this object to report prior payers' claim level adjustments that cause the amount paid to differ from the amount originally charged. Codes and associated amounts must come from either paper remittance advice or 835s (Electronic Remittance Advice) received on the claim. When the information originates from a paper remittance advice that does not use the standard Claim Adjustment Reason Codes, you must convert them to standard Claim Adjustment Reason Codes.
- **`claimInformation.otherSubscriberInformation[].claimLevelAdjustments[].adjustmentDetails`** (`array of ClaimAdjustmentDetails objects`) (required)
- **`claimInformation.otherSubscriberInformation[].claimLevelAdjustments[].adjustmentDetails[].adjustmentAmount`** (`string`) (required): The dollar amount of the adjustment, expressed as a decimal. For example, `100.50`.
- **`claimInformation.otherSubscriberInformation[].claimLevelAdjustments[].adjustmentDetails[].adjustmentQuantity`** (`string`): The units of service being adjusted.
- **`claimInformation.otherSubscriberInformation[].claimLevelAdjustments[].adjustmentDetails[].adjustmentReasonCode`** (`string`) (required): Code identifying the detailed reason the adjustment was made. Visit the X12 [Claim Adjustment Reason Codes](https://x12.org/codes/claim-adjustment-reason-codes) for a complete list.
- **`claimInformation.otherSubscriberInformation[].claimLevelAdjustments[].adjustmentGroupCode`** (`string`) (required): Code identifying the general category of payment adjustment. Can be set to `CO` - Contractual Obligations, `CR` - Correction and Reversals, `OA` - Other Adjustments, `PI` - Payor Initiated Reductions, or `PR - Patient Responsibility.
  - Allowed values: `CO`, `CR`, `OA`, `PI`, `PR`
- **`claimInformation.otherSubscriberInformation[].individualRelationshipCode`** (`string`) (required): Code identifying the relationship to the person insured. Visit [Claims code lists](https://www.stedi.com/docs/healthcare/claims-code-lists#individual-relationship-codes) for a complete list.
  - Allowed values: `01`, `18`, `19`, `20`, `21`, `39`, `40`, `53`, `G8`
- **`claimInformation.otherSubscriberInformation[].insuranceGroupOrPolicyNumber`** (`string`): The group or policy number.
- **`claimInformation.otherSubscriberInformation[].insuranceTypeCode`** (`string`): Code identifying the type of insurance policy within a specific insurance program. Visit [Claims code lists](https://www.stedi.com/docs/healthcare/claims-code-lists#insurance-type-codes) for a complete list.
  - Allowed values: `12`, `13`, `14`, `15`, `16`, `41`, `42`, `43`, `47`
- **`claimInformation.otherSubscriberInformation[].medicareOutpatientAdjudication`** (`object`): Claim-level data related to the adjudication of Medicare claims not related to an inpatient setting. Required when outpatient adjudication information is reported in the remittance advice _or_ when you need to report remark codes.
- **`claimInformation.otherSubscriberInformation[].medicareOutpatientAdjudication.claimPaymentRemarkCode`** (`array of strings`): The remark code. Visit the X12 [Remittance Advice Remark Codes](https://x12.org/codes/remittance-advice-remark-codes) for a complete list. You can include up to five codes in this array.
- **`claimInformation.otherSubscriberInformation[].medicareOutpatientAdjudication.endStageRenalDiseasePaymentAmount`** (`string`): The End-Stage Renal Disease (ESRD) payment amount, expressed as a decimal.
- **`claimInformation.otherSubscriberInformation[].medicareOutpatientAdjudication.hcpcsPayableAmount`** (`string`): The claim Health Care Financing Administration Common Procedural Coding System (HCPCS) payable amount, expressed as a decimal.
- **`claimInformation.otherSubscriberInformation[].medicareOutpatientAdjudication.nonPayableProfessionalComponentBilledAmount`** (`string`): The professional component amount billed but not payable, expressed as a decimal.
- **`claimInformation.otherSubscriberInformation[].medicareOutpatientAdjudication.reimbursementRate`** (`string`): The reimbursement percentage, expressed as a decimal.
- **`claimInformation.otherSubscriberInformation[].nonCoveredChargeAmount`** (`string`): Required when the destination payer's cost avoidance policy allows providers to bypass claim submission to the otherwise prior payer identified in `otherSubscriberInformation.otherPayerName`. The amount must equal the total claim charge amount you reported in `claimInformation.claimChargeAmount`.
- **`claimInformation.otherSubscriberInformation[].otherInsuredGroupName`** (`string`): The name of the health plan.
- **`claimInformation.otherSubscriberInformation[].otherPayerBillingProvider`** (`array of OtherPayerBillingProvider objects`): Information about the billing provider.
- **`claimInformation.otherSubscriberInformation[].otherPayerBillingProvider[].entityTypeQualifier`** (`string`) (required): Code identifying the type of entity. Can be set to `1` - Person or `2` - Non-Person Entity.
  - Allowed values: `1`, `2`
- **`claimInformation.otherSubscriberInformation[].otherPayerBillingProvider[].otherPayerBillingProviderIdentifier`** (`array of OtherPayerBillingProviderIdentifierItem objects`) (required): Identifiers for the billing provider.
- **`claimInformation.otherSubscriberInformation[].otherPayerBillingProvider[].otherPayerBillingProviderIdentifier[].identifier`** (`string`) (required): The identifier. The format and length of this value depends on the `qualifier` you set.
- **`claimInformation.otherSubscriberInformation[].otherPayerBillingProvider[].otherPayerBillingProviderIdentifier[].otherIdentifier`** (`string`): The identifier for the other payer who provided this reference number. This is only required when the reference number is provided by the non-destination payer. The value must match the `claimInformation.otherSubscriberInformation[].otherPayerName.otherPayerIdentifier` property.
- **`claimInformation.otherSubscriberInformation[].otherPayerBillingProvider[].otherPayerBillingProviderIdentifier[].qualifier`** (`string`) (required): Set to `LU` - Location Number, or `G2` - Provider Commercial Number.
- **`claimInformation.otherSubscriberInformation[].otherPayerName`** (`object`) (required): Details about the other payer.
- **`claimInformation.otherSubscriberInformation[].otherPayerName.otherPayerAddress`** (`object`)
- **`claimInformation.otherSubscriberInformation[].otherPayerName.otherPayerAddress.address1`** (`string`) (required): The first line of the street address. This typically contains the building number and street name.
- **`claimInformation.otherSubscriberInformation[].otherPayerName.otherPayerAddress.address2`** (`string`): The second line of the street address. This typically contains the apartment or suite number.
- **`claimInformation.otherSubscriberInformation[].otherPayerName.otherPayerAddress.city`** (`string`) (required): The city name.
- **`claimInformation.otherSubscriberInformation[].otherPayerName.otherPayerAddress.countryCode`** (`string`): Use the alpha-2 country codes from Part 1 of ISO 3166.
- **`claimInformation.otherSubscriberInformation[].otherPayerName.otherPayerAddress.countrySubDivisionCode`** (`string`): Use the country subdivision codes from Part 2 of ISO 3166.
- **`claimInformation.otherSubscriberInformation[].otherPayerName.otherPayerAddress.postalCode`** (`string`): The postal zone or zip code. For United States addresses, you must include the full nine-digit zip code with no separators, such as `100031502`. If you don't know the full zip code, you can find it using the [USPS ZIP Code Lookup](https://tools.usps.com/zip-code-lookup.htm) tool. Exclude punctuation and spaces.
- **`claimInformation.otherSubscriberInformation[].otherPayerName.otherPayerAddress.state`** (`string`): The state or province code. Only required when the city is in the United States and Canada.
- **`claimInformation.otherSubscriberInformation[].otherPayerName.otherPayerAdjudicationOrPaymentDate`** (`string`): The date the other payer adjudicated the claim. Required when this payer has previously adjudicated the claim and you aren’t including a value for `LineAdjudicationInformation.adjudicationOrPaymentDate`.
- **`claimInformation.otherSubscriberInformation[].otherPayerName.otherPayerClaimAdjustmentIndicator`** (`boolean`): The only valid value is `true`. Required when Required when the claim is being sent in the payer-to-payer COB model AND the destination payer is secondary to this payer AND this payer has re-adjudicated the claim.
- **`claimInformation.otherSubscriberInformation[].otherPayerName.otherPayerClaimControlNumber`** (`string`): The claim control number assigned by this payer.
- **`claimInformation.otherSubscriberInformation[].otherPayerName.otherPayerIdentifier`** (`string`) (required): The identifier specified in `otherPayerIdentifierCode`. When sending Line Adjudication Information for this payer, the identifier sent in `lineAdjudicationInformation.otherPayerPrimaryIdentifier` must match this value.
- **`claimInformation.otherSubscriberInformation[].otherPayerName.otherPayerIdentifierTypeCode`** (`string`) (required): Code designating the type of identifier. Can be set to `PI` - Payor Identification or `XV` - Centers for Medicare/Medicaid Services PlanID. Use code value `XV` when reporting Health Plan ID (HPID) or Other Entity Identifier (OEID).
  - Allowed values: `PI`, `XV`
- **`claimInformation.otherSubscriberInformation[].otherPayerName.otherPayerOrganizationName`** (`string`) (required): The payer's organization name.
- **`claimInformation.otherSubscriberInformation[].otherPayerName.otherPayerPriorAuthorizationNumber`** (`string`): The authorization number assigned by this payer.
- **`claimInformation.otherSubscriberInformation[].otherPayerName.otherPayerPriorAuthorizationOrReferralNumber`** (`string`): The referral number assigned by this payer.
- **`claimInformation.otherSubscriberInformation[].otherPayerName.otherPayerSecondaryIdentifier`** (`array of OtherPayerSecondaryIdentifierItem objects`): An additional identification number to identify the other payer.
- **`claimInformation.otherSubscriberInformation[].otherPayerName.otherPayerSecondaryIdentifier[].identifier`** (`string`) (required): The identifier. The format and length of this value depends on the `qualifier` you set.
- **`claimInformation.otherSubscriberInformation[].otherPayerName.otherPayerSecondaryIdentifier[].otherIdentifier`** (`string`): The identifier for the other payer who provided this reference number. This is only required when the reference number is provided by the non-destination payer. The value must match the `claimInformation.otherSubscriberInformation[].otherPayerName.otherPayerIdentifier` property.
- **`claimInformation.otherSubscriberInformation[].otherPayerName.otherPayerSecondaryIdentifier[].qualifier`** (`string`) (required): Set to `2U` - Payer Identification Number, `EI` - Employer Identification Number, `FY` - Claim Office Number, or `NF` - National Association of Insurance Commissioners (NAIC) Code.
- **`claimInformation.otherSubscriberInformation[].otherPayerReferringProvider`** (`array of OtherPayerReferringProvider objects`): Information about the provider who directed the patient to the rendering provider for care. For example, a primary care physician may refer patients to a specialist.
- **`claimInformation.otherSubscriberInformation[].otherPayerReferringProvider[].otherPayerReferringProviderIdentifier`** (`array of OtherPayerReferringProviderIdentifierItem objects`) (required): Identifiers for the referring provider.
- **`claimInformation.otherSubscriberInformation[].otherPayerReferringProvider[].otherPayerReferringProviderIdentifier[].identifier`** (`string`) (required): The identifier. The format and length of this value depends on the `qualifier` you set.
- **`claimInformation.otherSubscriberInformation[].otherPayerReferringProvider[].otherPayerReferringProviderIdentifier[].otherIdentifier`** (`string`): The identifier for the other payer who provided this reference number. This is only required when the reference number is provided by the non-destination payer. The value must match the `claimInformation.otherSubscriberInformation[].otherPayerName.otherPayerIdentifier` property.
- **`claimInformation.otherSubscriberInformation[].otherPayerReferringProvider[].otherPayerReferringProviderIdentifier[].qualifier`** (`string`) (required): Set to `0B` - State License Number, `1G` - Provider UPIN Number, or `G2` - Provider Commercial Number. Note that UPIN is deprecated and shouldn't be used for new claims.
- **`claimInformation.otherSubscriberInformation[].otherPayerRenderingProvider`** (`array of OtherPayerRenderingProvider objects`): Information about the rendering provider.
- **`claimInformation.otherSubscriberInformation[].otherPayerRenderingProvider[].entityTypeQualifier`** (`string`) (required): Code identifying the type of entity. Can be set to `1` - Person or `2` - Non-Person Entity.
  - Allowed values: `1`, `2`
- **`claimInformation.otherSubscriberInformation[].otherPayerRenderingProvider[].otherPayerRenderingProviderSecondaryIdentifier`** (`array of OtherPayerRenderingProviderIdentifierItem objects`): Identifiers for the rendering provider.
- **`claimInformation.otherSubscriberInformation[].otherPayerRenderingProvider[].otherPayerRenderingProviderSecondaryIdentifier[].identifier`** (`string`) (required): The identifier. The format and length of this value depends on the `qualifier` you set.
- **`claimInformation.otherSubscriberInformation[].otherPayerRenderingProvider[].otherPayerRenderingProviderSecondaryIdentifier[].otherIdentifier`** (`string`): The identifier for the other payer who provided this reference number. This is only required when the reference number is provided by the non-destination payer. The value must match the `claimInformation.otherSubscriberInformation[].otherPayerName.otherPayerIdentifier` property.
- **`claimInformation.otherSubscriberInformation[].otherPayerRenderingProvider[].otherPayerRenderingProviderSecondaryIdentifier[].qualifier`** (`string`) (required): Set to `0B` - State License Number, `1G` - Provider UPIN Number, `LU` - Location Number, or `G2` - Provider Commercial Number. Note that UPIN is deprecated and shouldn't be used for new claims.
- **`claimInformation.otherSubscriberInformation[].otherPayerServiceFacilityLocation`** (`array of OtherPayerServiceFacilityLocation objects`): Information about the service facility location.
- **`claimInformation.otherSubscriberInformation[].otherPayerServiceFacilityLocation[].otherPayerServiceFacilityLocationSecondaryIdentifier`** (`array of OtherPayerServiceFacilityLocationSecondaryIdentifierItem objects`) (required): A secondary identifier for the service facility location.
- **`claimInformation.otherSubscriberInformation[].otherPayerServiceFacilityLocation[].otherPayerServiceFacilityLocationSecondaryIdentifier[].identifier`** (`string`) (required): The identifier. The format and length of this value depends on the `qualifier` you set.
- **`claimInformation.otherSubscriberInformation[].otherPayerServiceFacilityLocation[].otherPayerServiceFacilityLocationSecondaryIdentifier[].otherIdentifier`** (`string`): The identifier for the other payer who provided this reference number. This is only required when the reference number is provided by the non-destination payer. The value must match the `claimInformation.otherSubscriberInformation[].otherPayerName.otherPayerIdentifier` property.
- **`claimInformation.otherSubscriberInformation[].otherPayerServiceFacilityLocation[].otherPayerServiceFacilityLocationSecondaryIdentifier[].qualifier`** (`string`) (required): Set to `0B` - State License Number, `LU` - Location Number, or `G2` - Provider Commercial Number.
- **`claimInformation.otherSubscriberInformation[].otherPayerSupervisingProvider`** (`array of OtherPayerSupervisingProvider objects`): Information about the supervising provider.
- **`claimInformation.otherSubscriberInformation[].otherPayerSupervisingProvider[].otherPayerSupervisingProviderIdentifier`** (`array of OtherPayerSupervisingProviderIdentifierItem objects`) (required): Identifiers for the supervising provider.
- **`claimInformation.otherSubscriberInformation[].otherPayerSupervisingProvider[].otherPayerSupervisingProviderIdentifier[].identifier`** (`string`) (required): The identifier. The format and length of this value depends on the `qualifier` you set.
- **`claimInformation.otherSubscriberInformation[].otherPayerSupervisingProvider[].otherPayerSupervisingProviderIdentifier[].otherIdentifier`** (`string`): The identifier for the other payer who provided this reference number. This is only required when the reference number is provided by the non-destination payer. The value must match the `claimInformation.otherSubscriberInformation[].otherPayerName.otherPayerIdentifier` property.
- **`claimInformation.otherSubscriberInformation[].otherPayerSupervisingProvider[].otherPayerSupervisingProviderIdentifier[].qualifier`** (`string`) (required): Set to `0B` - State License Number, `1G` - Provider UPIN Number, `LU` - Location Number or `G2` - Provider Commercial Number. Note that UPIN is deprecated and shouldn't be used for new claims.
- **`claimInformation.otherSubscriberInformation[].otherSubscriberName`** (`object`) (required): The person or entity who is the primary policyholder for the other payer's health plan.
- **`claimInformation.otherSubscriberInformation[].otherSubscriberName.otherInsuredAdditionalIdentifier`** (`string`): The primary policyholder's Social Security Number. The Social Security Number must be a string of exactly nine numbers with no separators. For example `123456789`.
- **`claimInformation.otherSubscriberInformation[].otherSubscriberName.otherInsuredAddress`** (`object`)
- **`claimInformation.otherSubscriberInformation[].otherSubscriberName.otherInsuredAddress.address1`** (`string`) (required): The first line of the street address. This typically contains the building number and street name.
- **`claimInformation.otherSubscriberInformation[].otherSubscriberName.otherInsuredAddress.address2`** (`string`): The second line of the street address. This typically contains the apartment or suite number.
- **`claimInformation.otherSubscriberInformation[].otherSubscriberName.otherInsuredAddress.city`** (`string`) (required): The city name.
- **`claimInformation.otherSubscriberInformation[].otherSubscriberName.otherInsuredAddress.countryCode`** (`string`): Use the alpha-2 country codes from Part 1 of ISO 3166.
- **`claimInformation.otherSubscriberInformation[].otherSubscriberName.otherInsuredAddress.countrySubDivisionCode`** (`string`): Use the country subdivision codes from Part 2 of ISO 3166.
- **`claimInformation.otherSubscriberInformation[].otherSubscriberName.otherInsuredAddress.postalCode`** (`string`): The postal zone or zip code. For United States addresses, you must include the full nine-digit zip code with no separators, such as `100031502`. If you don't know the full zip code, you can find it using the [USPS ZIP Code Lookup](https://tools.usps.com/zip-code-lookup.htm) tool. Exclude punctuation and spaces.
- **`claimInformation.otherSubscriberInformation[].otherSubscriberName.otherInsuredAddress.state`** (`string`): The state or province code. Only required when the city is in the United States and Canada.
- **`claimInformation.otherSubscriberInformation[].otherSubscriberName.otherInsuredFirstName`** (`string`): The primary policyholder's first name, if they are an individual.
- **`claimInformation.otherSubscriberInformation[].otherSubscriberName.otherInsuredIdentifier`** (`string`) (required): The identifier you specified in `otherInsuredIdentifierTypeCode`.
- **`claimInformation.otherSubscriberInformation[].otherSubscriberName.otherInsuredIdentifierTypeCode`** (`string`) (required): Code identifying the type of identifier. Can be set to `II` - Standard Unique Health Identifier for each individual in the United States or `MI` - Member Identification Number. The code `MI` should be the subscriber's identification number as assigned by the payer, such as their subscriber ID. You should also use `MI` in claims submitted to the Indian Health Service/Contract Health Services (IHS/CHS) Fiscal Intermediary for the purpose of reporting the Tribe Residency Code (Tribe County State). For IHS/CHS claims, you should also put the SSN in the `otherInsuredAdditionalIdentifier` property.)
  - Allowed values: `II`, `MI`
- **`claimInformation.otherSubscriberInformation[].otherSubscriberName.otherInsuredLastName`** (`string`) (required): The primary policyholder's last name or organizational name. Don't include the primary policyholder's name suffix, such as Jr. or III. Use the designated `otherInsuredNameSuffix` property instead.
- **`claimInformation.otherSubscriberInformation[].otherSubscriberName.otherInsuredMiddleName`** (`string`): The primary policyholder's middle name or initial, if they are an individual.
- **`claimInformation.otherSubscriberInformation[].otherSubscriberName.otherInsuredNameSuffix`** (`string`): The primary policyholder's name suffix, such as Jr. or III. Only include the subscriber's personal name suffix - **don't** include professional or academic titles, such as M.D. or MBA.
- **`claimInformation.otherSubscriberInformation[].otherSubscriberName.otherInsuredQualifier`** (`string`) (required): Code identifying the type of entity. Can be set to `1` - Person or `2` - Non-Person Entity.
  - Allowed values: `1`, `2`
- **`claimInformation.otherSubscriberInformation[].patientSignatureGeneratedForPatient`** (`boolean`): Code indicating how the patient or subscriber authorization signatures were obtained and how they are being retained by the provider. Can be set to `true` - Signature generated by provider because the patient was not physically present for services. This means the signature was generated by an entity other than the patient according to State or Federal law. This property is **required** for claims submitted to Medicare.
- **`claimInformation.otherSubscriberInformation[].payerPaidAmount`** (`string`): The total amount in dollars the payer has paid on this claim. It is acceptable to set this to `0` (Zero). This is required when you include the `payToPlan` object, and you should set it to the amount the Medicaid agency actually paid.
- **`claimInformation.otherSubscriberInformation[].paymentResponsibilityLevelCode`** (`string`) (required): Code identifying the payer's level of responsibility for paying this claim. Visit [Claims code lists](https://www.stedi.com/docs/healthcare/claims-code-lists#payment-responsibility-sequence-number-codes) for a complete list.
- Either this property or `subscriber.paymentResponsibilityLevelCode` must be set to `P` to indicate the primary insurance payer. Stedi rejects claims - including secondary and tertiary claims - that don't include information for the primary payer.
- You may need to use other codes if the patient has multiple insurance policies. For example, if a patient is covered by both Medicare and an employer-sponsored commercial plan, you could bill the commercial payer first as `P` and then bill the Medicare payer second as `S`.
  - Allowed values: `A`, `B`, `C`, `D`, `E`, `F`, `G`, `H`, `P`, `S`, `T`, `U`
- **`claimInformation.otherSubscriberInformation[].releaseOfInformationCode`** (`string`) (required): Code indicating whether the provider has on file a signed statement by the patient authorizing the release of medical data to other organizations. Can be set to `I` - Informed Consent to Release Medical Information or `Y` - Yes. Code `I` is required when the provider has not collected a signature AND state or federal laws do not require a signature be collected. Code `Y` is required when the provider has collected a signature OR when state or federal laws require a signature be collected.
  - Allowed values: `I`, `Y`
- **`claimInformation.otherSubscriberInformation[].remainingPatientLiability`** (`string`): This is the remaining amount (as determined by the provider) to be paid after the other payer identified in the `otherPayerName` object has adjudicated the claim.
- **`claimInformation.patientAmountPaid`** (`string`): The total amount in dollars the patient or their representatives have paid on this claim. For example, `20.50`. This includes any co-payments, co-insurance, or other amounts already collected from the patient.

If the patient has not paid anything, you should omit this property entirely - **don't** set it to `0`.
- **`claimInformation.patientConditionInformationVision`** (`array of PatientConditionInformationVision objects`): Required on vision claims involving replacement lenses or frames when this information is known to impact reimbursement.
- **`claimInformation.patientConditionInformationVision[].certificationConditionIndicator`** (`string`) (required): Code indicating whether there is a certification. Can be set to `N` - No or `Y` - Yes.
  - Allowed values: `N`, `Y`
- **`claimInformation.patientConditionInformationVision[].codeCategory`** (`string`) (required): Identifies the category to which the `conditionCode` applies. Can be set to `E1` - Spectacle Lenses, `E2` - Contact Lenses, or `E3` - Spectacle Frames.
  - Allowed values: `E1`, `E2`, `E3`
- **`claimInformation.patientConditionInformationVision[].conditionCodes`** (`array of strings`) (required): Code indicating the reason for the vision services. Visit [Claim code lists](https://www.stedi.com/docs/healthcare/claims-code-lists#vision-condition-codes) for a complete list.
- **`claimInformation.patientControlNumber`** (`string`) (required): An identifier you assign to the claim.

We **strongly recommend** submitting a unique value for this property so you can use it to correlate this claim with responses, such as the [277CA claim acknowledgment](https://www.stedi.com/docs/healthcare/receive-claim-responses#correlate-277ca) and the [835 ERA](https://www.stedi.com/docs/healthcare/receive-claim-responses#correlate-835-era).
  - Use random strings. The identifier should be more complex than a simple sequential number and should be hard to guess. Formats with patient initials or the date of service in them can create duplicates. We recommend using [nanoid](https://www.npmjs.com/package/nanoid) or a similar library configured with the characters from the [basic character set](https://www.stedi.com/docs/healthcare/submit-professional-claims#character-restrictions) to generate unique IDs.
  - Keep it to 17 characters max. Some payers cut off values longer than 17 characters in 277CAs and ERAs, which makes it hard to match them with the original claim.
  - Use only characters available in the [basic character set](https://www.stedi.com/docs/healthcare/submit-professional-claims#character-restrictions), and avoid special characters that are only available in the extended character set. Using other characters may result in data loss or mismatches when correlating claims with responses.
  - If you plan to submit the autogenerated CMS-1500 PDF for this claim, you must limit this value to 14 characters or this value will be truncated in the PDF. This value appears in Box 26 (Patient's Account No.) on the CMS-1500 form.
- **`claimInformation.patientSignatureSourceCode`** (`boolean`): Code indicating how the patient or subscriber authorization signatures were obtained and how they are being retained by the provider. Can be set to `true` - Signature generated by provider because the patient was not physically present for services. This means the signature was generated by an entity other than the patient according to State or Federal law. This property is **required** for claims submitted to Medicare.
- **`claimInformation.patientWeight`** (`string`): The patient's weight in pounds, such as `150`. You should only set this property if the payer specifically requests it, such as for some Medicare DME claims. Otherwise, including this property can trigger claim edits.
- **`claimInformation.placeOfServiceCode`** (`string`) (required): Code identifying the type of facility where the services were or may be performed.
  - Allowed values: `01`, `02`, `03`, `04`, `05`, `06`, `07`, `08`, `09`, `10`, `11`, `12`, `13`, `14`, `15`, `16`, `17`, `18`, `19`, `20`, `21`, `22`, `23`, `24`, `25`, `26`, `27`, `31`, `32`, `33`, `34`, `41`, `42`, `49`, `50`, `51`, `52`, `53`, `54`, `55`, `56`, `57`, `58`, `60`, `61`, `62`, `65`, `66`, `71`, `72`, `81`, `99`
- **`claimInformation.planParticipationCode`** (`string`) (required): Code indicating whether the provider accepts assignment. This refers to whether the provider accepts assignment and/or has a participation agreement with the destination payer. It does not indicate whether the patient has assigned benefits to the provider. Can be set to `A` - Assigned, `B` - Assignment Accepted on Clinical Lab Services Only, or `C` - Not Assigned. Choose `A` when the provider accepts assignment and/or has a participation agreement with the destination payer, OR the provider does not accept assignment and/or have a participation agreement, but is advising the payer to adjudicate this specific claim under the participating provider benefits allowed under certain plans.
  - Allowed values: `A`, `B`, `C`
- **`claimInformation.pregnancyIndicator`** (`string`): Code indicating whether the patient is pregnant. Can be set to `Y` - Yes.
  - Allowed values: `Y`
- **`claimInformation.propertyCasualtyClaimNumber`** (`string`): The agency claim number for this transaction. Used when services included in this claim are part of a property and casualty claim.
- **`claimInformation.relatedCausesCode`** (`array of strings`): Code identifying an accompanying cause of an illness, injury or an accident. Can be set to `AA` - Auto Accident, `EM` - Employment, or `OA` - Other Accident. You can include up to two codes in this array.
- **`claimInformation.releaseInformationCode`** (`string`) (required): Indicates whether the provider has on file a signed statement by the patient authorizing the release of medical data to other organizations. Can be set to `Y` - Yes, or `I` - Informed Consent to Release Medical Information for Conditions or Diagnoses Regulated by Federal Statues. Use `I` when the provider has not collected a signature AND state or federal laws do not require a signature be collected.
  - Allowed values: `I`, `Y`
- **`claimInformation.serviceFacilityLocation`** (`object`): Required when the location for the service is different from the billing provider's address. The purpose of this object is to identify specifically where the service was rendered. This can be healthcare facilities, such as surgical centers or reference labs, OR the patient's address when services were rendered in their home.
- Only include this object when the service facility location is **different** from the billing provider's address. If you include this object when the address is the same, Stedi omits all of the service facility location information from the claim submission, including the name and any identifiers.
- For telehealth services, the service facility location is the provider's address, even though the patient may have been in their home or elsewhere when receiving services.
- Don't use this object when reporting ambulance services - use `ambulancePickupLocation` and `ambulanceDropoffLocation` instead.
- Sometimes the billing provider is an actual physician group that is located at the same address as a hospital, but is in fact a separate entity. In this case, you can differentiate the service facility location by including the specific suite or building number of the physician group. This ensures that the service facility location is different from the billing provider's address and is reported accurately.
- **`claimInformation.serviceFacilityLocation.address`** (`object`) (required)
- **`claimInformation.serviceFacilityLocation.address.address1`** (`string`) (required): The first line of the street address. This typically contains the building number and street name.
- **`claimInformation.serviceFacilityLocation.address.address2`** (`string`): The second line of the street address. This typically contains the apartment or suite number.
- **`claimInformation.serviceFacilityLocation.address.city`** (`string`) (required): The city name.
- **`claimInformation.serviceFacilityLocation.address.countryCode`** (`string`): Use the alpha-2 country codes from Part 1 of ISO 3166.
- **`claimInformation.serviceFacilityLocation.address.countrySubDivisionCode`** (`string`): Use the country subdivision codes from Part 2 of ISO 3166.
- **`claimInformation.serviceFacilityLocation.address.postalCode`** (`string`): The postal zone or zip code. For United States addresses, you must include the full nine-digit zip code with no separators, such as `100031502`. If you don't know the full zip code, you can find it using the [USPS ZIP Code Lookup](https://tools.usps.com/zip-code-lookup.htm) tool. Exclude punctuation and spaces.
- **`claimInformation.serviceFacilityLocation.address.state`** (`string`): The state or province code. Only required when the city is in the United States and Canada.
- **`claimInformation.serviceFacilityLocation.npi`** (`string`): The organization [National Provider Identifier (NPI)](https://www.stedi.com/docs/healthcare/national-provider-identifier) assigned to the service facility. Only include this property when the service facility is not a component or subpart of the `billing` provider. Don't include when the service facility is the patient's home.
- **`claimInformation.serviceFacilityLocation.organizationName`** (`string`) (required): The laboratory or facility name. When services were rendered in the patient's home, we recommend setting this to `Residence` or something similar.
- **`claimInformation.serviceFacilityLocation.phoneExtension`** (`string`): The telephone extension, if applicable. Only submit the numeric extension. For example, don't include data that indicates an extension, such as 'ext.' or 'x-'.
- **`claimInformation.serviceFacilityLocation.phoneName`** (`string`): The full name of the person or office.
- **`claimInformation.serviceFacilityLocation.phoneNumber`** (`string`): The phone number, formatted as AAABBBCCCC, where AAA represents the area code, BBB is the telephone number prefix, and CCCC is the telephone number. The phone number should only include the digits 0 to 9. Don't include separators, such as dashes, and don't include long distance access numbers, such as 1. For example, you would format the phone number 123-456-7890 as 1234567890.
- **`claimInformation.serviceFacilityLocation.secondaryIdentifier`** (`array of ClaimServiceFacilityLocationSecondaryIdentifierItem objects`): Secondary identifiers for the service facility location. Used when another identifier is needed for the claims processor to identify the facility or when the entity is not a healthcare provider and does not have an [NPI](https://www.stedi.com/docs/healthcare/national-provider-identifier).
- **`claimInformation.serviceFacilityLocation.secondaryIdentifier[].identifier`** (`string`) (required): The identifier. The format and length of this value depends on the `qualifier` you set.
- **`claimInformation.serviceFacilityLocation.secondaryIdentifier[].otherIdentifier`** (`string`): The identifier for the other payer who provided this reference number. This is only required when the reference number is provided by the non-destination payer. The value must match the `claimInformation.otherSubscriberInformation[].otherPayerName.otherPayerIdentifier` property.
- **`claimInformation.serviceFacilityLocation.secondaryIdentifier[].qualifier`** (`string`) (required): Set to `0B` - State License Number, `LU` - Location Number, or `G2` - Provider Commercial Number.
- **`claimInformation.serviceLines`** (`array of ServiceLine objects`) (required): Information about one or more services rendered to the patient.
  - Each service line must be a unique service event as defined by the payer's billing policies. This means that you can use the same procedure code on multiple service lines as long as they are distinct events.
  - Some procedure codes are date-specific. In these cases, you may need to create a separate service line with that code for each applicable date of service, even if the episode of care extended over multiple days.
  - Service lines can share the same dates of service if the patient received multiple services on the same day.
- **`claimInformation.serviceLines[].additionalNotes`** (`string`): Additional information the provider feels is necessary to substantiate the medical treatment that cannot be provided in other claim properties. Don't use this property to describe non-specific procedure codes.
- **`claimInformation.serviceLines[].ambulanceCertification`** (`array of AmbulanceCertification objects`)
- **`claimInformation.serviceLines[].ambulanceCertification[].certificationConditionIndicator`** (`string`) (required): Code indicating whether there is an ambulance certification.
  - Allowed values: `N`, `Y`
- **`claimInformation.serviceLines[].ambulanceCertification[].conditionCodes`** (`array of strings`) (required)
- **`claimInformation.serviceLines[].ambulanceDropOffLocation`** (`object`)
- **`claimInformation.serviceLines[].ambulanceDropOffLocation.address1`** (`string`) (required): The first line of the street address. This typically contains the building number and street name.
- **`claimInformation.serviceLines[].ambulanceDropOffLocation.address2`** (`string`): The second line of the street address. This typically contains the apartment or suite number.
- **`claimInformation.serviceLines[].ambulanceDropOffLocation.city`** (`string`) (required): The city name.
- **`claimInformation.serviceLines[].ambulanceDropOffLocation.countryCode`** (`string`): Use the alpha-2 country codes from Part 1 of ISO 3166.
- **`claimInformation.serviceLines[].ambulanceDropOffLocation.countrySubDivisionCode`** (`string`): Use the country subdivision codes from Part 2 of ISO 3166.
- **`claimInformation.serviceLines[].ambulanceDropOffLocation.postalCode`** (`string`): The postal zone or zip code. For United States addresses, you must include the full nine-digit zip code with no separators, such as `100031502`. If you don't know the full zip code, you can find it using the [USPS ZIP Code Lookup](https://tools.usps.com/zip-code-lookup.htm) tool. Exclude punctuation and spaces.
- **`claimInformation.serviceLines[].ambulanceDropOffLocation.state`** (`string`): The state or province code. Only required when the city is in the United States and Canada.
- **`claimInformation.serviceLines[].ambulancePatientCount`** (`integer`): The number of patients transported by the ambulance. Required when more than one patient is transported in the same vehicle for Ambulance or non-emergency transportation services.
- **`claimInformation.serviceLines[].ambulancePickUpLocation`** (`object`)
- **`claimInformation.serviceLines[].ambulancePickUpLocation.address1`** (`string`) (required): The first line of the street address. This typically contains the building number and street name.
- **`claimInformation.serviceLines[].ambulancePickUpLocation.address2`** (`string`): The second line of the street address. This typically contains the apartment or suite number.
- **`claimInformation.serviceLines[].ambulancePickUpLocation.city`** (`string`) (required): The city name.
- **`claimInformation.serviceLines[].ambulancePickUpLocation.countryCode`** (`string`): Use the alpha-2 country codes from Part 1 of ISO 3166.
- **`claimInformation.serviceLines[].ambulancePickUpLocation.countrySubDivisionCode`** (`string`): Use the country subdivision codes from Part 2 of ISO 3166.
- **`claimInformation.serviceLines[].ambulancePickUpLocation.postalCode`** (`string`): The postal zone or zip code. For United States addresses, you must include the full nine-digit zip code with no separators, such as `100031502`. If you don't know the full zip code, you can find it using the [USPS ZIP Code Lookup](https://tools.usps.com/zip-code-lookup.htm) tool. Exclude punctuation and spaces.
- **`claimInformation.serviceLines[].ambulancePickUpLocation.state`** (`string`): The state or province code. Only required when the city is in the United States and Canada.
- **`claimInformation.serviceLines[].ambulanceTransportInformation`** (`object`): Information about the ambulance service provided to the patient.
- **`claimInformation.serviceLines[].ambulanceTransportInformation.ambulanceTransportReasonCode`** (`string`) (required): Code indicating the reason for ambulance transport. For example, `A` - Patient was transported to nearest facility for care of symptoms, complaints, or both. Visit [Claims code lists](https://www.stedi.com/docs/healthcare/claims-code-lists#ambulance-transport-reason-codes) for a complete list.
  - Allowed values: `A`, `B`, `C`, `D`, `E`
- **`claimInformation.serviceLines[].ambulanceTransportInformation.patientWeightInPounds`** (`string`): The weight of the patient, in pounds, at the time of transport. Provide this value as a decimal, such as `150.5`
- **`claimInformation.serviceLines[].ambulanceTransportInformation.roundTripPurposeDescription`** (`string`): The reason for the round trip ambulance service.
- **`claimInformation.serviceLines[].ambulanceTransportInformation.stretcherPurposeDescription`** (`string`): The reason for usage of a stretcher during ambulance service.
- **`claimInformation.serviceLines[].ambulanceTransportInformation.transportDistanceInMiles`** (`string`) (required): The number of miles the ambulance traveled to transport the patient. Provide this value as a decimal, such as `20.5`. Note that `0` (zero) is a valid value when ambulance services do not include a charge for mileage.
- **`claimInformation.serviceLines[].assignedNumber`** (`string`): Deprecated; Stedi computes this value for you.
- **`claimInformation.serviceLines[].conditionIndicatorDurableMedicalEquipment`** (`object`): Required when a Durable Medical Equipment Regional Carrier Certificate of Medical Necessity (DMERC CMN) or a DMERC Information Form (DIF), or Oxygen Therapy Certification is included on this service line and the information is necessary for adjudication.
- **`claimInformation.serviceLines[].conditionIndicatorDurableMedicalEquipment.certificationConditionIndicator`** (`string`) (required): Code indicating whether there is a certification. Can be set to `N` - No or `Y` - Yes.
  - Allowed values: `Y`, `N`
- **`claimInformation.serviceLines[].conditionIndicatorDurableMedicalEquipment.conditionIndicator`** (`string`) (required): Code indicating the condition of the certificate. Can be set to `38` - Certification signed by the physician is on file at the supplier's office or `ZV` - Replacement Item.
  - Allowed values: `38`, `ZV`
- **`claimInformation.serviceLines[].conditionIndicatorDurableMedicalEquipment.conditionIndicatorCode`** (`string`): A second code indicating the condition of the certificate. Can be set to `38` - Certification signed by the physician is on file at the supplier's office or `ZV` - Replacement Item.
  - Allowed values: `38`, `ZV`
- **`claimInformation.serviceLines[].contractInformation`** (`object`): Required when the submitter is contractually obligated to supply this information on post-adjudicated claims.
- **`claimInformation.serviceLines[].contractInformation.contractAmount`** (`string`): The total dollar amount of the contract, expressed as a decimal. For example, `100.50`.
- **`claimInformation.serviceLines[].contractInformation.contractCode`** (`string`): The contract code. This is an identifier for the contract.
- **`claimInformation.serviceLines[].contractInformation.contractPercentage`** (`string`): The allowance or charge percent, expressed as a decimal. For example, `0.80`.
- **`claimInformation.serviceLines[].contractInformation.contractTypeCode`** (`string`) (required): Code indicating the type of contract. Can be set to `01` - Diagnosis Related Group (DRG), `02` - Per Diem, `03` - Variable Per Diem, `04` - Flat, `05` - Capitated, `06` - Percent, or `09` - Other.
  - Allowed values: `01`, `02`, `03`, `04`, `05`, `06`, `09`
- **`claimInformation.serviceLines[].contractInformation.contractVersionIdentifier`** (`string`): An additional identifier for the contract. Identifies the revision level of a particular format, program, technique or algorithm.
- **`claimInformation.serviceLines[].contractInformation.termsDiscountPercentage`** (`string`): Terms discount percentage, expressed as a decimal, available to the purchaser if an invoice is paid on or before the Terms Discount Due Date.
- **`claimInformation.serviceLines[].drugIdentification`** (`object`): To report prescribed drugs and biologics.
- **`claimInformation.serviceLines[].drugIdentification.linkSequenceNumber`** (`string`): Required when the provided medication involves the compounding of two or more drugs being reported and there is no prescription number. The link sequence number is a provider assigned number that is unique to this claim. It allows the receiver to piece together the components of the compound.
- **`claimInformation.serviceLines[].drugIdentification.measurementUnitCode`** (`string`) (required): Code identifying the unit of measurement. Can be set to `F2` - International Unit, `GR` - Gram, `ME` - Milligram, `ML` - Milliliter, or `UN` - Unit.
  - Allowed values: `F2`, `GR`, `ME`, `ML`, `UN`
- **`claimInformation.serviceLines[].drugIdentification.nationalDrugCode`** (`string`) (required)
- **`claimInformation.serviceLines[].drugIdentification.nationalDrugUnitCount`** (`string`) (required): The numeric value of the drug quantity.
- **`claimInformation.serviceLines[].drugIdentification.pharmacyPrescriptionNumber`** (`string`): In cases where a compound drug is being billed, the components of the compound will all have the same prescription number. Payers receiving the claim can relate all the components by matching the prescription number.
- **`claimInformation.serviceLines[].drugIdentification.serviceIdQualifier`** (`string`) (required): Code indicating the source of the drug code or product number. Visit [Claims code lists](https://www.stedi.com/docs/healthcare/claims-code-lists#drug-identification-product-or-service-id-qualifier-codes) for a complete list.
  - Allowed values: `EN`, `EO`, `HI`, `N4`, `ON`, `UK`, `UP`
- **`claimInformation.serviceLines[].durableMedicalEquipmentCertificateOfMedicalNecessity`** (`object`): Required on claims that include a Durable Medical Equipment Regional Carrier (DMERC) Certificate of Medical Necessity (CMN).
- **`claimInformation.serviceLines[].durableMedicalEquipmentCertificateOfMedicalNecessity.attachmentTransmissionCode`** (`string`) (required): Code indicating the timing, transmission method, or format by which attachments will be sent. Required when the actual attachment is maintained by an attachment warehouse or similar vendor. Visit [Claims code lists](https://www.stedi.com/docs/healthcare/claims-code-lists#attachment-transmission-codes) for a complete list. Use code `NS` when the paperwork is available on request at the provider's site, but is not being sent with the claim at this time.
  - Allowed values: `AB`, `AD`, `AF`, `AG`, `NS`
- **`claimInformation.serviceLines[].durableMedicalEquipmentCertification`** (`object`): Required when a Durable Medical Equipment Regional Carrier Certificate of Medical Necessity (DMERC CMN) or a DMERC Information Form (DIF) or Oxygen Therapy Certification is included on this service line.
- **`claimInformation.serviceLines[].durableMedicalEquipmentCertification.certificationTypeCode`** (`string`) (required): Code indicating the type of certification. Can be set to `I` - Initial, `R` - Renewal, or `S` - Revised.
  - Allowed values: `I`, `R`, `S`
- **`claimInformation.serviceLines[].durableMedicalEquipmentCertification.durableMedicalEquipmentDurationInMonths`** (`string`) (required): The length of time the DME equipment is needed.
- **`claimInformation.serviceLines[].durableMedicalEquipmentService`** (`object`): Information about durable medical equipment. For example, the rental and purchase price information.
- **`claimInformation.serviceLines[].durableMedicalEquipmentService.days`** (`string`) (required): The length of medical treatment required.
- **`claimInformation.serviceLines[].durableMedicalEquipmentService.frequencyCode`** (`string`) (required): Code indicating the frequency at which the rental equipment is billed. Can be set to `1` - weekly, `4` - monthly, or `6` - daily.
  - Allowed values: `1`, `4`, `6`
- **`claimInformation.serviceLines[].durableMedicalEquipmentService.purchasePrice`** (`string`) (required): The purchase price for the equipment, expressed as a decimal. For example, `100.50`.
- **`claimInformation.serviceLines[].durableMedicalEquipmentService.rentalPrice`** (`string`) (required): The rental price for the equipment, expressed as a decimal. For example, `100.50`.
- **`claimInformation.serviceLines[].fileInformation`** (`array of strings`): Used to send additional data specifically requested by the payer. Not commonly used.
- **`claimInformation.serviceLines[].formIdentification`** (`array of FormIdentification objects`): Use this object to attach standardized supplemental information to the claim when required by the payer. One example is payer documentation requirements for home health services.
- **`claimInformation.serviceLines[].formIdentification[].formIdentifier`** (`string`) (required): A code from the industry code list you identified in `formTypeCode`.
- **`claimInformation.serviceLines[].formIdentification[].formTypeCode`** (`string`) (required): Code indicating the type of form. Can be set to `AS` - Form Type Code or `UT` - Centers for Medicare and Medicaid Services (CMS) Durable Medical Equipment Regional Carrier (DMERC) Certificate of Medical Necessity (CMN) Forms. Set this to `AS` when you plan to include a home health form in the `formIdentifier` property.
  - Allowed values: `AS`, `UT`
- **`claimInformation.serviceLines[].formIdentification[].supportingDocumentation`** (`array of SupportingDocumentation objects`): Use to provide information in response to a coded questionnaire document.
- **`claimInformation.serviceLines[].formIdentification[].supportingDocumentation[].questionNumber`** (`string`) (required)
- **`claimInformation.serviceLines[].formIdentification[].supportingDocumentation[].questionResponse`** (`string`): A text response to the question.
- **`claimInformation.serviceLines[].formIdentification[].supportingDocumentation[].questionResponseAsDate`** (`string`): Date value.
- **`claimInformation.serviceLines[].formIdentification[].supportingDocumentation[].questionResponseAsPercent`** (`string`): Percent formatted as a decimal.
- **`claimInformation.serviceLines[].formIdentification[].supportingDocumentation[].questionResponseCode`** (`string`): Code indicating a yes or no condition response to the question. Can be set to `N` - No, `W` - Not Applicable, or `Y` - Yes.
  - Allowed values: `N`, `W`, `Y`
- **`claimInformation.serviceLines[].goalRehabOrDischargePlans`** (`string`): The provider's goals, rehabilitation potential, or discharge plans for the patient.
- **`claimInformation.serviceLines[].hospiceEmployeeIndicator`** (`boolean`): Whether the rendering provider is a hospice employee. Required on all Medicare claims involving physician services to hospice patients. Set to `true` if the rendering provider is a hospice employee, and `false` if they are not.
- **`claimInformation.serviceLines[].lineAdjudicationInformation`** (`array of LineAdjudicationInformation objects`): Includes service line adjudication information for coordination of benefits between the initial payers of a health care claim and all subsequent payers.
- **`claimInformation.serviceLines[].lineAdjudicationInformation[].adjudicationOrPaymentDate`** (`string`) (required): The date the other payer adjudicated or paid the claim.
- **`claimInformation.serviceLines[].lineAdjudicationInformation[].bundledOrUnbundledLineNumber`** (`string`): The LX assigned number of the service line into which this service line is bundled. It's only used to bundle service lines.
- **`claimInformation.serviceLines[].lineAdjudicationInformation[].claimAdjustmentInformation`** (`array of ClaimAdjustment objects`): Required when the payer made line level adjustments which caused the amount paid to differ from the amount originally charged. You can include up to five objects in this array.
- **`claimInformation.serviceLines[].lineAdjudicationInformation[].claimAdjustmentInformation[].adjustmentDetails`** (`array of ClaimAdjustmentDetails objects`) (required)
- **`claimInformation.serviceLines[].lineAdjudicationInformation[].claimAdjustmentInformation[].adjustmentDetails[].adjustmentAmount`** (`string`) (required): The dollar amount of the adjustment, expressed as a decimal. For example, `100.50`.
- **`claimInformation.serviceLines[].lineAdjudicationInformation[].claimAdjustmentInformation[].adjustmentDetails[].adjustmentQuantity`** (`string`): The units of service being adjusted.
- **`claimInformation.serviceLines[].lineAdjudicationInformation[].claimAdjustmentInformation[].adjustmentDetails[].adjustmentReasonCode`** (`string`) (required): Code identifying the detailed reason the adjustment was made. Visit the X12 [Claim Adjustment Reason Codes](https://x12.org/codes/claim-adjustment-reason-codes) for a complete list.
- **`claimInformation.serviceLines[].lineAdjudicationInformation[].claimAdjustmentInformation[].adjustmentGroupCode`** (`string`) (required): Code identifying the general category of payment adjustment. Can be set to `CO` - Contractual Obligations, `CR` - Correction and Reversals, `OA` - Other Adjustments, `PI` - Payor Initiated Reductions, or `PR - Patient Responsibility.
  - Allowed values: `CO`, `CR`, `OA`, `PI`, `PR`
- **`claimInformation.serviceLines[].lineAdjudicationInformation[].otherPayerPrimaryIdentifier`** (`string`) (required): The payer ID for the payer responsible for reimbursement.
- **`claimInformation.serviceLines[].lineAdjudicationInformation[].paidServiceUnitCount`** (`string`) (required): The number of paid units from the remittance advice. expressed as a decimal. When paid units are not present on the remittance advice, use the original billed units. The maximum length for this property is 8 digits excluding the decimal. When a decimal is used, the maximum number of digits allowed to the right of the decimal is three.
- **`claimInformation.serviceLines[].lineAdjudicationInformation[].procedureCode`** (`string`) (required): The procedure code.
- **`claimInformation.serviceLines[].lineAdjudicationInformation[].procedureCodeDescription`** (`string`): The meaning of the procedure code.
- **`claimInformation.serviceLines[].lineAdjudicationInformation[].procedureModifier`** (`array of strings`): Modifiers that convey special circumstances related to the performance of the service. You can include up to four modifiers in this array.
- **`claimInformation.serviceLines[].lineAdjudicationInformation[].remainingPatientLiability`** (`string`): The amount of the service line that the patient is still responsible for, expressed as a decimal.
- **`claimInformation.serviceLines[].lineAdjudicationInformation[].serviceIdQualifier`** (`string`) (required): Code identifying the type of `procedureCode`. Visit [Claims code lists](https://www.stedi.com/docs/healthcare/claims-code-lists#composite-medical-procedure-product-or-service-id-qualifier-codes) for a complete list.
  - Allowed values: `ER`, `HC`, `HP`, `IV`, `WK`
- **`claimInformation.serviceLines[].lineAdjudicationInformation[].serviceLinePaidAmount`** (`string`) (required): The amount paid for this service line, expressed as a decimal. Zero (0) is an acceptable value.
- **`claimInformation.serviceLines[].linePricingRepricingInformation`** (`object`): Repricing information to be completed by repricers, not providers. For capitated encounters, pricing or repricing information usually is not applicable and is provided to qualify other information within the claim.
- **`claimInformation.serviceLines[].linePricingRepricingInformation.exceptionCode`** (`string`): Code specifying the exception reason for consideration of out-of-network health care services. This is the reason generated by the third-party health organization. Visit [Claims code lists](https://www.stedi.com/docs/healthcare/claims-code-lists#exception-codes-2) for a complete list.
  - Allowed values: `1`, `2`, `3`, `4`, `5`, `6`
- **`claimInformation.serviceLines[].linePricingRepricingInformation.policyComplianceCode`** (`string`)
  - Allowed values: `1`, `2`, `3`, `4`, `5`
- **`claimInformation.serviceLines[].linePricingRepricingInformation.pricingMethodologyCode`** (`string`) (required): Code indicating the pricing or repricing methodology. Visit [Claims code lists](https://www.stedi.com/docs/healthcare/claims-code-lists#pricing-methodology-codes-2) for a complete list.
  - Allowed values: `00`, `01`, `02`, `03`, `04`, `05`, `06`, `07`, `08`, `09`, `10`, `11`, `12`, `13`, `14`
- **`claimInformation.serviceLines[].linePricingRepricingInformation.rejectReasonCode`** (`string`)
  - Allowed values: `T1`, `T2`, `T3`, `T4`, `T5`, `T6`
- **`claimInformation.serviceLines[].linePricingRepricingInformation.repricedAllowedAmount`** (`string`) (required): The dollar amount, expressed as a decimal. For example, `100.50`.
- **`claimInformation.serviceLines[].linePricingRepricingInformation.repricedApprovedAmbulatoryPatientGroupAmount`** (`string`): The dollar amount, expressed as a decimal.
- **`claimInformation.serviceLines[].linePricingRepricingInformation.repricedApprovedAmbulatoryPatientGroupCode`** (`string`): The code indicating the type of repricing.
- **`claimInformation.serviceLines[].linePricingRepricingInformation.repricedSavingAmount`** (`string`): The dollar amount, expressed as a decimal.
- **`claimInformation.serviceLines[].linePricingRepricingInformation.repricingOrganizationIdentifier`** (`string`): The identifier of the organization that repriced the claim.
- **`claimInformation.serviceLines[].linePricingRepricingInformation.repricingPerDiemOrFlatRateAmount`** (`string`): The pricing rate associated with per diem or flat rate repricing, expressed as a decimal.
- **`claimInformation.serviceLines[].obstetricAnesthesiaAdditionalUnits`** (`integer`): The number of units reported by an anesthesia provider to reflect additional complexity of services.
- **`claimInformation.serviceLines[].orderingProvider`** (`object`)
- **`claimInformation.serviceLines[].orderingProvider.address`** (`object`)
- **`claimInformation.serviceLines[].orderingProvider.address.address1`** (`string`) (required): The first line of the street address. This typically contains the building number and street name.
- **`claimInformation.serviceLines[].orderingProvider.address.address2`** (`string`): The second line of the street address. This typically contains the apartment or suite number.
- **`claimInformation.serviceLines[].orderingProvider.address.city`** (`string`) (required): The city name.
- **`claimInformation.serviceLines[].orderingProvider.address.countryCode`** (`string`): Use the alpha-2 country codes from Part 1 of ISO 3166.
- **`claimInformation.serviceLines[].orderingProvider.address.countrySubDivisionCode`** (`string`): Use the country subdivision codes from Part 2 of ISO 3166.
- **`claimInformation.serviceLines[].orderingProvider.address.postalCode`** (`string`): The postal zone or zip code. For United States addresses, you must include the full nine-digit zip code with no separators, such as `100031502`. If you don't know the full zip code, you can find it using the [USPS ZIP Code Lookup](https://tools.usps.com/zip-code-lookup.htm) tool. Exclude punctuation and spaces.
- **`claimInformation.serviceLines[].orderingProvider.address.state`** (`string`): The state or province code. Only required when the city is in the United States and Canada.
- **`claimInformation.serviceLines[].orderingProvider.claimOfficeNumber`** (`string`)
- **`claimInformation.serviceLines[].orderingProvider.commercialNumber`** (`string`)
- **`claimInformation.serviceLines[].orderingProvider.contactInformation`** (`object`)
- **`claimInformation.serviceLines[].orderingProvider.contactInformation.email`** (`string`): The email address.
- **`claimInformation.serviceLines[].orderingProvider.contactInformation.faxNumber`** (`string`): The fax number, formatted as AAABBBCCCC.
- **`claimInformation.serviceLines[].orderingProvider.contactInformation.name`** (`string`) (required): The full name of the person or office.
- **`claimInformation.serviceLines[].orderingProvider.contactInformation.phoneExtension`** (`string`): The phone extension, if applicable.
- **`claimInformation.serviceLines[].orderingProvider.contactInformation.phoneNumber`** (`string`): The phone number, formatted as AAABBBCCCC, where AAA represents the area code, BBB is the telephone number prefix, and CCCC is the telephone number. The phone number should only include the digits 0 to 9. Don't include separators, such as dashes, and don't include long distance access numbers, such as 1. For example, you would format the phone number 123-456-7890 as 1234567890.
- **`claimInformation.serviceLines[].orderingProvider.employerId`** (`string`)
- **`claimInformation.serviceLines[].orderingProvider.employerIdentificationNumber`** (`string`)
- **`claimInformation.serviceLines[].orderingProvider.firstName`** (`string`): The provider's first name.
- **`claimInformation.serviceLines[].orderingProvider.lastName`** (`string`): The provider's last name.
- **`claimInformation.serviceLines[].orderingProvider.locationNumber`** (`string`)
- **`claimInformation.serviceLines[].orderingProvider.middleName`** (`string`): The provider's middle name or initial.
- **`claimInformation.serviceLines[].orderingProvider.naic`** (`string`)
- **`claimInformation.serviceLines[].orderingProvider.npi`** (`string`): The individual [National Provider Identifier (NPI)](https://www.stedi.com/docs/healthcare/national-provider-identifier) assigned to the provider.
- **`claimInformation.serviceLines[].orderingProvider.organizationName`** (`string`): The provider's business name.
- **`claimInformation.serviceLines[].orderingProvider.otherIdentifier`** (`string`)
- **`claimInformation.serviceLines[].orderingProvider.payerIdentificationNumber`** (`string`)
- **`claimInformation.serviceLines[].orderingProvider.providerType`** (`string`): This field is now automatically populated and it only remains for backwards compatibility.
- **`claimInformation.serviceLines[].orderingProvider.providerUpinNumber`** (`string`)
- **`claimInformation.serviceLines[].orderingProvider.secondaryIdentifier`** (`array of ServiceLineOrderingProviderSecondaryIdentifierItem objects`): Secondary identifiers for the ordering provider.
- **`claimInformation.serviceLines[].orderingProvider.secondaryIdentifier[].identifier`** (`string`) (required): The identifier. The format and length of this value depends on the `qualifier` you set.
- **`claimInformation.serviceLines[].orderingProvider.secondaryIdentifier[].otherIdentifier`** (`string`): The identifier for the other payer who provided this reference number. This is only required when the reference number is provided by the non-destination payer. The value must match the `claimInformation.otherSubscriberInformation[].otherPayerName.otherPayerIdentifier` property.
- **`claimInformation.serviceLines[].orderingProvider.secondaryIdentifier[].qualifier`** (`string`) (required): Set to `0B` - State License Number, `1G` - Provider UPIN Number, or `G2` - Provider Commercial Number. Note that UPIN is deprecated and shouldn't be used for new claims.
- **`claimInformation.serviceLines[].orderingProvider.ssn`** (`string`): Social Security Number without spaces or punctuation (9 digits)
- **`claimInformation.serviceLines[].orderingProvider.stateLicenseNumber`** (`string`)
- **`claimInformation.serviceLines[].orderingProvider.suffix`** (`string`): The provider's name suffix, such as Jr. or III.
- **`claimInformation.serviceLines[].orderingProvider.taxonomyCode`** (`string`)
- **`claimInformation.serviceLines[].postageTaxAmount`** (`string`): The amount of the postage, formatted as a decimal. When you include this property, the total `lineItemChargeAmount` for this service line must include this postage value.
- **`claimInformation.serviceLines[].professionalService`** (`object`) (required): Information about the service rendered.
- **`claimInformation.serviceLines[].professionalService.compositeDiagnosisCodePointers`** (`object`) (required): Diagnosis code pointers in order of importance to this service line. These pointers are an index to the ICD-10-CM codes you included in the `claimInformation.healthCareCodeInformation` object array. The pointer values can be from 1 to 12 (integer numbers).
- You **must** set at least one pointer for the primary diagnosis. Then, you can add up to three additional pointers (up to four in total).
- The number of pointers cannot exceed the number of diagnosis codes in the `claimInformation.healthCareCodeInformation` object array. For example, if you only supplied one diagnosis code, then the only valid pointer value is 1.
- Don't put ICD-10-CM codes here - they belong in `claimInformation.healthCareCodeInformation`.
- **`claimInformation.serviceLines[].professionalService.compositeDiagnosisCodePointers.diagnosisCodePointers`** (`array of strings`) (required): A diagnosis code pointer for this service line.
- **`claimInformation.serviceLines[].professionalService.copayStatusCode`** (`string`): Code indicating whether co-payment requirements were met. Can be set to `O` - Copay exempt.
  - Allowed values: `0`
- **`claimInformation.serviceLines[].professionalService.description`** (`string`): A free form description to clarify the procedure code and any procedure modifiers, as needed.
- **`claimInformation.serviceLines[].professionalService.emergencyIndicator`** (`string`): Code indicating whether the service was related to an emergency. Can be set to `Y` - Yes. An emergency is when the patient requires immediate medical intervention as a result of severe, life threatening, or potentially disabling conditions.
  - Allowed values: `Y`
- **`claimInformation.serviceLines[].professionalService.epsdtIndicator`** (`string`): Code indicating whether there was EPSDT involvement in the service. Can be set to `Y` - Yes. EPSDT is a program that provides comprehensive and preventive health care services for children under age 21 who are enrolled in Medicaid.
  - Allowed values: `Y`
- **`claimInformation.serviceLines[].professionalService.familyPlanningIndicator`** (`string`): Code indicating whether the service was related to family planning. Can be set to `Y` - Yes.
  - Allowed values: `Y`
- **`claimInformation.serviceLines[].professionalService.lineItemChargeAmount`** (`string`) (required): The total charge amount for the service, including the provider's base charge and any applicable tax or postage. It is acceptable to set this to `0` (zero).
- **`claimInformation.serviceLines[].professionalService.measurementUnit`** (`string`) (required): Code identifying the unit of measurement. Can be set to `MJ` - Minutes or `UN` - Unit. Minutes is required for anesthesia services. Note that anesthesia time is counted from the moment that the practitioner, having completed the preoperative evaluation, starts an intravenous line, places monitors, administers pre-anesthesia sedation, or otherwise physically begins to prepare the patient for anesthesia. Time continues throughout the case and while the practitioner accompanies the patient to the post-anesthesia recovery unit (PACU). Time stops when the practitioner releases the patient to the care of PACU personnel.
  - Allowed values: `MJ`, `UN`
- **`claimInformation.serviceLines[].professionalService.placeOfServiceCode`** (`string`): A code identifying the location where services were rendered. Visit [Place of Service Codes](https://www.cms.gov/medicare/coding-billing/place-of-service-codes/code-sets) for a complete list.
- **`claimInformation.serviceLines[].professionalService.procedureCode`** (`string`) (required): The procedure code.
- **`claimInformation.serviceLines[].professionalService.procedureIdentifier`** (`string`) (required): Code identifying the specific industry code list used for the `procedureCode`. Visit [Claims code lists](https://www.stedi.com/docs/healthcare/claims-code-lists#composite-medical-procedure-product-or-service-id-qualifier-codes) for a complete list.
  - Allowed values: `ER`, `HC`, `IV`, `WK`
- **`claimInformation.serviceLines[].professionalService.procedureModifiers`** (`array of strings`): A modifier code that clarifies or improves the reporting accuracy of the associated procedure code. If not required, do not send.
- **`claimInformation.serviceLines[].professionalService.serviceUnitCount`** (`string`) (required): The number of units of the service provided, formatted as a decimal. The units depend on the procedure code being billed and the nature of the service. For example, they may correspond to office visits (1 unit per visit), individual diagnostic tests (1 unit per test), or time (when a service is billed in 15-minute increments, 4 units could equal 1 hour).
- **`claimInformation.serviceLines[].providerControlNumber`** (`string`): A unique identifier for this service line within the claim. It appears in the 835 (ERA) response as `lineItemControlNumber`, allowing you to correlate ERAs to the specific service lines from the original claim. If you don't set this property, Stedi uses a random ULID. Stedi returns service line identifiers in the `claimReference.serviceLines[].lineItemControlNumber` object of the synchronous API response.
- **`claimInformation.serviceLines[].purchasedServiceInformation`** (`object`): Specify information about services that were purchased. Required on non-vision service lines when adjudication is known to be impacted by the charge amount for services purchased from another source OR when adjudication is known to be impacted by the acquisition cost of lenses.
- **`claimInformation.serviceLines[].purchasedServiceInformation.purchasedServiceChargeAmount`** (`string`) (required): The cost of the purchased service.
- **`claimInformation.serviceLines[].purchasedServiceInformation.purchasedServiceProviderIdentifier`** (`string`) (required): This must be the same identifier you provided within `claimInformation.serviceLines[].purchasedServiceProvider`.
- **`claimInformation.serviceLines[].purchasedServiceProvider`** (`object`)
- **`claimInformation.serviceLines[].purchasedServiceProvider.address`** (`object`)
- **`claimInformation.serviceLines[].purchasedServiceProvider.address.address1`** (`string`) (required): The first line of the street address. This typically contains the building number and street name.
- **`claimInformation.serviceLines[].purchasedServiceProvider.address.address2`** (`string`): The second line of the street address. This typically contains the apartment or suite number.
- **`claimInformation.serviceLines[].purchasedServiceProvider.address.city`** (`string`) (required): The city name.
- **`claimInformation.serviceLines[].purchasedServiceProvider.address.countryCode`** (`string`): Use the alpha-2 country codes from Part 1 of ISO 3166.
- **`claimInformation.serviceLines[].purchasedServiceProvider.address.countrySubDivisionCode`** (`string`): Use the country subdivision codes from Part 2 of ISO 3166.
- **`claimInformation.serviceLines[].purchasedServiceProvider.address.postalCode`** (`string`): The postal zone or zip code. For United States addresses, you must include the full nine-digit zip code with no separators, such as `100031502`. If you don't know the full zip code, you can find it using the [USPS ZIP Code Lookup](https://tools.usps.com/zip-code-lookup.htm) tool. Exclude punctuation and spaces.
- **`claimInformation.serviceLines[].purchasedServiceProvider.address.state`** (`string`): The state or province code. Only required when the city is in the United States and Canada.
- **`claimInformation.serviceLines[].purchasedServiceProvider.claimOfficeNumber`** (`string`)
- **`claimInformation.serviceLines[].purchasedServiceProvider.commercialNumber`** (`string`): The provider's commercial number.
- **`claimInformation.serviceLines[].purchasedServiceProvider.contactInformation`** (`object`): You must include at least one communication method (phone, fax, or email) in this object.
- **`claimInformation.serviceLines[].purchasedServiceProvider.contactInformation.email`** (`string`): The email address.
- **`claimInformation.serviceLines[].purchasedServiceProvider.contactInformation.faxNumber`** (`string`): The fax number.
- **`claimInformation.serviceLines[].purchasedServiceProvider.contactInformation.name`** (`string`): The full name of the person or office.
- **`claimInformation.serviceLines[].purchasedServiceProvider.contactInformation.phoneExtension`** (`string`): The phone extension, if applicable.
- **`claimInformation.serviceLines[].purchasedServiceProvider.contactInformation.phoneNumber`** (`string`): The phone number, formatted as AAABBBCCCC, where AAA represents the area code, BBB is the telephone number prefix, and CCCC is the telephone number. The phone number should only include the digits 0 to 9. Don't include separators, such as dashes, and don't include long distance access numbers, such as 1. For example, you would format the phone number 123-456-7890 as 1234567890.
- **`claimInformation.serviceLines[].purchasedServiceProvider.employerId`** (`string`)
- **`claimInformation.serviceLines[].purchasedServiceProvider.employerIdentificationNumber`** (`string`)
- **`claimInformation.serviceLines[].purchasedServiceProvider.firstName`** (`string`)
- **`claimInformation.serviceLines[].purchasedServiceProvider.lastName`** (`string`)
- **`claimInformation.serviceLines[].purchasedServiceProvider.locationNumber`** (`string`)
- **`claimInformation.serviceLines[].purchasedServiceProvider.middleName`** (`string`)
- **`claimInformation.serviceLines[].purchasedServiceProvider.naic`** (`string`)
- **`claimInformation.serviceLines[].purchasedServiceProvider.npi`** (`string`): The [National Provider Identifier (NPI)](https://www.stedi.com/docs/healthcare/national-provider-identifier) assigned to the provider.
- **`claimInformation.serviceLines[].purchasedServiceProvider.organizationName`** (`string`)
- **`claimInformation.serviceLines[].purchasedServiceProvider.otherIdentifier`** (`string`)
- **`claimInformation.serviceLines[].purchasedServiceProvider.payerIdentificationNumber`** (`string`): The payer identification number. This must match the value you provided in `claimInformation.otherSubscriberInformation.otherPayerName.otherPayerIdentifier`.
- **`claimInformation.serviceLines[].purchasedServiceProvider.providerType`** (`string`): This field is now automatically populated and it only remains for backwards compatibility.
- **`claimInformation.serviceLines[].purchasedServiceProvider.providerUpinNumber`** (`string`)
- **`claimInformation.serviceLines[].purchasedServiceProvider.secondaryIdentifier`** (`array of ServiceLinePurchasedServiceProviderSecondaryIdentifierItem objects`): Secondary identifiers for the purchased service provider.
- **`claimInformation.serviceLines[].purchasedServiceProvider.secondaryIdentifier[].identifier`** (`string`) (required): The identifier. The format and length of this value depends on the `qualifier` you set.
- **`claimInformation.serviceLines[].purchasedServiceProvider.secondaryIdentifier[].otherIdentifier`** (`string`): The identifier for the other payer who provided this reference number. This is only required when the reference number is provided by the non-destination payer. The value must match the `claimInformation.otherSubscriberInformation[].otherPayerName.otherPayerIdentifier` property.
- **`claimInformation.serviceLines[].purchasedServiceProvider.secondaryIdentifier[].qualifier`** (`string`) (required): Set to `0B` - State License Number, `1G` - Provider UPIN Number, or `G2` - Provider Commercial Number. Note that UPIN is deprecated and shouldn't be used for new claims.
- **`claimInformation.serviceLines[].purchasedServiceProvider.ssn`** (`string`): Social Security Number without spaces or punctuation (9 digits)
- **`claimInformation.serviceLines[].purchasedServiceProvider.stateLicenseNumber`** (`string`): The provider's state license number. This is assigned directly by a payer in order to identify the provider in their system. This is not commonly used.
- **`claimInformation.serviceLines[].purchasedServiceProvider.suffix`** (`string`)
- **`claimInformation.serviceLines[].purchasedServiceProvider.taxonomyCode`** (`string`)
- **`claimInformation.serviceLines[].referringProvider`** (`object`)
- **`claimInformation.serviceLines[].referringProvider.address`** (`object`)
- **`claimInformation.serviceLines[].referringProvider.address.address1`** (`string`) (required): The first line of the street address. This typically contains the building number and street name.
- **`claimInformation.serviceLines[].referringProvider.address.address2`** (`string`): The second line of the street address. This typically contains the apartment or suite number.
- **`claimInformation.serviceLines[].referringProvider.address.city`** (`string`) (required): The city name.
- **`claimInformation.serviceLines[].referringProvider.address.countryCode`** (`string`): Use the alpha-2 country codes from Part 1 of ISO 3166.
- **`claimInformation.serviceLines[].referringProvider.address.countrySubDivisionCode`** (`string`): Use the country subdivision codes from Part 2 of ISO 3166.
- **`claimInformation.serviceLines[].referringProvider.address.postalCode`** (`string`): The postal zone or zip code. For United States addresses, you must include the full nine-digit zip code with no separators, such as `100031502`. If you don't know the full zip code, you can find it using the [USPS ZIP Code Lookup](https://tools.usps.com/zip-code-lookup.htm) tool. Exclude punctuation and spaces.
- **`claimInformation.serviceLines[].referringProvider.address.state`** (`string`): The state or province code. Only required when the city is in the United States and Canada.
- **`claimInformation.serviceLines[].referringProvider.claimOfficeNumber`** (`string`)
- **`claimInformation.serviceLines[].referringProvider.commercialNumber`** (`string`): The provider's commercial number.
- **`claimInformation.serviceLines[].referringProvider.contactInformation`** (`object`): You must include at least one communication method (phone, fax, or email) in this object.
- **`claimInformation.serviceLines[].referringProvider.contactInformation.email`** (`string`): The email address.
- **`claimInformation.serviceLines[].referringProvider.contactInformation.faxNumber`** (`string`): The fax number.
- **`claimInformation.serviceLines[].referringProvider.contactInformation.name`** (`string`): The full name of the person or office.
- **`claimInformation.serviceLines[].referringProvider.contactInformation.phoneExtension`** (`string`): The phone extension, if applicable.
- **`claimInformation.serviceLines[].referringProvider.contactInformation.phoneNumber`** (`string`): The phone number, formatted as AAABBBCCCC, where AAA represents the area code, BBB is the telephone number prefix, and CCCC is the telephone number. The phone number should only include the digits 0 to 9. Don't include separators, such as dashes, and don't include long distance access numbers, such as 1. For example, you would format the phone number 123-456-7890 as 1234567890.
- **`claimInformation.serviceLines[].referringProvider.employerId`** (`string`): The provider's Employer Identification Number (EIN). The EIN is typically a string of exactly nine numbers with no separators, unless otherwise specified by the provider. If you include this value, you cannot include the provider's `ssn`.
- **`claimInformation.serviceLines[].referringProvider.employerIdentificationNumber`** (`string`): The provider's Employer Identification Number (EIN). This field is the same as `employerId`. The EIN is typically a string of exactly nine numbers with no separators, unless otherwise specified by the provider. If you include this value, you cannot include the provider's `ssn`.
- **`claimInformation.serviceLines[].referringProvider.firstName`** (`string`): The provider's first name.
- **`claimInformation.serviceLines[].referringProvider.lastName`** (`string`): The provider's last name.
- **`claimInformation.serviceLines[].referringProvider.locationNumber`** (`string`): The provider's location number.
- **`claimInformation.serviceLines[].referringProvider.middleName`** (`string`): The provider's middle name or initial.
- **`claimInformation.serviceLines[].referringProvider.naic`** (`string`): The National Association of Insurance Commissioners (NAIC) code.
- **`claimInformation.serviceLines[].referringProvider.npi`** (`string`): The individual [National Provider Identifier (NPI)](https://www.stedi.com/docs/healthcare/national-provider-identifier) assigned to the provider.
- **`claimInformation.serviceLines[].referringProvider.organizationName`** (`string`): The provider's organization name.
- **`claimInformation.serviceLines[].referringProvider.otherIdentifier`** (`string`)
- **`claimInformation.serviceLines[].referringProvider.payerIdentificationNumber`** (`string`): The payer identification number.
- **`claimInformation.serviceLines[].referringProvider.providerType`** (`string`): This field is now automatically populated and it only remains for backwards compatibility.
- **`claimInformation.serviceLines[].referringProvider.providerUpinNumber`** (`string`): Deprecated; do not use.
- **`claimInformation.serviceLines[].referringProvider.secondaryIdentifier`** (`array of ServiceLineReferringProviderSecondaryIdentifierItem objects`): Secondary identifiers for the referring provider.
- **`claimInformation.serviceLines[].referringProvider.secondaryIdentifier[].identifier`** (`string`) (required): The identifier. The format and length of this value depends on the `qualifier` you set.
- **`claimInformation.serviceLines[].referringProvider.secondaryIdentifier[].otherIdentifier`** (`string`): The identifier for the other payer who provided this reference number. This is only required when the reference number is provided by the non-destination payer. The value must match the `claimInformation.otherSubscriberInformation[].otherPayerName.otherPayerIdentifier` property.
- **`claimInformation.serviceLines[].referringProvider.secondaryIdentifier[].qualifier`** (`string`) (required): Set to `0B` - State License Number, `1G` - Provider UPIN Number, or `G2` - Provider Commercial Number. Note that UPIN is deprecated and shouldn't be used for new claims.
- **`claimInformation.serviceLines[].referringProvider.ssn`** (`string`): The provider's Social Security Number. If you provide this value, you cannot include the provider's `employerId`.
- **`claimInformation.serviceLines[].referringProvider.stateLicenseNumber`** (`string`): The provider's state license number. This is assigned directly by a payer in order to identify the provider in their system. This is not commonly used.
- **`claimInformation.serviceLines[].referringProvider.suffix`** (`string`): The provider's name suffix, such as Jr. or III.
- **`claimInformation.serviceLines[].referringProvider.taxonomyCode`** (`string`): Code from the National Uniform Claims Committee [Health Care Provider Taxonomy Code Set](https://taxonomy.nucc.org/). This identifies the provider's type and/or area of specialty.
- **`claimInformation.serviceLines[].renderingProvider`** (`object`)
- **`claimInformation.serviceLines[].renderingProvider.address`** (`object`)
- **`claimInformation.serviceLines[].renderingProvider.address.address1`** (`string`) (required): The first line of the street address. This typically contains the building number and street name.
- **`claimInformation.serviceLines[].renderingProvider.address.address2`** (`string`): The second line of the street address. This typically contains the apartment or suite number.
- **`claimInformation.serviceLines[].renderingProvider.address.city`** (`string`) (required): The city name.
- **`claimInformation.serviceLines[].renderingProvider.address.countryCode`** (`string`): Use the alpha-2 country codes from Part 1 of ISO 3166.
- **`claimInformation.serviceLines[].renderingProvider.address.countrySubDivisionCode`** (`string`): Use the country subdivision codes from Part 2 of ISO 3166.
- **`claimInformation.serviceLines[].renderingProvider.address.postalCode`** (`string`): The postal zone or zip code. For United States addresses, you must include the full nine-digit zip code with no separators, such as `100031502`. If you don't know the full zip code, you can find it using the [USPS ZIP Code Lookup](https://tools.usps.com/zip-code-lookup.htm) tool. Exclude punctuation and spaces.
- **`claimInformation.serviceLines[].renderingProvider.address.state`** (`string`): The state or province code. Only required when the city is in the United States and Canada.
- **`claimInformation.serviceLines[].renderingProvider.claimOfficeNumber`** (`string`)
- **`claimInformation.serviceLines[].renderingProvider.commercialNumber`** (`string`): The provider's commercial number.
- **`claimInformation.serviceLines[].renderingProvider.contactInformation`** (`object`): You must include at least one communication method (phone, fax, or email) in this object.
- **`claimInformation.serviceLines[].renderingProvider.contactInformation.email`** (`string`): The email address.
- **`claimInformation.serviceLines[].renderingProvider.contactInformation.faxNumber`** (`string`): The fax number.
- **`claimInformation.serviceLines[].renderingProvider.contactInformation.name`** (`string`): The full name of the person or office.
- **`claimInformation.serviceLines[].renderingProvider.contactInformation.phoneExtension`** (`string`): The phone extension, if applicable.
- **`claimInformation.serviceLines[].renderingProvider.contactInformation.phoneNumber`** (`string`): The phone number, formatted as AAABBBCCCC, where AAA represents the area code, BBB is the telephone number prefix, and CCCC is the telephone number. The phone number should only include the digits 0 to 9. Don't include separators, such as dashes, and don't include long distance access numbers, such as 1. For example, you would format the phone number 123-456-7890 as 1234567890.
- **`claimInformation.serviceLines[].renderingProvider.employerId`** (`string`): The provider's Employer Identification Number (EIN). The EIN is typically a string of exactly nine numbers with no separators, unless otherwise specified by the provider. If you include this value, you cannot include the provider's `ssn`.
- **`claimInformation.serviceLines[].renderingProvider.employerIdentificationNumber`** (`string`): The provider's Employer Identification Number (EIN). This field is the same as `employerId`. The EIN is typically a string of exactly nine numbers with no separators, unless otherwise specified by the provider. If you include this value, you cannot include the provider's `ssn`.
- **`claimInformation.serviceLines[].renderingProvider.firstName`** (`string`): The provider's first name.
- **`claimInformation.serviceLines[].renderingProvider.lastName`** (`string`): The provider's last name. You should include either the `lastName` or `organizationName` property in this object.
- **`claimInformation.serviceLines[].renderingProvider.locationNumber`** (`string`): The provider's location number.
- **`claimInformation.serviceLines[].renderingProvider.middleName`** (`string`): The provider's middle name or initial.
- **`claimInformation.serviceLines[].renderingProvider.naic`** (`string`): The National Association of Insurance Commissioners (NAIC) code.
- **`claimInformation.serviceLines[].renderingProvider.npi`** (`string`): The [National Provider Identifier (NPI)](https://www.stedi.com/docs/healthcare/national-provider-identifier) assigned to the provider.
- **`claimInformation.serviceLines[].renderingProvider.organizationName`** (`string`): The provider's business name. You should include either the `lastName` or `organizationName` property in this object.
- **`claimInformation.serviceLines[].renderingProvider.otherIdentifier`** (`string`)
- **`claimInformation.serviceLines[].renderingProvider.payerIdentificationNumber`** (`string`): The payer identification number.
- **`claimInformation.serviceLines[].renderingProvider.providerType`** (`string`): This field is now automatically populated and it only remains for backwards compatibility.
- **`claimInformation.serviceLines[].renderingProvider.providerUpinNumber`** (`string`): Deprecated; do not use.
- **`claimInformation.serviceLines[].renderingProvider.secondaryIdentifier`** (`array of ServiceLineRenderingProviderSecondaryIdentifierItem objects`): An identifier for the provider.
- **`claimInformation.serviceLines[].renderingProvider.secondaryIdentifier[].identifier`** (`string`) (required): The identifier. The format and length of this value depends on the `qualifier` you set.
- **`claimInformation.serviceLines[].renderingProvider.secondaryIdentifier[].otherIdentifier`** (`string`): The identifier for the other payer who provided this reference number. This is only required when the reference number is provided by the non-destination payer. The value must match the `claimInformation.otherSubscriberInformation[].otherPayerName.otherPayerIdentifier` property.
- **`claimInformation.serviceLines[].renderingProvider.secondaryIdentifier[].qualifier`** (`string`) (required): Set to `0B` - State License Number, `1G` - Provider UPIN Number, `G2` - Provider Commercial Number, or `LU` - Location Number. Note that UPIN is deprecated and shouldn't be used for new claims.
- **`claimInformation.serviceLines[].renderingProvider.ssn`** (`string`): The provider's Social Security Number. If you provide this value, you cannot include the provider's `employerId`.
- **`claimInformation.serviceLines[].renderingProvider.stateLicenseNumber`** (`string`): The provider's state license number. This is assigned directly by a payer in order to identify the provider in their system. This is not commonly used.
- **`claimInformation.serviceLines[].renderingProvider.suffix`** (`string`): The provider's name suffix, such as Jr. or III.
- **`claimInformation.serviceLines[].renderingProvider.taxonomyCode`** (`string`): Code from the National Uniform Claims Committee [Health Care Provider Taxonomy Code Set](https://taxonomy.nucc.org/). This identifies the provider's type and/or area of specialty.
- **`claimInformation.serviceLines[].salesTaxAmount`** (`string`): Sales tax, formatted as a decimal. When you include this property, the total `lineItemChargeAmount` for this service line must include this sales tax value.
- **`claimInformation.serviceLines[].serviceDate`** (`string`) (required): The date the service was rendered (for services performed on a single day). When you send this property with `serviceDateEnd`, it will be used as the start date for the date range in which the service was rendered.
- **`claimInformation.serviceLines[].serviceDateEnd`** (`string`): The end date of the service period. If you send this property, you must also send `serviceDate`.
- **`claimInformation.serviceLines[].serviceFacilityLocation`** (`object`): Required when the location for the service is different from the billing provider's address. The purpose of this object is to identify specifically where the service was rendered. This can be healthcare facilities, such as surgical centers or reference labs, OR the patient's address when services were rendered in their home.
- Only include this object when the service facility location is **different** from the billing provider's address. If you include this object when the address is the same, Stedi omits all of the service facility location information from the claim submission, including the name and any identifiers.
- For telehealth services, the service facility location is the provider's address, even though the patient may have been in their home or elsewhere when receiving services.
- Don't use this object when reporting ambulance services - use `ambulancePickupLocation` and `ambulanceDropoffLocation` instead.
- Sometimes the billing provider is an actual physician group that is located at the same address as a hospital, but is in fact a separate entity. In this case, you can differentiate the service facility location by including the specific suite or building number of the physician group. This ensures that the service facility location is different from the billing provider's address and is reported accurately.
- **`claimInformation.serviceLines[].serviceFacilityLocation.address`** (`object`) (required)
- **`claimInformation.serviceLines[].serviceFacilityLocation.address.address1`** (`string`) (required): The first line of the street address. This typically contains the building number and street name.
- **`claimInformation.serviceLines[].serviceFacilityLocation.address.address2`** (`string`): The second line of the street address. This typically contains the apartment or suite number.
- **`claimInformation.serviceLines[].serviceFacilityLocation.address.city`** (`string`) (required): The city name.
- **`claimInformation.serviceLines[].serviceFacilityLocation.address.countryCode`** (`string`): Use the alpha-2 country codes from Part 1 of ISO 3166.
- **`claimInformation.serviceLines[].serviceFacilityLocation.address.countrySubDivisionCode`** (`string`): Use the country subdivision codes from Part 2 of ISO 3166.
- **`claimInformation.serviceLines[].serviceFacilityLocation.address.postalCode`** (`string`): The postal zone or zip code. For United States addresses, you must include the full nine-digit zip code with no separators, such as `100031502`. If you don't know the full zip code, you can find it using the [USPS ZIP Code Lookup](https://tools.usps.com/zip-code-lookup.htm) tool. Exclude punctuation and spaces.
- **`claimInformation.serviceLines[].serviceFacilityLocation.address.state`** (`string`): The state or province code. Only required when the city is in the United States and Canada.
- **`claimInformation.serviceLines[].serviceFacilityLocation.npi`** (`string`): The organization [National Provider Identifier (NPI)](https://www.stedi.com/docs/healthcare/national-provider-identifier) assigned to the service facility. Only include this property when the service facility is not a component or subpart of the `billing` provider. Don't include when the service facility is the patient's home.
- **`claimInformation.serviceLines[].serviceFacilityLocation.organizationName`** (`string`) (required): The laboratory or facility name. When services were rendered in the patient's home, we recommend setting this to `Residence` or something similar.
- **`claimInformation.serviceLines[].serviceFacilityLocation.phoneExtension`** (`string`): The telephone extension, if applicable. Only submit the numeric extension. For example, don't include data that indicates an extension, such as 'ext.' or 'x-'.
- **`claimInformation.serviceLines[].serviceFacilityLocation.phoneName`** (`string`): The full name of the person or office.
- **`claimInformation.serviceLines[].serviceFacilityLocation.phoneNumber`** (`string`): The phone number, formatted as AAABBBCCCC, where AAA represents the area code, BBB is the telephone number prefix, and CCCC is the telephone number. The phone number should only include the digits 0 to 9. Don't include separators, such as dashes, and don't include long distance access numbers, such as 1. For example, you would format the phone number 123-456-7890 as 1234567890.
- **`claimInformation.serviceLines[].serviceFacilityLocation.secondaryIdentifier`** (`array of ServiceFacilityLocationSecondaryIdentifierItem objects`): Secondary identifier for the service facility location. Used when another identifier is needed for the claims processor to identify the facility or when the entity is not a healthcare provider and does not have an [NPI](https://www.stedi.com/docs/healthcare/national-provider-identifier).
- **`claimInformation.serviceLines[].serviceFacilityLocation.secondaryIdentifier[].identifier`** (`string`) (required): The identifier. The format and length of this value depends on the `qualifier` you set.
- **`claimInformation.serviceLines[].serviceFacilityLocation.secondaryIdentifier[].otherIdentifier`** (`string`): The identifier for the other payer who provided this reference number. This is only required when the reference number is provided by the non-destination payer. The value must match the `claimInformation.otherSubscriberInformation[].otherPayerName.otherPayerIdentifier` property.
- **`claimInformation.serviceLines[].serviceFacilityLocation.secondaryIdentifier[].qualifier`** (`string`) (required): Set to `G2` - Provider Commercial Number, or `LU` - Location Number.
- **`claimInformation.serviceLines[].serviceLineDateInformation`** (`object`): Identify specific dates related to the service rendered.
- **`claimInformation.serviceLines[].serviceLineDateInformation.beginTherapyDate`** (`string`): Required when a Durable Medical Equipment Regional Carrier Certificate of Medical Necessity (DMERC CMN) or DMERC Information Form (DIF), or Oxygen Therapy Certification is included on this service line.
- **`claimInformation.serviceLines[].serviceLineDateInformation.certificationRevisionOrRecertificationDate`** (`string`)
- **`claimInformation.serviceLines[].serviceLineDateInformation.hemoglobinTestDate`** (`string`): Required on initial EPO claims service lines for dialysis patients when test results are being billed or reported.
- **`claimInformation.serviceLines[].serviceLineDateInformation.initialTreatmentDate`** (`string`): Required when this date is known to impact adjudication for claims involving spinal manipulation, physcial therapy, occupational therapy, or speech language pathology.
- **`claimInformation.serviceLines[].serviceLineDateInformation.lastCertificationDate`** (`string`): This is the date the ordering physician signed the CMN or Oxygen Therapy Certification, or the date the supplier signed the DMERC Information Form (DIF).
- **`claimInformation.serviceLines[].serviceLineDateInformation.lastXRayDate`** (`string`): Required for claims involving spinal manipulation.
- **`claimInformation.serviceLines[].serviceLineDateInformation.prescriptionDate`** (`string`): Required when a drug is billed for this line and a prescription was written (or otherwise communicated by the prescriber if not written).
- **`claimInformation.serviceLines[].serviceLineDateInformation.serumCreatineTestDate`** (`string`): Required on initial EPO claims service lines for dialysis patients when test results are being billed or reported.
- **`claimInformation.serviceLines[].serviceLineDateInformation.shippedDate`** (`string`): Required when billing or reporting products that were shipped.
- **`claimInformation.serviceLines[].serviceLineDateInformation.treatmentOrTherapyDate`** (`string`): This is the date of the latest visit or consultation.
- **`claimInformation.serviceLines[].serviceLineReferenceInformation`** (`object`): Additional identifiers for the service line.
- **`claimInformation.serviceLines[].serviceLineReferenceInformation.adjustedRepricedLineItemReferenceNumber`** (`string`): Required when a repricing (pricing) organization needs to have an identifying number on an adjusted service line.
- **`claimInformation.serviceLines[].serviceLineReferenceInformation.clinicalLaboratoryImprovementAmendmentNumber`** (`string`)
- **`claimInformation.serviceLines[].serviceLineReferenceInformation.immunizationBatchNumber`** (`string`)
- **`claimInformation.serviceLines[].serviceLineReferenceInformation.mammographyCertificationNumber`** (`string`)
- **`claimInformation.serviceLines[].serviceLineReferenceInformation.priorAuthorization`** (`array of PriorAuthorization objects`): Prior authorization (preauthorization) numbers that apply to this service line.
 - Put each unique number in a separate array element.
 - You can use the same number on multiple service lines.

**Important**: Only include prior authorization numbers that differ from the claim-level authorization in `claimInformation.claimSupplementalInformation.priorAuthorizationNumber`.
- **`claimInformation.serviceLines[].serviceLineReferenceInformation.priorAuthorization[].otherPayerPrimaryIdentifier`** (`string`): This must match the value in `claimInformation.otherSubscriberInformation.otherPayerName.otherPayerIdentifier`.
- **`claimInformation.serviceLines[].serviceLineReferenceInformation.priorAuthorization[].priorAuthorizationOrReferralNumber`** (`string`) (required): A prior authorization (preauthorization) number that applies to this service line.

**Important**: Only use this property for service-level prior authorization numbers that differ from the claim-level authorization (`claimInformation.claimSupplementalInformation.priorAuthorizationNumber`).
- **`claimInformation.serviceLines[].serviceLineReferenceInformation.referralNumber`** (`array of strings`)
- **`claimInformation.serviceLines[].serviceLineReferenceInformation.referringCliaNumber`** (`string`)
- **`claimInformation.serviceLines[].serviceLineReferenceInformation.repricedLineItemReferenceNumber`** (`string`): Required when a repricing (pricing) organization needs to have an identifying number on the service line.
- **`claimInformation.serviceLines[].serviceLineSupplementalInformation`** (`array of ReportInformation objects`): Supporting documentation for the service line. Required when you plan to submit [attachments](https://www.stedi.com/docs/healthcare/submit-claim-attachments) for the service line electronically through Stedi APIs or SFTP, when there is a paper attachment following this claim, or when the provider deems it necessary to identify additional information that is being held at the provider's office and is available upon request.

You can submit up to 10 objects in this array.
- **`claimInformation.serviceLines[].serviceLineSupplementalInformation[].attachmentControlNumber`** (`string`): A control number assigned to the attachment. The payer uses this identifier to match the attachment to the claim.
  - You must include either this property or `attachmentId` in the request, but not both. Including both properties will result in an error.
  - We recommend using a ULID or UUID of up to 50 characters.
  - Stedi autogenerates a control number if you don't provide one.
- **`claimInformation.serviceLines[].serviceLineSupplementalInformation[].attachmentId`** (`string`): The unique identifier for an attachment file you previously uploaded to Stedi. This value is returned in the `attachmentId` property of the [Create Claim Attachment (275) JSON](https://www.stedi.com/docs/healthcare/api-reference/post-healthcare-submit-claim-attachment) response. Stedi uses it to generate and submit the 275 claim attachment transaction to the payer.
  - This property is **required** when you're submitting attachment files through Stedi.
  - You must include either this property or `attachmentControlNumber` in the request, but not both. Including both properties will result in an error.
- **`claimInformation.serviceLines[].serviceLineSupplementalInformation[].attachmentReportTypeCode`** (`string`) (required): Code indicating the title or contents of a document, report or supporting item. For example, `08` - Plan of Treatment or `CT` - Certification. Visit [Claims code lists](https://www.stedi.com/docs/healthcare/claims-code-lists#attachment-report-type-codes) for a complete list.
  - Allowed values: `03`, `04`, `05`, `06`, `07`, `08`, `09`, `10`, `11`, `13`, `15`, `21`, `A3`, `A4`, `AM`, `AS`, `B2`, `B3`, `B4`, `BR`, `BS`, `BT`, `CB`, `CK`, `CT`, `D2`, `DA`, `DB`, `DG`, `DJ`, `DS`, `EB`, `HC`, `HR`, `I5`, `IR`, `LA`, `M1`, `MT`, `NN`, `OB`, `OC`, `OD`, `OE`, `OX`, `OZ`, `P4`, `P5`, `PE`, `PN`, `PO`, `PQ`, `PY`, `PZ`, `RB`, `RR`, `RT`, `RX`, `SG`, `V5`, `XP`
- **`claimInformation.serviceLines[].serviceLineSupplementalInformation[].attachmentTransmissionCode`** (`string`) (required): Code identifying the method by which the provider's report is attached. Can be set to `AA` - Available on Request at Provider Site, `BM` - By Mail, `EL` - Electronically Only, `EM` - E-Mail, `FT` - File Transfer, or `FX` - By Fax.

Set this to `EL` when you plan to submit attachments electronically through Stedi APIs.
  - Allowed values: `AA`, `BM`, `EL`, `EM`, `FT`, `FX`
- **`claimInformation.serviceLines[].supervisingProvider`** (`object`)
- **`claimInformation.serviceLines[].supervisingProvider.address`** (`object`)
- **`claimInformation.serviceLines[].supervisingProvider.address.address1`** (`string`) (required): The first line of the street address. This typically contains the building number and street name.
- **`claimInformation.serviceLines[].supervisingProvider.address.address2`** (`string`): The second line of the street address. This typically contains the apartment or suite number.
- **`claimInformation.serviceLines[].supervisingProvider.address.city`** (`string`) (required): The city name.
- **`claimInformation.serviceLines[].supervisingProvider.address.countryCode`** (`string`): Use the alpha-2 country codes from Part 1 of ISO 3166.
- **`claimInformation.serviceLines[].supervisingProvider.address.countrySubDivisionCode`** (`string`): Use the country subdivision codes from Part 2 of ISO 3166.
- **`claimInformation.serviceLines[].supervisingProvider.address.postalCode`** (`string`): The postal zone or zip code. For United States addresses, you must include the full nine-digit zip code with no separators, such as `100031502`. If you don't know the full zip code, you can find it using the [USPS ZIP Code Lookup](https://tools.usps.com/zip-code-lookup.htm) tool. Exclude punctuation and spaces.
- **`claimInformation.serviceLines[].supervisingProvider.address.state`** (`string`): The state or province code. Only required when the city is in the United States and Canada.
- **`claimInformation.serviceLines[].supervisingProvider.claimOfficeNumber`** (`string`)
- **`claimInformation.serviceLines[].supervisingProvider.commercialNumber`** (`string`): The provider's commercial number.
- **`claimInformation.serviceLines[].supervisingProvider.contactInformation`** (`object`): You must include at least one communication method (phone, fax, or email) in this object.
- **`claimInformation.serviceLines[].supervisingProvider.contactInformation.email`** (`string`): The email address.
- **`claimInformation.serviceLines[].supervisingProvider.contactInformation.faxNumber`** (`string`): The fax number.
- **`claimInformation.serviceLines[].supervisingProvider.contactInformation.name`** (`string`): The full name of the person or office.
- **`claimInformation.serviceLines[].supervisingProvider.contactInformation.phoneExtension`** (`string`): The phone extension, if applicable.
- **`claimInformation.serviceLines[].supervisingProvider.contactInformation.phoneNumber`** (`string`): The phone number, formatted as AAABBBCCCC, where AAA represents the area code, BBB is the telephone number prefix, and CCCC is the telephone number. The phone number should only include the digits 0 to 9. Don't include separators, such as dashes, and don't include long distance access numbers, such as 1. For example, you would format the phone number 123-456-7890 as 1234567890.
- **`claimInformation.serviceLines[].supervisingProvider.employerId`** (`string`): The provider's Employer Identification Number (EIN). The EIN is typically a string of exactly nine numbers with no separators, unless otherwise specified by the provider. If you include this value, you cannot include the provider's `ssn`.
- **`claimInformation.serviceLines[].supervisingProvider.employerIdentificationNumber`** (`string`): The provider's Employer Identification Number (EIN). This field is the same as `employerId`. The EIN is typically a string of exactly nine numbers with no separators, unless otherwise specified by the provider. If you include this value, you cannot include the provider's `ssn`.
- **`claimInformation.serviceLines[].supervisingProvider.firstName`** (`string`): The provider's first name.
- **`claimInformation.serviceLines[].supervisingProvider.lastName`** (`string`): The provider's last name.
- **`claimInformation.serviceLines[].supervisingProvider.locationNumber`** (`string`): The provider's location number.
- **`claimInformation.serviceLines[].supervisingProvider.middleName`** (`string`): The provider's middle name or initial.
- **`claimInformation.serviceLines[].supervisingProvider.naic`** (`string`): The National Association of Insurance Commissioners (NAIC) code.
- **`claimInformation.serviceLines[].supervisingProvider.npi`** (`string`): The individual [National Provider Identifier (NPI)](https://www.stedi.com/docs/healthcare/national-provider-identifier) assigned to the provider.
- **`claimInformation.serviceLines[].supervisingProvider.organizationName`** (`string`): The provider's business name. You should include either the `lastName` or `organizationName` property in this object.
- **`claimInformation.serviceLines[].supervisingProvider.otherIdentifier`** (`string`)
- **`claimInformation.serviceLines[].supervisingProvider.payerIdentificationNumber`** (`string`): The payer identification number.
- **`claimInformation.serviceLines[].supervisingProvider.providerType`** (`string`): This field is now automatically populated and it only remains for backwards compatibility.
- **`claimInformation.serviceLines[].supervisingProvider.providerUpinNumber`** (`string`): Deprecated; do not use.
- **`claimInformation.serviceLines[].supervisingProvider.secondaryIdentifier`** (`array of ServiceLineSupervisingProviderSecondaryIdentifierItem objects`): Secondary identifiers for the supervising provider.
- **`claimInformation.serviceLines[].supervisingProvider.secondaryIdentifier[].identifier`** (`string`) (required): The identifier. The format and length of this value depends on the `qualifier` you set.
- **`claimInformation.serviceLines[].supervisingProvider.secondaryIdentifier[].otherIdentifier`** (`string`): The identifier for the other payer who provided this reference number. This is only required when the reference number is provided by the non-destination payer. The value must match the `claimInformation.otherSubscriberInformation[].otherPayerName.otherPayerIdentifier` property.
- **`claimInformation.serviceLines[].supervisingProvider.secondaryIdentifier[].qualifier`** (`string`) (required): Set to `0B` - State License Number, `1G` - Provider UPIN Number, `G2` - Provider Commercial Number, or `LU` - Location Number. Note that UPIN is deprecated and shouldn't be used for new claims.
- **`claimInformation.serviceLines[].supervisingProvider.ssn`** (`string`): The provider's SSN.
- **`claimInformation.serviceLines[].supervisingProvider.stateLicenseNumber`** (`string`): The provider's state license number. This is assigned directly by a payer in order to identify the provider in their system. This is not commonly used.
- **`claimInformation.serviceLines[].supervisingProvider.suffix`** (`string`): The provider's name suffix, such as Jr. or III.
- **`claimInformation.serviceLines[].supervisingProvider.taxonomyCode`** (`string`): Code from the National Uniform Claims Committee [Health Care Provider Taxonomy Code Set](https://taxonomy.nucc.org/). This identifies the provider's type and/or area of specialty.
- **`claimInformation.serviceLines[].testResults`** (`array of Measurements objects`): Required on Dialysis related service lines for ESRD, or required on on DMERC service lines to report the Patient's Height from the Certificate of Medical Necessity (CMN). Use HT qualifier.
- **`claimInformation.serviceLines[].testResults[].measurementQualifier`** (`string`) (required): Code identifying the specific measurement. Can be set to `HT` - Height, `R1` - Hemoglobin, `R2` - Hematocrit, `R3` - Epoetin Starting Dosage, or `R4` - Creatinine.
  - Allowed values: `HT`, `R1`, `R2`, `R3`, `R4`
- **`claimInformation.serviceLines[].testResults[].measurementReferenceIdentificationCode`** (`string`) (required): Code identifying the type of measurement. Can be set to `OG` - Original or `TR` - Test Results.
  - Allowed values: `OG`, `TR`
- **`claimInformation.serviceLines[].testResults[].testResults`** (`string`) (required): The value of the measurement.
- **`claimInformation.serviceLines[].thirdPartyOrganizationNotes`** (`string`): Required when the TPO/repricer needs to forward additional information to the payer. Providers shouldn't complete this property.
- **`claimInformation.signatureIndicator`** (`string`) (required): Indicates whether the provider's signature is on file. Can be set to `N` - No or `Y` - Yes.
  - Allowed values: `N`, `Y`
- **`claimInformation.specialProgramCode`** (`string`): Code indicating the Special Program under which the services rendered to the patient were performed. Used for Medicaid claims only. Can be set to `02` - Physically Handicapped Children's Program, `03` - Special Federal Funding, `05` - Disability, or `09` - Second Opinion or Surgery.
  - Allowed values: `02`, `03`, `05`, `09`
- **`claimInformation.spinalManipulationServiceInformation`** (`object`): Information about a chiropractic service rendered to the patient. Required on chiropractic claims involving spinal manipulation when the information is known to impact the payer's adjudication process.
- **`claimInformation.spinalManipulationServiceInformation.patientConditionCode`** (`string`) (required): A code indicating the nature of a patient's condition.
  - Allowed values: `A`, `C`, `D`, `E`, `F`, `G`, `M`
- **`claimInformation.spinalManipulationServiceInformation.patientConditionDescription1`** (`string`): The description of the patient's condition.
- **`claimInformation.spinalManipulationServiceInformation.patientConditionDescription2`** (`string`): Additional description of the patient's condition
- **`controlNumber`** (`string`): Not currently used.
- **`dependent`** (`object`): Dependent who received the medical care associated with the claim.
  - If the dependent has their own member ID for the health plan, you should include the dependent's information in the `subscriber` object instead. To check whether a dependent has a member ID, submit an [Eligibility Check](https://www.stedi.com/docs/healthcare/api-reference/post-healthcare-eligibility) to the payer. The payer returns the dependent's member ID in the `dependents.memberId` property in the response, if present.
  - You must include `address` in this object when the patient is a dependent.
- **`dependent.address`** (`object`): The patient's address. Every claim must include this information in either the `subscriber` (when the patient is the subscriber) or `dependent` (when the patient is a dependent) object. You must include at least the `address1` and `city` properties in this object. The `state` and `postalCode` properties are also required for all United States and Canadian addresses.
- The address should be the patient's correct address at the time of service. Use of outdated values could cause the payer to reject, deny, or delay the claim due to suspected fraud.
- If you don't know the patient's address, first submit a [Real-Time Eligibility Check](https://www.stedi.com/docs/healthcare/api-reference/post-healthcare-eligibility) for the patient and then copy the address from either the `subscriber` or `dependent` object in the response.
- If the patient doesn't have a current address, you can populate the `address1` property with `UNKNOWN` and populate the city, state, and zip code with appropriate values based on your discretion. However, we still recommend running an eligibility check when possible, so you can use the address the payer has on file. Some payers may have explicit rules for how to handle this situation - check the payer's specific requirements before using this approach.
- **`dependent.address.address1`** (`string`) (required): The first line of the street address. This typically contains the building number and street name.
- **`dependent.address.address2`** (`string`): The second line of the street address. This typically contains the apartment or suite number.
- **`dependent.address.city`** (`string`) (required): The city name.
- **`dependent.address.countryCode`** (`string`): Use the alpha-2 country codes from Part 1 of ISO 3166.
- **`dependent.address.countrySubDivisionCode`** (`string`): Use the country subdivision codes from Part 2 of ISO 3166.
- **`dependent.address.postalCode`** (`string`): The postal zone or zip code. For United States addresses, you must include the full nine-digit zip code with no separators, such as `100031502`. If you don't know the full zip code, you can find it using the [USPS ZIP Code Lookup](https://tools.usps.com/zip-code-lookup.htm) tool. Exclude punctuation and spaces.
- **`dependent.address.state`** (`string`): The state or province code. Only required when the city is in the United States and Canada.
- **`dependent.contactInformation`** (`object`): Only use this object for payer administrative contacts on property and casualty claims. Otherwise, you shoudn't include contact information here. If you include this object, you must supply at least one communication method (phone, fax, or email).
- **`dependent.contactInformation.email`** (`string`): The email address.
- **`dependent.contactInformation.faxNumber`** (`string`): The fax number.
- **`dependent.contactInformation.name`** (`string`) (required): The full name of the person or office.
- **`dependent.contactInformation.phoneExtension`** (`string`): The phone extension, if applicable.
- **`dependent.contactInformation.phoneNumber`** (`string`): The phone number, formatted as AAABBBCCCC, where AAA represents the area code. For example, you would format the phone number `123-456-7890` as `1234567890`. You should always include the area code, if applicable. Don't include long distance access numbers (such as `1`) or extensions in this field.
- **`dependent.dateOfBirth`** (`string`) (required): The patient's date of birth
- **`dependent.firstName`** (`string`) (required): The patient's first name.
- **`dependent.gender`** (`string`) (required): Code indiciating the patient's gender. Can be set to `F` - Female, `M` - Male, or `U` - Unknown.

You should set this property to `U` when the patient declines to answer or does not identify as male or female. Note that some payers may reject the claim if the patient's gender doesn't match the gender they have recorded in their member records.
  - Allowed values: `M`, `F`, `U`
- **`dependent.lastName`** (`string`) (required): The patient's last name. **Don't** include the patient's name suffix, such as Jr. or III. Use the designated `suffix` property instead.
- **`dependent.memberId`** (`string`): The patient's identification number. Only used in Property and Casualty claims.
- **`dependent.middleName`** (`string`): The patient's middle name or initial.
- **`dependent.relationshipToSubscriberCode`** (`string`) (required): Identifies the relationship of the patient to the subscriber. Can be set to `01` - Spouse, `19` - Child, `20` - Employee, `21` - Unknown, `39` - Organ Donor, `40` - Cadaver Donor, `53` - Life Partner, or `G8` - Other Relationship.
  - Allowed values: `01`, `19`, `20`, `21`, `39`, `40`, `53`, `G8`
- **`dependent.ssn`** (`string`): The patient's Social Security Number. Only used for Property and Casualty claims.
- **`dependent.suffix`** (`string`): The patient's name suffix, such as Jr. or III. Only include the patient's personal name suffix - **don't** include professional or academic titles, such as M.D. or MBA.
- **`ordering`** (`object`): Deprecated; please use `claimInformation.serviceLines[].orderingProvider` instead.
- **`ordering.address`** (`object`)
- **`ordering.address.address1`** (`string`) (required): The first line of the street address. This typically contains the building number and street name.
- **`ordering.address.address2`** (`string`): The second line of the street address. This typically contains the apartment or suite number.
- **`ordering.address.city`** (`string`) (required): The city name.
- **`ordering.address.countryCode`** (`string`): Use the alpha-2 country codes from Part 1 of ISO 3166.
- **`ordering.address.countrySubDivisionCode`** (`string`): Use the country subdivision codes from Part 2 of ISO 3166.
- **`ordering.address.postalCode`** (`string`): The postal zone or zip code. For United States addresses, you must include the full nine-digit zip code with no separators, such as `100031502`. If you don't know the full zip code, you can find it using the [USPS ZIP Code Lookup](https://tools.usps.com/zip-code-lookup.htm) tool. Exclude punctuation and spaces.
- **`ordering.address.state`** (`string`): The state or province code. Only required when the city is in the United States and Canada.
- **`ordering.claimOfficeNumber`** (`string`)
- **`ordering.commercialNumber`** (`string`)
- **`ordering.contactInformation`** (`object`): You must include at least one communication method (phone, fax, or email) in this object.
- **`ordering.contactInformation.email`** (`string`): The email address.
- **`ordering.contactInformation.faxNumber`** (`string`): The fax number.
- **`ordering.contactInformation.name`** (`string`): The full name of the person or office.
- **`ordering.contactInformation.phoneExtension`** (`string`): The phone extension, if applicable.
- **`ordering.contactInformation.phoneNumber`** (`string`): The phone number, formatted as AAABBBCCCC, where AAA represents the area code, BBB is the telephone number prefix, and CCCC is the telephone number. The phone number should only include the digits 0 to 9. Don't include separators, such as dashes, and don't include long distance access numbers, such as 1. For example, you would format the phone number 123-456-7890 as 1234567890.
- **`ordering.employerId`** (`string`)
- **`ordering.employerIdentificationNumber`** (`string`)
- **`ordering.firstName`** (`string`)
- **`ordering.lastName`** (`string`)
- **`ordering.locationNumber`** (`string`)
- **`ordering.middleName`** (`string`)
- **`ordering.naic`** (`string`)
- **`ordering.npi`** (`string`)
- **`ordering.organizationName`** (`string`)
- **`ordering.payerIdentificationNumber`** (`string`)
- **`ordering.providerType`** (`string`): This field is now automatically populated and it only remains for backwards compatibility.
- **`ordering.providerUpinNumber`** (`string`)
- **`ordering.ssn`** (`string`): Social Security Number without spaces or punctuation (9 digits)
- **`ordering.stateLicenseNumber`** (`string`)
- **`ordering.suffix`** (`string`)
- **`ordering.taxonomyCode`** (`string`)
- **`payToAddress`** (`object`)
- **`payToAddress.address1`** (`string`) (required): The first line of the street address. This typically contains the building number and street name.
- **`payToAddress.address2`** (`string`): The second line of the street address. This typically contains the apartment or suite number.
- **`payToAddress.city`** (`string`) (required): The city name.
- **`payToAddress.countryCode`** (`string`): Use the alpha-2 country codes from Part 1 of ISO 3166.
- **`payToAddress.countrySubDivisionCode`** (`string`): Use the country subdivision codes from Part 2 of ISO 3166.
- **`payToAddress.postalCode`** (`string`): The postal zone or zip code. For United States addresses, you must include the full nine-digit zip code with no separators, such as `100031502`. If you don't know the full zip code, you can find it using the [USPS ZIP Code Lookup](https://tools.usps.com/zip-code-lookup.htm) tool. Exclude punctuation and spaces.
- **`payToAddress.state`** (`string`): The state or province code. Only required when the city is in the United States and Canada.
- **`payToPlan`** (`object`): Use for subrogation payment requests. If you include this information, you must also set the `claimInformation.otherSubscriberInformation.payerPaidAmount` to the amount the payer (for example, Medicaid) actually paid.
- **`payToPlan.address`** (`object`) (required)
- **`payToPlan.address.address1`** (`string`) (required): The first line of the street address. This typically contains the building number and street name.
- **`payToPlan.address.address2`** (`string`): The second line of the street address. This typically contains the apartment or suite number.
- **`payToPlan.address.city`** (`string`) (required): The city name.
- **`payToPlan.address.countryCode`** (`string`): Use the alpha-2 country codes from Part 1 of ISO 3166.
- **`payToPlan.address.countrySubDivisionCode`** (`string`): Use the country subdivision codes from Part 2 of ISO 3166.
- **`payToPlan.address.postalCode`** (`string`): The postal zone or zip code. For United States addresses, you must include the full nine-digit zip code with no separators, such as `100031502`. If you don't know the full zip code, you can find it using the [USPS ZIP Code Lookup](https://tools.usps.com/zip-code-lookup.htm) tool. Exclude punctuation and spaces.
- **`payToPlan.address.state`** (`string`): The state or province code. Only required when the city is in the United States and Canada.
- **`payToPlan.organizationName`** (`string`) (required): The last name of the individual, or the business name of the pay-to-plan organization.
- **`payToPlan.primaryIdentifier`** (`string`) (required): The identifier you specified in `primaryIdentifierTypeCode`.
- **`payToPlan.primaryIdentifierTypeCode`** (`string`) (required): Code identifying the type of identifier. Can be set to `PI` - Payor Identification or `XV` - Centers for Medicare/Medicaid Services PlanID. Use code value `XV` when reporting Health Plan ID (HPID) or Other Entity Identifier (OEID).
  - Allowed values: `PI`, `XV`
- **`payToPlan.secondaryIdentifier`** (`string`): The secondary identifier you specified in `secondaryIdentifierTypeCode`.
- **`payToPlan.secondaryIdentifierTypeCode`** (`string`): Code identifying the type of secondary identifier. Can be set to `2U` - Payer Identification Number, `FY` - Claim Office Number, or `NF` - National Association of Insurance Commissioners. You should only set this to `2U` when you set the `primaryIdentifierTypeCode` to `XV`.
  - Allowed values: `2U`, `FY`, `NF`
- **`payToPlan.taxIdentificationNumber`** (`string`) (required): The Employer Identification Number (EIN). This must be a string of exactly nine numbers with no separators.
- **`payerAddress`** (`object`)
- **`payerAddress.address1`** (`string`) (required): The first line of the street address. This typically contains the building number and street name.
- **`payerAddress.address2`** (`string`): The second line of the street address. This typically contains the apartment or suite number.
- **`payerAddress.city`** (`string`) (required): The city name.
- **`payerAddress.countryCode`** (`string`): Use the alpha-2 country codes from Part 1 of ISO 3166.
- **`payerAddress.countrySubDivisionCode`** (`string`): Use the country subdivision codes from Part 2 of ISO 3166.
- **`payerAddress.postalCode`** (`string`): The postal zone or zip code. For United States addresses, you must include the full nine-digit zip code with no separators, such as `100031502`. If you don't know the full zip code, you can find it using the [USPS ZIP Code Lookup](https://tools.usps.com/zip-code-lookup.htm) tool. Exclude punctuation and spaces.
- **`payerAddress.state`** (`string`): The state or province code. Only required when the city is in the United States and Canada.
- **`providers`** (`array of ClaimsProvider objects`): Information about all providers, with each provider specified by its type (for example, `Referring`). You can't include this array in the same request as dedicated provider objects, such as `referring` or `rendering`.
- **`providers[].address`** (`object`)
- **`providers[].address.address1`** (`string`) (required): The first line of the street address. This typically contains the building number and street name.
- **`providers[].address.address2`** (`string`): The second line of the street address. This typically contains the apartment or suite number.
- **`providers[].address.city`** (`string`) (required): The city name.
- **`providers[].address.countryCode`** (`string`): Use the alpha-2 country codes from Part 1 of ISO 3166.
- **`providers[].address.countrySubDivisionCode`** (`string`): Use the country subdivision codes from Part 2 of ISO 3166.
- **`providers[].address.postalCode`** (`string`): The postal zone or zip code. For United States addresses, you must include the full nine-digit zip code with no separators, such as `100031502`. If you don't know the full zip code, you can find it using the [USPS ZIP Code Lookup](https://tools.usps.com/zip-code-lookup.htm) tool. Exclude punctuation and spaces.
- **`providers[].address.state`** (`string`): The state or province code. Only required when the city is in the United States and Canada.
- **`providers[].commercialNumber`** (`string`): The commercial number of the supervising provider.
- **`providers[].contactInformation`** (`object`): You must include at least one communication method (phone, fax, or email) in this object.
- **`providers[].contactInformation.email`** (`string`): The email address.
- **`providers[].contactInformation.faxNumber`** (`string`): The fax number.
- **`providers[].contactInformation.name`** (`string`): The full name of the person or office.
- **`providers[].contactInformation.phoneExtension`** (`string`): The phone extension, if applicable.
- **`providers[].contactInformation.phoneNumber`** (`string`): The phone number, formatted as AAABBBCCCC, where AAA represents the area code, BBB is the telephone number prefix, and CCCC is the telephone number. The phone number should only include the digits 0 to 9. Don't include separators, such as dashes, and don't include long distance access numbers, such as 1. For example, you would format the phone number 123-456-7890 as 1234567890.
- **`providers[].employerId`** (`string`)
- **`providers[].firstName`** (`string`): The first name of the supervising provider.
- **`providers[].lastName`** (`string`): The last name of the supervising provider.
- **`providers[].locationNumber`** (`string`): The location number of the supervising provider.
- **`providers[].middleName`** (`string`): The middle name or initial of the supervising provider.
- **`providers[].npi`** (`string`): The individual [National Provider Identifier (NPI)](https://www.stedi.com/docs/healthcare/national-provider-identifier) assigned to the supervising provider.
- **`providers[].organizationName`** (`string`): The supervising provider's business name, when the provider is not an individual.
- **`providers[].providerType`** (`string`) (required): This field is now automatically populated and it only remains for backwards compatibility.
- **`providers[].providerUpinNumber`** (`string`): Deprecated; do not use.
- **`providers[].ssn`** (`string`): Social Security Number without spaces or punctuation (9 digits)
- **`providers[].stateLicenseNumber`** (`string`): The state license number of the supervising provider.
- **`providers[].suffix`** (`string`): The suffix of the supervising provider's name, such as Jr. or III.
- **`providers[].taxonomyCode`** (`string`)
- **`receiver`** (`object`) (required): The entity responsible for the payment of the claim, such as an insurance company or government agency.
- **`receiver.organizationName`** (`string`) (required): The business name of the payer receiving the claim, such as Aetna or Cigna.
- **`receiver.receiverId`** (`string`): Set to `PAPER` when you want Stedi to print this claim and mail it to the payer. Omit otherwise. Visit [Submit paper claims](https://www.stedi.com/docs/healthcare/submit-paper-claims) for details.
- **`referring`** (`object`): Information about the provider who directed the patient to the rendering provider for care. For example, a primary care physician may refer patients to a specialist. Use when the referring provider applies to the entire claim, not just a specific service line.

This should be an individual, not an organization, and you should supply at least the provider's `lastName` and an identifier, which is typically the `npi`.
- **`referring.address`** (`object`)
- **`referring.address.address1`** (`string`) (required): The first line of the street address. This typically contains the building number and street name.
- **`referring.address.address2`** (`string`): The second line of the street address. This typically contains the apartment or suite number.
- **`referring.address.city`** (`string`) (required): The city name.
- **`referring.address.countryCode`** (`string`): Use the alpha-2 country codes from Part 1 of ISO 3166.
- **`referring.address.countrySubDivisionCode`** (`string`): Use the country subdivision codes from Part 2 of ISO 3166.
- **`referring.address.postalCode`** (`string`): The postal zone or zip code. For United States addresses, you must include the full nine-digit zip code with no separators, such as `100031502`. If you don't know the full zip code, you can find it using the [USPS ZIP Code Lookup](https://tools.usps.com/zip-code-lookup.htm) tool. Exclude punctuation and spaces.
- **`referring.address.state`** (`string`): The state or province code. Only required when the city is in the United States and Canada.
- **`referring.commercialNumber`** (`string`): The provider's commercial number.
- **`referring.contactInformation`** (`object`): You must include at least one communication method (phone, fax, or email) in this object.
- **`referring.contactInformation.email`** (`string`): The email address.
- **`referring.contactInformation.faxNumber`** (`string`): The fax number.
- **`referring.contactInformation.name`** (`string`): The full name of the person or office.
- **`referring.contactInformation.phoneExtension`** (`string`): The phone extension, if applicable.
- **`referring.contactInformation.phoneNumber`** (`string`): The phone number, formatted as AAABBBCCCC, where AAA represents the area code, BBB is the telephone number prefix, and CCCC is the telephone number. The phone number should only include the digits 0 to 9. Don't include separators, such as dashes, and don't include long distance access numbers, such as 1. For example, you would format the phone number 123-456-7890 as 1234567890.
- **`referring.firstName`** (`string`): The provider's first name.
- **`referring.lastName`** (`string`): The provider's last name.
- **`referring.middleName`** (`string`): The provider's middle name or initial.
- **`referring.npi`** (`string`): The individual [National Provider Identifier (NPI)](https://www.stedi.com/docs/healthcare/national-provider-identifier) assigned to the provider.
- **`referring.organizationName`** (`string`): The provider's business name.
- **`referring.providerType`** (`string`): This field is now automatically populated and it only remains for backwards compatibility.
- **`referring.providerUpinNumber`** (`string`): Deprecated; do not use.
- **`referring.stateLicenseNumber`** (`string`): The provider's state license number. This is assigned directly by a payer in order to identify the provider in their system. This is not commonly used.
- **`referring.suffix`** (`string`): The provider's name suffix, such as Jr. or III.
- **`referring.taxonomyCode`** (`string`)
- **`rendering`** (`object`): Information about the person or company (laboratory or other facility) who rendered the care. Use this object for all types of rendering providers including laboratories. When a substitute provider (locum tenens) was used, enter that provider's information here.
- Use when the provider applies to the entire claim or to at least one service line. For example, if a claim had two service lines with two different rendering providers, you would include the provider for the first service line here and leave the `claimInformation.serviceLines[].renderingProvider` object for that service line blank. Then, you would specify the second provider in the appropriate service line's `claimInformation.serviceLines[].renderingProvider` object.
- You can omit this object when the rendering provider is the same as the billing provider. In that case, you would include the provider's information in the `billing` object and leave this object blank.
- **`rendering.address`** (`object`)
- **`rendering.address.address1`** (`string`) (required): The first line of the street address. This typically contains the building number and street name.
- **`rendering.address.address2`** (`string`): The second line of the street address. This typically contains the apartment or suite number.
- **`rendering.address.city`** (`string`) (required): The city name.
- **`rendering.address.countryCode`** (`string`): Use the alpha-2 country codes from Part 1 of ISO 3166.
- **`rendering.address.countrySubDivisionCode`** (`string`): Use the country subdivision codes from Part 2 of ISO 3166.
- **`rendering.address.postalCode`** (`string`): The postal zone or zip code. For United States addresses, you must include the full nine-digit zip code with no separators, such as `100031502`. If you don't know the full zip code, you can find it using the [USPS ZIP Code Lookup](https://tools.usps.com/zip-code-lookup.htm) tool. Exclude punctuation and spaces.
- **`rendering.address.state`** (`string`): The state or province code. Only required when the city is in the United States and Canada.
- **`rendering.commercialNumber`** (`string`): The provider's commercial number.
- **`rendering.contactInformation`** (`object`): You must include at least one communication method (phone, fax, or email) in this object.
- **`rendering.contactInformation.email`** (`string`): The email address.
- **`rendering.contactInformation.faxNumber`** (`string`): The fax number.
- **`rendering.contactInformation.name`** (`string`): The full name of the person or office.
- **`rendering.contactInformation.phoneExtension`** (`string`): The phone extension, if applicable.
- **`rendering.contactInformation.phoneNumber`** (`string`): The phone number, formatted as AAABBBCCCC, where AAA represents the area code, BBB is the telephone number prefix, and CCCC is the telephone number. The phone number should only include the digits 0 to 9. Don't include separators, such as dashes, and don't include long distance access numbers, such as 1. For example, you would format the phone number 123-456-7890 as 1234567890.
- **`rendering.firstName`** (`string`): The provider's first name, if the provider is an individual.
- **`rendering.lastName`** (`string`): The provider's last name, if the provider is an individual. You must include either the `lastName` or `organizationName` property in this object.
- **`rendering.locationNumber`** (`string`): The provider's location number.
- **`rendering.middleName`** (`string`): The provider's middle name or initial, if the provider is an individual.
- **`rendering.npi`** (`string`): The [National Provider Identifier (NPI)](https://www.stedi.com/docs/healthcare/national-provider-identifier) assigned to the provider.
- **`rendering.organizationName`** (`string`): The provider's business name, if the provider is an organization. You must include either the `lastName` or `organizationName` property in this object.
- **`rendering.providerType`** (`string`): This field is now automatically populated and it only remains for backwards compatibility.
- **`rendering.providerUpinNumber`** (`string`): Deprecated; do not use.
- **`rendering.stateLicenseNumber`** (`string`): The provider's state license number. This is assigned directly by a payer in order to identify the provider in their system. This is not commonly used.
- **`rendering.suffix`** (`string`): The provider's name suffix, such as Jr. or III.
- **`rendering.taxonomyCode`** (`string`): Code from the National Uniform Claims Committee [Health Care Provider Taxonomy Code Set](https://taxonomy.nucc.org/). This identifies the provider's type and/or area of specialty.
- **`submitter`** (`object`) (required): The entity submitting the healthcare claim. This can be either an individual or an organization, such as a doctor, hospital, or insurance company. You must submit at least `organizationName` or `lastName` properties and the `contactInformation` object. If you don't supply the `submitterIdentification` property, Stedi uses the value from `billing.npi` in the request.
- **`submitter.contactInformation`** (`object`) (required): You must include at least one communication method (phone, fax, or email) in this object.
- **`submitter.contactInformation.email`** (`string`): The email address.
- **`submitter.contactInformation.faxNumber`** (`string`): The fax number.
- **`submitter.contactInformation.name`** (`string`): The full name of the person or office.
- **`submitter.contactInformation.phoneExtension`** (`string`): The phone extension, if applicable.
- **`submitter.contactInformation.phoneNumber`** (`string`): The phone number, formatted as AAABBBCCCC, where AAA represents the area code, BBB is the telephone number prefix, and CCCC is the telephone number. The phone number should only include the digits 0 to 9. Don't include separators, such as dashes, and don't include long distance access numbers, such as 1. For example, you would format the phone number 123-456-7890 as 1234567890.
- **`submitter.firstName`** (`string`): The first name of the individual submitting the claim.
- **`submitter.lastName`** (`string`): The last name of the individual submitting the claim.
- **`submitter.middleName`** (`string`): The middle name or initial of the individual submitting the claim.
- **`submitter.organizationName`** (`string`): The business name of the organization submitting the claim.
- **`submitter.submitterIdentification`** (`string`): The submitter's Electronic Transmitter Identification Number (ETIN), as assigned by the payer. For some payers, this may be the same as the submitter's NPI or TIN, but it can also be another unique identifier. Payers can refer to this identifier as the Provider Number, Submitter ID, Submitter Identifier, Submitter Primary Number, Sender Code, Certified Contracted Provider ID, and other names.

 If you don't provide this property, Stedi uses the billing provider's NPI from `billing.npi` property.
- **`subscriber`** (`object`) (required): The person or entity who is the primary policyholder for the health plan _or_ a dependent with their own member ID. The subscriber can be an individual or a business entity.
- When a dependent has a unique, payer-assigned member ID, treat them as the `subscriber` for the claim submission - include their information here and omit the `dependent` object from the request.  Stedi treats the subscriber as an individual when the request doesn't contain a value for the `subscriber.organizationName` property.
- You must set the `dateOfBirth` and `gender` properties when the subscriber is the patient. Stedi determines that the subscriber is the patient when the `dependent` object is not included in the request.
- If either `dateOfBirth` or `gender` is set, you must include both properties. You can either include both properties or neither within a single request.
- You must include `address` in this object when the patient is the subscriber. If the patient is a dependent, include address information in the `dependent` object instead.
- **`subscriber.address`** (`object`): The patient's address. Every claim must include this information in either the `subscriber` (when the patient is the subscriber) or `dependent` (when the patient is a dependent) object. You must include at least the `address1` and `city` properties in this object. The `state` and `postalCode` properties are also required for all United States and Canadian addresses.
- The address should be the patient's correct address at the time of service. Use of outdated values could cause the payer to reject, deny, or delay the claim due to suspected fraud.
- If you don't know the patient's address, first submit a [Real-Time Eligibility Check](https://www.stedi.com/docs/healthcare/api-reference/post-healthcare-eligibility) for the patient and then copy the address from either the `subscriber` or `dependent` object in the response.
- If the patient doesn't have a current address, you can populate the `address1` property with `UNKNOWN` and populate the city, state, and zip code with appropriate values based on your discretion. However, we still recommend running an eligibility check when possible, so you can use the address the payer has on file. Some payers may have explicit rules for how to handle this situation - check the payer's specific requirements before using this approach.
- **`subscriber.address.address1`** (`string`) (required): The first line of the street address. This typically contains the building number and street name.
- **`subscriber.address.address2`** (`string`): The second line of the street address. This typically contains the apartment or suite number.
- **`subscriber.address.city`** (`string`) (required): The city name.
- **`subscriber.address.countryCode`** (`string`): Use the alpha-2 country codes from Part 1 of ISO 3166.
- **`subscriber.address.countrySubDivisionCode`** (`string`): Use the country subdivision codes from Part 2 of ISO 3166.
- **`subscriber.address.postalCode`** (`string`): The postal zone or zip code. For United States addresses, you must include the full nine-digit zip code with no separators, such as `100031502`. If you don't know the full zip code, you can find it using the [USPS ZIP Code Lookup](https://tools.usps.com/zip-code-lookup.htm) tool. Exclude punctuation and spaces.
- **`subscriber.address.state`** (`string`): The state or province code. Only required when the city is in the United States and Canada.
- **`subscriber.contactInformation`** (`object`): Only use this object for payer administrative contacts on property and casualty claims. Otherwise, you shoudn't include contact information here. If you include this object, you must supply at least one communication method (phone, fax, or email).
- **`subscriber.contactInformation.email`** (`string`): The email address.
- **`subscriber.contactInformation.faxNumber`** (`string`): The fax number.
- **`subscriber.contactInformation.name`** (`string`) (required): The full name of the person or office.
- **`subscriber.contactInformation.phoneExtension`** (`string`): The phone extension, if applicable.
- **`subscriber.contactInformation.phoneNumber`** (`string`): The phone number, formatted as AAABBBCCCC, where AAA represents the area code. For example, you would format the phone number `123-456-7890` as `1234567890`. You should always include the area code, if applicable. Don't include long distance access numbers (such as `1`) or extensions in this field.
- **`subscriber.dateOfBirth`** (`string`): The subscriber's date of birth. This property is **required** if the subscriber is an individual.
- **`subscriber.firstName`** (`string`): The subscriber's first name. This property is **recommended** when the subscriber is an individual. Omit when the subscriber is an organization. Some payers reject requests without the `firstName` property.
- **`subscriber.gender`** (`string`): Identifies the subscriber's gender. Can be set to `F` - Female, `M` - Male, or `U` - Unknown. 

This property is **required** if the subscriber is an individual. 

You should set this property to `U` when the patient declines to answer or does not identify as male or female. Note that some payers may reject the claim if the patient's gender doesn't match the gender they have recorded in their member records.
  - Allowed values: `M`, `F`, `U`
- **`subscriber.groupNumber`** (`string`): The subscriber's health plan group number.
  - Provide this property OR the `policyNumber`, not both.
  - Provide this property OR the `subscriberGroupName`, not both. If this property is set, Stedi ignores the `subscriberGroupName` property.
- **`subscriber.insuranceTypeCode`** (`string`): Identifies the type of insurance policy within a specific insurance program. Visit [Claims code lists](https://www.stedi.com/docs/healthcare/claims-code-lists#insurance-type-codes) for a complete list.
  - Allowed values: `12`, `13`, `14`, `15`, `16`, `41`, `42`, `43`, `47`
- **`subscriber.lastName`** (`string`): The subscriber's last name. This property is **required** if the subscriber is an individual. Omit when the subscriber is an organization.

 **Don't** include the subscriber's name suffix, such as Jr. or III. Use the designated `suffix` property instead.
- **`subscriber.memberId`** (`string`): The member ID for the subscriber's insurance policy. This property is **required** if the subscriber is an individual.
- **`subscriber.middleName`** (`string`): The subscriber's middle name or initial.
- **`subscriber.organizationName`** (`string`): The business name of the entity submitting the claim. This is **required** when the subscriber is an organization.

 When the subscriber is an organization, you should identify the patient in the `dependent` object.
- **`subscriber.paymentResponsibilityLevelCode`** (`string`): Code identifying the payer's level of responsibility for paying this claim. Visit [Claims code lists](https://www.stedi.com/docs/healthcare/claims-code-lists#payment-responsibility-sequence-number-codes) for a complete list of possible codes.
  - Stedi sets this property to `P` - Primary by default. You only need to include it when you need to submit codes other than `P`. This can happen when the patient has multiple insurance policies. For example, if a patient is covered by both Medicare and an employer-sponsored commercial plan, you could bill the commercial plan first as `P` and then bill the Medicare payer second as `S`.
  - Either this property or `otherSubscriberInformation.paymentResponsibilityLevelCode` must be set to `P` to indicate the primary insurance payer. Stedi rejects claims - including secondary and tertiary claims - that don't include information for the primary payer.
  - Allowed values: `A`, `B`, `C`, `D`, `E`, `F`, `G`, `H`, `P`, `S`, `T`, `U`
- **`subscriber.policyNumber`** (`string`): The subscriber's health plan policy number. You should provide either this property OR the `groupNumber`, not both.
- **`subscriber.ssn`** (`string`): The subscriber's Social Security Number.
- **`subscriber.subscriberGroupName`** (`string`): The name of the subscriber's health plan. For example, Cigna or Blue Cross Blue Shield. 

Provide either this property OR the `groupNumber`, not both. If `groupNumber` is set, Stedi ignores this value and uses the value in `groupNumber`.
- **`subscriber.suffix`** (`string`): The suffix of the subscriber's name, such as Jr. or Sr. Only include the subscriber's personal name suffix - **don't** include professional or academic titles, such as M.D. or MBA.
- **`supervising`** (`object`): The entity responsible for overseeing the rendering provider and the care reported in this claim. Applies when the rendering provider is supervised by a physician. Use when the provider applies to the entire claim, not just a specific service line.

This should be an individual, not an organization, and you should supply at least the provider's `lastName` and an identifier, which is typically the `npi`.
- **`supervising.address`** (`object`)
- **`supervising.address.address1`** (`string`) (required): The first line of the street address. This typically contains the building number and street name.
- **`supervising.address.address2`** (`string`): The second line of the street address. This typically contains the apartment or suite number.
- **`supervising.address.city`** (`string`) (required): The city name.
- **`supervising.address.countryCode`** (`string`): Use the alpha-2 country codes from Part 1 of ISO 3166.
- **`supervising.address.countrySubDivisionCode`** (`string`): Use the country subdivision codes from Part 2 of ISO 3166.
- **`supervising.address.postalCode`** (`string`): The postal zone or zip code. For United States addresses, you must include the full nine-digit zip code with no separators, such as `100031502`. If you don't know the full zip code, you can find it using the [USPS ZIP Code Lookup](https://tools.usps.com/zip-code-lookup.htm) tool. Exclude punctuation and spaces.
- **`supervising.address.state`** (`string`): The state or province code. Only required when the city is in the United States and Canada.
- **`supervising.commercialNumber`** (`string`): The commercial number of the supervising provider.
- **`supervising.contactInformation`** (`object`): You must include at least one communication method (phone, fax, or email) in this object.
- **`supervising.contactInformation.email`** (`string`): The email address.
- **`supervising.contactInformation.faxNumber`** (`string`): The fax number.
- **`supervising.contactInformation.name`** (`string`): The full name of the person or office.
- **`supervising.contactInformation.phoneExtension`** (`string`): The phone extension, if applicable.
- **`supervising.contactInformation.phoneNumber`** (`string`): The phone number, formatted as AAABBBCCCC, where AAA represents the area code, BBB is the telephone number prefix, and CCCC is the telephone number. The phone number should only include the digits 0 to 9. Don't include separators, such as dashes, and don't include long distance access numbers, such as 1. For example, you would format the phone number 123-456-7890 as 1234567890.
- **`supervising.employerId`** (`string`)
- **`supervising.firstName`** (`string`): The first name of the supervising provider.
- **`supervising.lastName`** (`string`): The last name of the supervising provider.
- **`supervising.locationNumber`** (`string`): The location number of the supervising provider.
- **`supervising.middleName`** (`string`): The middle name or initial of the supervising provider.
- **`supervising.npi`** (`string`): The individual [National Provider Identifier (NPI)](https://www.stedi.com/docs/healthcare/national-provider-identifier) assigned to the supervising provider.
- **`supervising.organizationName`** (`string`): The supervising provider's business name, when the provider is not an individual.
- **`supervising.providerType`** (`string`): This field is now automatically populated and it only remains for backwards compatibility.
- **`supervising.providerUpinNumber`** (`string`): Deprecated; do not use.
- **`supervising.ssn`** (`string`): Social Security Number without spaces or punctuation (9 digits)
- **`supervising.stateLicenseNumber`** (`string`): The state license number of the supervising provider. This is assigned directly by a payer in order to identify the provider in their system. This is not commonly used.
- **`supervising.suffix`** (`string`): The suffix of the supervising provider's name, such as Jr. or III.
- **`supervising.taxonomyCode`** (`string`)
- **`tradingPartnerName`** (`string`): This is the payer's business name, like Cigna or Aetna.
- **`tradingPartnerSecondaryIdentifiers`** (`object`): Secondary identifiers for the payer. You can include up to three properties in this object.
- **`tradingPartnerSecondaryIdentifiers.claimOfficeNumber`** (`string`): Claim Office Number.
- **`tradingPartnerSecondaryIdentifiers.employerIdentificationNumber`** (`string`): Employer Identification Number. This must be a string of exactly nine numbers with no separators.
- **`tradingPartnerSecondaryIdentifiers.naic`** (`string`): National Association of Insurance Commissioners (NAIC) Code.
- **`tradingPartnerSecondaryIdentifiers.payerIdentificationNumber`** (`string`): Payer Identification Number.
This shape is deprecated since 1/9/25.
- **`tradingPartnerServiceId`** (`string`) (required): The payer ID. Visit the [Payer Network](https://www.stedi.com/healthcare/network) for a complete list.
 - You can send requests using the primary payer ID, the Stedi payer ID, or any alias listed in the payer record.
 - You must include leading `0` characters - payer IDs are alphanumeric strings and must be treated as complete strings, not integers. For example, use `00540` for SISCO, not `540`.
- **`usageIndicator`** (`string`): Whether you want to send a test or production claim. This property also allows you to filter claims in the Stedi portal by production or test data. By default, this property is set to `P` for production data. Use `T` to designate a claim as test data.

**Example:**

```json
{
  "billing": {
    "address": {
      "address1": "123 Some St",
      "address2": "Floor 1",
      "city": "A City",
      "postalCode": "123450000",
      "state": "NY"
    },
    "contactInformation": {
      "name": "Test Data Health Services, Inc.",
      "phoneNumber": "5553334444"
    },
    "employerId": "123456789",
    "npi": "1999999984",
    "organizationName": "Therapy Associates",
    "providerType": "BillingProvider",
    "taxonomyCode": "2084P0800X"
  },
  "claimInformation": {
    "benefitsAssignmentCertificationIndicator": "Y",
    "claimChargeAmount": "109.20",
    "claimFilingCode": "CI",
    "claimFrequencyCode": "1",
    "healthCareCodeInformation": [
      {
        "diagnosisCode": "F1111",
        "diagnosisTypeCode": "ABK"
      }
    ],
    "patientControlNumber": "<YOUR-CLAIM-ID>",
    "placeOfServiceCode": "02",
    "planParticipationCode": "A",
    "releaseInformationCode": "Y",
    "serviceFacilityLocation": {
      "address": {
        "address1": "1234 Other St",
        "city": "A City",
        "postalCode": "123450000",
        "state": "NY"
      },
      "npi": "1999999984",
      "organizationName": "Smith Associates"
    },
    "serviceLines": [
      {
        "professionalService": {
          "compositeDiagnosisCodePointers": {
            "diagnosisCodePointers": [
              "1"
            ]
          },
          "lineItemChargeAmount": "109.20",
          "measurementUnit": "UN",
          "procedureCode": "90837",
          "procedureIdentifier": "HC",
          "procedureModifiers": [
            "95"
          ],
          "serviceUnitCount": "1"
        },
        "providerControlNumber": "111222333",
        "renderingProvider": {
          "firstName": "Jane",
          "lastName": "Smith",
          "npi": "1999999984",
          "providerType": "RenderingProvider",
          "taxonomyCode": "111YP2000X"
        },
        "serviceDate": "20240101"
      }
    ],
    "signatureIndicator": "Y"
  },
  "receiver": {
    "organizationName": "Cigna"
  },
  "submitter": {
    "contactInformation": {
      "name": "Test Data Health Services, Inc.",
      "phoneNumber": "5552223333"
    },
    "organizationName": "Test Data Health Services, Inc.",
    "submitterIdentification": "<YOUR-SUBMITTER-ID>"
  },
  "subscriber": {
    "address": {
      "address1": "2222 Random St",
      "city": "A City",
      "postalCode": "123450000",
      "state": "NY"
    },
    "dateOfBirth": "20000101",
    "firstName": "John",
    "gender": "M",
    "groupNumber": "3335555",
    "lastName": "Anon",
    "memberId": "U7777788888",
    "paymentResponsibilityLevelCode": "P",
    "subscriberGroupName": "Cigna"
  },
  "tradingPartnerName": "Cigna",
  "tradingPartnerServiceId": "6400",
  "usageIndicator": "T"
}
```

### Responses

#### 200

ClaimsSubmission 200 response

**Schema:** `ClaimsSubmissionResponseContent`

**Properties:**

- **`claimReference`** (`object`): Information about the claim.
- **`claimReference.claimType`** (`string`): This shape is deprecated: Currently not used.
- **`claimReference.correlationId`** (`string`): An identifier Stedi assigns to the claim.
- **`claimReference.customerClaimNumber`** (`string`): A tracking number that Stedi assigns to the claim.
- **`claimReference.formatVersion`** (`string`): The X12 EDI version Stedi used to generate the claim for the payer. This is always `5010`.
- **`claimReference.patientControlNumber`** (`string`): The `patientControlNumber` from the original request, if supplied. This is a unique identifier that you assign to the claim so you can track the claim and correlate it with responses from the payer.
- **`claimReference.payerID`** (`string`): This shape is deprecated: Please use payerId.
- **`claimReference.payerId`** (`string`): The payer's ID. This is the same as the `tradingPartnerServiceId`.
- **`claimReference.rhclaimNumber`** (`string`): A tracking number Stedi assigns to the claim. This is the same as the `correlationId`.
- **`claimReference.serviceLines`** (`array of ServiceLineResponseIdentifier objects`): Contains a unique identifier for each service line, listed in the order the service lines were included in the claim. You can use these identifiers to correlate payer responses to specific service lines.
- **`claimReference.serviceLines[].lineItemControlNumber`** (`string`): A unique identifier for the service line, matching the value provided for the `claimInformation.serviceLines[].providerControlNumber` property in the claim submission. If you didn't provide a value for `providerControlNumber`, this property contains a randomly generated a ULID for the service line.
- **`claimReference.submitterId`** (`string`): Stedi's ID for the entity that submitted the claim.
- **`claimReference.timeOfResponse`** (`string`): A timestamp for Stedi's response to the claim submission.
- **`controlNumber`** (`string`): An identifier for the transaction.
- **`editResponses`** (`array of EditResponse objects`): Currently not used.
- **`editResponses[].allowOverride`** (`string`)
- **`editResponses[].badData`** (`string`)
- **`editResponses[].claimCorePath`** (`string`)
- **`editResponses[].editActivity`** (`string`)
- **`editResponses[].editName`** (`string`)
- **`editResponses[].element`** (`string`)
- **`editResponses[].errorDescription`** (`string`)
- **`editResponses[].fieldIndex`** (`string`)
- **`editResponses[].loop`** (`string`)
- **`editResponses[].phaseID`** (`string`)
- **`editResponses[].qualifierCode`** (`string`)
- **`editResponses[].referenceID`** (`string`)
- **`editResponses[].segment`** (`string`)
- **`editStatus`** (`string`): This shape is deprecated: Currently not used.
- **`errors`** (`array of ClaimsError objects`): Errors resulting from claim edits. You must review and fix these errors before resubmitting.
- **`errors[].code`** (`string`): The error code.
- **`errors[].description`** (`string`): The description of the error code.
- **`errors[].followupAction`** (`string`): Recommended followup actions to correct the error.
- **`errors[].location`** (`string`): Where the error is located in the original request.
- **`errors[].value`** (`string`): The value for the data causing the error.
- **`failure`** (`object`): Currently not used.
- **`failure.code`** (`string`)
- **`failure.description`** (`string`)
- **`httpStatusCode`** (`string`): Stedi can return the following status codes:
  - `200`: Stedi successfully generated the X12 EDI claim format required by the payer. It does not indicate whether the payer has accepted the claim - the payer will respond later with a 277CA containing this information. [Learn more about 277CAs](https://www.stedi.com/docs/healthcare/receive-claim-responses#response-types).
  - `400`: The request contains one or more problems with the claim data. Examples include missing required fields, invalid values, or incorrect data types. The response includes a message describing the problem.
  - `403`: The request is not permitted, such as using a test API key to submit a production transaction.
  - Allowed values: `200 OK`, `400 BAD_REQUEST`, `403 FORBIDDEN`
- **`meta`** (`object`): Metadata from Stedi about the request.
- **`meta.applicationMode`** (`string`): Indicates where this request can be found for support.
- **`meta.billerId`** (`string`): The biller ID assigned to this request.
- **`meta.senderId`** (`string`): The sender ID assigned to this request.
- **`meta.submitterId`** (`string`): The submitter ID assigned to this request.
- **`meta.traceId`** (`string`): The file execution ID, a unique identifier assigned to the processed file within the Stedi platform.
- **`payer`** (`object`): Information about the payer for the submitted claim.
- **`payer.payerID`** (`string`): This shape is deprecated: Please use payerId.
- **`payer.payerId`** (`string`): The payer's ID. This is the same as the `tradingPartnerServiceId`.
- **`payer.payerName`** (`string`): The payer's business name, such as Aetna or Cigna.
- **`status`** (`string`): The status of the claim submission.
- **`tradingPartnerServiceId`** (`string`): An ID for the payer you identified in the original claim. This value may differ from the `tradingPartnerServiceId` you submitted in the original request because it reflects the payer's internal concept of their ID, not necessarily the ID Stedi uses to route requests to this payer.
- **`warnings`** (`array of ClaimsWarning objects`): A list of warnings. Currently not used.
- **`warnings[].code`** (`string`): A machine-readable code indicating the type of problem.
- **`warnings[].description`** (`string`): A human-readable description of the problem.
- **`x12`** (`string`): A [277CA claim acknowledgment](https://www.stedi.com/docs/healthcare/claim-responses-overview#277ca-claim-acknowledgment) acceptance or rejection from Stedi in X12 EDI format. It indicates whether the claim has passed Stedi's claim edits.

When the claim fails one or more edits, the 277CA contains `STC` segments with information about each error. These are the same error codes that appear in the `errors` array.

Note that this 277CA only indicates whether Stedi has accepted or rejected the claim submission. You may receive additional 277CA acceptances or rejections as the claim is routed to the payer.

**Example:**

```json
{
  "claimReference": {
    "correlationId": "01HTCX97F6XS6F2K22D4KD59TK",
    "formatVersion": "5010",
    "patientControlNumber": "22266555",
    "payerId": "6400",
    "rhclaimNumber": "01HTCX97F6XS6F2K22D4KD59TK",
    "serviceLines": [
      {
        "lineItemControlNumber": "111222333"
      }
    ],
    "timeOfResponse": "2024-04-01T13:23:54.255Z"
  },
  "controlNumber": "555123",
  "httpStatusCode": "200 OK",
  "meta": {
    "traceId": "a7f7c912-77f7-489d-96fc-c4ab3b5c33fc"
  },
  "payer": {
    "payerId": "6400",
    "payerName": "Cigna"
  },
  "status": "SUCCESS",
  "tradingPartnerServiceId": "6400",
  "x12": "ISA*00*          *00*          *ZZ*STEDITEST      *ZZ*574183004559   *260213*1951*^*00501*980180479*0*T*>~GS*HN*STEDITEST*574183004559*20260213*195151*1*X*005010X214~ST*277*0001*005010X214~BHT*0085*08*01KHC8YJE8EY6A5HFR00Z5H305*20260213*195151*TH~HL*1**20*1~NM1*AY*2*STEDI INC*****46*117151744~TRN*1*01KHC8YJE8EY6A5HFR00Z5H305~DTP*050*D8*20260213~DTP*009*D8*20260213~HL*2*1*21*1~NM1*41*2*Test Data Health Services, Inc.*****46*123456~TRN*2*01KHC8Y4HNP0GVQ5NSVTPZBC0F~STC*A0>17>AY*20260213*WQ*109.2~QTY*90*1~AMT*YU*109.2~HL*3*2*19*1~NM1*85*2*Therapy Associates*****XX*1234567890~TRN*1*0~REF*TJ*123456789~QTY*QA*1~AMT*YU*109.2~HL*4*3*PT*0~NM1*QC*1*Anon*John****MI*U7777788888~TRN*2*111222333~STC*A1>20*20260213*WQ*109.2~DTP*472*RD8*20240101-20240101~SE*25*0001~GE*1*1~IEA*1*980180479~"
}
```

#### 400

ValidationException 400 response

**Schema:** `ValidationExceptionResponseContent`

**Properties:**

- **`code`** (`string`): A code describing the type of validation failure.
- **`message`** (`string`) (required): A message describing the causes of the validation failure. There may be more than one.
#### 403

AccessDeniedException 403 response

**Schema:** `AccessDeniedExceptionResponseContent`

**Properties:**

- **`code`** (`string`): Error classification code
- **`message`** (`string`) (required): Human-readable error message
#### 404

ResourceNotFoundException 404 response

**Schema:** `ResourceNotFoundExceptionResponseContent`

**Properties:**

- **`code`** (`string`): Error classification code
- **`message`** (`string`) (required): Human-readable error message
#### 409

ConflictException 409 response

**Schema:** `ConflictExceptionResponseContent`

**Properties:**

- **`message`** (`string`) (required): Why the request failed. The wording can change, so branch on the exception type, not this text.
#### 422

RequestChangedException 422 response

**Schema:** `RequestChangedExceptionResponseContent`

**Properties:**

- **`code`** (`string`): Unique error code identifying the specific type of error.
- **`message`** (`string`) (required): Human readable error message explaining why the request was rejected.
#### 429

ThrottlingException 429 response

**Schema:** `ThrottlingExceptionResponseContent`

**Properties:**

- **`code`** (`string`): Error classification code
- **`message`** (`string`) (required): Human-readable error message
#### 500

InternalFailureException 500 response

**Schema:** `InternalFailureExceptionResponseContent`

**Properties:**

- **`code`** (`string`): Error classification code
- **`message`** (`string`) (required): Human-readable error message
#### 503

ServiceUnavailableException 503 response

**Schema:** `ServiceUnavailableExceptionResponseContent`

**Properties:**

- **`code`** (`string`)
- **`message`** (`string`) (required)
#### 504

GatewayTimeoutException 504 response

**Schema:** `GatewayTimeoutExceptionResponseContent`

**Properties:**

- **`code`** (`string`)
- **`message`** (`string`) (required)


# Create Claim Attachment (275) JSON
Source: https://www.stedi.com/docs/healthcare/api-reference/post-healthcare-create-claim-attachment


<Warning>
  This endpoint is in **beta** and is subject to change.
</Warning>

This endpoint returns a pre-signed URL that you can use to upload a claim attachment file to Stedi. You must complete this step before you can submit an 837 claim with an unsolicited 275 claim attachment.

1. Call this endpoint to initiate the file upload process.
2. The endpoint returns a unique identifier for the attachment file (`attachmentId`) and a pre-signed URL (`uploadURL`). Retain the `attachmentId` so you can include it in your JSON claim submission.

You only need to complete this step when submitting claims through Stedi's JSON APIs. If your system already generates X12 EDI, you can send attachments directly through the [Submit Claim Attachment (275) Raw X12](/healthcare/api-reference/post-healthcare-submit-claim-attachment-raw-x12) endpoint instead.

This endpoint only supports [unsolicited attachments](/healthcare/submit-claim-attachments#solicited-vs-unsolicited-attachments).

## API Specification

Generate a pre-signed URL to upload a 275 claim attachment file

**Endpoint:** `POST /claim-attachments/file`

**Base URL:** `https://claims.us.stedi.com/2025-03-07`

### Request Body

**Schema:** `CreateClaimAttachmentFileRequestContent`

**Properties:**

- **`contentType`** (`string`) (required): Allowed content types for claim attachments.
  - Allowed values: `application/pdf`, `image/tiff`, `image/jpeg`, `image/jpg`, `image/png`

**Example:**

```json
{
  "contentType": "application/pdf"
}
```

### Responses

#### 201

CreateClaimAttachmentFile 201 response

**Schema:** `CreateClaimAttachmentFileResponseContent`

**Properties:**

- **`attachmentId`** (`string`) (required): Unique identifier for this attachment. You will use this ID to associate the attachment file with the claim when you submit it to the payer.
- **`uploadUrl`** (`string`) (required): A pre-signed URL you can use to upload the file with a `PUT` request. The `PUT` request must include a `Content-Type` header that matches the MIME type you specified for the attachment file.

**Example:**

```json
{
  "attachmentId": "d3b3e3e3-3e3e-3e3e-3e3e-3e3e3e3e3e3e",
  "uploadUrl": "https://s3.amazonaws.com/bucket/key"
}
```

#### 400

ValidationException 400 response

**Schema:** `ValidationExceptionResponseContent`

**Properties:**

- **`fieldList`** (`array of ValidationExceptionField objects`): A list of specific failures encountered while validating the input.
A member can appear in this list more than once if it failed to satisfy multiple constraints.
- **`fieldList[].message`** (`string`) (required): A detailed description of the validation failure.
- **`fieldList[].path`** (`string`) (required): A JSONPointer expression to the structure member whose value failed to satisfy the modeled constraints.
- **`message`** (`string`) (required): A summary of the validation failure.
#### 403

AccessDeniedException 403 response

**Schema:** `AccessDeniedExceptionResponseContent`

**Properties:**

- **`code`** (`string`): Error classification code
- **`message`** (`string`) (required): Human-readable error message
#### 404

ResourceNotFoundException 404 response

**Schema:** `ResourceNotFoundExceptionResponseContent`

**Properties:**

- **`code`** (`string`): Unique error code identifying the specific type of resource not found error.
- **`message`** (`string`) (required): Human readable error message explaining why the resource could not be found.
#### 429

ThrottlingException 429 response

**Schema:** `ThrottlingExceptionResponseContent`

**Properties:**

- **`code`** (`string`): Error classification code
- **`message`** (`string`) (required): Human-readable error message
#### 500

InternalFailureException 500 response

**Schema:** `InternalFailureExceptionResponseContent`

**Properties:**

- **`code`** (`string`): Error classification code
- **`message`** (`string`) (required): Human-readable error message


# Dental Claims (837D) Raw X12
Source: https://www.stedi.com/docs/healthcare/api-reference/post-healthcare-dental-claims-raw-x12


This endpoint is ideal if you have an existing system that generates X12 EDI files and you want to send them through Stedi.

1. Call this endpoint with a payload in [837 X12 EDI format](https://portal.stedi.com/app/guides/view/hipaa/health-care-claim-dental-x224a3/01GRYB6G91ZX6R1XAFGBMRTBBW).
2. Stedi validates the EDI and sends the claim to the payer.
3. The endpoint returns a response from Stedi in JSON format containing information about the claim you submitted and whether the submission was successful.

## Claim identifier [#claim-identifier]

`Loop 2300 REF02` (Claim Identifier for Transmission Intermediaries) has different usage rules depending on your role:

* **Providers:** Don't include `Loop 2300 REF02` when `REF01` = `D9` in your claim submission. It's reserved for clearinghouses and intermediaries. You can use `Loop 2300 CLM01` (Patient Control Number) to correlate claims with responses instead.
* **Clearinghouses and intermediaries:** You can optionally include `REF*D9` in your 837 submissions. Stedi always returns this value in `Loop 2200D REF*D9` of 277CA claim acknowledgments, allowing you to match these responses to the claim.

## API Specification

Submit an 837D dental claim in raw X12 EDI format

**Endpoint:** `POST /dental-claims/raw-x12-submission`

**Base URL:** `https://healthcare.us.stedi.com/2024-04-01`

### Parameters

- **`Idempotency-Key`** (header): A unique string to identify this request to the server. The key can be up to 255 characters. You can safely retry requests with the same idempotency key within 24 hours of making the first request. This prevents you from sending duplicate claims due to network errors or other intermittent failures. [Learn more](https://www.stedi.com/docs/api-reference/index#idempotency-keys).
  - Type: `string`

### Request Body

**Schema:** `DentalClaimsRawX12SubmissionRequestContent`

**Properties:**

- **`x12`** (`string`) (required)

**Example:**

```json
{
  "x12": "ISA*00*          *00*          *ZZ*574183004559   *ZZ*STEDITEST      *260213*2050*^*00501*000000042*0*T*>~GS*HC*574183004559*STEDITEST*20260213*205048*42*X*005010X224A2~ST*837*0001*005010X224A2~BHT*0019*00*01KHCCA4V6K00NFPX588G859SJ*20260213*2050*CH~NM1*41*2*ABA Inc*****46*1234567~PER*IC*BILLING DEPARTMENT*TE*3134893157~NM1*40*2*United HealthCare Dental*****46*52133~HL*1**20*1~PRV*BI*PXC*106S00000X~NM1*85*2*ABA Inc*****XX*1999999992~N3*ABA Inc 123 Some St~N4*Denver*CO*802383000~REF*EI*123456789~PER*IC*ABA Inc*TE*3134893157~HL*2*1*22*0~SBR*P*18*1234567890******FI~NM1*IL*1*Doe*John****MI*123412345~N3*1234 Some St~N4*Buckeye*AZ*85326~DMG*D8*20180615*F~NM1*PR*2*United HealthCare Dental*****PI*52133~N3*PO Box 7000~N4*Camden*SC*29000~CLM*12345*832***12>B>1*Y*A*Y*Y~DN2*3*E****JP~REF*G1*20231010012345678~HI*ABK>K081~NM1*82*1*Doe*Jane****XX*1999999992~PRV*PE*PXC*106S00000X~LX*1~SV3*AD>D7140*832**1>2*I*2*****1~TOO*JP*3*M>O~DTP*472*D8*20230428~REF*6R*a0UDo000000dd2dMAA~NM1*82*1*Doe*Jane****XX*1999999992~PRV*PE*PXC*122300000X~SE*35*0001~GE*1*42~IEA*1*000000042~"
}
```

### Responses

#### 200

DentalClaimsRawX12Submission 200 response

**Schema:** `DentalClaimsRawX12SubmissionResponseContent`

**Properties:**

- **`claimReference`** (`object`): Information about the claim.
- **`claimReference.claimType`** (`string`): This shape is deprecated: Currently not used.
- **`claimReference.correlationId`** (`string`): An identifier Stedi assigns to the claim.
- **`claimReference.customerClaimNumber`** (`string`): A tracking number that Stedi assigns to the claim.
- **`claimReference.formatVersion`** (`string`): The X12 EDI version Stedi used to generate the claim for the payer. This is always `5010`.
- **`claimReference.patientControlNumber`** (`string`): The `patientControlNumber` from the original request, if supplied. This is a unique identifier that you assign to the claim so you can track the claim and correlate it with responses from the payer.
- **`claimReference.payerID`** (`string`): This shape is deprecated: Please use payerId.
- **`claimReference.payerId`** (`string`): The payer's ID. This is the same as the `tradingPartnerServiceId`.
- **`claimReference.rhclaimNumber`** (`string`): A tracking number Stedi assigns to the claim. This is the same as the `correlationId`.
- **`claimReference.serviceLines`** (`array of ServiceLineResponseIdentifier objects`): Contains a unique identifier for each service line, listed in the order the service lines were included in the claim. You can use these identifiers to correlate payer responses to specific service lines.
- **`claimReference.serviceLines[].lineItemControlNumber`** (`string`): A unique identifier for the service line, matching the value provided for the `claimInformation.serviceLines[].providerControlNumber` property in the claim submission. If you didn't provide a value for `providerControlNumber`, this property contains a randomly generated a ULID for the service line.
- **`claimReference.submitterId`** (`string`): Stedi's ID for the entity that submitted the claim.
- **`claimReference.timeOfResponse`** (`string`): A timestamp for Stedi's response to the claim submission.
- **`controlNumber`** (`string`): An identifier for the transaction.
- **`editResponses`** (`array of EditResponse objects`): Currently not used.
- **`editResponses[].allowOverride`** (`string`)
- **`editResponses[].badData`** (`string`)
- **`editResponses[].claimCorePath`** (`string`)
- **`editResponses[].editActivity`** (`string`)
- **`editResponses[].editName`** (`string`)
- **`editResponses[].element`** (`string`)
- **`editResponses[].errorDescription`** (`string`)
- **`editResponses[].fieldIndex`** (`string`)
- **`editResponses[].loop`** (`string`)
- **`editResponses[].phaseID`** (`string`)
- **`editResponses[].qualifierCode`** (`string`)
- **`editResponses[].referenceID`** (`string`)
- **`editResponses[].segment`** (`string`)
- **`editStatus`** (`string`): This shape is deprecated: Currently not used.
- **`errors`** (`array of ClaimsError objects`): Errors resulting from claim edits. You must review and fix these errors before resubmitting.
- **`errors[].code`** (`string`): The error code.
- **`errors[].description`** (`string`): The description of the error code.
- **`errors[].followupAction`** (`string`): Recommended followup actions to correct the error.
- **`errors[].location`** (`string`): Where the error is located in the original request.
- **`errors[].value`** (`string`): The value for the data causing the error.
- **`failure`** (`object`): Currently not used.
- **`failure.code`** (`string`)
- **`failure.description`** (`string`)
- **`httpStatusCode`** (`string`): Stedi can return the following status codes:
  - `200`: Stedi successfully generated the X12 EDI claim format required by the payer. It does not indicate whether the payer has accepted the claim - the payer will respond later with a 277CA containing this information. [Learn more about 277CAs](https://www.stedi.com/docs/healthcare/receive-claim-responses#response-types).
  - `400`: The request contains one or more problems with the claim data. Examples include missing required fields, invalid values, or incorrect data types. The response includes a message describing the problem.
  - `403`: The request is not permitted, such as using a test API key to submit a production transaction.
  - Allowed values: `200 OK`, `400 BAD_REQUEST`, `403 FORBIDDEN`
- **`meta`** (`object`): Metadata from Stedi about the request.
- **`meta.applicationMode`** (`string`): Indicates where this request can be found for support.
- **`meta.billerId`** (`string`): The biller ID assigned to this request.
- **`meta.senderId`** (`string`): The sender ID assigned to this request.
- **`meta.submitterId`** (`string`): The submitter ID assigned to this request.
- **`meta.traceId`** (`string`): The file execution ID, a unique identifier assigned to the processed file within the Stedi platform.
- **`payer`** (`object`): Information about the payer for the submitted claim.
- **`payer.payerID`** (`string`): This shape is deprecated: Please use payerId.
- **`payer.payerId`** (`string`): The payer's ID. This is the same as the `tradingPartnerServiceId`.
- **`payer.payerName`** (`string`): The payer's business name, such as Aetna or Cigna.
- **`status`** (`string`): The status of the claim submission.
- **`tradingPartnerServiceId`** (`string`): An ID for the payer you identified in the original claim. This value may differ from the `tradingPartnerServiceId` you submitted in the original request because it reflects the payer's internal concept of their ID, not necessarily the ID Stedi uses to route requests to this payer.
- **`warnings`** (`array of ClaimsWarning objects`): A list of warnings. Currently not used.
- **`warnings[].code`** (`string`): A machine-readable code indicating the type of problem.
- **`warnings[].description`** (`string`): A human-readable description of the problem.
- **`x12`** (`string`): A [277CA claim acknowledgment](https://www.stedi.com/docs/healthcare/claim-responses-overview#277ca-claim-acknowledgment) acceptance or rejection from Stedi in X12 EDI format. It indicates whether the claim has passed Stedi's claim edits.

When the claim fails one or more edits, the 277CA contains `STC` segments with information about each error. These are the same error codes that appear in the `errors` array.

Note that this 277CA only indicates whether Stedi has accepted or rejected the claim submission. You may receive additional 277CA acceptances or rejections as the claim is routed to the payer.

**Example:**

```json
{
  "claimReference": {
    "correlationId": "01J1M588QT2TAV2N093GNJ998T",
    "formatVersion": "5010",
    "patientControlNumber": "22266555",
    "payerId": "60054",
    "rhclaimNumber": "01J1M588QT2TAV2N093GNJ998T",
    "serviceLines": [
      {
        "lineItemControlNumber": "111222333"
      }
    ],
    "timeOfResponse": "2024-07-10T22:05:32.203Z"
  },
  "controlNumber": "000000001",
  "httpStatusCode": "200 OK",
  "meta": {
    "traceId": "b727b8e7-1f00-4011-bc6e-e41444d406d8"
  },
  "payer": {
    "payerId": "60054",
    "payerName": "Cigna"
  },
  "status": "SUCCESS",
  "tradingPartnerServiceId": "60054",
  "x12": "ISA*00*          *00*          *ZZ*STEDITEST      *ZZ*574183004559   *260213*1956*^*00501*343800641*0*T*>~GS*HN*STEDITEST*574183004559*20260213*195613*1*X*005010X214~ST*277*0001*005010X214~BHT*0085*08*01KHC96JC6ZRRJ3PB88T7JR7S8*20260213*195613*TH~HL*1**20*1~NM1*AY*2*STEDI INC*****46*117151744~TRN*1*01KHC96JC6ZRRJ3PB88T7JR7S8~DTP*050*D8*20260213~DTP*009*D8*20260213~HL*2*1*21*1~NM1*41*2*ABA Inc*****46*123456789~TRN*2*01KHC96GBNYA14YRBRJGFR13P7~STC*A0>17>AY*20260213*WQ*832.0~QTY*90*1~AMT*YU*832.0~HL*3*2*19*1~NM1*85*2*ABA Inc*****XX*1999999992~TRN*1*0~REF*TJ*123456789~QTY*QA*1~AMT*YU*832.0~HL*4*3*PT*0~NM1*QC*1*Doe*John****MI*123412345~TRN*2*12345~STC*A1>20*20260213*WQ*832.0~DTP*472*RD8*20230428-20230428~SE*25*0001~GE*1*1~IEA*1*343800641~"
}
```

#### 400

ValidationException 400 response

**Schema:** `ValidationExceptionResponseContent`

**Properties:**

- **`code`** (`string`): A code describing the type of validation failure.
- **`message`** (`string`) (required): A message describing the causes of the validation failure. There may be more than one.
#### 403

AccessDeniedException 403 response

**Schema:** `AccessDeniedExceptionResponseContent`

**Properties:**

- **`code`** (`string`): Error classification code
- **`message`** (`string`) (required): Human-readable error message
#### 404

ResourceNotFoundException 404 response

**Schema:** `ResourceNotFoundExceptionResponseContent`

**Properties:**

- **`code`** (`string`): Error classification code
- **`message`** (`string`) (required): Human-readable error message
#### 409

ConflictException 409 response

**Schema:** `ConflictExceptionResponseContent`

**Properties:**

- **`message`** (`string`) (required): Why the request failed. The wording can change, so branch on the exception type, not this text.
#### 422

RequestChangedException 422 response

**Schema:** `RequestChangedExceptionResponseContent`

**Properties:**

- **`code`** (`string`): Unique error code identifying the specific type of error.
- **`message`** (`string`) (required): Human readable error message explaining why the request was rejected.
#### 429

ThrottlingException 429 response

**Schema:** `ThrottlingExceptionResponseContent`

**Properties:**

- **`code`** (`string`): Error classification code
- **`message`** (`string`) (required): Human-readable error message
#### 500

InternalFailureException 500 response

**Schema:** `InternalFailureExceptionResponseContent`

**Properties:**

- **`code`** (`string`): Error classification code
- **`message`** (`string`) (required): Human-readable error message
#### 503

ServiceUnavailableException 503 response

**Schema:** `ServiceUnavailableExceptionResponseContent`

**Properties:**

- **`code`** (`string`)
- **`message`** (`string`) (required)
#### 504

GatewayTimeoutException 504 response

**Schema:** `GatewayTimeoutExceptionResponseContent`

**Properties:**

- **`code`** (`string`)
- **`message`** (`string`) (required)


# Dental Claims (837D) JSON
Source: https://www.stedi.com/docs/healthcare/api-reference/post-healthcare-dental-claims


This endpoint sends 837D dental claims to payers.

1. Call this endpoint with a JSON payload.
2. Stedi translates your request to the X12 837 EDI format and sends it to the payer.
3. The endpoint returns a response from Stedi in JSON format containing information about the claim you submitted and whether the submission was successful.

## API Specification

Submit an 837D dental claim in JSON format

**Endpoint:** `POST /dental-claims/submission`

**Base URL:** `https://healthcare.us.stedi.com/2024-04-01`

### Parameters

- **`Idempotency-Key`** (header): A unique string to identify this request to the server. The key can be up to 255 characters. You can safely retry requests with the same idempotency key within 24 hours of making the first request. This prevents you from sending duplicate claims due to network errors or other intermittent failures. [Learn more](https://www.stedi.com/docs/api-reference/index#idempotency-keys).
  - Type: `string`

### Request Body

**Schema:** `DentalClaimsSubmissionRequestContent`

**Properties:**

- **`assistantSurgeon`** (`object`): Information about the assistant surgeon who rendered the care. Use this object when the rendering providers provided these services in the role of the assistant surgeon.

This should be an individual, not an organization, and you should supply at least the surgeon's `lastName`, `taxonomyCode`, and an identifier, which is typically the `npi`.
- **`assistantSurgeon.address`** (`object`)
- **`assistantSurgeon.address.address1`** (`string`) (required): The first line of the street address. This typically contains the building number and street name.
- **`assistantSurgeon.address.address2`** (`string`): The second line of the street address. This typically contains the apartment or suite number.
- **`assistantSurgeon.address.city`** (`string`) (required): The city name.
- **`assistantSurgeon.address.countryCode`** (`string`): Use the alpha-2 country codes from Part 1 of ISO 3166.
- **`assistantSurgeon.address.countrySubDivisionCode`** (`string`): Use the country subdivision codes from Part 2 of ISO 3166.
- **`assistantSurgeon.address.postalCode`** (`string`): The postal zone or zip code. For United States addresses, you must include the full nine-digit zip code with no separators, such as `100031502`. If you don't know the full zip code, you can find it using the [USPS ZIP Code Lookup](https://tools.usps.com/zip-code-lookup.htm) tool. Exclude punctuation and spaces.
- **`assistantSurgeon.address.state`** (`string`): The state or province code. Only required when the city is in the United States and Canada.
- **`assistantSurgeon.commercialNumber`** (`string`): The provider's commercial number.
- **`assistantSurgeon.contactInformation`** (`object`): You must include at least one communication method (phone, fax, or email) in this object.
- **`assistantSurgeon.contactInformation.email`** (`string`): The email address.
- **`assistantSurgeon.contactInformation.faxNumber`** (`string`): The fax number.
- **`assistantSurgeon.contactInformation.name`** (`string`): The full name of the person or office.
- **`assistantSurgeon.contactInformation.phoneExtension`** (`string`): The phone extension, if applicable.
- **`assistantSurgeon.contactInformation.phoneNumber`** (`string`): The phone number, formatted as AAABBBCCCC, where AAA represents the area code, BBB is the telephone number prefix, and CCCC is the telephone number. The phone number should only include the digits 0 to 9. Don't include separators, such as dashes, and don't include long distance access numbers, such as 1. For example, you would format the phone number 123-456-7890 as 1234567890.
- **`assistantSurgeon.firstName`** (`string`): The assistant surgeon's first name.
- **`assistantSurgeon.lastName`** (`string`) (required): The assistant surgeon's last name. You must include either the `lastName` or `organizationName` property in this object.
- **`assistantSurgeon.locationNumber`** (`string`): The provider's location number.
- **`assistantSurgeon.middleName`** (`string`): The assistant surgeon's middle name or initial.
- **`assistantSurgeon.npi`** (`string`): The individual National Provider Identifier (NPI) assigned to the surgeon.
- **`assistantSurgeon.providerUpinNumber`** (`string`): Deprecated; do not use.
- **`assistantSurgeon.stateLicenseNumber`** (`string`): The provider's state license number. This is assigned directly by a payer in order to identify the provider in their system. This is not commonly used.
- **`assistantSurgeon.suffix`** (`string`): The assistant surgeon's name suffix, such as Jr. or III.
- **`assistantSurgeon.taxonomyCode`** (`string`) (required): Code from the National Uniform Claims Committee [Health Care Provider Taxonomy Code Set](https://taxonomy.nucc.org/). This identifies the provider's type and/or area of specialty. For example, code `	1223S0112X` is for Oral and Maxillofacial Surgery.
- **`billing`** (`object`) (required): Information about the billing provider.
- You must provide an `address` that is a physical location such as the office where care is delivered or an administrative facility.
- For tax identification, you must include either the provider's Social Security Number (SSN) in the `ssn` property _or_ their Employer Identification Number (EIN) in the `employerId` property, but not both.
- If the billing provider has an NPI, you must include it in the `npi` property. If the billing provider does not have an NPI, you must include either the `commercialNumber` or the `locationNumber` for identification. Some payers may require the `npi` **and** either the `commercialNumber` or the `locationNumber` as a secondary identifier.
- Some solo providers may use their SSN as their EIN. In this case, submit the SSN in the `ssn` property and leave the `employerId` property blank.
- **`billing.address`** (`object`)
- **`billing.address.address1`** (`string`) (required): The first line of the street address. This typically contains the building number and street name.
- **`billing.address.address2`** (`string`): The second line of the street address. This typically contains the apartment or suite number.
- **`billing.address.city`** (`string`) (required): The city name.
- **`billing.address.countryCode`** (`string`): Use the alpha-2 country codes from Part 1 of ISO 3166.
- **`billing.address.countrySubDivisionCode`** (`string`): Use the country subdivision codes from Part 2 of ISO 3166.
- **`billing.address.postalCode`** (`string`): The postal zone or zip code. For United States addresses, you must include the full nine-digit zip code with no separators, such as `100031502`. If you don't know the full zip code, you can find it using the [USPS ZIP Code Lookup](https://tools.usps.com/zip-code-lookup.htm) tool. Exclude punctuation and spaces.
- **`billing.address.state`** (`string`): The state or province code. Only required when the city is in the United States and Canada.
- **`billing.claimOfficeNumber`** (`string`): Claim Office Number.
- **`billing.commercialNumber`** (`string`): The billing provider's commercial number, as assigned by this payer. The commercial number is a unique identifier that the payer assigns to the provider. For providers without an NPI, you must provide either the `commercialNumber` or the `locationNumber` for identification.
- **`billing.contactInformation`** (`object`): You must include at least one communication method (phone, fax, or email) in this object.
- **`billing.contactInformation.email`** (`string`): The email address.
- **`billing.contactInformation.faxNumber`** (`string`): The fax number.
- **`billing.contactInformation.name`** (`string`): The full name of the person or office.
- **`billing.contactInformation.phoneExtension`** (`string`): The phone extension, if applicable.
- **`billing.contactInformation.phoneNumber`** (`string`): The phone number, formatted as AAABBBCCCC, where AAA represents the area code, BBB is the telephone number prefix, and CCCC is the telephone number. The phone number should only include the digits 0 to 9. Don't include separators, such as dashes, and don't include long distance access numbers, such as 1. For example, you would format the phone number 123-456-7890 as 1234567890.
- **`billing.employerId`** (`string`): The billing provider's Employer Identification Number (EIN). Typically a string of exactly nine numbers with no separators, unless otherwise instructed by the payer. If you include this value, you cannot include the `ssn`.
- **`billing.firstName`** (`string`): The billing provider's first name, if the provider is an individual.
- **`billing.lastName`** (`string`): The provider's last name, if the provider is an individual.
- **`billing.locationNumber`** (`string`): The billing provider's location number. For providers without an NPI, you must provide either the `commercialNumber` or the `locationNumber` for identification.
- **`billing.middleName`** (`string`): The provider's middle name or initial, if the provider is an individual.
- **`billing.naic`** (`string`): National Association of Insurance Commissioners (NAIC) Code.
- **`billing.npi`** (`string`): The billing provider's [National Provider Identifier (NPI)](https://www.stedi.com/docs/healthcare/national-provider-identifier). Optional. When the billing provider is not assigned an NPI, supply `commercialNumber` or `locationNumber` instead.
- **`billing.organizationName`** (`string`): The provider's business name.
- **`billing.payerIdentificationNumber`** (`string`): Payer Identification Number.
- **`billing.providerType`** (`string`): This field is now automatically populated and it only remains for backwards compatibility.
- **`billing.providerUpinNumber`** (`string`): Deprecated; do not use.
- **`billing.ssn`** (`string`): The billing provider's Social Security Number. Must be a string of exactly nine numbers with no separators. If you include this value, you cannot include the `employerId`.
- **`billing.stateLicenseNumber`** (`string`): The billing provider's state license number. This is assigned directly by a payer in order to identify the provider in their system. This is not commonly used.
- **`billing.suffix`** (`string`): The provider's name suffix, such as Jr. or III.
- **`billing.taxonomyCode`** (`string`): Code from the National Uniform Claims Committee [Health Care Provider Taxonomy Code Set](https://taxonomy.nucc.org/). This identifies the billing provider's type and/or area of specialty.
- **`claimIdentifier`** (`string`): A code specifying the type of transaction. Defaults to `CH` if not provided.
  - `31`: Only for use by state Medicaid agencies performing post payment recovery.
  - `CH`: Use when the transaction contains only fee for service claims or claims with at least one chargeable line item. Also use when it's not clear whether a transaction contains claims or capitated encounters, or if the transaction contains a mix of claims and capitated encounters.
  - `RP`: Use for capitated encounters. Also use when the transaction is being sent to an entity for purposes other than adjudication of a claim. For example, when you're sending the claim to a state health agency that is using the claim for health data reporting purposes.
  - Allowed values: `31`, `CH`, `RP`
- **`claimInformation`** (`object`) (required)
- **`claimInformation.autoAccidentCountryCode`** (`string`): The country code where the accident occurred. Use when `relatedCausesCode` = `AA` and the accident occurred in a country other than US or Canada.
- **`claimInformation.autoAccidentStateCode`** (`string`): A code identifying the state or province in which the automobile accident occurred. Use this code when `relatedCausesCode` is set to `AA`.
- **`claimInformation.benefitsAssignmentCertificationIndicator`** (`string`) (required): A code indicating whether the patient or an authorized person has authorized the plan to remit payment directly to the provider. Use `W` when the patient refuses to assign benefits. Can be set to `N` - No (Payment should go to the patient), `Y` - Yes (Payment should go directly to the provider), or `W` - Not Applicable (use when patient refuses to assign benefits).
  - Allowed values: `N`, `W`, `Y`
- **`claimInformation.claimChargeAmount`** (`string`) (required): The total dollar amount charged for the services on this claim, expressed as a decimal. For example, `100.50`. This is the total amount before any adjustments or payments. The amount must balance to the sum of the service line charges.
- **`claimInformation.claimContractInformation`** (`object`): Required when the submitter is contractually obligated to supply this information on post-adjudicated claims.
- **`claimInformation.claimContractInformation.contractAmount`** (`string`): The total dollar amount of the contract, expressed as a decimal. For example, `100.50`.
- **`claimInformation.claimContractInformation.contractCode`** (`string`): The contract code. This is a unique identifier for the contract.
- **`claimInformation.claimContractInformation.contractPercentage`** (`string`): The allowance or charge percent, expressed as a decimal. For example, `0.80`.
- **`claimInformation.claimContractInformation.contractTypeCode`** (`string`) (required): A code identifying the type of contract. Can be set to `02` - Per Diem, `03` - Variable Per Diem, `04` - Flat, `05` - Capitated, `06` - Percent, or `09` - Other.
  - Allowed values: `02`, `03`, `04`, `05`, `06`, `09`
- **`claimInformation.claimContractInformation.contractVersionIdentifier`** (`string`): An additional identifer for the contract. Identifies the revision level of a particular format, program, technique or algorithm.
- **`claimInformation.claimContractInformation.termsDiscountPercentage`** (`string`): Terms discount percentage, expressed as a percent, available to the purchaser if an invoice is paid on or before the Terms Discount Due Date.
- **`claimInformation.claimDateInformation`** (`object`)
- **`claimInformation.claimDateInformation.accidentDate`** (`string`): The date of the accident related to this claim. Required when `relatedCausesCode` is set to `AA` - Auto Accident or `OA` - Other Accident. Also required when `relatedCausesCode` is set to `EM` - Employment and this claim is the result of an accident.
- **`claimInformation.claimDateInformation.appliancePlacementDate`** (`string`): The date the appliance was placed.
- **`claimInformation.claimDateInformation.repricerReceivedDate`** (`string`): The date the repricing entity received the initial claim. Required when a repricer is passing the claim onto the payer.
- **`claimInformation.claimDateInformation.serviceDate`** (`string`): A single service date or a range of service dates.
- **`claimInformation.claimFilingCode`** (`string`): A code identifying the type of claim. For example `DS` - Disability.
- Use `OF` when submitting Medicare Part D claims.
- Use `ZZ` when you don't know the type of insurance.
- Some payers reject claims with invalid codes. If you're not sure which code to use, we recommend running a [real-time eligibility check](https://www.stedi.com/docs/healthcare/api-reference/post-healthcare-eligibility) and using the value returned in the most relevant `benefitsInformation.insuranceTypeCode` property. Note that the eligibility response uses a different code list than claims, so you may need to map that code value to the appropriate claim filing code.


Visit [Claims code lists](https://www.stedi.com/docs/healthcare/claims-code-lists#claim-filing-indicator-codes) for a complete list.
  - Allowed values: `11`, `12`, `13`, `14`, `15`, `16`, `17`, `AM`, `BL`, `CH`, `CI`, `DS`, `FI`, `HM`, `LM`, `MA`, `MB`, `MC`, `OF`, `TV`, `VA`, `WC`, `ZZ`
- **`claimInformation.claimFrequencyCode`** (`string`) (required): Identify the type of claim. Can be set to: `1` - indicates an original claim, `7` - Indicates the new claim is a replacement or correction, `8` - Indicates the claim is void or canceled
  - Allowed values: `1`, `7`, `8`
- **`claimInformation.claimNotes`** (`array of strings`): Include comments or special instructions related to the claim. Required when the provider needs to include additional information to substantiate the medical treatment that can't be provided elsewhere in the claim submission. You can include up to five objects in this array.
- **`claimInformation.claimPricingRepricingInformation`** (`object`): Repricing information to be completed by repricers, not providers. For capitated encounters, pricing or repricing information usually is not applicable and is provided to qualify other information within the claim.
- **`claimInformation.claimPricingRepricingInformation.exceptionCode`** (`string`): Code specifying the exception reason for consideration of out-of-network health care services. This is the reason generated by the third-party health organization. Visit [Claims code lists](https://www.stedi.com/docs/healthcare/claims-code-lists#exception-codes-2) for a complete list.
  - Allowed values: `1`, `2`, `3`, `4`, `5`, `6`
- **`claimInformation.claimPricingRepricingInformation.policyComplianceCode`** (`string`)
  - Allowed values: `1`, `2`, `3`, `4`, `5`
- **`claimInformation.claimPricingRepricingInformation.pricingMethodologyCode`** (`string`) (required): Code indicating the pricing or repricing methodology. Visit [Claims code lists](https://www.stedi.com/docs/healthcare/claims-code-lists#pricing-methodology-codes-2) for a complete list.
  - Allowed values: `00`, `01`, `02`, `03`, `04`, `05`, `06`, `07`, `08`, `09`, `10`, `11`, `12`, `13`, `14`
- **`claimInformation.claimPricingRepricingInformation.rejectReasonCode`** (`string`)
  - Allowed values: `T1`, `T2`, `T3`, `T4`, `T5`, `T6`
- **`claimInformation.claimPricingRepricingInformation.repricedAllowedAmount`** (`string`) (required): The dollar amount, expressed as a decimal. For example, `100.50`.
- **`claimInformation.claimPricingRepricingInformation.repricedApprovedAmbulatoryPatientGroupAmount`** (`string`): The dollar amount, expressed as a decimal.
- **`claimInformation.claimPricingRepricingInformation.repricedApprovedAmbulatoryPatientGroupCode`** (`string`): The code indicating the type of repricing.
- **`claimInformation.claimPricingRepricingInformation.repricedSavingAmount`** (`string`): The dollar amount, expressed as a decimal.
- **`claimInformation.claimPricingRepricingInformation.repricingOrganizationIdentifier`** (`string`): The identifier of the organization that repriced the claim.
- **`claimInformation.claimPricingRepricingInformation.repricingPerDiemOrFlatRateAmount`** (`string`): The pricing rate associated with per diem or flat rate repricing, expressed as a decimal.
- **`claimInformation.claimSupplementalInformation`** (`object`): Additional information or documentation required for the claim. This is where you can include information about [attachments](https://www.stedi.com/docs/healthcare/submit-claim-attachments), if applicable.
- **`claimInformation.claimSupplementalInformation.adjustedRepricedClaimNumber`** (`string`): Required when the repricer believes this information is necessary. Providers should not complete this property.
- **`claimInformation.claimSupplementalInformation.claimControlNumber`** (`string`): This is the Payer Claim Control Number (PCCN) for an existing claim that this claim is meant to replace or cancel. This property is generally **required** when the `claimInformation.claimFrequencyCode` is set to `7` or `8`. One exception to this guidance is Original Medicare, which specifies that you omit the PCCN from resubmissions.

Visit [Resubmit or cancel claims](https://www.stedi.com/docs/healthcare/resubmit-cancel-claims) for complete details and information about where to find the PCCN for an existing claim.
- **`claimInformation.claimSupplementalInformation.claimNumber`** (`string`): The claim number assigned by clearinghouse, van, etc.

Stedi overwrites this value when it sends the claim to the payer, so you shouldn't include this property in your request. We strongly recommend using the `claimInformation.patientControlNumber` property as your claim tracking ID.
- **`claimInformation.claimSupplementalInformation.predeterminationOfBenefitsIdentifier`** (`string`): The Predetermination of Benefits Identification Number assigned by the payer. Required for services that have been previously predetermined and are now being submitted for payment. The identifier you supply here applies to the entire claim.
- **`claimInformation.claimSupplementalInformation.priorAuthorizationNumber`** (`string`): Required when an authorization number is assigned by the payer or UMO _and_ the services on this claim were preauthorized. This authorization number applies to the payer you listed in the `receiver` object. If you need to include authorization numbers for other payers, you can include them in `claimInformation.otherSubscriberInformation.otherPayerName.otherPayerPriorAuthorizationNumber`. The UMO (Utilization Management Organization) is generally the entity empowered to make a decision regarding the outcome of a health services review or the owner of information.

If there are multiple prior authorization numbers associated with this claim, send one here and then override it as necessary for each service line in `claimInformation.serviceLines[].serviceLineReferenceInformation.priorAuthorization`.
- **`claimInformation.claimSupplementalInformation.referralNumber`** (`string`): Required when a referral number is assigned by the payer or Utilization Management Organization (UMO) _and_ a referral is involved.
- **`claimInformation.claimSupplementalInformation.reportInformation`** (`object`)
- **`claimInformation.claimSupplementalInformation.reportInformation.attachmentControlNumber`** (`string`): A control number assigned to the attachment. The payer uses this identifier to match the attachment to the claim.
  - You must include either this property or `attachmentId` in the request, but not both. Including both properties will result in an error.
  - We recommend using a ULID or UUID of up to 50 characters.
  - Stedi autogenerates a control number if you don't provide one.
- **`claimInformation.claimSupplementalInformation.reportInformation.attachmentId`** (`string`): The unique identifier for the attachment file you previously uploaded to Stedi. This value is returned in the `attachmentId` property of the [Create Claim Attachment (275) JSON](https://www.stedi.com/docs/healthcare/api-reference/post-healthcare-submit-claim-attachment) response. Stedi uses it to generate and submit the 275 claim attachment transaction to the payer.
  - This property is **required** when you're submitting attachment files through Stedi.
  - You must include either this property or `attachmentControlNumber` in the request, but not both. Including both properties will result in an error.
- **`claimInformation.claimSupplementalInformation.reportInformation.attachmentReportTypeCode`** (`string`) (required): Code indicating the title or contents of a document, report or supporting item. For example, `B4` - Referral Form or `DA` - Dental Models. Visit [Claims code lists](https://www.stedi.com/docs/healthcare/claims-code-lists#attachment-report-type-codes) for a complete list.
  - Allowed values: `B4`, `DA`, `DG`, `EB`, `OZ`, `P6`, `RB`, `RR`
- **`claimInformation.claimSupplementalInformation.reportInformation.attachmentTransmissionCode`** (`string`) (required): Code identifying the method by which the provider's report is attached. Can be set to `AA` - Available on Request at Provider Site, `BM` - By Mail, `EL` - Electronically Only, `EM` - E-Mail, `FT` - File Transfer, or `FX` - By Fax.

Set this to `EL` when you plan to submit attachments electronically through Stedi APIs.
  - Allowed values: `AA`, `BM`, `EL`, `EM`, `FT`, `FX`
- **`claimInformation.claimSupplementalInformation.reportInformations`** (`array of DentalReportInformation objects`): An array of report information for the claim. Use this when you need to submit multiple report information records. You can submit up to 10 objects in this array.

Required when you plan to submit [attachments](https://www.stedi.com/docs/healthcare/submit-claim-attachments) for the claim electronically through Stedi APIs or SFTP, when there is a paper attachment following this claim, or when the provider deems it necessary to identify that they have additional information at their office that is available upon request.
- **`claimInformation.claimSupplementalInformation.reportInformations[].attachmentControlNumber`** (`string`): A control number assigned to the attachment. The payer uses this identifier to match the attachment to the claim.
  - You must include either this property or `attachmentId` in the request, but not both. Including both properties will result in an error.
  - We recommend using a ULID or UUID of up to 50 characters.
  - Stedi autogenerates a control number if you don't provide one.
- **`claimInformation.claimSupplementalInformation.reportInformations[].attachmentId`** (`string`): The unique identifier for the attachment file you previously uploaded to Stedi. This value is returned in the `attachmentId` property of the [Create Claim Attachment (275) JSON](https://www.stedi.com/docs/healthcare/api-reference/post-healthcare-submit-claim-attachment) response. Stedi uses it to generate and submit the 275 claim attachment transaction to the payer.
  - This property is **required** when you're submitting attachment files through Stedi.
  - You must include either this property or `attachmentControlNumber` in the request, but not both. Including both properties will result in an error.
- **`claimInformation.claimSupplementalInformation.reportInformations[].attachmentReportTypeCode`** (`string`) (required): Code indicating the title or contents of a document, report or supporting item. For example, `B4` - Referral Form or `DA` - Dental Models. Visit [Claims code lists](https://www.stedi.com/docs/healthcare/claims-code-lists#attachment-report-type-codes) for a complete list.
  - Allowed values: `B4`, `DA`, `DG`, `EB`, `OZ`, `P6`, `RB`, `RR`
- **`claimInformation.claimSupplementalInformation.reportInformations[].attachmentTransmissionCode`** (`string`) (required): Code identifying the method by which the provider's report is attached. Can be set to `AA` - Available on Request at Provider Site, `BM` - By Mail, `EL` - Electronically Only, `EM` - E-Mail, `FT` - File Transfer, or `FX` - By Fax.

Set this to `EL` when you plan to submit attachments electronically through Stedi APIs.
  - Allowed values: `AA`, `BM`, `EL`, `EM`, `FT`, `FX`
- **`claimInformation.claimSupplementalInformation.repricedClaimNumber`** (`string`): Required when the repricer believes this information is necessary. Providers should not complete this property.
- **`claimInformation.claimSupplementalInformation.serviceAuthorizationExceptionCode`** (`string`): Code indicating the reason for the service authorization exception. Visit [Claims code lists](https://www.stedi.com/docs/healthcare/claims-code-lists#service-authorization-exception-codes) for a complete list.
  - Allowed values: `1`, `2`, `3`, `4`, `5`, `6`, `7`
- **`claimInformation.delayReasonCode`** (`string`): Code indicating the reason for the delay in claim submission. Visit [Claims code lists](https://www.stedi.com/docs/healthcare/claims-code-lists#delay-reason-codes) for a complete list.
  - Allowed values: `1`, `2`, `3`, `4`, `5`, `6`, `7`, `8`, `9`, `10`, `11`, `15`
- **`claimInformation.fileInformation`** (`string`): Please use the `fileInformationList` array instead.
- **`claimInformation.fileInformationList`** (`array of strings`): An array of additional information items the payer requested. Not commonly used.
- **`claimInformation.healthCareCodeInformation`** (`array of DentalHealthCareInformation objects`): Details about the patient's healthcare diagnosis. Only required when the diagnosis may have an impact on the adjudication of the claim in cases where specific dental procedures may minimize the risks associated with the connection between the patient's oral and systemic health conditions.
  - Use `ABK` as the type for the principal diagnosis code and `ABF` for any other diagnosis codes you include.
  - Use one `ABK` code as the first object, and then you can submit up to 3 `ABF` codes as needed. If you need to submit more codes than this, you must create additional, separate claims.
- **`claimInformation.healthCareCodeInformation[].diagnosisCode`** (`string`) (required): The diagnosis code.
  - You must submit a valid, billable code at the highest level of specificity. Include the 4th - 7th characters as applicable.
  - **Don't** submit the decimal point for ICD codes. The decimal point is implied.
  - **Don't** submit ICD-10 header codes. Header codes exist to group related codes and aren't valid for billing. These header codes can change with each new version of ICD-10, so we recommend reviewing your diagnosis codes every year to ensure that they aren't classified as header codes in the most recent version. To determine whether a code is a header code, you can also search the [Value Set Authority Center](https://vsac.nlm.nih.gov/context/cs). If the 'Header' property is set, the code is a header code and you shouldn't use it in claim submissions.
- **`claimInformation.healthCareCodeInformation[].diagnosisTypeCode`** (`string`) (required): Code indicating the specific industry code list. Can be set to `ABK` - International Classification of Diseases Clinical Modification (ICD-10-CM) Principal Diagnosis or `ABF` - International Classification of Diseases Clinical Modification (ICD-10-CM) Diagnosis, `TQ` Systemized Nomenclature of Dentistry (SNODENT).
  - Allowed values: `ABK`, `ABF`, `TQ`
- **`claimInformation.orthodonticTotalMonthsOfTreatment`** (`object`)
- **`claimInformation.orthodonticTotalMonthsOfTreatment.monthsCount`** (`number`): The estimated number of treatment months, expressed as a decimal.
- **`claimInformation.orthodonticTotalMonthsOfTreatment.monthsRemaining`** (`number`): The number of months remaining in the treatment, expressed as a decimal.
- **`claimInformation.orthodonticTotalMonthsOfTreatment.treatmentIndicator`** (`string`): The only allowed value is `Y`, which indicates that services reported in this claim are for orthodontic purposes. Only include this property if you haven't set the `monthsCount` or `monthsRemaining` properties.
- **`claimInformation.otherSubscriberInformation`** (`array of DentalOtherSubscriberInformation objects`): Required when other payers are known to potentially be involved in paying on this claim. This object contains information about other health plans under which the patient has coverage. It's used for coordination of benefits scenarios.
- **`claimInformation.otherSubscriberInformation[].benefitsAssignmentCertificationIndicator`** (`string`) (required): Code indicating whether or not the insured has authorized the plan to remit payment directly to the provider. Can be set to `N` - No (Payment should go to the patient), `Y` - Yes (Payment should go directly to the provider), or `W` - Not Applicable.
  - Allowed values: `N`, `W`, `Y`
- **`claimInformation.otherSubscriberInformation[].claimFilingIndicatorCode`** (`string`): A code identifying the type of claim. For example `DS` - Disability. Use `OF` when submitting Medicare Part D claims. Use `ZZ` when you don't know the type of insurance. Visit [Claims code lists](https://www.stedi.com/docs/healthcare/claims-code-lists#claim-filing-indicator-codes) for a complete list.
  - Allowed values: `11`, `12`, `13`, `14`, `15`, `16`, `17`, `AM`, `BL`, `CH`, `CI`, `DS`, `FI`, `HM`, `LM`, `MA`, `MB`, `MC`, `OF`, `TV`, `VA`, `WC`, `ZZ`
- **`claimInformation.otherSubscriberInformation[].claimLevelAdjustments`** (`array of ClaimAdjustment objects`): Use this object to report prior payers' claim level adjustments that cause the amount paid to differ from the amount originally charged. Codes and associated amounts must come from either paper remittance advice or 835s (Electronic Remittance Advice) received on the claim. When the information originates from a paper remittance advice that does not use the standard Claim Adjustment Reason Codes, you must convert them to standard Claim Adjustment Reason Codes.
- **`claimInformation.otherSubscriberInformation[].claimLevelAdjustments[].adjustmentDetails`** (`array of ClaimAdjustmentDetails objects`) (required)
- **`claimInformation.otherSubscriberInformation[].claimLevelAdjustments[].adjustmentDetails[].adjustmentAmount`** (`string`) (required): The dollar amount of the adjustment, expressed as a decimal. For example, `100.50`.
- **`claimInformation.otherSubscriberInformation[].claimLevelAdjustments[].adjustmentDetails[].adjustmentQuantity`** (`string`): The units of service being adjusted.
- **`claimInformation.otherSubscriberInformation[].claimLevelAdjustments[].adjustmentDetails[].adjustmentReasonCode`** (`string`) (required): Code identifying the detailed reason the adjustment was made. Visit the X12 [Claim Adjustment Reason Codes](https://x12.org/codes/claim-adjustment-reason-codes) for a complete list.
- **`claimInformation.otherSubscriberInformation[].claimLevelAdjustments[].adjustmentGroupCode`** (`string`) (required): Code identifying the general category of payment adjustment. Can be set to `CO` - Contractual Obligations, `CR` - Correction and Reversals, `OA` - Other Adjustments, `PI` - Payor Initiated Reductions, or `PR - Patient Responsibility.
  - Allowed values: `CO`, `CR`, `OA`, `PI`, `PR`
- **`claimInformation.otherSubscriberInformation[].individualRelationshipCode`** (`string`) (required): Code identifying the relationship to the person insured. Visit [Claims code lists](https://www.stedi.com/docs/healthcare/claims-code-lists#individual-relationship-codes) for a complete list.
  - Allowed values: `01`, `18`, `19`, `20`, `21`, `39`, `40`, `53`, `G8`
- **`claimInformation.otherSubscriberInformation[].insuranceGroupOrPolicyNumber`** (`string`): The group or policy number.
- **`claimInformation.otherSubscriberInformation[].insuranceTypeCode`** (`string`): Code identifying the type of insurance policy within a specific insurance program. Visit [Claims code lists](https://www.stedi.com/docs/healthcare/claims-code-lists#insurance-type-codes) for a complete list.
  - Allowed values: `12`, `13`, `14`, `15`, `16`, `41`, `42`, `43`, `47`
- **`claimInformation.otherSubscriberInformation[].medicareOutpatientAdjudication`** (`object`): Claim-level data related to the adjudication of Medicare claims not related to an inpatient setting. Required when outpatient adjudication information is reported in the remittance advice _or_ when you need to report remark codes.
- **`claimInformation.otherSubscriberInformation[].medicareOutpatientAdjudication.claimPaymentRemarkCode`** (`array of strings`): The remark code. Visit the X12 [Remittance Advice Remark Codes](https://x12.org/codes/remittance-advice-remark-codes) for a complete list. You can include up to five codes in this array.
- **`claimInformation.otherSubscriberInformation[].medicareOutpatientAdjudication.hcpcsPayableAmount`** (`string`): The claim Health Care Financing Administration Common Procedural Coding System (HCPCS) payable amount, expressed as a decimal.
- **`claimInformation.otherSubscriberInformation[].medicareOutpatientAdjudication.nonPayableProfessionalComponentBilledAmount`** (`string`): The professional component amount billed but not payable, expressed as a decimal.
- **`claimInformation.otherSubscriberInformation[].medicareOutpatientAdjudication.reimbursementRate`** (`string`): The reimbursement percentage, expressed as a decimal.
- **`claimInformation.otherSubscriberInformation[].nonCoveredChargeAmount`** (`string`): Required when the destination payer's cost avoidance policy allows providers to bypass claim submission to the otherwise prior payer identified in `otherSubscriberInformation.otherPayerName`. The amount must equal the total claim charge amount you reported in `claimInformation.claimChargeAmount`.
- **`claimInformation.otherSubscriberInformation[].otherInsuredGroupName`** (`string`): The name of the health plan.
- **`claimInformation.otherSubscriberInformation[].otherPayerAssistantSurgeon`** (`object`): Information about the assistant surgeon.
- **`claimInformation.otherSubscriberInformation[].otherPayerAssistantSurgeon.entityTypeQualifier`** (`string`) (required)
  - Allowed values: `1`, `2`
- **`claimInformation.otherSubscriberInformation[].otherPayerAssistantSurgeon.otherPayerAssistantSurgeonIdentifier`** (`array of OtherPayerAssistantSurgeonIdentifierItem objects`) (required): An identifier for the assistant surgeon.
- **`claimInformation.otherSubscriberInformation[].otherPayerAssistantSurgeon.otherPayerAssistantSurgeonIdentifier[].identifier`** (`string`) (required): The identifier. The format and length of this value depends on the `qualifier` you set.
- **`claimInformation.otherSubscriberInformation[].otherPayerAssistantSurgeon.otherPayerAssistantSurgeonIdentifier[].otherIdentifier`** (`string`): The identifier for the other payer who provided this reference number. This is only required when the reference number is provided by the non-destination payer. The value must match the `claimInformation.otherSubscriberInformation[].otherPayerName.otherPayerIdentifier` property.
- **`claimInformation.otherSubscriberInformation[].otherPayerAssistantSurgeon.otherPayerAssistantSurgeonIdentifier[].qualifier`** (`string`) (required): Set to `0B` - State License Number, `1G` - Provider UPIN Number, `G2` - Commercial Number, or `LU` - Location Number. Note that UPIN is deprecated and shouldn't be used in new claims.
- **`claimInformation.otherSubscriberInformation[].otherPayerBillingProvider`** (`array of OtherPayerBillingProvider objects`): Information about the billing provider.
- **`claimInformation.otherSubscriberInformation[].otherPayerBillingProvider[].entityTypeQualifier`** (`string`) (required): Code identifying the type of entity. Can be set to `1` - Person or `2` - Non-Person Entity.
  - Allowed values: `1`, `2`
- **`claimInformation.otherSubscriberInformation[].otherPayerBillingProvider[].otherPayerBillingProviderIdentifier`** (`array of OtherPayerBillingProviderIdentifierItem objects`) (required): Identifiers for the billing provider.
- **`claimInformation.otherSubscriberInformation[].otherPayerBillingProvider[].otherPayerBillingProviderIdentifier[].identifier`** (`string`) (required): The identifier. The format and length of this value depends on the `qualifier` you set.
- **`claimInformation.otherSubscriberInformation[].otherPayerBillingProvider[].otherPayerBillingProviderIdentifier[].otherIdentifier`** (`string`): The identifier for the other payer who provided this reference number. This is only required when the reference number is provided by the non-destination payer. The value must match the `claimInformation.otherSubscriberInformation[].otherPayerName.otherPayerIdentifier` property.
- **`claimInformation.otherSubscriberInformation[].otherPayerBillingProvider[].otherPayerBillingProviderIdentifier[].qualifier`** (`string`) (required): Set to `LU` - Location Number, or `G2` - Provider Commercial Number.
- **`claimInformation.otherSubscriberInformation[].otherPayerName`** (`object`) (required): Details about the other payer.
- **`claimInformation.otherSubscriberInformation[].otherPayerName.otherPayerAddress`** (`object`)
- **`claimInformation.otherSubscriberInformation[].otherPayerName.otherPayerAddress.address1`** (`string`) (required): The first line of the street address. This typically contains the building number and street name.
- **`claimInformation.otherSubscriberInformation[].otherPayerName.otherPayerAddress.address2`** (`string`): The second line of the street address. This typically contains the apartment or suite number.
- **`claimInformation.otherSubscriberInformation[].otherPayerName.otherPayerAddress.city`** (`string`) (required): The city name.
- **`claimInformation.otherSubscriberInformation[].otherPayerName.otherPayerAddress.countryCode`** (`string`): Use the alpha-2 country codes from Part 1 of ISO 3166.
- **`claimInformation.otherSubscriberInformation[].otherPayerName.otherPayerAddress.countrySubDivisionCode`** (`string`): Use the country subdivision codes from Part 2 of ISO 3166.
- **`claimInformation.otherSubscriberInformation[].otherPayerName.otherPayerAddress.postalCode`** (`string`): The postal zone or zip code. For United States addresses, you must include the full nine-digit zip code with no separators, such as `100031502`. If you don't know the full zip code, you can find it using the [USPS ZIP Code Lookup](https://tools.usps.com/zip-code-lookup.htm) tool. Exclude punctuation and spaces.
- **`claimInformation.otherSubscriberInformation[].otherPayerName.otherPayerAddress.state`** (`string`): The state or province code. Only required when the city is in the United States and Canada.
- **`claimInformation.otherSubscriberInformation[].otherPayerName.otherPayerAdjudicationOrPaymentDate`** (`string`): The date the other payer adjudicated the claim. Required when this payer has previously adjudicated the claim and you aren’t including a value for `LineAdjudicationInformation.adjudicationOrPaymentDate`.
- **`claimInformation.otherSubscriberInformation[].otherPayerName.otherPayerClaimAdjustmentIndicator`** (`boolean`): The only valid value is `true`. Required when Required when the claim is being sent in the payer-to-payer COB model AND the destination payer is secondary to this payer AND this payer has re-adjudicated the claim.
- **`claimInformation.otherSubscriberInformation[].otherPayerName.otherPayerClaimControlNumber`** (`string`): The claim control number assigned by this payer.
- **`claimInformation.otherSubscriberInformation[].otherPayerName.otherPayerIdentifier`** (`string`) (required): The identifier specified in `otherPayerIdentifierCode`. When sending Line Adjudication Information for this payer, the identifier sent in `lineAdjudicationInformation.otherPayerPrimaryIdentifier` must match this value.
- **`claimInformation.otherSubscriberInformation[].otherPayerName.otherPayerIdentifierTypeCode`** (`string`) (required): Code designating the type of identifier. Can be set to `PI` - Payor Identification or `XV` - Centers for Medicare/Medicaid Services PlanID. Use code value `XV` when reporting Health Plan ID (HPID) or Other Entity Identifier (OEID).
  - Allowed values: `PI`, `XV`
- **`claimInformation.otherSubscriberInformation[].otherPayerName.otherPayerOrganizationName`** (`string`) (required): The payer's organization name.
- **`claimInformation.otherSubscriberInformation[].otherPayerName.otherPayerPredeterminationIdentification`** (`string`): The authorization number assigned by this payer.
- **`claimInformation.otherSubscriberInformation[].otherPayerName.otherPayerPriorAuthorizationNumber`** (`string`): The authorization number assigned by this payer.
- **`claimInformation.otherSubscriberInformation[].otherPayerName.otherPayerPriorAuthorizationOrReferralNumber`** (`string`): The referral number assigned by this payer.
- **`claimInformation.otherSubscriberInformation[].otherPayerName.otherPayerSecondaryIdentifier`** (`array of OtherPayerSecondaryIdentifierItem objects`): An additional identification number to identify the other payer.
- **`claimInformation.otherSubscriberInformation[].otherPayerName.otherPayerSecondaryIdentifier[].identifier`** (`string`) (required): The identifier. The format and length of this value depends on the `qualifier` you set.
- **`claimInformation.otherSubscriberInformation[].otherPayerName.otherPayerSecondaryIdentifier[].otherIdentifier`** (`string`): The identifier for the other payer who provided this reference number. This is only required when the reference number is provided by the non-destination payer. The value must match the `claimInformation.otherSubscriberInformation[].otherPayerName.otherPayerIdentifier` property.
- **`claimInformation.otherSubscriberInformation[].otherPayerName.otherPayerSecondaryIdentifier[].qualifier`** (`string`) (required): Set to `2U` - Payer Identification Number, `EI` - Employer Identification Number, `FY` - Claim Office Number, or `NF` - National Association of Insurance Commissioners (NAIC) Code.
- **`claimInformation.otherSubscriberInformation[].otherPayerReferringProvider`** (`array of OtherPayerReferringProvider objects`): Information about the provider who directed the patient to the rendering provider for care. For example, a primary care physician may refer patients to a specialist.
- **`claimInformation.otherSubscriberInformation[].otherPayerReferringProvider[].otherPayerReferringProviderIdentifier`** (`array of OtherPayerReferringProviderIdentifierItem objects`) (required): Identifiers for the referring provider.
- **`claimInformation.otherSubscriberInformation[].otherPayerReferringProvider[].otherPayerReferringProviderIdentifier[].identifier`** (`string`) (required): The identifier. The format and length of this value depends on the `qualifier` you set.
- **`claimInformation.otherSubscriberInformation[].otherPayerReferringProvider[].otherPayerReferringProviderIdentifier[].otherIdentifier`** (`string`): The identifier for the other payer who provided this reference number. This is only required when the reference number is provided by the non-destination payer. The value must match the `claimInformation.otherSubscriberInformation[].otherPayerName.otherPayerIdentifier` property.
- **`claimInformation.otherSubscriberInformation[].otherPayerReferringProvider[].otherPayerReferringProviderIdentifier[].qualifier`** (`string`) (required): Set to `0B` - State License Number, `1G` - Provider UPIN Number, or `G2` - Provider Commercial Number. Note that UPIN is deprecated and shouldn't be used for new claims.
- **`claimInformation.otherSubscriberInformation[].otherPayerRenderingProvider`** (`array of OtherPayerRenderingProvider objects`): Information about the rendering provider.
- **`claimInformation.otherSubscriberInformation[].otherPayerRenderingProvider[].entityTypeQualifier`** (`string`) (required): Code identifying the type of entity. Can be set to `1` - Person or `2` - Non-Person Entity.
  - Allowed values: `1`, `2`
- **`claimInformation.otherSubscriberInformation[].otherPayerRenderingProvider[].otherPayerRenderingProviderSecondaryIdentifier`** (`array of OtherPayerRenderingProviderIdentifierItem objects`): Identifiers for the rendering provider.
- **`claimInformation.otherSubscriberInformation[].otherPayerRenderingProvider[].otherPayerRenderingProviderSecondaryIdentifier[].identifier`** (`string`) (required): The identifier. The format and length of this value depends on the `qualifier` you set.
- **`claimInformation.otherSubscriberInformation[].otherPayerRenderingProvider[].otherPayerRenderingProviderSecondaryIdentifier[].otherIdentifier`** (`string`): The identifier for the other payer who provided this reference number. This is only required when the reference number is provided by the non-destination payer. The value must match the `claimInformation.otherSubscriberInformation[].otherPayerName.otherPayerIdentifier` property.
- **`claimInformation.otherSubscriberInformation[].otherPayerRenderingProvider[].otherPayerRenderingProviderSecondaryIdentifier[].qualifier`** (`string`) (required): Set to `0B` - State License Number, `1G` - Provider UPIN Number, `LU` - Location Number, or `G2` - Provider Commercial Number. Note that UPIN is deprecated and shouldn't be used for new claims.
- **`claimInformation.otherSubscriberInformation[].otherPayerServiceFacilityLocation`** (`array of OtherPayerServiceFacilityLocation objects`): Information about the service facility location.
- **`claimInformation.otherSubscriberInformation[].otherPayerServiceFacilityLocation[].otherPayerServiceFacilityLocationSecondaryIdentifier`** (`array of OtherPayerServiceFacilityLocationSecondaryIdentifierItem objects`) (required): A secondary identifier for the service facility location.
- **`claimInformation.otherSubscriberInformation[].otherPayerServiceFacilityLocation[].otherPayerServiceFacilityLocationSecondaryIdentifier[].identifier`** (`string`) (required): The identifier. The format and length of this value depends on the `qualifier` you set.
- **`claimInformation.otherSubscriberInformation[].otherPayerServiceFacilityLocation[].otherPayerServiceFacilityLocationSecondaryIdentifier[].otherIdentifier`** (`string`): The identifier for the other payer who provided this reference number. This is only required when the reference number is provided by the non-destination payer. The value must match the `claimInformation.otherSubscriberInformation[].otherPayerName.otherPayerIdentifier` property.
- **`claimInformation.otherSubscriberInformation[].otherPayerServiceFacilityLocation[].otherPayerServiceFacilityLocationSecondaryIdentifier[].qualifier`** (`string`) (required): Set to `0B` - State License Number, `LU` - Location Number, or `G2` - Provider Commercial Number.
- **`claimInformation.otherSubscriberInformation[].otherPayerSupervisingProvider`** (`array of OtherPayerSupervisingProvider objects`): Information about the supervising provider.
- **`claimInformation.otherSubscriberInformation[].otherPayerSupervisingProvider[].otherPayerSupervisingProviderIdentifier`** (`array of OtherPayerSupervisingProviderIdentifierItem objects`) (required): Identifiers for the supervising provider.
- **`claimInformation.otherSubscriberInformation[].otherPayerSupervisingProvider[].otherPayerSupervisingProviderIdentifier[].identifier`** (`string`) (required): The identifier. The format and length of this value depends on the `qualifier` you set.
- **`claimInformation.otherSubscriberInformation[].otherPayerSupervisingProvider[].otherPayerSupervisingProviderIdentifier[].otherIdentifier`** (`string`): The identifier for the other payer who provided this reference number. This is only required when the reference number is provided by the non-destination payer. The value must match the `claimInformation.otherSubscriberInformation[].otherPayerName.otherPayerIdentifier` property.
- **`claimInformation.otherSubscriberInformation[].otherPayerSupervisingProvider[].otherPayerSupervisingProviderIdentifier[].qualifier`** (`string`) (required): Set to `0B` - State License Number, `1G` - Provider UPIN Number, `LU` - Location Number or `G2` - Provider Commercial Number. Note that UPIN is deprecated and shouldn't be used for new claims.
- **`claimInformation.otherSubscriberInformation[].otherSubscriberName`** (`object`) (required): The person or entity who is the primary policyholder for the other payer's health plan.
- **`claimInformation.otherSubscriberInformation[].otherSubscriberName.otherInsuredAdditionalIdentifiers`** (`array of strings`): The primary policyholder's Social Security Number. The Social Security Number must be a string of exactly nine numbers with no separators. For example `123456789`.
- **`claimInformation.otherSubscriberInformation[].otherSubscriberName.otherInsuredAddress`** (`object`)
- **`claimInformation.otherSubscriberInformation[].otherSubscriberName.otherInsuredAddress.address1`** (`string`) (required): The first line of the street address. This typically contains the building number and street name.
- **`claimInformation.otherSubscriberInformation[].otherSubscriberName.otherInsuredAddress.address2`** (`string`): The second line of the street address. This typically contains the apartment or suite number.
- **`claimInformation.otherSubscriberInformation[].otherSubscriberName.otherInsuredAddress.city`** (`string`) (required): The city name.
- **`claimInformation.otherSubscriberInformation[].otherSubscriberName.otherInsuredAddress.countryCode`** (`string`): Use the alpha-2 country codes from Part 1 of ISO 3166.
- **`claimInformation.otherSubscriberInformation[].otherSubscriberName.otherInsuredAddress.countrySubDivisionCode`** (`string`): Use the country subdivision codes from Part 2 of ISO 3166.
- **`claimInformation.otherSubscriberInformation[].otherSubscriberName.otherInsuredAddress.postalCode`** (`string`): The postal zone or zip code. For United States addresses, you must include the full nine-digit zip code with no separators, such as `100031502`. If you don't know the full zip code, you can find it using the [USPS ZIP Code Lookup](https://tools.usps.com/zip-code-lookup.htm) tool. Exclude punctuation and spaces.
- **`claimInformation.otherSubscriberInformation[].otherSubscriberName.otherInsuredAddress.state`** (`string`): The state or province code. Only required when the city is in the United States and Canada.
- **`claimInformation.otherSubscriberInformation[].otherSubscriberName.otherInsuredFirstName`** (`string`): The primary policyholder's first name, if they are an individual.
- **`claimInformation.otherSubscriberInformation[].otherSubscriberName.otherInsuredIdentifier`** (`string`) (required): The identifier you specified in `otherInsuredIdentifierTypeCode`.
- **`claimInformation.otherSubscriberInformation[].otherSubscriberName.otherInsuredIdentifierTypeCode`** (`string`) (required): Code identifying the type of identifier. Can be set to `II` - Standard Unique Health Identifier for each individual in the United States or `MI` - Member Identification Number. The code `MI` should be the subscriber's identification number as assigned by the payer, such as their subscriber ID. You should also use `MI` in claims submitted to the Indian Health Service/Contract Health Services (IHS/CHS) Fiscal Intermediary for the purpose of reporting the Tribe Residency Code (Tribe County State). For IHS/CHS claims, you should also put the SSN in the `otherInsuredAdditionalIdentifier` property.)
  - Allowed values: `II`, `MI`
- **`claimInformation.otherSubscriberInformation[].otherSubscriberName.otherInsuredLastName`** (`string`) (required): The primary policyholder's last name or organizational name. Don't include the primary policyholder's name suffix, such as Jr. or III. Use the designated `otherInsuredNameSuffix` property instead.
- **`claimInformation.otherSubscriberInformation[].otherSubscriberName.otherInsuredMiddleName`** (`string`): The primary policyholder's middle name or initial, if they are an individual.
- **`claimInformation.otherSubscriberInformation[].otherSubscriberName.otherInsuredNameSuffix`** (`string`): The primary policyholder's name suffix, such as Jr. or III. Only include the subscriber's personal name suffix - **don't** include professional or academic titles, such as M.D. or MBA.
- **`claimInformation.otherSubscriberInformation[].otherSubscriberName.otherInsuredQualifier`** (`string`) (required): Code identifying the type of entity. Can be set to `1` - Person or `2` - Non-Person Entity.
  - Allowed values: `1`, `2`
- **`claimInformation.otherSubscriberInformation[].payerPaidAmount`** (`string`): The total amount in dollars the payer has paid on this claim. It is acceptable to set this to `0` (Zero). This is required when you include the `payToPlan` object, and you should set it to the amount the Medicaid agency actually paid.
- **`claimInformation.otherSubscriberInformation[].paymentResponsibilityLevelCode`** (`string`) (required): Code identifying the payer's level of responsibility for paying this claim. Visit [Claims code lists](https://www.stedi.com/docs/healthcare/claims-code-lists#payment-responsibility-sequence-number-codes) for a complete list.
- Either this property or `subscriber.paymentResponsibilityLevelCode` must be set to `P` to indicate the primary insurance payer. Stedi rejects claims - including secondary and tertiary claims - that don't include information for the primary payer.
- You may need to use other codes if the patient has multiple insurance policies. For example, if a patient is covered by both Medicare and an employer-sponsored commercial plan, you could bill the commercial payer first as `P` and then bill the Medicare payer second as `S`.
  - Allowed values: `A`, `B`, `C`, `D`, `E`, `F`, `G`, `H`, `P`, `S`, `T`, `U`
- **`claimInformation.otherSubscriberInformation[].releaseOfInformationCode`** (`string`) (required): Code indicating whether the provider has on file a signed statement by the patient authorizing the release of medical data to other organizations. Can be set to `I` - Informed Consent to Release Medical Information or `Y` - Yes. Code `I` is required when the provider has not collected a signature AND state or federal laws do not require a signature be collected. Code `Y` is required when the provider has collected a signature OR when state or federal laws require a signature be collected.
  - Allowed values: `I`, `Y`
- **`claimInformation.otherSubscriberInformation[].remainingPatientLiability`** (`string`): This is the remaining amount (as determined by the provider) to be paid after the other payer identified in the `otherPayerName` object has adjudicated the claim.
- **`claimInformation.patientAmountPaid`** (`string`): The total amount in dollars the patient or their representatives have paid on this claim. For example, `20.50`. This includes any co-payments, co-insurance, or other amounts already collected from the patient.

If the patient has not paid anything, you should omit this property entirely - **don't** set it to `0`.
- **`claimInformation.patientControlNumber`** (`string`) (required): An identifier you assign to the claim. We **strongly recommend** submitting a unique value for this property so you can use it to correlate this claim with responses, such as the [277CA claim acknowledgment](https://www.stedi.com/docs/healthcare/receive-claim-responses#correlate-277ca) and the [835 ERA](https://www.stedi.com/docs/healthcare/receive-claim-responses#correlate-835-era).
  - Use random strings. The identifier should be more complex than a simple sequential number and should be hard to guess. Formats with patient initials or the date of service in them can create duplicates. We recommend using [nanoid](https://www.npmjs.com/package/nanoid) or a similar library configured with the characters from the [basic character set](https://www.stedi.com/docs/healthcare/submit-dental-claims#character-restrictions) to generate unique IDs.
  - Keep it to 17 characters max. Some payers cut off values longer than 17 characters in 277CAs and ERAs, which makes it hard to match them with the original claim.
  - Use only characters available in the [basic character set](https://www.stedi.com/docs/healthcare/submit-dental-claims#character-restrictions), and avoid special characters that are only available in the extended character set. Using other characters may result in data loss or mismatches when correlating claims with responses.
- **`claimInformation.placeOfServiceCode`** (`string`) (required): Code identifying the type of facility where the services were or may be performed.
  - Allowed values: `01`, `02`, `03`, `04`, `05`, `06`, `07`, `08`, `09`, `10`, `11`, `12`, `13`, `14`, `15`, `16`, `17`, `18`, `19`, `20`, `21`, `22`, `23`, `24`, `25`, `26`, `27`, `31`, `32`, `33`, `34`, `41`, `42`, `49`, `50`, `51`, `52`, `53`, `54`, `55`, `56`, `57`, `58`, `60`, `61`, `62`, `65`, `66`, `71`, `72`, `81`, `99`
- **`claimInformation.planParticipationCode`** (`string`)
  - Allowed values: `A`, `C`
- **`claimInformation.predeterminationOfBenefits`** (`boolean`): Required when the entire claim is being submitted as a predetermination of benefits. Predetermination of benefits claims are submitted in advance of services to get an estimate of what the patient's health plan will pay.
  - Can be set to `true` to indicate predetermination of dental benefits.
  - Not all dental payers support predetermination of benefits claims.
  - Some payers prohibit setting `claimInformation.claimDateInformation.serviceDate` for predetermination of benefits claims. Refer to your payer's specific guidelines for more information.
- **`claimInformation.propertyCasualtyClaimNumber`** (`string`): The agency claim number for this transaction. Used when services included in this claim are part of a property and casualty claim.
- **`claimInformation.relatedCausesCode`** (`array of strings`): Code identifying an accompanying cause of an illness, injury or an accident. Can be set to `AA` - Auto Accident, `EM` - Employment, or `OA` - Other Accident. You can include up to two codes in this array.
- **`claimInformation.releaseInformationCode`** (`string`) (required): Indicates whether the provider has on file a signed statement by the patient authorizing the release of medical data to other organizations. Can be set to `Y` - Yes, or `I` - Informed Consent to Release Medical Information for Conditions or Diagnoses Regulated by Federal Statues. Use `I` when the provider has not collected a signature AND state or federal laws do not require a signature be collected.
  - Allowed values: `I`, `Y`
- **`claimInformation.serviceFacilityLocation`** (`object`): Required when the location for the service is different from the billing provider's address. The purpose of this object is to identify specifically where the service was rendered. This can be healthcare facilities, such as surgical centers or reference labs, OR the patient's address when services were rendered in their home.
- Only include this object when the service facility location is **different** from the billing provider's address. If you include this object when the address is the same, Stedi omits all of the service facility location information from the claim submission, including the name and any identifiers.
- For telehealth services, the service facility location is the provider's address, even though the patient may have been in their home or elsewhere when receiving services.
- Don't use this object when reporting ambulance services - use `ambulancePickupLocation` and `ambulanceDropoffLocation` instead.
- Sometimes the billing provider is an actual physician group that is located at the same address as a hospital, but is in fact a separate entity. In this case, you can differentiate the service facility location by including the specific suite or building number of the physician group. This ensures that the service facility location is different from the billing provider's address and is reported accurately.
- **`claimInformation.serviceFacilityLocation.address`** (`object`) (required)
- **`claimInformation.serviceFacilityLocation.address.address1`** (`string`) (required): The first line of the street address. This typically contains the building number and street name.
- **`claimInformation.serviceFacilityLocation.address.address2`** (`string`): The second line of the street address. This typically contains the apartment or suite number.
- **`claimInformation.serviceFacilityLocation.address.city`** (`string`) (required): The city name.
- **`claimInformation.serviceFacilityLocation.address.countryCode`** (`string`): Use the alpha-2 country codes from Part 1 of ISO 3166.
- **`claimInformation.serviceFacilityLocation.address.countrySubDivisionCode`** (`string`): Use the country subdivision codes from Part 2 of ISO 3166.
- **`claimInformation.serviceFacilityLocation.address.postalCode`** (`string`): The postal zone or zip code. For United States addresses, you must include the full nine-digit zip code with no separators, such as `100031502`. If you don't know the full zip code, you can find it using the [USPS ZIP Code Lookup](https://tools.usps.com/zip-code-lookup.htm) tool. Exclude punctuation and spaces.
- **`claimInformation.serviceFacilityLocation.address.state`** (`string`): The state or province code. Only required when the city is in the United States and Canada.
- **`claimInformation.serviceFacilityLocation.npi`** (`string`): The organization [National Provider Identifier (NPI)](https://www.stedi.com/docs/healthcare/national-provider-identifier) assigned to the service facility. Only include this property when the service facility is not a component or subpart of the `billing` provider. Don't include when the service facility is the patient's home.
- **`claimInformation.serviceFacilityLocation.organizationName`** (`string`) (required): The laboratory or facility name. When services were rendered in the patient's home, we recommend setting this to `Residence` or something similar.
- **`claimInformation.serviceFacilityLocation.phoneExtension`** (`string`): The telephone extension, if applicable. Only submit the numeric extension. For example, don't include data that indicates an extension, such as 'ext.' or 'x-'.
- **`claimInformation.serviceFacilityLocation.phoneName`** (`string`): The full name of the person or office.
- **`claimInformation.serviceFacilityLocation.phoneNumber`** (`string`): The phone number, formatted as AAABBBCCCC, where AAA represents the area code, BBB is the telephone number prefix, and CCCC is the telephone number. The phone number should only include the digits 0 to 9. Don't include separators, such as dashes, and don't include long distance access numbers, such as 1. For example, you would format the phone number 123-456-7890 as 1234567890.
- **`claimInformation.serviceFacilityLocation.secondaryIdentifier`** (`array of ClaimServiceFacilityLocationSecondaryIdentifierItem objects`): Secondary identifiers for the service facility location. Used when another identifier is needed for the claims processor to identify the facility or when the entity is not a healthcare provider and does not have an [NPI](https://www.stedi.com/docs/healthcare/national-provider-identifier).
- **`claimInformation.serviceFacilityLocation.secondaryIdentifier[].identifier`** (`string`) (required): The identifier. The format and length of this value depends on the `qualifier` you set.
- **`claimInformation.serviceFacilityLocation.secondaryIdentifier[].otherIdentifier`** (`string`): The identifier for the other payer who provided this reference number. This is only required when the reference number is provided by the non-destination payer. The value must match the `claimInformation.otherSubscriberInformation[].otherPayerName.otherPayerIdentifier` property.
- **`claimInformation.serviceFacilityLocation.secondaryIdentifier[].qualifier`** (`string`) (required): Set to `0B` - State License Number, `LU` - Location Number, or `G2` - Provider Commercial Number.
- **`claimInformation.serviceLines`** (`array of DentalServiceLine objects`) (required): Information about one or more services rendered to the patient.
    - Each service line must be a unique service event as defined by the payer's billing policies. This means that you can use the same procedure code on multiple service lines as long as they are distinct events.
    - Some procedure codes are date-specific. In these cases, you may need to create a separate service line with that code for each applicable date of service, even if the episode of care extended over multiple days.
    - Service lines can share the same dates of service if the patient received multiple services on the same day.
- **`claimInformation.serviceLines[].assistantSurgeon`** (`object`)
- **`claimInformation.serviceLines[].assistantSurgeon.commercialNumber`** (`string`): The provider's commercial number.
- **`claimInformation.serviceLines[].assistantSurgeon.firstName`** (`string`): The provider's first name.
- **`claimInformation.serviceLines[].assistantSurgeon.lastName`** (`string`): The provider's last name.
- **`claimInformation.serviceLines[].assistantSurgeon.locationNumber`** (`string`): The provider's location number.
- **`claimInformation.serviceLines[].assistantSurgeon.middleName`** (`string`): The provider's middle name or initial.
- **`claimInformation.serviceLines[].assistantSurgeon.npi`** (`string`): The individual National Provider Identifier (NPI) assigned to the provider.
- **`claimInformation.serviceLines[].assistantSurgeon.organizationName`** (`string`): The provider's business name.
- **`claimInformation.serviceLines[].assistantSurgeon.providerUpinNumber`** (`string`): Deprecated; do not use.
- **`claimInformation.serviceLines[].assistantSurgeon.stateLicenseNumber`** (`string`): The provider's state license number. This is assigned directly by a payer in order to identify the provider in their system. This is not commonly used.
- **`claimInformation.serviceLines[].assistantSurgeon.suffix`** (`string`): The provider's name suffix, such as Jr. or III.
- **`claimInformation.serviceLines[].assistantSurgeon.taxonomyCode`** (`string`): Code from the National Uniform Claims Committee [Health Care Provider Taxonomy Code Set](https://taxonomy.nucc.org/). This identifies the provider's type and/or area of specialty.
- **`claimInformation.serviceLines[].contractInformation`** (`object`): Required when the submitter is contractually obligated to supply this information on post-adjudicated claims.
- **`claimInformation.serviceLines[].contractInformation.contractAmount`** (`string`): The total dollar amount of the contract, expressed as a decimal. For example, `100.50`.
- **`claimInformation.serviceLines[].contractInformation.contractCode`** (`string`): The contract code. This is an identifier for the contract.
- **`claimInformation.serviceLines[].contractInformation.contractPercentage`** (`string`): The allowance or charge percent, expressed as a decimal. For example, `0.80`.
- **`claimInformation.serviceLines[].contractInformation.contractTypeCode`** (`string`) (required): Code indicating the type of contract. Can be set to `02` - Per Diem, `03` - Variable Per Diem, `04` - Flat, `05` - Capitated, `06` - Percent, or `09` - Other.
  - Allowed values: `02`, `03`, `04`, `05`, `06`, `09`
- **`claimInformation.serviceLines[].contractInformation.contractVersionIdentifier`** (`string`): An additional identifier for the contract. Identifies the revision level of a particular format, program, technique or algorithm.
- **`claimInformation.serviceLines[].contractInformation.termsDiscountPercentage`** (`string`): Terms discount percentage, expressed as a decimal, available to the purchaser if an invoice is paid on or before the Terms Discount Due Date.
- **`claimInformation.serviceLines[].dentalService`** (`object`) (required)
- **`claimInformation.serviceLines[].dentalService.compositeDiagnosisCodePointers`** (`object`): Diagnosis code pointers in order of importance to this service line. These pointers are an index to the ICD-10-CM codes you included in the `claimInformation.healthCareCodeInformation` object array. The pointer values can be from 1 to 12 (integer numbers).
- You **must** set at least one pointer for the primary diagnosis. Then, you can add up to three additional pointers (up to four in total).
- The number of pointers cannot exceed the number of diagnosis codes in the `claimInformation.healthCareCodeInformation` object array. For example, if you only supplied one diagnosis code, then the only valid pointer value is 1.
- Don't put ICD-10-CM codes here - they belong in `claimInformation.healthCareCodeInformation`.
- **`claimInformation.serviceLines[].dentalService.compositeDiagnosisCodePointers.diagnosisCodePointers`** (`array of strings`) (required): A diagnosis code pointer for this service line.
- **`claimInformation.serviceLines[].dentalService.description`** (`string`): A free form description to clarify the procedure code and any procedure modifiers, as needed.
- **`claimInformation.serviceLines[].dentalService.lineItemChargeAmount`** (`string`) (required): The total charge amount for the service, including the provider's base charge and any applicable tax or postage. It is acceptable to set this to `0` (zero).
- **`claimInformation.serviceLines[].dentalService.oralCavityDesignation`** (`array of strings`): Required when the nomenclature associated with the procedure reported in `claimInformation.serviceLines[].dentalService.procedureCode` refers to a quadrant or arch and the area of the oral cavity is not uniquely defined.
- You can include up to five codes per service line.
- You should report individual tooth numbers in one or more `teethInformation` objects.
- **`claimInformation.serviceLines[].dentalService.placeOfServiceCode`** (`string`): Code identifying the type of facility where the services were or may be performed. Visit [Place of Service Codes](https://www.cms.gov/medicare/coding-billing/place-of-service-codes/code-sets) for a complete list.
- **`claimInformation.serviceLines[].dentalService.procedureCode`** (`string`) (required): The procedure code.
- **`claimInformation.serviceLines[].dentalService.procedureCount`** (`number`): The number of procedures performed.
- **`claimInformation.serviceLines[].dentalService.procedureModifiers`** (`array of strings`): Modifier codes that clarify or improve the reporting accuracy of the associated procedure code. You can include up to four modifiers in this array. Only include modifier codes when required; otherwise, do not send.
- **`claimInformation.serviceLines[].dentalService.prosthesisCrownOrInlayCode`** (`string`): Code indicating the placement status for the dental work. Can be set to `I` - Initial Placement or `R` - Replacement. When set to `R`, you must include either the `priorPlacementDate` or `estimatedPriorPlacementDate` properties within the `claimInformation.serviceLines[].serviceLineDateInformation` object.
  - Allowed values: `I`, `R`
- **`claimInformation.serviceLines[].fileInformation`** (`array of strings`): Used to send additional data specifically requested by the payer. Not commonly used.
- **`claimInformation.serviceLines[].lineAdjudicationInformation`** (`array of DentalLineAdjudicationInformation objects`): Includes service line adjudication information for coordination of benefits between the initial payers of a health care claim and all subsequent payers.
- **`claimInformation.serviceLines[].lineAdjudicationInformation[].adjudicationOrPaymentDate`** (`string`) (required): The date the other payer adjudicated or paid the claim.
- **`claimInformation.serviceLines[].lineAdjudicationInformation[].bundledOrUnbundledLineNumber`** (`string`): The LX assigned number of the service line into which this service line is bundled. It's only used to bundle service lines.
- **`claimInformation.serviceLines[].lineAdjudicationInformation[].claimAdjustmentInformation`** (`array of ClaimAdjustment objects`): Required when the payer made line level adjustments which caused the amount paid to differ from the amount originally charged. You can include up to five objects in this array.
- **`claimInformation.serviceLines[].lineAdjudicationInformation[].claimAdjustmentInformation[].adjustmentDetails`** (`array of ClaimAdjustmentDetails objects`) (required)
- **`claimInformation.serviceLines[].lineAdjudicationInformation[].claimAdjustmentInformation[].adjustmentDetails[].adjustmentAmount`** (`string`) (required): The dollar amount of the adjustment, expressed as a decimal. For example, `100.50`.
- **`claimInformation.serviceLines[].lineAdjudicationInformation[].claimAdjustmentInformation[].adjustmentDetails[].adjustmentQuantity`** (`string`): The units of service being adjusted.
- **`claimInformation.serviceLines[].lineAdjudicationInformation[].claimAdjustmentInformation[].adjustmentDetails[].adjustmentReasonCode`** (`string`) (required): Code identifying the detailed reason the adjustment was made. Visit the X12 [Claim Adjustment Reason Codes](https://x12.org/codes/claim-adjustment-reason-codes) for a complete list.
- **`claimInformation.serviceLines[].lineAdjudicationInformation[].claimAdjustmentInformation[].adjustmentGroupCode`** (`string`) (required): Code identifying the general category of payment adjustment. Can be set to `CO` - Contractual Obligations, `CR` - Correction and Reversals, `OA` - Other Adjustments, `PI` - Payor Initiated Reductions, or `PR - Patient Responsibility.
  - Allowed values: `CO`, `CR`, `OA`, `PI`, `PR`
- **`claimInformation.serviceLines[].lineAdjudicationInformation[].otherPayerPrimaryIdentifier`** (`string`) (required): The payer ID for the payer responsible for reimbursement.
- **`claimInformation.serviceLines[].lineAdjudicationInformation[].paidServiceUnitCount`** (`string`) (required): The number of paid units from the remittance advice. expressed as a decimal. When paid units are not present on the remittance advice, use the original billed units. The maximum length for this property is 8 digits excluding the decimal. When a decimal is used, the maximum number of digits allowed to the right of the decimal is three.
- **`claimInformation.serviceLines[].lineAdjudicationInformation[].procedureCode`** (`string`) (required): The procedure code.
- **`claimInformation.serviceLines[].lineAdjudicationInformation[].procedureCodeDescription`** (`string`): The meaning of the procedure code.
- **`claimInformation.serviceLines[].lineAdjudicationInformation[].procedureModifier`** (`array of strings`): Modifiers that convey special circumstances related to the performance of the service. You can include up to four modifiers in this array.
- **`claimInformation.serviceLines[].lineAdjudicationInformation[].remainingPatientLiability`** (`string`): The amount of the service line that the patient is still responsible for, expressed as a decimal.
- **`claimInformation.serviceLines[].lineAdjudicationInformation[].serviceIdQualifier`** (`string`) (required)
  - Allowed values: `AD`, `ER`
- **`claimInformation.serviceLines[].lineAdjudicationInformation[].serviceLinePaidAmount`** (`string`) (required): The amount paid for this service line, expressed as a decimal. Zero (0) is an acceptable value.
- **`claimInformation.serviceLines[].linePricingRepricingInformation`** (`object`): Repricing information about the line item. This information is completed by repricers, not providers. For capitated encounters, pricing or repricing information usually is not applicable and is provided to qualify other information within the claim.
- **`claimInformation.serviceLines[].linePricingRepricingInformation.exceptionCode`** (`string`): Code specifying the exception reason for consideration of out-of-network health care services. This is the reason generated by the third-party health organization. Visit [Claims code lists](https://www.stedi.com/docs/healthcare/claims-code-lists#exception-codes-2) for a complete list.
  - Allowed values: `1`, `2`, `3`, `4`, `5`, `6`
- **`claimInformation.serviceLines[].linePricingRepricingInformation.measurementUnitCode`** (`string`)
  - Allowed values: `UN`
- **`claimInformation.serviceLines[].linePricingRepricingInformation.policyComplianceCode`** (`string`)
  - Allowed values: `1`, `2`, `3`, `4`, `5`
- **`claimInformation.serviceLines[].linePricingRepricingInformation.pricingMethodologyCode`** (`string`) (required): Code indicating the pricing or repricing methodology. Visit [Claims code lists](https://www.stedi.com/docs/healthcare/claims-code-lists#pricing-methodology-codes-2) for a complete list.
  - Allowed values: `00`, `01`, `02`, `03`, `04`, `05`, `06`, `07`, `08`, `09`, `10`, `11`, `12`, `13`, `14`
- **`claimInformation.serviceLines[].linePricingRepricingInformation.rejectReasonCode`** (`string`)
  - Allowed values: `T1`, `T2`, `T3`, `T4`, `T5`, `T6`
- **`claimInformation.serviceLines[].linePricingRepricingInformation.repricedAllowedAmount`** (`string`) (required): The dollar amount, expressed as a decimal. For example, `100.50`.
- **`claimInformation.serviceLines[].linePricingRepricingInformation.repricedApprovedHCPCSCode`** (`string`): The procedure code for the service that was repriced.
- **`claimInformation.serviceLines[].linePricingRepricingInformation.repricedApprovedServiceUnitCount`** (`number`): The number of units for the service that was repriced, expressed as a decimal. The maximum length for this field is 8 digits excluding the decimal. When a decimal is used, the maximum number of digits allowed to the right of the decimal is three.
- **`claimInformation.serviceLines[].linePricingRepricingInformation.repricedSavingAmount`** (`string`): The dollar amount, expressed as a decimal.
- **`claimInformation.serviceLines[].linePricingRepricingInformation.repricingOrganizationIdentifier`** (`string`): The identifier of the organization that repriced the claim.
- **`claimInformation.serviceLines[].linePricingRepricingInformation.repricingPerDiemOrFlatRateAmount`** (`string`): The pricing rate associated with per diem or flat rate repricing, expressed as a decimal.
- **`claimInformation.serviceLines[].linePricingRepricingInformation.serviceIdQualifier`** (`string`)
  - Allowed values: `AD`
- **`claimInformation.serviceLines[].postageTaxAmount`** (`string`): The amount of the postage, formatted as a decimal. When you include this property, the total `lineItemChargeAmount` for this service line must include this postage value.
- **`claimInformation.serviceLines[].providerControlNumber`** (`string`): A unique identifier for this service line within the claim. It appears in the 835 (ERA) response as `lineItemControlNumber`, allowing you to correlate ERAs to the specific service lines from the original claim. If you don't set this property, Stedi uses a random ULID. Stedi returns service line identifiers in the `claimReference.serviceLines[].lineItemControlNumber` object of the synchronous API response.
- **`claimInformation.serviceLines[].renderingProvider`** (`object`)
- **`claimInformation.serviceLines[].renderingProvider.commercialNumber`** (`string`): The provider's commercial number.
- **`claimInformation.serviceLines[].renderingProvider.firstName`** (`string`): The provider's first name.
- **`claimInformation.serviceLines[].renderingProvider.lastName`** (`string`): The provider's last name.
- **`claimInformation.serviceLines[].renderingProvider.locationNumber`** (`string`): The provider's location number.
- **`claimInformation.serviceLines[].renderingProvider.middleName`** (`string`): The provider's middle name or initial.
- **`claimInformation.serviceLines[].renderingProvider.npi`** (`string`): The National Provider Identifier (NPI) assigned to the provider.
- **`claimInformation.serviceLines[].renderingProvider.organizationName`** (`string`): The provider's business name.
- **`claimInformation.serviceLines[].renderingProvider.providerUpinNumber`** (`string`): Deprecated; do not use.
- **`claimInformation.serviceLines[].renderingProvider.stateLicenseNumber`** (`string`): The provider's state license number. This is assigned directly by a payer in order to identify the provider in their system. This is not commonly used.
- **`claimInformation.serviceLines[].renderingProvider.suffix`** (`string`): The provider's name suffix, such as Jr. or III.
- **`claimInformation.serviceLines[].renderingProvider.taxonomyCode`** (`string`) (required): Code from the National Uniform Claims Committee [Health Care Provider Taxonomy Code Set](https://taxonomy.nucc.org/). This identifies the provider's type and/or area of specialty.
- **`claimInformation.serviceLines[].salesTaxAmount`** (`string`): Sales tax, formatted as a decimal. When you include this property, the total `lineItemChargeAmount` for this service line must include this sales tax value.
- **`claimInformation.serviceLines[].serviceDate`** (`string`): The date the service was rendered (for services performed on a single day),. **Do not** supply a date here if you are including the `serviceLineDateInformation.treatmentStartDate` property in the service line.
- **`claimInformation.serviceLines[].serviceFacilityLocation`** (`object`)
- **`claimInformation.serviceLines[].serviceFacilityLocation.address`** (`object`)
- **`claimInformation.serviceLines[].serviceFacilityLocation.address.address1`** (`string`) (required): The first line of the street address. This typically contains the building number and street name.
- **`claimInformation.serviceLines[].serviceFacilityLocation.address.address2`** (`string`): The second line of the street address. This typically contains the apartment or suite number.
- **`claimInformation.serviceLines[].serviceFacilityLocation.address.city`** (`string`) (required): The city name.
- **`claimInformation.serviceLines[].serviceFacilityLocation.address.countryCode`** (`string`): Use the alpha-2 country codes from Part 1 of ISO 3166.
- **`claimInformation.serviceLines[].serviceFacilityLocation.address.countrySubDivisionCode`** (`string`): Use the country subdivision codes from Part 2 of ISO 3166.
- **`claimInformation.serviceLines[].serviceFacilityLocation.address.postalCode`** (`string`): The postal zone or zip code. For United States addresses, you must include the full nine-digit zip code with no separators, such as `100031502`. If you don't know the full zip code, you can find it using the [USPS ZIP Code Lookup](https://tools.usps.com/zip-code-lookup.htm) tool. Exclude punctuation and spaces.
- **`claimInformation.serviceLines[].serviceFacilityLocation.address.state`** (`string`): The state or province code. Only required when the city is in the United States and Canada.
- **`claimInformation.serviceLines[].serviceFacilityLocation.commercialNumber`** (`string`): The provider's commercial number.
- **`claimInformation.serviceLines[].serviceFacilityLocation.locationNumber`** (`string`): The provider's location number.
- **`claimInformation.serviceLines[].serviceFacilityLocation.npi`** (`string`): The organization National Provider Identifier (NPI) assigned to the service facility. Only include this property when the service facility is not a component or subpart of the billing provider. Don't include when the service facility is the patient's home.
- **`claimInformation.serviceLines[].serviceFacilityLocation.organizationName`** (`string`) (required): The provider's business name.
- **`claimInformation.serviceLines[].serviceFacilityLocation.providerUpinNumber`** (`string`): Deprecated; do not use.
- **`claimInformation.serviceLines[].serviceLineDateInformation`** (`object`): Identify specific dates related to the service rendered.
- **`claimInformation.serviceLines[].serviceLineDateInformation.applianceDate`** (`string`): The date the appliance was placed. Required when the orthodontic appliance placement date is different than the date you supplied in `claimInformation.claimDateInformation.appliancePlacementDate`.
- **`claimInformation.serviceLines[].serviceLineDateInformation.estimatedPriorPlacementDate`** (`string`): The estimated date when the previous appliance was placed. Either this property or `priorPlacementDate` is required when the `claimInformation.serviceLines[].dentalService.prosthesisCrownOrInlayCode` for this service line is set to `R` for Replacement.
- **`claimInformation.serviceLines[].serviceLineDateInformation.priorPlacementDate`** (`string`): The exact date when the previous appliance was placed. Either this property or `estimatedPriorPlacementDate` is required when the `claimInformation.serviceLines[].dentalService.prosthesisCrownOrInlayCode` for this service line is set to `R` for Replacement.
- **`claimInformation.serviceLines[].serviceLineDateInformation.replacementDate`** (`string`): The date the orthodontic appliance was replaced.
- **`claimInformation.serviceLines[].serviceLineDateInformation.treatmentCompletionDate`** (`string`): The date the treatment was completed. If you include this property, **do not** include the `serviceDate` property in this service line.
- **`claimInformation.serviceLines[].serviceLineDateInformation.treatmentStartDate`** (`string`): The date the treatment began. This may apply to the following scenarios: initial impression or preparation for a crown or denture, reporting initial endontic treatment, or reporting the implant fixture placement. If you include this property, **do not** include the `serviceDate` property in this service line.
- **`claimInformation.serviceLines[].serviceLineReferenceInformation`** (`object`): Additional identifiers for the service line.
- **`claimInformation.serviceLines[].serviceLineReferenceInformation.adjustedRepricedLineItemReferenceNumber`** (`string`): Required when a repricing (pricing) organization needs to have an identifying number on the service line. Only completed by repricing organizations.
- **`claimInformation.serviceLines[].serviceLineReferenceInformation.predeterminationOfBenefits`** (`array of PredeterminationOfBenefits objects`): The Predetermination of Benefits Identification Numbers relevant to this service line. Required for services that have been previously predetermined and are now being submitted for payment. You can include up to five objects in this array.
- **`claimInformation.serviceLines[].serviceLineReferenceInformation.predeterminationOfBenefits[].otherPayerPrimaryIdentifier`** (`string`): The primary identifier of the payer who assigned the `predeterminationOfBenefits` number. This must match the identifier in the `claimInformation.otherSubscriberInformation.otherPayerName.otherPayerIdentifier` property.
- **`claimInformation.serviceLines[].serviceLineReferenceInformation.predeterminationOfBenefits[].predeterminationOfBenefits`** (`string`) (required): The Predetermination of Benefits Identification Number. If you're including the identifier provided by the payer identified in `claimInformation.otherSubscriberInformation.otherPayerName`, you must also include the `otherPayerPrimaryIdentifier` property.
- **`claimInformation.serviceLines[].serviceLineReferenceInformation.priorAuthorization`** (`array of PriorAuthorization objects`): Prior authorization (preauthorization) numbers that apply to this service line.
 - Put each unique number in a separate array element.
 - You can use the same number on multiple service lines.

**Important**: Only include prior authorization numbers that differ from the claim-level authorization in `claimInformation.claimSupplementalInformation.priorAuthorizationNumber`.
- **`claimInformation.serviceLines[].serviceLineReferenceInformation.priorAuthorization[].otherPayerPrimaryIdentifier`** (`string`): This must match the value in `claimInformation.otherSubscriberInformation.otherPayerName.otherPayerIdentifier`.
- **`claimInformation.serviceLines[].serviceLineReferenceInformation.priorAuthorization[].priorAuthorizationOrReferralNumber`** (`string`) (required): A prior authorization (preauthorization) number that applies to this service line.

**Important**: Only use this property for service-level prior authorization numbers that differ from the claim-level authorization (`claimInformation.claimSupplementalInformation.priorAuthorizationNumber`).
- **`claimInformation.serviceLines[].serviceLineReferenceInformation.referralNumber`** (`array of strings`): Required when this service line involved a referral number that is different than the number reported at the claim level. You can include up to five objects in this array.
- **`claimInformation.serviceLines[].serviceLineReferenceInformation.repricedLineItemReferenceNumber`** (`string`): Required when a repricing (pricing) organization needs to have an identifying number on the service line. Only completed by repricing organizations.
- **`claimInformation.serviceLines[].supervisingProvider`** (`object`)
- **`claimInformation.serviceLines[].supervisingProvider.commercialNumber`** (`string`): The provider's commercial number.
- **`claimInformation.serviceLines[].supervisingProvider.firstName`** (`string`): The provider's first name.
- **`claimInformation.serviceLines[].supervisingProvider.lastName`** (`string`): The provider's last name.
- **`claimInformation.serviceLines[].supervisingProvider.locationNumber`** (`string`): The provider's location number.
- **`claimInformation.serviceLines[].supervisingProvider.middleName`** (`string`): The provider's middle name or initial.
- **`claimInformation.serviceLines[].supervisingProvider.npi`** (`string`): The individual National Provider Identifier (NPI) assigned to the provider.
- **`claimInformation.serviceLines[].supervisingProvider.organizationName`** (`string`): The provider's business name.
- **`claimInformation.serviceLines[].supervisingProvider.providerUpinNumber`** (`string`): Deprecated; do not use.
- **`claimInformation.serviceLines[].supervisingProvider.stateLicenseNumber`** (`string`): The provider's state license number. This is assigned directly by a payer in order to identify the provider in their system. This is not commonly used.
- **`claimInformation.serviceLines[].supervisingProvider.suffix`** (`string`): The provider's name suffix, such as Jr. or III.
- **`claimInformation.serviceLines[].supervisingProvider.taxonomyCode`** (`string`): Code from the National Uniform Claims Committee [Health Care Provider Taxonomy Code Set](https://taxonomy.nucc.org/). This identifies the provider's type and/or area of specialty.
- **`claimInformation.serviceLines[].teethInformation`** (`array of ToothInformation objects`): Identify a tooth by its number and the surfaces involved in the service.
- **`claimInformation.serviceLines[].teethInformation[].toothCode`** (`string`) (required): An [American Dental Association CDT Code](https://www.ada.org/publications/cdt) for the procedures performed on a specific tooth. You can only use this object to report individual teeth. You can't use it to report areas of the oral cavity, such as quadrants or sextants. Areas of the oral cavity are reported in the `claimInformation.serviceLines[].dentalService.oralCavityDesignation` property. You can only include multiples of this object when `claimInformation.serviceLines[].dentalService.procedureCount` is equal to 1. When applicable, you can include this object up to 32 times within a single service line.
- **`claimInformation.serviceLines[].teethInformation[].toothSurfaceCodes`** (`array of strings`): Code identifying the area of the tooth that was treated. Can be set to `B` - Buccal, `D`- Distal, `F`- Facial, `I`- Incisal, `L` - Lingual, `M` - Mesial, or `O` Occlusal.
- **`claimInformation.signatureIndicator`** (`string`) (required): Indicates whether the provider's signature is on file. Can be set to `N` - No or `Y` - Yes.
  - Allowed values: `N`, `Y`
- **`claimInformation.specialProgramCode`** (`string`): Code indicating the Special Program under which the services rendered to the patient were performed. Used for Medicaid claims only. Can be set to `01` - Early & Periodic Screening, Diagnosis and Treatment (EPSDT) or Child Assessment Program (CHAP), `02` - Physically Handicapped Children's Program, `03` - Special Federal Funding, or `05` - Disability. Codes `02`, `03`, and `05` are used for Medicaid claims only.
  - Allowed values: `01`, `02`, `03`, `05`
- **`claimInformation.toothStatus`** (`array of ToothStatus objects`): The status of the teeth involved in the service. Required when the submitter is reporting a missing tooth or a tooth to be extracted in the future. You can include up to 35 objects in this array.
- **`claimInformation.toothStatus[].toothNumber`** (`string`) (required): The tooth number according to the American Dental Association tooth designation system.
- **`claimInformation.toothStatus[].toothStatusCode`** (`string`) (required): Can be set to `E` - To Be Extracted, `M` - Missing.
  - Allowed values: `E`, `M`
- **`dependent`** (`object`): Dependent who received the medical care associated with the claim.
  - If the dependent has their own member ID for the health plan, you should include the dependent's information in the `subscriber` object instead. To check whether a dependent has a member ID, submit an [Eligibility Check](https://www.stedi.com/docs/healthcare/api-reference/post-healthcare-eligibility) to the payer. The payer returns the dependent's member ID in the `dependents.memberId` property in the response, if present.
  - You must include `address` in this object when the patient is a dependent.
- **`dependent.address`** (`object`): The patient's address. Every claim must include this information in either the `subscriber` (when the patient is the subscriber) or `dependent` (when the patient is a dependent) object. You must include at least the `address1` and `city` properties in this object. The `state` and `postalCode` properties are also required for all United States and Canadian addresses.
- The address should be the patient's correct address at the time of service. Use of outdated values could cause the payer to reject, deny, or delay the claim due to suspected fraud.
- If you don't know the patient's address, first submit a [Real-Time Eligibility Check](https://www.stedi.com/docs/healthcare/api-reference/post-healthcare-eligibility) for the patient and then copy the address from either the `subscriber` or `dependent` object in the response.
- If the patient doesn't have a current address, you can populate the `address1` property with `UNKNOWN` and populate the city, state, and zip code with appropriate values based on your discretion. However, we still recommend running an eligibility check when possible, so you can use the address the payer has on file. Some payers may have explicit rules for how to handle this situation - check the payer's specific requirements before using this approach.
- **`dependent.address.address1`** (`string`) (required): The first line of the street address. This typically contains the building number and street name.
- **`dependent.address.address2`** (`string`): The second line of the street address. This typically contains the apartment or suite number.
- **`dependent.address.city`** (`string`) (required): The city name.
- **`dependent.address.countryCode`** (`string`): Use the alpha-2 country codes from Part 1 of ISO 3166.
- **`dependent.address.countrySubDivisionCode`** (`string`): Use the country subdivision codes from Part 2 of ISO 3166.
- **`dependent.address.postalCode`** (`string`): The postal zone or zip code. For United States addresses, you must include the full nine-digit zip code with no separators, such as `100031502`. If you don't know the full zip code, you can find it using the [USPS ZIP Code Lookup](https://tools.usps.com/zip-code-lookup.htm) tool. Exclude punctuation and spaces.
- **`dependent.address.state`** (`string`): The state or province code. Only required when the city is in the United States and Canada.
- **`dependent.dateOfBirth`** (`string`) (required): The patient's date of birth
- **`dependent.firstName`** (`string`) (required): The patient's first name.
- **`dependent.gender`** (`string`) (required): Code indiciating the patient's gender. Can be set to `F` - Female, `M` - Male, or `U` - Unknown.

You should set this property to `U` when the patient declines to answer or does not identify as male or female. Note that some payers may reject the claim if the patient's gender doesn't match the gender they have recorded in their member records.
  - Allowed values: `M`, `F`, `U`
- **`dependent.lastName`** (`string`) (required): The patient's last name. **Don't** include the patient's name suffix, such as Jr. or III. Use the designated `suffix` property instead.
- **`dependent.memberId`** (`string`): The patient's identification number. Only used in Property and Casualty claims.
- **`dependent.middleName`** (`string`): The patient's middle name or initial.
- **`dependent.relationshipToSubscriberCode`** (`string`) (required): Identifies the relationship of the patient to the subscriber. Can be set to `01` - Spouse, `19` - Child, `20` - Employee, `21` - Unknown, `39` - Organ Donor, `40` - Cadaver Donor, `53` - Life Partner, or `G8` - Other Relationship.
  - Allowed values: `01`, `19`, `20`, `21`, `39`, `40`, `53`, `G8`
- **`dependent.ssn`** (`string`): The patient's Social Security Number. Only used for Property and Casualty claims.
- **`dependent.suffix`** (`string`): The patient's name suffix, such as Jr. or III. Only include the patient's personal name suffix - **don't** include professional or academic titles, such as M.D. or MBA.
- **`payToAddress`** (`object`)
- **`payToAddress.address1`** (`string`) (required): The first line of the street address. This typically contains the building number and street name.
- **`payToAddress.address2`** (`string`): The second line of the street address. This typically contains the apartment or suite number.
- **`payToAddress.city`** (`string`) (required): The city name.
- **`payToAddress.countryCode`** (`string`): Use the alpha-2 country codes from Part 1 of ISO 3166.
- **`payToAddress.countrySubDivisionCode`** (`string`): Use the country subdivision codes from Part 2 of ISO 3166.
- **`payToAddress.postalCode`** (`string`): The postal zone or zip code. For United States addresses, you must include the full nine-digit zip code with no separators, such as `100031502`. If you don't know the full zip code, you can find it using the [USPS ZIP Code Lookup](https://tools.usps.com/zip-code-lookup.htm) tool. Exclude punctuation and spaces.
- **`payToAddress.state`** (`string`): The state or province code. Only required when the city is in the United States and Canada.
- **`payToPlan`** (`object`): Use for subrogation payment requests. If you include this information, you must also set the `claimInformation.otherSubscriberInformation.payerPaidAmount` to the amount the payer (for example, Medicaid) actually paid.
- **`payToPlan.address`** (`object`) (required)
- **`payToPlan.address.address1`** (`string`) (required): The first line of the street address. This typically contains the building number and street name.
- **`payToPlan.address.address2`** (`string`): The second line of the street address. This typically contains the apartment or suite number.
- **`payToPlan.address.city`** (`string`) (required): The city name.
- **`payToPlan.address.countryCode`** (`string`): Use the alpha-2 country codes from Part 1 of ISO 3166.
- **`payToPlan.address.countrySubDivisionCode`** (`string`): Use the country subdivision codes from Part 2 of ISO 3166.
- **`payToPlan.address.postalCode`** (`string`): The postal zone or zip code. For United States addresses, you must include the full nine-digit zip code with no separators, such as `100031502`. If you don't know the full zip code, you can find it using the [USPS ZIP Code Lookup](https://tools.usps.com/zip-code-lookup.htm) tool. Exclude punctuation and spaces.
- **`payToPlan.address.state`** (`string`): The state or province code. Only required when the city is in the United States and Canada.
- **`payToPlan.organizationName`** (`string`) (required): The last name of the individual, or the business name of the pay-to-plan organization.
- **`payToPlan.primaryIdentifier`** (`string`) (required): The identifier you specified in `primaryIdentifierTypeCode`.
- **`payToPlan.primaryIdentifierTypeCode`** (`string`) (required): Code identifying the type of identifier. Can be set to `PI` - Payor Identification or `XV` - Centers for Medicare/Medicaid Services PlanID. Use code value `XV` when reporting Health Plan ID (HPID) or Other Entity Identifier (OEID).
  - Allowed values: `PI`, `XV`
- **`payToPlan.secondaryIdentifier`** (`string`): The secondary identifier you specified in `secondaryIdentifierTypeCode`.
- **`payToPlan.secondaryIdentifierTypeCode`** (`string`): Code identifying the type of secondary identifier. Can be set to `2U` - Payer Identification Number, `FY` - Claim Office Number, or `NF` - National Association of Insurance Commissioners. You should only set this to `2U` when you set the `primaryIdentifierTypeCode` to `XV`.
  - Allowed values: `2U`, `FY`, `NF`
- **`payToPlan.taxIdentificationNumber`** (`string`) (required): The Employer Identification Number (EIN). This must be a string of exactly nine numbers with no separators.
- **`payerAddress`** (`object`)
- **`payerAddress.address1`** (`string`) (required): The first line of the street address. This typically contains the building number and street name.
- **`payerAddress.address2`** (`string`): The second line of the street address. This typically contains the apartment or suite number.
- **`payerAddress.city`** (`string`) (required): The city name.
- **`payerAddress.countryCode`** (`string`): Use the alpha-2 country codes from Part 1 of ISO 3166.
- **`payerAddress.countrySubDivisionCode`** (`string`): Use the country subdivision codes from Part 2 of ISO 3166.
- **`payerAddress.postalCode`** (`string`): The postal zone or zip code. For United States addresses, you must include the full nine-digit zip code with no separators, such as `100031502`. If you don't know the full zip code, you can find it using the [USPS ZIP Code Lookup](https://tools.usps.com/zip-code-lookup.htm) tool. Exclude punctuation and spaces.
- **`payerAddress.state`** (`string`): The state or province code. Only required when the city is in the United States and Canada.
- **`receiver`** (`object`) (required): The entity responsible for the payment of the claim, such as an insurance company or government agency.
- **`receiver.organizationName`** (`string`) (required): The business name of the payer receiving the claim, such as Aetna or Cigna.
- **`referring`** (`object`): Information about the provider who directed the patient to the rendering provider for care. For example, a primary care physician may refer patients to a specialist. Use when the referring provider applies to the entire claim, not just a specific service line.

This should be an individual, not an organization, and you should supply at least the provider's `lastName` and an identifier, which is typically the `npi`.
- **`referring.address`** (`object`)
- **`referring.address.address1`** (`string`) (required): The first line of the street address. This typically contains the building number and street name.
- **`referring.address.address2`** (`string`): The second line of the street address. This typically contains the apartment or suite number.
- **`referring.address.city`** (`string`) (required): The city name.
- **`referring.address.countryCode`** (`string`): Use the alpha-2 country codes from Part 1 of ISO 3166.
- **`referring.address.countrySubDivisionCode`** (`string`): Use the country subdivision codes from Part 2 of ISO 3166.
- **`referring.address.postalCode`** (`string`): The postal zone or zip code. For United States addresses, you must include the full nine-digit zip code with no separators, such as `100031502`. If you don't know the full zip code, you can find it using the [USPS ZIP Code Lookup](https://tools.usps.com/zip-code-lookup.htm) tool. Exclude punctuation and spaces.
- **`referring.address.state`** (`string`): The state or province code. Only required when the city is in the United States and Canada.
- **`referring.commercialNumber`** (`string`): The provider's commercial number.
- **`referring.contactInformation`** (`object`): You must include at least one communication method (phone, fax, or email) in this object.
- **`referring.contactInformation.email`** (`string`): The email address.
- **`referring.contactInformation.faxNumber`** (`string`): The fax number.
- **`referring.contactInformation.name`** (`string`): The full name of the person or office.
- **`referring.contactInformation.phoneExtension`** (`string`): The phone extension, if applicable.
- **`referring.contactInformation.phoneNumber`** (`string`): The phone number, formatted as AAABBBCCCC, where AAA represents the area code, BBB is the telephone number prefix, and CCCC is the telephone number. The phone number should only include the digits 0 to 9. Don't include separators, such as dashes, and don't include long distance access numbers, such as 1. For example, you would format the phone number 123-456-7890 as 1234567890.
- **`referring.firstName`** (`string`): The provider's first name.
- **`referring.lastName`** (`string`): The provider's last name.
- **`referring.middleName`** (`string`): The provider's middle name or initial.
- **`referring.npi`** (`string`): The individual [National Provider Identifier (NPI)](https://www.stedi.com/docs/healthcare/national-provider-identifier) assigned to the provider.
- **`referring.organizationName`** (`string`): The provider's business name.
- **`referring.providerType`** (`string`): This field is now automatically populated and it only remains for backwards compatibility.
- **`referring.providerUpinNumber`** (`string`): Deprecated; do not use.
- **`referring.stateLicenseNumber`** (`string`): The provider's state license number. This is assigned directly by a payer in order to identify the provider in their system. This is not commonly used.
- **`referring.suffix`** (`string`): The provider's name suffix, such as Jr. or III.
- **`referring.taxonomyCode`** (`string`)
- **`rendering`** (`object`): Information about the person or company (laboratory or other facility) who rendered the care. Use this object for all types of rendering providers including laboratories. When a substitute provider (locum tenens) was used, enter that provider's information here.
- Use when the provider applies to the entire claim or to at least one service line. For example, if a claim had two service lines with two different rendering providers, you would include the provider for the first service line here and leave the `claimInformation.serviceLines[].renderingProvider` object for that service line blank. Then, you would specify the second provider in the appropriate service line's `claimInformation.serviceLines[].renderingProvider` object.
- You can omit this object when the rendering provider is the same as the billing provider. In that case, you would include the provider's information in the `billing` object and leave this object blank.
- **`rendering.address`** (`object`)
- **`rendering.address.address1`** (`string`) (required): The first line of the street address. This typically contains the building number and street name.
- **`rendering.address.address2`** (`string`): The second line of the street address. This typically contains the apartment or suite number.
- **`rendering.address.city`** (`string`) (required): The city name.
- **`rendering.address.countryCode`** (`string`): Use the alpha-2 country codes from Part 1 of ISO 3166.
- **`rendering.address.countrySubDivisionCode`** (`string`): Use the country subdivision codes from Part 2 of ISO 3166.
- **`rendering.address.postalCode`** (`string`): The postal zone or zip code. For United States addresses, you must include the full nine-digit zip code with no separators, such as `100031502`. If you don't know the full zip code, you can find it using the [USPS ZIP Code Lookup](https://tools.usps.com/zip-code-lookup.htm) tool. Exclude punctuation and spaces.
- **`rendering.address.state`** (`string`): The state or province code. Only required when the city is in the United States and Canada.
- **`rendering.commercialNumber`** (`string`): The provider's commercial number.
- **`rendering.contactInformation`** (`object`): You must include at least one communication method (phone, fax, or email) in this object.
- **`rendering.contactInformation.email`** (`string`): The email address.
- **`rendering.contactInformation.faxNumber`** (`string`): The fax number.
- **`rendering.contactInformation.name`** (`string`): The full name of the person or office.
- **`rendering.contactInformation.phoneExtension`** (`string`): The phone extension, if applicable.
- **`rendering.contactInformation.phoneNumber`** (`string`): The phone number, formatted as AAABBBCCCC, where AAA represents the area code, BBB is the telephone number prefix, and CCCC is the telephone number. The phone number should only include the digits 0 to 9. Don't include separators, such as dashes, and don't include long distance access numbers, such as 1. For example, you would format the phone number 123-456-7890 as 1234567890.
- **`rendering.firstName`** (`string`): The provider's first name, if the provider is an individual.
- **`rendering.lastName`** (`string`): The provider's last name, if the provider is an individual. You must include either the `lastName` or `organizationName` property in this object.
- **`rendering.locationNumber`** (`string`): The provider's location number.
- **`rendering.middleName`** (`string`): The provider's middle name or initial, if the provider is an individual.
- **`rendering.npi`** (`string`): The [National Provider Identifier (NPI)](https://www.stedi.com/docs/healthcare/national-provider-identifier) assigned to the provider.
- **`rendering.organizationName`** (`string`): The provider's business name, if the provider is an organization. You must include either the `lastName` or `organizationName` property in this object.
- **`rendering.providerType`** (`string`): This field is now automatically populated and it only remains for backwards compatibility.
- **`rendering.providerUpinNumber`** (`string`): Deprecated; do not use.
- **`rendering.stateLicenseNumber`** (`string`): The provider's state license number. This is assigned directly by a payer in order to identify the provider in their system. This is not commonly used.
- **`rendering.suffix`** (`string`): The provider's name suffix, such as Jr. or III.
- **`rendering.taxonomyCode`** (`string`): Code from the National Uniform Claims Committee [Health Care Provider Taxonomy Code Set](https://taxonomy.nucc.org/). This identifies the provider's type and/or area of specialty.
- **`submitter`** (`object`) (required): The entity submitting the healthcare claim. This can be either an individual or an organization, such as a doctor, hospital, or insurance company. You must submit at least `organizationName` or `lastName` properties and the `contactInformation` object. If you don't supply the `submitterIdentification` property, Stedi uses the value from `billing.npi` in the request.
- **`submitter.contactInformation`** (`object`) (required): You must include at least one communication method (phone, fax, or email) in this object.
- **`submitter.contactInformation.email`** (`string`): The email address.
- **`submitter.contactInformation.faxNumber`** (`string`): The fax number.
- **`submitter.contactInformation.name`** (`string`): The full name of the person or office.
- **`submitter.contactInformation.phoneExtension`** (`string`): The phone extension, if applicable.
- **`submitter.contactInformation.phoneNumber`** (`string`): The phone number, formatted as AAABBBCCCC, where AAA represents the area code, BBB is the telephone number prefix, and CCCC is the telephone number. The phone number should only include the digits 0 to 9. Don't include separators, such as dashes, and don't include long distance access numbers, such as 1. For example, you would format the phone number 123-456-7890 as 1234567890.
- **`submitter.firstName`** (`string`): The first name of the individual submitting the claim.
- **`submitter.lastName`** (`string`): The last name of the individual submitting the claim.
- **`submitter.middleName`** (`string`): The middle name or initial of the individual submitting the claim.
- **`submitter.organizationName`** (`string`): The business name of the organization submitting the claim.
- **`submitter.submitterIdentification`** (`string`): The submitter's Electronic Transmitter Identification Number (ETIN), as assigned by the payer. For some payers, this may be the same as the submitter's NPI or TIN, but it can also be another unique identifier. Payers can refer to this identifier as the Provider Number, Submitter ID, Submitter Identifier, Submitter Primary Number, Sender Code, Certified Contracted Provider ID, and other names.

 If you don't provide this property, Stedi uses the billing provider's NPI from `billing.npi` property.
- **`subscriber`** (`object`) (required): The person or entity who is the primary policyholder for the health plan _or_ a dependent with their own member ID.
- When a dependent has a unique, payer-assigned member ID, treat them as the `subscriber` for the claim submission - include their information here and omit the `dependent` object from the request. Note that the subscriber can be an individual or a business entity. Stedi treats the subscriber as an individual when the request doesn't contain a value for the `subscriber.organizationName` property.
- You must set the `dateOfBirth` and `gender` properties when the subscriber is the patient. Stedi determines that the subscriber is the patient when the `dependent` object is not included in the request.
- If either `dateOfBirth` or `gender` is set, you must include both properties. You can either include both properties or neither within a single request.
- You must include `address` in this object when the patient is the subscriber. If the patient is a dependent, include address information in the `dependent` object instead.
- **`subscriber.address`** (`object`): The patient's address. Every claim must include this information in either the `subscriber` (when the patient is the subscriber) or `dependent` (when the patient is a dependent) object. You must include at least the `address1` and `city` properties in this object. The `state` and `postalCode` properties are also required for all United States and Canadian addresses.
- The address should be the patient's correct address at the time of service. Use of outdated values could cause the payer to reject, deny, or delay the claim due to suspected fraud.
- If you don't know the patient's address, first submit a [Real-Time Eligibility Check](https://www.stedi.com/docs/healthcare/api-reference/post-healthcare-eligibility) for the patient and then copy the address from either the `subscriber` or `dependent` object in the response.
- If the patient doesn't have a current address, you can populate the `address1` property with `UNKNOWN` and populate the city, state, and zip code with appropriate values based on your discretion. However, we still recommend running an eligibility check when possible, so you can use the address the payer has on file. Some payers may have explicit rules for how to handle this situation - check the payer's specific requirements before using this approach.
- **`subscriber.address.address1`** (`string`) (required): The first line of the street address. This typically contains the building number and street name.
- **`subscriber.address.address2`** (`string`): The second line of the street address. This typically contains the apartment or suite number.
- **`subscriber.address.city`** (`string`) (required): The city name.
- **`subscriber.address.countryCode`** (`string`): Use the alpha-2 country codes from Part 1 of ISO 3166.
- **`subscriber.address.countrySubDivisionCode`** (`string`): Use the country subdivision codes from Part 2 of ISO 3166.
- **`subscriber.address.postalCode`** (`string`): The postal zone or zip code. For United States addresses, you must include the full nine-digit zip code with no separators, such as `100031502`. If you don't know the full zip code, you can find it using the [USPS ZIP Code Lookup](https://tools.usps.com/zip-code-lookup.htm) tool. Exclude punctuation and spaces.
- **`subscriber.address.state`** (`string`): The state or province code. Only required when the city is in the United States and Canada.
- **`subscriber.dateOfBirth`** (`string`): The subscriber's date of birth. This property is **required** if the subscriber is an individual.
- **`subscriber.firstName`** (`string`): The subscriber's first name. This property is **recommended** when the subscriber is an individual. Omit when the subscriber is an organization. Some payers reject requests without the `firstName` property.
- **`subscriber.gender`** (`string`): Identifies the subscriber's gender. Can be set to `F` - Female, `M` - Male, or `U` - Unknown. 

This property is **required** if the subscriber is an individual. 

You should set this property to `U` when the patient declines to answer or does not identify as male or female. Note that some payers may reject the claim if the patient's gender doesn't match the gender they have recorded in their member records.
  - Allowed values: `M`, `F`, `U`
- **`subscriber.groupNumber`** (`string`): The subscriber's health plan group number.
  - Provide this property OR the `policyNumber`, not both.
  - Provide this property OR the `subscriberGroupName`, not both. If this property is set, Stedi ignores the `subscriberGroupName` property.
- **`subscriber.insuranceTypeCode`** (`string`): Identifies the type of insurance policy within a specific insurance program. Visit [Claims code lists](https://www.stedi.com/docs/healthcare/claims-code-lists#insurance-type-codes) for a complete list.
  - Allowed values: `12`, `13`, `14`, `15`, `16`, `41`, `42`, `43`, `47`
- **`subscriber.lastName`** (`string`): The subscriber's last name. This property is **required** if the subscriber is an individual. Omit when the subscriber is an organization.

 **Don't** include the subscriber's name suffix, such as Jr. or III. Use the designated `suffix` property instead.
- **`subscriber.memberId`** (`string`): The member ID for the subscriber's insurance policy. This property is **required** if the subscriber is an individual.
- **`subscriber.middleName`** (`string`): The subscriber's middle name or initial.
- **`subscriber.organizationName`** (`string`): The business name of the entity submitting the claim. This is **required** when the subscriber is an organization.

 When the subscriber is an organization, you should identify the patient in the `dependent` object.
- **`subscriber.paymentResponsibilityLevelCode`** (`string`): Code identifying the payer's level of responsibility for paying this claim. Visit [Claims code lists](https://www.stedi.com/docs/healthcare/claims-code-lists#payment-responsibility-sequence-number-codes) for a complete list of possible codes.
  - Stedi sets this property to `P` - Primary by default. You only need to include it when you need to submit codes other than `P`. This can happen when the patient has multiple insurance policies. For example, if a patient is covered by both Medicare and an employer-sponsored commercial plan, you could bill the commercial plan first as `P` and then bill the Medicare payer second as `S`.
  - Either this property or `otherSubscriberInformation.paymentResponsibilityLevelCode` must be set to `P` to indicate the primary insurance payer. Stedi rejects claims - including secondary and tertiary claims - that don't include information for the primary payer.
  - Allowed values: `A`, `B`, `C`, `D`, `E`, `F`, `G`, `H`, `P`, `S`, `T`, `U`
- **`subscriber.policyNumber`** (`string`): The subscriber's health plan policy number. You should provide either this property OR the `groupNumber`, not both.
- **`subscriber.ssn`** (`string`): The subscriber's Social Security Number.
- **`subscriber.subscriberGroupName`** (`string`): The name of the subscriber's health plan. For example, Cigna or Blue Cross Blue Shield. 

Provide either this property OR the `groupNumber`, not both. If `groupNumber` is set, Stedi ignores this value and uses the value in `groupNumber`.
- **`subscriber.suffix`** (`string`): The suffix of the subscriber's name, such as Jr. or Sr. Only include the subscriber's personal name suffix - **don't** include professional or academic titles, such as M.D. or MBA.
- **`supervising`** (`object`): The entity responsible for overseeing the rendering provider and the care reported in this claim. Applies when the rendering provider is supervised by a physician. Use when the provider applies to the entire claim, not just a specific service line.

This should be an individual, not an organization, and you should supply at least the provider's `lastName` and an identifier, which is typically the `npi`.
- **`supervising.address`** (`object`)
- **`supervising.address.address1`** (`string`) (required): The first line of the street address. This typically contains the building number and street name.
- **`supervising.address.address2`** (`string`): The second line of the street address. This typically contains the apartment or suite number.
- **`supervising.address.city`** (`string`) (required): The city name.
- **`supervising.address.countryCode`** (`string`): Use the alpha-2 country codes from Part 1 of ISO 3166.
- **`supervising.address.countrySubDivisionCode`** (`string`): Use the country subdivision codes from Part 2 of ISO 3166.
- **`supervising.address.postalCode`** (`string`): The postal zone or zip code. For United States addresses, you must include the full nine-digit zip code with no separators, such as `100031502`. If you don't know the full zip code, you can find it using the [USPS ZIP Code Lookup](https://tools.usps.com/zip-code-lookup.htm) tool. Exclude punctuation and spaces.
- **`supervising.address.state`** (`string`): The state or province code. Only required when the city is in the United States and Canada.
- **`supervising.commercialNumber`** (`string`): The commercial number of the supervising provider.
- **`supervising.contactInformation`** (`object`): You must include at least one communication method (phone, fax, or email) in this object.
- **`supervising.contactInformation.email`** (`string`): The email address.
- **`supervising.contactInformation.faxNumber`** (`string`): The fax number.
- **`supervising.contactInformation.name`** (`string`): The full name of the person or office.
- **`supervising.contactInformation.phoneExtension`** (`string`): The phone extension, if applicable.
- **`supervising.contactInformation.phoneNumber`** (`string`): The phone number, formatted as AAABBBCCCC, where AAA represents the area code, BBB is the telephone number prefix, and CCCC is the telephone number. The phone number should only include the digits 0 to 9. Don't include separators, such as dashes, and don't include long distance access numbers, such as 1. For example, you would format the phone number 123-456-7890 as 1234567890.
- **`supervising.employerId`** (`string`)
- **`supervising.firstName`** (`string`): The first name of the supervising provider.
- **`supervising.lastName`** (`string`): The last name of the supervising provider.
- **`supervising.locationNumber`** (`string`): The location number of the supervising provider.
- **`supervising.middleName`** (`string`): The middle name or initial of the supervising provider.
- **`supervising.npi`** (`string`): The individual [National Provider Identifier (NPI)](https://www.stedi.com/docs/healthcare/national-provider-identifier) assigned to the supervising provider.
- **`supervising.organizationName`** (`string`): The supervising provider's business name, when the provider is not an individual.
- **`supervising.providerType`** (`string`): This field is now automatically populated and it only remains for backwards compatibility.
- **`supervising.providerUpinNumber`** (`string`): Deprecated; do not use.
- **`supervising.ssn`** (`string`): Social Security Number without spaces or punctuation (9 digits)
- **`supervising.stateLicenseNumber`** (`string`): The state license number of the supervising provider. This is assigned directly by a payer in order to identify the provider in their system. This is not commonly used.
- **`supervising.suffix`** (`string`): The suffix of the supervising provider's name, such as Jr. or III.
- **`supervising.taxonomyCode`** (`string`)
- **`tradingPartnerName`** (`string`): This is the payer's business name, like Cigna or Aetna.
- **`tradingPartnerSecondaryIdentifiers`** (`object`): Secondary identifiers for the payer. You can include up to three properties in this object.
- **`tradingPartnerSecondaryIdentifiers.claimOfficeNumber`** (`string`): Claim Office Number.
- **`tradingPartnerSecondaryIdentifiers.employerIdentificationNumber`** (`string`): Employer Identification Number. This must be a string of exactly nine numbers with no separators.
- **`tradingPartnerSecondaryIdentifiers.naic`** (`string`): National Association of Insurance Commissioners (NAIC) Code.
- **`tradingPartnerSecondaryIdentifiers.payerIdentificationNumber`** (`string`): Payer Identification Number.
This shape is deprecated since 1/9/25.
- **`tradingPartnerServiceId`** (`string`) (required): The payer ID. Visit the [Payer Network](https://www.stedi.com/healthcare/network) for a complete list.
 - You can send requests using the primary payer ID, the Stedi payer ID, or any alias listed in the payer record.
 - You must include leading `0` characters - payer IDs are alphanumeric strings and must be treated as complete strings, not integers. For example, use `00540` for SISCO, not `540`.
- **`usageIndicator`** (`string`): Whether you want to send a test or production claim. This property also allows you to filter claims in the Stedi portal by production or test data. By default, this property is set to `P` for production data. Use `T` to designate a claim as test data.

**Example:**

```json
{
  "billing": {
    "address": {
      "address1": "ABA Inc 123 Some St",
      "city": "Denver",
      "postalCode": "802383000",
      "state": "CO"
    },
    "contactInformation": {
      "name": "ABA Inc",
      "phoneNumber": "3134893157"
    },
    "employerId": "123456789",
    "npi": "1999999992",
    "organizationName": "ABA Inc",
    "providerType": "BillingProvider",
    "taxonomyCode": "106S00000X"
  },
  "claimInformation": {
    "benefitsAssignmentCertificationIndicator": "Y",
    "claimChargeAmount": "832.00",
    "claimFilingCode": "FI",
    "claimFrequencyCode": "1",
    "claimSupplementalInformation": {
      "priorAuthorizationNumber": "20231010012345678"
    },
    "healthCareCodeInformation": [
      {
        "diagnosisCode": "K08101",
        "diagnosisTypeCode": "ABK"
      }
    ],
    "patientControlNumber": "<YOUR-CLAIM-ID>",
    "placeOfServiceCode": "12",
    "planParticipationCode": "A",
    "releaseInformationCode": "Y",
    "serviceFacilityLocation": {
      "address": {
        "address1": "ABA Inc 123 Some St",
        "city": "Denver",
        "postalCode": "802383100",
        "state": "CO"
      },
      "npi": "1999999992",
      "organizationName": "ABA Inc",
      "phoneNumber": "3134893157"
    },
    "serviceLines": [
      {
        "dentalService": {
          "compositeDiagnosisCodePointers": {
            "diagnosisCodePointers": [
              "1"
            ]
          },
          "lineItemChargeAmount": "832.00",
          "oralCavityDesignation": [
            "1",
            "2"
          ],
          "placeOfServiceCode": "12",
          "procedureCode": "D7140",
          "procedureCount": 2,
          "prosthesisCrownOrInlayCode": "I"
        },
        "providerControlNumber": "a0UDo000000dd2dMAA",
        "renderingProvider": {
          "firstName": "Jane",
          "lastName": "Doe",
          "npi": "1999999992",
          "taxonomyCode": "122300000X"
        },
        "serviceDate": "20230428",
        "teethInformation": [
          {
            "toothCode": "3",
            "toothSurfaceCodes": [
              "M",
              "O"
            ]
          }
        ]
      }
    ],
    "signatureIndicator": "Y",
    "toothStatus": [
      {
        "toothNumber": "3",
        "toothStatusCode": "E"
      }
    ]
  },
  "payerAddress": {
    "address1": "PO Box 7000",
    "city": "Camden",
    "postalCode": "29000",
    "state": "SC"
  },
  "receiver": {
    "organizationName": "United HealthCare Dental"
  },
  "rendering": {
    "firstName": "Jane",
    "lastName": "Doe",
    "npi": "1999999992",
    "providerType": "RenderingProvider",
    "taxonomyCode": "106S00000X"
  },
  "submitter": {
    "contactInformation": {
      "name": "BILLING DEPARTMENT",
      "phoneNumber": "3134893157"
    },
    "organizationName": "ABA Inc",
    "submitterIdentification": "<YOUR-SUBMITTER-ID"
  },
  "subscriber": {
    "address": {
      "address1": "1234 Some St",
      "city": "Buckeye",
      "postalCode": "85326",
      "state": "AZ"
    },
    "dateOfBirth": "20180615",
    "firstName": "John",
    "gender": "F",
    "groupNumber": "1234567890",
    "lastName": "Doe",
    "memberId": "123412345",
    "paymentResponsibilityLevelCode": "P"
  },
  "tradingPartnerName": "United HealthCare Dental",
  "tradingPartnerServiceId": "52133",
  "usageIndicator": "T"
}
```

### Responses

#### 200

DentalClaimsSubmission 200 response

**Schema:** `DentalClaimsSubmissionResponseContent`

**Properties:**

- **`claimReference`** (`object`): Information about the claim.
- **`claimReference.claimType`** (`string`): This shape is deprecated: Currently not used.
- **`claimReference.correlationId`** (`string`): An identifier Stedi assigns to the claim.
- **`claimReference.customerClaimNumber`** (`string`): A tracking number that Stedi assigns to the claim.
- **`claimReference.formatVersion`** (`string`): The X12 EDI version Stedi used to generate the claim for the payer. This is always `5010`.
- **`claimReference.patientControlNumber`** (`string`): The `patientControlNumber` from the original request, if supplied. This is a unique identifier that you assign to the claim so you can track the claim and correlate it with responses from the payer.
- **`claimReference.payerID`** (`string`): This shape is deprecated: Please use payerId.
- **`claimReference.payerId`** (`string`): The payer's ID. This is the same as the `tradingPartnerServiceId`.
- **`claimReference.rhclaimNumber`** (`string`): A tracking number Stedi assigns to the claim. This is the same as the `correlationId`.
- **`claimReference.serviceLines`** (`array of ServiceLineResponseIdentifier objects`): Contains a unique identifier for each service line, listed in the order the service lines were included in the claim. You can use these identifiers to correlate payer responses to specific service lines.
- **`claimReference.serviceLines[].lineItemControlNumber`** (`string`): A unique identifier for the service line, matching the value provided for the `claimInformation.serviceLines[].providerControlNumber` property in the claim submission. If you didn't provide a value for `providerControlNumber`, this property contains a randomly generated a ULID for the service line.
- **`claimReference.submitterId`** (`string`): Stedi's ID for the entity that submitted the claim.
- **`claimReference.timeOfResponse`** (`string`): A timestamp for Stedi's response to the claim submission.
- **`controlNumber`** (`string`): An identifier for the transaction.
- **`editResponses`** (`array of EditResponse objects`): Currently not used.
- **`editResponses[].allowOverride`** (`string`)
- **`editResponses[].badData`** (`string`)
- **`editResponses[].claimCorePath`** (`string`)
- **`editResponses[].editActivity`** (`string`)
- **`editResponses[].editName`** (`string`)
- **`editResponses[].element`** (`string`)
- **`editResponses[].errorDescription`** (`string`)
- **`editResponses[].fieldIndex`** (`string`)
- **`editResponses[].loop`** (`string`)
- **`editResponses[].phaseID`** (`string`)
- **`editResponses[].qualifierCode`** (`string`)
- **`editResponses[].referenceID`** (`string`)
- **`editResponses[].segment`** (`string`)
- **`editStatus`** (`string`): This shape is deprecated: Currently not used.
- **`errors`** (`array of ClaimsError objects`): Errors resulting from claim edits. You must review and fix these errors before resubmitting.
- **`errors[].code`** (`string`): The error code.
- **`errors[].description`** (`string`): The description of the error code.
- **`errors[].followupAction`** (`string`): Recommended followup actions to correct the error.
- **`errors[].location`** (`string`): Where the error is located in the original request.
- **`errors[].value`** (`string`): The value for the data causing the error.
- **`failure`** (`object`): Currently not used.
- **`failure.code`** (`string`)
- **`failure.description`** (`string`)
- **`httpStatusCode`** (`string`): Stedi can return the following status codes:
  - `200`: Stedi successfully generated the X12 EDI claim format required by the payer. It does not indicate whether the payer has accepted the claim - the payer will respond later with a 277CA containing this information. [Learn more about 277CAs](https://www.stedi.com/docs/healthcare/receive-claim-responses#response-types).
  - `400`: The request contains one or more problems with the claim data. Examples include missing required fields, invalid values, or incorrect data types. The response includes a message describing the problem.
  - `403`: The request is not permitted, such as using a test API key to submit a production transaction.
  - Allowed values: `200 OK`, `400 BAD_REQUEST`, `403 FORBIDDEN`
- **`meta`** (`object`): Metadata from Stedi about the request.
- **`meta.applicationMode`** (`string`): Indicates where this request can be found for support.
- **`meta.billerId`** (`string`): The biller ID assigned to this request.
- **`meta.senderId`** (`string`): The sender ID assigned to this request.
- **`meta.submitterId`** (`string`): The submitter ID assigned to this request.
- **`meta.traceId`** (`string`): The file execution ID, a unique identifier assigned to the processed file within the Stedi platform.
- **`payer`** (`object`): Information about the payer for the submitted claim.
- **`payer.payerID`** (`string`): This shape is deprecated: Please use payerId.
- **`payer.payerId`** (`string`): The payer's ID. This is the same as the `tradingPartnerServiceId`.
- **`payer.payerName`** (`string`): The payer's business name, such as Aetna or Cigna.
- **`status`** (`string`): The status of the claim submission.
- **`tradingPartnerServiceId`** (`string`): An ID for the payer you identified in the original claim. This value may differ from the `tradingPartnerServiceId` you submitted in the original request because it reflects the payer's internal concept of their ID, not necessarily the ID Stedi uses to route requests to this payer.
- **`warnings`** (`array of ClaimsWarning objects`): A list of warnings. Currently not used.
- **`warnings[].code`** (`string`): A machine-readable code indicating the type of problem.
- **`warnings[].description`** (`string`): A human-readable description of the problem.
- **`x12`** (`string`): A [277CA claim acknowledgment](https://www.stedi.com/docs/healthcare/claim-responses-overview#277ca-claim-acknowledgment) acceptance or rejection from Stedi in X12 EDI format. It indicates whether the claim has passed Stedi's claim edits.

When the claim fails one or more edits, the 277CA contains `STC` segments with information about each error. These are the same error codes that appear in the `errors` array.

Note that this 277CA only indicates whether Stedi has accepted or rejected the claim submission. You may receive additional 277CA acceptances or rejections as the claim is routed to the payer.

**Example:**

```json
{
  "claimReference": {
    "correlationId": "01JDQMX92Q1T561BH8NKX750TQ",
    "formatVersion": "5010",
    "patientControlNumber": "0U1LBRS4",
    "payerId": "52133",
    "rhclaimNumber": "01JDQMX92Q1T561BH8NKX750TQ",
    "serviceLines": [
      {
        "lineItemControlNumber": "a0UDo000000dd2dMAA"
      }
    ],
    "timeOfResponse": "2024-11-27T20:27:27.077Z"
  },
  "controlNumber": "1",
  "httpStatusCode": "200 OK",
  "meta": {
    "traceId": "9b491769-052e-4738-93d6-e0b5f6d83f53"
  },
  "payer": {
    "payerId": "52133",
    "payerName": "United HealthCare Dental"
  },
  "status": "SUCCESS",
  "tradingPartnerServiceId": "52133",
  "x12": "ISA*00*          *00*          *ZZ*STEDITEST      *ZZ*574183004559   *260213*1956*^*00501*343800641*0*T*>~GS*HN*STEDITEST*574183004559*20260213*195613*1*X*005010X214~ST*277*0001*005010X214~BHT*0085*08*01KHC96JC6ZRRJ3PB88T7JR7S8*20260213*195613*TH~HL*1**20*1~NM1*AY*2*STEDI INC*****46*117151744~TRN*1*01KHC96JC6ZRRJ3PB88T7JR7S8~DTP*050*D8*20260213~DTP*009*D8*20260213~HL*2*1*21*1~NM1*41*2*ABA Inc*****46*123456789~TRN*2*01KHC96GBNYA14YRBRJGFR13P7~STC*A0>17>AY*20260213*WQ*832.0~QTY*90*1~AMT*YU*832.0~HL*3*2*19*1~NM1*85*2*ABA Inc*****XX*1999999992~TRN*1*0~REF*TJ*123456789~QTY*QA*1~AMT*YU*832.0~HL*4*3*PT*0~NM1*QC*1*Doe*John****MI*123412345~TRN*2*12345~STC*A1>20*20260213*WQ*832.0~DTP*472*RD8*20230428-20230428~SE*25*0001~GE*1*1~IEA*1*343800641~"
}
```

#### 400

ValidationException 400 response

**Schema:** `ValidationExceptionResponseContent`

**Properties:**

- **`code`** (`string`): A code describing the type of validation failure.
- **`message`** (`string`) (required): A message describing the causes of the validation failure. There may be more than one.
#### 403

AccessDeniedException 403 response

**Schema:** `AccessDeniedExceptionResponseContent`

**Properties:**

- **`code`** (`string`): Error classification code
- **`message`** (`string`) (required): Human-readable error message
#### 404

ResourceNotFoundException 404 response

**Schema:** `ResourceNotFoundExceptionResponseContent`

**Properties:**

- **`code`** (`string`): Error classification code
- **`message`** (`string`) (required): Human-readable error message
#### 409

ConflictException 409 response

**Schema:** `ConflictExceptionResponseContent`

**Properties:**

- **`message`** (`string`) (required): Why the request failed. The wording can change, so branch on the exception type, not this text.
#### 422

RequestChangedException 422 response

**Schema:** `RequestChangedExceptionResponseContent`

**Properties:**

- **`code`** (`string`): Unique error code identifying the specific type of error.
- **`message`** (`string`) (required): Human readable error message explaining why the request was rejected.
#### 429

ThrottlingException 429 response

**Schema:** `ThrottlingExceptionResponseContent`

**Properties:**

- **`code`** (`string`): Error classification code
- **`message`** (`string`) (required): Human-readable error message
#### 500

InternalFailureException 500 response

**Schema:** `InternalFailureExceptionResponseContent`

**Properties:**

- **`code`** (`string`): Error classification code
- **`message`** (`string`) (required): Human-readable error message
#### 503

ServiceUnavailableException 503 response

**Schema:** `ServiceUnavailableExceptionResponseContent`

**Properties:**

- **`code`** (`string`)
- **`message`** (`string`) (required)
#### 504

GatewayTimeoutException 504 response

**Schema:** `GatewayTimeoutExceptionResponseContent`

**Properties:**

- **`code`** (`string`)
- **`message`** (`string`) (required)


# Real-Time Eligibility Check (270/271) Raw X12
Source: https://www.stedi.com/docs/healthcare/api-reference/post-healthcare-eligibility-raw-x12


[Real-time eligibility checks](/healthcare/send-eligibility-checks) are ideal for in-person patient visits, telehealth appointments, and other scenarios where you need immediate information about a patient's coverage. This endpoint is ideal if you have an existing system that generates X12 EDI files and you want to send them through Stedi.

1. Call this endpoint with payload in [270 X12 EDI format](https://portal.stedi.com/app/guides/view/hipaa/health-care-eligibility-benefit-inquiry-x279a1/01GRYB6GTDJ4MEP5Z16CGMQWT6). Note that the request must include `BHT03` (Submitter Transaction Identifier) and the Payer ID in `Loop 2100A NM109`. We recommend reviewing the requirements for a [basic eligibility request](/healthcare/send-eligibility-checks#body---x12-edi).
2. Stedi validates the EDI and sends the eligibility check to the payer.
3. The endpoint returns a synchronous response from the payer in both JSON and raw X12 EDI format. The response contains the patient's eligibility and benefits information. Note that our documentation lists all enums officially allowed in the eligibility response. Some payers return non-compliant values, which Stedi passes through as is.

<Tip>
  Test your integration with [eligibility mock
  requests](/healthcare/api-reference/mock-requests-eligibility-checks).
</Tip>

## API Specification

Submit a real-time 270/271 eligibility check in raw X12 EDI format

**Endpoint:** `POST /change/medicalnetwork/eligibility/v3/raw-x12`

**Base URL:** `https://healthcare.us.stedi.com/2024-04-01`

### Parameters

- **`X-Forwarded-For`** (header): 
  - Type: `string`

### Request Body

**Schema:** `EligibilityRawX12CheckRequestContent`

**Properties:**

- **`eligibilitySearchId`** (`string`): An identifier that allows Stedi to group eligibility checks for the same patient into a unified record in the Stedi portal called an [eligibility search](https://www.stedi.com/docs/healthcare/eligibility-searches-view).

This property is for use by Stedi tools only, such as Stedi's MCP server.
- **`externalPatientId`** (`string`): A unique identifier for the patient that Stedi uses to identify and correlate historical eligibility checks for the same individual. We recommend including this value in all requests.
- **`x12`** (`string`) (required)

**Example:**

```json
{
  "x12": "ISA*00*          *00*          *ZZ*AV09311993     *01*030240928      *210101*1200*^*00501*000000001*0*P*>~GS*HS*1510848*030240928*20210101*120000*1*X*005010X279A1~ST*270*0001*005010X279A1~BHT*0022*13*00000000000000000000000000*20210101*1200~HL*1**20*1~NM1*PR*2*UnitedHealthcare*****PI*87726~HL*2*1*21*1~NM1*1P*2*Provider Name*****XX*1999999984~HL*3*2*22*1~NM1*IL*1*Doe*John****MI*UHC202649~HL*4*3*23*0~TRN*1*00000000000000000000000000*3117151744~NM1*03*1*Doe*Jane~DMG*D8*19521121~EQ*30~SE*14*0001~GE*1*1~IEA*1*000000001~"
}
```

### Responses

#### 200

EligibilityRawX12Check 200 response

**Schema:** `EligibilityRawX12CheckResponseContent`

**Properties:**

- **`benefitsInformation`** (`array of BenefitsInformation objects`): Information about the patient's healthcare benefits, such as coverage level (individual vs. family), coverage type (deductibles, co-pays, etc.), out of pocket maximums, and more. 
 
 Payers typically return at least the following properties: `code`, `coverageLevelCode`, `serviceTypeCodes`, and either `benefitAmount` or `benefitPercent`. However, the exact properties returned in this object are up to the payer's discretion.

The payer may send benefits information for service type codes (STCs) you didn't request - this is expected. The STC you send in the request tells the payer the types of benefits information you want, but they aren't required to respond with exactly the same STC(s) in the response. Receiving different STCs than you requested can also mean that the payer is ignoring the STC you sent, which is why we recommend [testing payers](https://www.stedi.com/docs/healthcare/eligibility-stc-procedure-codes#test-payer-stc-support) to determine their support for specific STCs.

Visit [Determine patient benefits](https://www.stedi.com/docs/healthcare/eligibility-active-coverage-benefits) for more information about benefit types, details about how to interpret the `benefitsInformation` array, and additional examples.
- **`benefitsInformation[].additionalInformation`** (`array of AdditionalInformation objects`): A free-form message containing additional information about the benefits in the response.
- **`benefitsInformation[].additionalInformation[].description`** (`string`): A free-form message containing additional information about the benefits in the response.
- **`benefitsInformation[].authOrCertIndicator`** (`string`): Code indicating whether the benefit is subject to prior authorization or certification.

Payers may sometimes return other non-compliant values.
  - Allowed values: `N`, `U`, `Y`
- **`benefitsInformation[].benefitAmount`** (`string`): The monetary benefit amount, such as a patient's co-pay or deductible. This value is expressed as a decimal, such as 100.00. 
 
 The payer will always send a value in this property when the `benefitsInformation[].code` = `B` - Co-Payment, `C` - Deductible, `G` - Out of Pocket (Stop Loss), `J` - Cost Containment, or `Y` - Spend Down. For those codes, this value represents the patient's portion of responsibility. 
 
 The payer will **never** send this value when `benefitsInformation[].code` = `A` - Co-Insurance. This property can contain zero when the patient has no responsibility. 
 
 Learn more about [patient costs](https://www.stedi.com/docs/healthcare/eligibility-patient-responsibility-benefits).
- **`benefitsInformation[].benefitPercent`** (`string`): The percentage of the benefit, such as co-insurance. This property can contain zero when the patient has no responsibility. 
 
 The payer will always send a value in this property when `benefitsInformation[].code` = `A` - Co-Insurance. For this code, this value represents the patient's portion of the responsibility. The percentage is expressed as a decimal, such as `0.80` represents 80%. 
 
 The payer will **never** send a value in this property when `benefitsInformation[].code` = `B` - Co-Payment, `C` - Deductible, `G` - Out of Pocket (Stop Loss), `J` - Cost Containment, or `Y` - Spend Down. 
 
 Learn more about [patient costs](https://www.stedi.com/docs/healthcare/eligibility-patient-responsibility-benefits).
- **`benefitsInformation[].benefitQuantity`** (`string`): The quantity of the benefit, qualified by the type specified in `quantityQualifier`. For example, `10` when the `quantityQualifier` is `Visits`.
- **`benefitsInformation[].benefitsAdditionalInformation`** (`object`): Identifying information specific to this type of benefit.
- **`benefitsInformation[].benefitsAdditionalInformation.alternativeListId`** (`string`): The alternative list ID. This identifier allows the payer to specify a list of drugs and its alternative drugs with the associated formulary status for the patient.
- **`benefitsInformation[].benefitsAdditionalInformation.coverageListId`** (`string`): The coverage list ID. This identifier allows the payer to specify the identifier of a list of drugs that have coverage limitations for the associated patient.
- **`benefitsInformation[].benefitsAdditionalInformation.drugFormularyNumber`** (`string`): The drug formulary number.
- **`benefitsInformation[].benefitsAdditionalInformation.familyUnitNumber`** (`string`): The family unit number. This is returned when the payer is a pharmacy benefits manager (PBM) and the patient has a suffix to their member ID number that is used in the NCPDP Telecom Standard Insurance Segment, in field `303-C3` (Person Code). For all other uses, the family unit number (suffix) is considered part of the patient's member ID number.
- **`benefitsInformation[].benefitsAdditionalInformation.groupDescription`** (`string`): Group name
- **`benefitsInformation[].benefitsAdditionalInformation.groupNumber`** (`string`): The group number for the patient's health insurance plan.
- **`benefitsInformation[].benefitsAdditionalInformation.hicNumber`** (`string`): The health insurance claim number (HICN). Note that CMS previously used the HICN to uniquely identify Medicare beneficiaries. However, they have since transitioned to a new, randomized Medicare Beneficiary Identifier (MBI) format. The HICN is no longer used for Medicare transactions but this property is now used by some payers to return MBI. If you receive a value in this property that matches the format specified in the [Medicare Beneficiary Identifier documentation](https://www.cms.gov/training-education/partner-outreach-resources/new-medicare-card/medical-beneficiary-identifiers-mbis), the number is likely an MBI and we recommend sending a follow-up eligibility check to CMS for additional benefits data. This most commonly occurs with patients who are covered by both Medicare and Medicaid.
- **`benefitsInformation[].benefitsAdditionalInformation.insurancePolicyNumber`** (`string`): The insurance policy number.
- **`benefitsInformation[].benefitsAdditionalInformation.medicaidRecepientIdNumber`** (`string`): Deprecated (misspelled): use medicaidRecipientIdNumber. The Medicaid Recipient Identification number.
This shape is deprecated: Misspelled. Use medicaidRecipientIdNumber instead. Still populated for backward compatibility.
- **`benefitsInformation[].benefitsAdditionalInformation.medicaidRecipientIdNumber`** (`string`): The Medicaid Recipient Identification number.
- **`benefitsInformation[].benefitsAdditionalInformation.medicalAssistanceCategory`** (`string`): The medical assistance category.
- **`benefitsInformation[].benefitsAdditionalInformation.memberId`** (`string`): The patient's member ID.
- **`benefitsInformation[].benefitsAdditionalInformation.planDescription`** (`string`): Plan name
- **`benefitsInformation[].benefitsAdditionalInformation.planNetworkDescription`** (`string`): Plan network name
- **`benefitsInformation[].benefitsAdditionalInformation.planNetworkIdNumber`** (`string`): The plan network identification number.
- **`benefitsInformation[].benefitsAdditionalInformation.planNumber`** (`string`): The insurance plan number.
- **`benefitsInformation[].benefitsAdditionalInformation.policyNumber`** (`string`): The patient's policy number.
- **`benefitsInformation[].benefitsAdditionalInformation.priorAuthorizationNumber`** (`string`): The prior authorization number.
- **`benefitsInformation[].benefitsAdditionalInformation.referralNumber`** (`string`): The referral number.
- **`benefitsInformation[].benefitsDateInformation`** (`object`): Dates associated with the benefits.
  - This is where you can find benefit-specific eligibility dates, if provided. These dates override dates provided in `planDateInformation` for this benefit type.
  - This is where the payer may specify the last time the service was rendered (`latestVisitOrConsultation`), which you can use to determine whether the patient has already reached the allowed frequency, if applicable. For example, this object could contain the date when the patient received their last dental cleaning.
  - These dates only apply to the `benefitsInformation` object in which this `benefitsDateInformation` is provided.
- **`benefitsInformation[].benefitsDateInformation.added`** (`string`): Added date. Payers may return this information in the case of retroactive eligibility.
- **`benefitsInformation[].benefitsDateInformation.admission`** (`string`): The admission date or dates.
- **`benefitsInformation[].benefitsDateInformation.admissions`** (`array of DtpDate objects`): The date(s) for admission.
- **`benefitsInformation[].benefitsDateInformation.admissions[].date`** (`string`): A single date.
- **`benefitsInformation[].benefitsDateInformation.admissions[].endDate`** (`string`): The end date of a range.
- **`benefitsInformation[].benefitsDateInformation.admissions[].startDate`** (`string`): The beginning date of a range.
- **`benefitsInformation[].benefitsDateInformation.benefit`** (`string`): The benefit date.
- **`benefitsInformation[].benefitsDateInformation.benefitBegin`** (`string`): The date when the benefit begins.
- **`benefitsInformation[].benefitsDateInformation.benefitEnd`** (`string`): The date when the benefit ends.
- **`benefitsInformation[].benefitsDateInformation.certification`** (`string`): The certification date.
- **`benefitsInformation[].benefitsDateInformation.cobraBegin`** (`string`): The date when COBRA coverage begins.
- **`benefitsInformation[].benefitsDateInformation.cobraEnd`** (`string`): The date when COBRA coverage ends.
- **`benefitsInformation[].benefitsDateInformation.completion`** (`string`): The completion date.
- **`benefitsInformation[].benefitsDateInformation.coordinationOfBenefits`** (`string`): The coordination of benefits date.
- **`benefitsInformation[].benefitsDateInformation.dateOfDeath`** (`string`): The date of death.
- **`benefitsInformation[].benefitsDateInformation.dateOfLastUpdate`** (`string`): The date when the plan information was last updated.
- **`benefitsInformation[].benefitsDateInformation.discharge`** (`string`): The discharge date.
- **`benefitsInformation[].benefitsDateInformation.discharges`** (`array of DtpDate objects`): The date(s) when the patient was discharged.
- **`benefitsInformation[].benefitsDateInformation.discharges[].date`** (`string`): A single date.
- **`benefitsInformation[].benefitsDateInformation.discharges[].endDate`** (`string`): The end date of a range.
- **`benefitsInformation[].benefitsDateInformation.discharges[].startDate`** (`string`): The beginning date of a range.
- **`benefitsInformation[].benefitsDateInformation.effectiveDateOfChange`** (`string`): The effective date of change.
- **`benefitsInformation[].benefitsDateInformation.eligibility`** (`string`): Plan eligibility dates.
- **`benefitsInformation[].benefitsDateInformation.eligibilityBegin`** (`string`): The date when the patient is first eligible for benefits under the plan.
- **`benefitsInformation[].benefitsDateInformation.eligibilityEnd`** (`string`): The date when the patient is no longer eligible for benefits under the plan.
- **`benefitsInformation[].benefitsDateInformation.enrollment`** (`string`): The date when the patient is enrolled in the plan.
- **`benefitsInformation[].benefitsDateInformation.issue`** (`string`): The issue date.
- **`benefitsInformation[].benefitsDateInformation.latestVisitOrConsultation`** (`string`): The latest visit or consultation date. This date may be used to determine whether the patient has already reached the allowed frequency for a specific benefit.
- **`benefitsInformation[].benefitsDateInformation.periodEnd`** (`string`): The end of a period.
- **`benefitsInformation[].benefitsDateInformation.periodStart`** (`string`): The start of a period.
- **`benefitsInformation[].benefitsDateInformation.plan`** (`string`): Only included when multiple plans apply to the patient or multiple plan periods apply.
- **`benefitsInformation[].benefitsDateInformation.planBegin`** (`string`): Only included when multiple plans apply to the patient or multiple plan periods apply.
- **`benefitsInformation[].benefitsDateInformation.planEnd`** (`string`): The date coverage from the plan ends.
- **`benefitsInformation[].benefitsDateInformation.policyEffective`** (`string`): The date when the policy becomes effective.
- **`benefitsInformation[].benefitsDateInformation.policyExpiration`** (`string`): The date when the policy expires.
- **`benefitsInformation[].benefitsDateInformation.premiumPaidToDateEnd`** (`string`): The end of period when the plan premium payments are up-to-date.
- **`benefitsInformation[].benefitsDateInformation.premiumPaidtoDateBegin`** (`string`): The start of the period when the plan premium was paid in full.
- **`benefitsInformation[].benefitsDateInformation.primaryCareProvider`** (`string`): The primary care provider date.
- **`benefitsInformation[].benefitsDateInformation.service`** (`string`): The service date or dates.
- **`benefitsInformation[].benefitsDateInformation.status`** (`string`): The status date.
- **`benefitsInformation[].benefitsRelatedEntities`** (`array of BenefitsRelatedEntity objects`): Other entities associated with the eligibility or benefits. This could be a provider, an individual, an organization, or another payer. When present, this array typically contains information about the patient's primary care provider (PCP), another organization that handles a specific benefit type (such as telehealth mental health services), or another health plan for the patient (coordination of benefits scenarios).
- This is where information for a crossover carrier such as Medicaid or Medicare is provided, if it's applicable to the patient and the payer supports it.
- For Blue Cross Blue Shield (BCBS) payers, Stedi returns an entry containing information about the patient's home plan - the plan that actually verified the coverage. In this object, the `entityIdentifier` property is set to `Party Performing Verification`. [Learn more](https://www.stedi.com/docs/healthcare/eligibility-active-coverage-benefits#bcbs-home-plan)
- **`benefitsInformation[].benefitsRelatedEntities[].address`** (`object`)
- **`benefitsInformation[].benefitsRelatedEntities[].address.address1`** (`string`): The first line of the address.
- **`benefitsInformation[].benefitsRelatedEntities[].address.address2`** (`string`): The second line of the address.
- **`benefitsInformation[].benefitsRelatedEntities[].address.city`** (`string`): The city.
- **`benefitsInformation[].benefitsRelatedEntities[].address.countryCode`** (`string`): The two-letter country code from [Part 1 of ISO 3166](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2).
- **`benefitsInformation[].benefitsRelatedEntities[].address.countrySubDivisionCode`** (`string`): The country subdivision code from [Part 2 of ISO 3166](https://en.wikipedia.org/wiki/ISO_3166-2).
- **`benefitsInformation[].benefitsRelatedEntities[].address.postalCode`** (`string`): The United States or Canadian postal code, excluding punctuation and blanks.
- **`benefitsInformation[].benefitsRelatedEntities[].address.state`** (`string`): The US state or Canadian province code with unknown option. For example, `TN` for Tennessee or `NB` for New Brunswick.

Payers may sometimes return other non-compliant values.
  - Allowed values: `NL`, `PE`, `NS`, `NB`, `QC`, `ON`, `MB`, `SK`, `AB`, `BC`, `YT`, `NT`, `NU`, `DC`, `AS`, `GU`, `MP`, `PR`, `UM`, `VI`, `AA`, `AE`, `AP`, `AK`, `AL`, `AR`, `AZ`, `CA`, `CO`, `CT`, `DE`, `FL`, `GA`, `HI`, `IA`, `ID`, `IL`, `IN`, `KS`, `KY`, `LA`, `MA`, `MD`, `ME`, `MI`, `MN`, `MO`, `MS`, `MT`, `NC`, `ND`, `NE`, `NH`, `NJ`, `NM`, `NV`, `NY`, `OH`, `OK`, `OR`, `PA`, `RI`, `SC`, `SD`, `TN`, `TX`, `UT`, `VA`, `VT`, `WA`, `WI`, `WV`, `WY`
- **`benefitsInformation[].benefitsRelatedEntities[].contactInformation`** (`object`)
- **`benefitsInformation[].benefitsRelatedEntities[].contactInformation.contacts`** (`array of Contacts objects`): The contact information.
- **`benefitsInformation[].benefitsRelatedEntities[].contactInformation.contacts[].communicationMode`** (`string`): Payers may sometimes return other non-compliant values.
  - Allowed values: `Electronic Data Interchange Access Number`, `Electronic Mail`, `Facsimile`, `Telephone`, `Uniform Resource Locator (URL)`, `Telephone Extension`, `Work Phone Number`
- **`benefitsInformation[].benefitsRelatedEntities[].contactInformation.contacts[].communicationNumber`** (`string`): The communication number referenced in `communicationMode`. It includes the country or area code when applicable. 
 
 Note that phone numbers are formatted as AAABBBCCCC, where AAA represents the area code, BBB represents the telephone number prefix, and CCCC represents the telephone number. Phone numbers are provided without separators, such as dashes or parentheses. For example, `5551123345` for `555-112-3345`.
- **`benefitsInformation[].benefitsRelatedEntities[].contactInformation.name`** (`string`): The name of the contact person.
- **`benefitsInformation[].benefitsRelatedEntities[].entityFirstname`** (`string`): The first name of the entity, if the entity is a person.
- **`benefitsInformation[].benefitsRelatedEntities[].entityIdentification`** (`string`): Code identifying the type of value provided in `entityIdentificationValue`. For example, `FI` - Federal Taxpayer's Identification Number.

Payers may sometimes return other non-compliant values.
  - Allowed values: `24`, `34`, `46`, `FA`, `FI`, `II`, `MI`, `NI`, `PI`, `PP`, `SV`, `XV`, `XX`
- **`benefitsInformation[].benefitsRelatedEntities[].entityIdentificationValue`** (`string`): The identification number for the entity, qualified by the code in `entityIdentification`.
- **`benefitsInformation[].benefitsRelatedEntities[].entityIdentifier`** (`string`): Code identifying an organizational entity, a physical location, property or an individual. 
  - `PPO` is used to identify a PPO by name or identification number, and also may also be used if identifying the Network that benefits are restricted to for In-Network benefits.

Payers may sometimes return other non-compliant values.
  - Allowed values: `Contracted Service Provider`, `Preferred Provider Organization (PPO)`, `Provider`, `Third-Party Administrator`, `Employer`, `Other Physician`, `Facility`, `Gateway Provider`, `Group`, `Independent Physicians Association (IPA)`, `Insured or Subscriber`, `Legal Representative`, `Origin Carrier`, `Primary Care Provider`, `Prior Insurance Carrier`, `Plan Sponsor`, `Payer`, `Primary Payer`, `Secondary Payer`, `Tertiary Payer`, `Party Performing Verification`, `Vendor`, `Organization Completing Configuration Change`, `Utilization Management Organization`, `Managed Care Organization`
- **`benefitsInformation[].benefitsRelatedEntities[].entityMiddlename`** (`string`): The middle name or initial of the entity, if the entity is a person.
- **`benefitsInformation[].benefitsRelatedEntities[].entityName`** (`string`): The last name (if the entity is a person) or the business name (if the entity is an organization).
- **`benefitsInformation[].benefitsRelatedEntities[].entityRelationship`** (`string`): Code specifying the relationship between the entity and the patient.

Payers may sometimes return other non-compliant values.
  - Allowed values: `01`, `02`, `27`, `41`, `48`, `65`, `72`
- **`benefitsInformation[].benefitsRelatedEntities[].entitySuffix`** (`string`): The name suffix, such as Sr. Jr. or III.
- **`benefitsInformation[].benefitsRelatedEntities[].entityType`** (`string`): The type of entity.

Payers may sometimes return other non-compliant values.
  - Allowed values: `Person`, `Non-Person Entity`
- **`benefitsInformation[].benefitsRelatedEntities[].providerInformation`** (`object`)
- **`benefitsInformation[].benefitsRelatedEntities[].providerInformation.providerCode`** (`string`): A code indicating the type of provider. Visit [Eligibility code lists](https://www.stedi.com/docs/healthcare/eligibility-code-lists#provider-codes) for a complete list.

Payers may sometimes return other non-compliant values.
  - Allowed values: `AD`, `AT`, `BI`, `CO`, `CV`, `H`, `HH`, `LA`, `OT`, `P1`, `P2`, `PC`, `PE`, `R`, `RF`, `SB`, `SK`, `SU`
- **`benefitsInformation[].benefitsRelatedEntities[].providerInformation.referenceIdentification`** (`string`): The provider's taxonomy code.
- **`benefitsInformation[].benefitsRelatedEntity`** (`object`): Identify another entity associated with the eligibility or benefits. This could be a provider, an individual, an organization, or another payer.

This array is commonly used to designate the patient's primary care provider (PCP), another organization that handles a specific carveout benefit type, or another health plan for the patient (coordination of benefits scenarios).

This is where information for a crossover carrier such as Medicaid or Medicare is provided, if it's applicable to the patient and the payer supports it.
- **`benefitsInformation[].benefitsRelatedEntity.address`** (`object`)
- **`benefitsInformation[].benefitsRelatedEntity.address.address1`** (`string`): The first line of the address.
- **`benefitsInformation[].benefitsRelatedEntity.address.address2`** (`string`): The second line of the address.
- **`benefitsInformation[].benefitsRelatedEntity.address.city`** (`string`): The city.
- **`benefitsInformation[].benefitsRelatedEntity.address.countryCode`** (`string`): The two-letter country code from [Part 1 of ISO 3166](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2).
- **`benefitsInformation[].benefitsRelatedEntity.address.countrySubDivisionCode`** (`string`): The country subdivision code from [Part 2 of ISO 3166](https://en.wikipedia.org/wiki/ISO_3166-2).
- **`benefitsInformation[].benefitsRelatedEntity.address.postalCode`** (`string`): The United States or Canadian postal code, excluding punctuation and blanks.
- **`benefitsInformation[].benefitsRelatedEntity.address.state`** (`string`): The US state or Canadian province code with unknown option. For example, `TN` for Tennessee or `NB` for New Brunswick.

Payers may sometimes return other non-compliant values.
  - Allowed values: `NL`, `PE`, `NS`, `NB`, `QC`, `ON`, `MB`, `SK`, `AB`, `BC`, `YT`, `NT`, `NU`, `DC`, `AS`, `GU`, `MP`, `PR`, `UM`, `VI`, `AA`, `AE`, `AP`, `AK`, `AL`, `AR`, `AZ`, `CA`, `CO`, `CT`, `DE`, `FL`, `GA`, `HI`, `IA`, `ID`, `IL`, `IN`, `KS`, `KY`, `LA`, `MA`, `MD`, `ME`, `MI`, `MN`, `MO`, `MS`, `MT`, `NC`, `ND`, `NE`, `NH`, `NJ`, `NM`, `NV`, `NY`, `OH`, `OK`, `OR`, `PA`, `RI`, `SC`, `SD`, `TN`, `TX`, `UT`, `VA`, `VT`, `WA`, `WI`, `WV`, `WY`
- **`benefitsInformation[].benefitsRelatedEntity.contactInformation`** (`object`)
- **`benefitsInformation[].benefitsRelatedEntity.contactInformation.contacts`** (`array of Contacts objects`): The contact information.
- **`benefitsInformation[].benefitsRelatedEntity.contactInformation.contacts[].communicationMode`** (`string`): Payers may sometimes return other non-compliant values.
  - Allowed values: `Electronic Data Interchange Access Number`, `Electronic Mail`, `Facsimile`, `Telephone`, `Uniform Resource Locator (URL)`, `Telephone Extension`, `Work Phone Number`
- **`benefitsInformation[].benefitsRelatedEntity.contactInformation.contacts[].communicationNumber`** (`string`): The communication number referenced in `communicationMode`. It includes the country or area code when applicable. 
 
 Note that phone numbers are formatted as AAABBBCCCC, where AAA represents the area code, BBB represents the telephone number prefix, and CCCC represents the telephone number. Phone numbers are provided without separators, such as dashes or parentheses. For example, `5551123345` for `555-112-3345`.
- **`benefitsInformation[].benefitsRelatedEntity.contactInformation.name`** (`string`): The name of the contact person.
- **`benefitsInformation[].benefitsRelatedEntity.entityFirstname`** (`string`): The first name of the entity, if the entity is a person.
- **`benefitsInformation[].benefitsRelatedEntity.entityIdentification`** (`string`): Code identifying the type of value provided in `entityIdentificationValue`. For example, `FI` - Federal Taxpayer's Identification Number.

Payers may sometimes return other non-compliant values.
  - Allowed values: `24`, `34`, `46`, `FA`, `FI`, `II`, `MI`, `NI`, `PI`, `PP`, `SV`, `XV`, `XX`
- **`benefitsInformation[].benefitsRelatedEntity.entityIdentificationValue`** (`string`): The identification number for the entity, qualified by the code in `entityIdentification`.
- **`benefitsInformation[].benefitsRelatedEntity.entityIdentifier`** (`string`): Code identifying an organizational entity, a physical location, property or an individual. 
  - `PPO` is used to identify a PPO by name or identification number, and also may also be used if identifying the Network that benefits are restricted to for In-Network benefits.

Payers may sometimes return other non-compliant values.
  - Allowed values: `Contracted Service Provider`, `Preferred Provider Organization (PPO)`, `Provider`, `Third-Party Administrator`, `Employer`, `Other Physician`, `Facility`, `Gateway Provider`, `Group`, `Independent Physicians Association (IPA)`, `Insured or Subscriber`, `Legal Representative`, `Origin Carrier`, `Primary Care Provider`, `Prior Insurance Carrier`, `Plan Sponsor`, `Payer`, `Primary Payer`, `Secondary Payer`, `Tertiary Payer`, `Party Performing Verification`, `Vendor`, `Organization Completing Configuration Change`, `Utilization Management Organization`, `Managed Care Organization`
- **`benefitsInformation[].benefitsRelatedEntity.entityMiddlename`** (`string`): The middle name or initial of the entity, if the entity is a person.
- **`benefitsInformation[].benefitsRelatedEntity.entityName`** (`string`): The last name (if the entity is a person) or the business name (if the entity is an organization).
- **`benefitsInformation[].benefitsRelatedEntity.entityRelationship`** (`string`): Code specifying the relationship between the entity and the patient.

Payers may sometimes return other non-compliant values.
  - Allowed values: `01`, `02`, `27`, `41`, `48`, `65`, `72`
- **`benefitsInformation[].benefitsRelatedEntity.entitySuffix`** (`string`): The name suffix, such as Sr. Jr. or III.
- **`benefitsInformation[].benefitsRelatedEntity.entityType`** (`string`): The type of entity.

Payers may sometimes return other non-compliant values.
  - Allowed values: `Person`, `Non-Person Entity`
- **`benefitsInformation[].benefitsRelatedEntity.providerInformation`** (`object`)
- **`benefitsInformation[].benefitsRelatedEntity.providerInformation.providerCode`** (`string`): A code indicating the type of provider. Visit [Eligibility code lists](https://www.stedi.com/docs/healthcare/eligibility-code-lists#provider-codes) for a complete list.

Payers may sometimes return other non-compliant values.
  - Allowed values: `AD`, `AT`, `BI`, `CO`, `CV`, `H`, `HH`, `LA`, `OT`, `P1`, `P2`, `PC`, `PE`, `R`, `RF`, `SB`, `SK`, `SU`
- **`benefitsInformation[].benefitsRelatedEntity.providerInformation.referenceIdentification`** (`string`): The provider's taxonomy code.
- **`benefitsInformation[].benefitsServiceDelivery`** (`array of BenefitsServiceDelivery objects`)
- **`benefitsInformation[].benefitsServiceDelivery[].deliveryOrCalendarPatternCode`** (`string`): The name of the `deliveryOrCalendarPatternCode`. For example, `Last Working Day of Period`.

Payers may sometimes return other non-compliant values.
  - Allowed values: `1st Week of the Month`, `2nd Week of the Month`, `3rd Week of the Month`, `4th Week of the Month`, `5th Week of the Month`, `1st & 3rd Week of the Month`, `2nd & 4th Week of the Month`, `1st Working Day of Period`, `Last Working Day of Period`, `Monday through Friday`, `Monday through Saturday`, `Monday through Sunday`, `Monday`, `Tuesday`, `Wednesday`, `Thursday`, `Friday`, `Saturday`, `Sunday`, `Monday through Thursday`, `Immediately`, `As Directed`, `Daily Mon. Through Fri.`, `1/2 Mon. & 1/2 Tues.`, `1/2 Tues. & 1/2 Thurs.`, `1/2 Wed. & 1/2 Fri.`, `Once Anytime Mon. through Fri.`, `Tuesday through Friday`, `Monday, Tuesday and Thursday`, `Monday, Tuesday and Friday`, `Wednesday and Thursday`, `Monday, Wednesday and Thursday`, `Tuesday, Thursday and Friday`, `1/2 Tues. & 1/2 Fri.`, `1/2 Mon. & 1/2 Wed.`, `1/3 Mon., 1/3 Wed., 1/3 Fri.`, `Whenever Necessary`, `1/2 By Wed. Bal. By Fri.`, `None (Also Used to Cancel or Override a Previous Pattern)`
- **`benefitsInformation[].benefitsServiceDelivery[].deliveryOrCalendarPatternQualifier`** (`string`): The name of the `deliveryOrCalendarPatternCode`. For example, `Last Working Day of Period`.

Payers may sometimes return other non-compliant values.
  - Allowed values: `1st Week of the Month`, `2nd Week of the Month`, `3rd Week of the Month`, `4th Week of the Month`, `5th Week of the Month`, `1st & 3rd Week of the Month`, `2nd & 4th Week of the Month`, `1st Working Day of Period`, `Last Working Day of Period`, `Monday through Friday`, `Monday through Saturday`, `Monday through Sunday`, `Monday`, `Tuesday`, `Wednesday`, `Thursday`, `Friday`, `Saturday`, `Sunday`, `Monday through Thursday`, `Immediately`, `As Directed`, `Daily Mon. Through Fri.`, `1/2 Mon. & 1/2 Tues.`, `1/2 Tues. & 1/2 Thurs.`, `1/2 Wed. & 1/2 Fri.`, `Once Anytime Mon. through Fri.`, `Tuesday through Friday`, `Monday, Tuesday and Thursday`, `Monday, Tuesday and Friday`, `Wednesday and Thursday`, `Monday, Wednesday and Thursday`, `Tuesday, Thursday and Friday`, `1/2 Tues. & 1/2 Fri.`, `1/2 Mon. & 1/2 Wed.`, `1/3 Mon., 1/3 Wed., 1/3 Fri.`, `Whenever Necessary`, `1/2 By Wed. Bal. By Fri.`, `None (Also Used to Cancel or Override a Previous Pattern)`
- **`benefitsInformation[].benefitsServiceDelivery[].deliveryOrCalendarPatternQualifierCode`** (`string`): Code that specifies the routine shipments, deliveries, or calendar pattern. For example `9` - Last Working Day of Period. Visit [Eligibility code lists](https://www.stedi.com/docs/healthcare/eligibility-code-lists#delivery-frequency-codes) for a complete list.

Payers may sometimes return other non-compliant values.
  - Allowed values: `1`, `2`, `3`, `4`, `5`, `6`, `7`, `8`, `9`, `A`, `B`, `C`, `D`, `E`, `F`, `G`, `H`, `J`, `K`, `L`, `M`, `N`, `O`, `P`, `Q`, `R`, `S`, `SG`, `SL`, `SP`, `SX`, `SY`, `SZ`, `T`, `U`, `V`, `W`, `X`, `Y`
- **`benefitsInformation[].benefitsServiceDelivery[].deliveryPatternTimeCode`** (`string`): The name of the `deliveryPatternTimeCode`.

Payers may sometimes return other non-compliant values.
  - Allowed values: `1st Shift (Normal Working Hours)`, `2nd Shift`, `3rd Shift`, `A.M.`, `P.M.`, `As Directed`, `Any Shift`, `None (Also Used to Cancel or Override a Previous Pattern)`
- **`benefitsInformation[].benefitsServiceDelivery[].deliveryPatternTimeQualifier`** (`string`): The name of the `deliveryPatternTimeCode`.

Payers may sometimes return other non-compliant values.
  - Allowed values: `1st Shift (Normal Working Hours)`, `2nd Shift`, `3rd Shift`, `A.M.`, `P.M.`, `As Directed`, `Any Shift`, `None (Also Used to Cancel or Override a Previous Pattern)`
- **`benefitsInformation[].benefitsServiceDelivery[].deliveryPatternTimeQualifierCode`** (`string`): A code specifying the time for routine shipments or deliveries.

Payers may sometimes return other non-compliant values.
  - Allowed values: `A`, `B`, `C`, `D`, `E`, `F`, `G`, `Y`
- **`benefitsInformation[].benefitsServiceDelivery[].numOfPeriods`** (`string`): The number of periods in the time period. For example, `12` when the `timePeriodQualifier` is `Hour`.
- **`benefitsInformation[].benefitsServiceDelivery[].quantity`** (`string`): The quantity of the benefit. For example, `10` when the `quantityQualifier` is `Visits`.
- **`benefitsInformation[].benefitsServiceDelivery[].quantityQualifier`** (`string`): The name of the `quantityQualifierCode`. For example, `Days`.

Payers may sometimes return other non-compliant values.
  - Allowed values: `Days`, `Units`, `Hours`, `Month`, `Visits`
- **`benefitsInformation[].benefitsServiceDelivery[].quantityQualifierCode`** (`string`): Code specifying the type of quantity.

Payers may sometimes return other non-compliant values.
  - Allowed values: `DY`, `FL`, `HS`, `MN`, `VS`
- **`benefitsInformation[].benefitsServiceDelivery[].sampleSelectionModulus`** (`string`): Specifies the sampling frequency, based on the unit of measure. For example `every 2 months` or `once per calendar year`.
- **`benefitsInformation[].benefitsServiceDelivery[].timePeriodQualifier`** (`string`): The name of the `timePeriodQualifierCode`. For example, `Calendar Year`.

Payers may sometimes return other non-compliant values.
  - Allowed values: `Hour`, `Day`, `Years`, `Service Year`, `Calendar Year`, `Year to Date`, `Contract`, `Episode`, `Visit`, `Outlier`, `Remaining`, `Exceeded`, `Not Exceeded`, `Lifetime`, `Lifetime Remaining`, `Month`, `Week`
- **`benefitsInformation[].benefitsServiceDelivery[].timePeriodQualifierCode`** (`string`): Code specifying the time period for the benefit information.

Payers may sometimes return other non-compliant values.
  - Allowed values: `6`, `7`, `21`, `22`, `23`, `24`, `25`, `26`, `27`, `28`, `29`, `30`, `31`, `32`, `33`, `34`, `35`
- **`benefitsInformation[].benefitsServiceDelivery[].unitForMeasurementCode`** (`string`): The name of the `unitForMeasurementQualifierCode`. For example, `Days`.

Payers may sometimes return other non-compliant values.
  - Allowed values: `Days`, `Months`, `Visits`, `Week`, `Years`
- **`benefitsInformation[].benefitsServiceDelivery[].unitForMeasurementQualifier`** (`string`): The name of the `unitForMeasurementQualifierCode`. For example, `Days`.

Payers may sometimes return other non-compliant values.
  - Allowed values: `Days`, `Months`, `Visits`, `Week`, `Years`
- **`benefitsInformation[].benefitsServiceDelivery[].unitForMeasurementQualifierCode`** (`string`): Code specifying the unit of measurement for the quantity.

Payers may sometimes return other non-compliant values.
  - Allowed values: `DA`, `MO`, `VS`, `WK`, `YR`
- **`benefitsInformation[].code`** (`string`): The code indicating the type of benefits information. Visit [Eligibility and benefit codes](https://www.stedi.com/docs/healthcare/eligibility-active-coverage-benefits#benefit-type-codes) for more information.

Payers may sometimes return other non-compliant values.
  - Allowed values: `1`, `2`, `3`, `4`, `5`, `6`, `7`, `8`, `A`, `B`, `C`, `CB`, `D`, `E`, `F`, `G`, `H`, `I`, `J`, `K`, `L`, `M`, `MC`, `N`, `O`, `P`, `Q`, `R`, `S`, `T`, `U`, `V`, `W`, `X`, `Y`
- **`benefitsInformation[].compositeMedicalProcedureIdentifier`** (`object`): Identifies relevant medical procedures by their standard codes and modifiers (if applicable).
- **`benefitsInformation[].compositeMedicalProcedureIdentifier.diagnosisCodePointer`** (`array of strings`): The diagnosis code pointer.
- **`benefitsInformation[].compositeMedicalProcedureIdentifier.procedureCode`** (`string`): The procedure code. Many payers do not support eligibility checks for specific procedure codes. If the payer does not support procedure codes, they return a generic benefits response for the service type code `30`.
- **`benefitsInformation[].compositeMedicalProcedureIdentifier.procedureModifiers`** (`array of strings`): Procedure modifiers that provides additional information related to the performance of the service.
- **`benefitsInformation[].compositeMedicalProcedureIdentifier.productOrServiceID`** (`string`): The product or service ID. This value represents the end of the range of applicable procedure codes. The beginning of the range is listed in `procedureCode`.
- **`benefitsInformation[].compositeMedicalProcedureIdentifier.productOrServiceIDQualifier`** (`string`): The name of the `productOrServiceIDQualifierCode`. For example, `American Dental Association`.
- **`benefitsInformation[].compositeMedicalProcedureIdentifier.productOrServiceIDQualifierCode`** (`string`): Identifies the external code list used to provide the specified procedure or service codes. Can be `AD` - American Dental Association, `CJ` - Current Procedural Terminology (CPT) codes, `HC` - Health Care Financing Administration Common Procedural Coding System (HCPCS) Codes, `ID` - International Classification of Diseases 9th Revision, Clinical Modification (ICD-9-CM) - Procedure, `IV` - Home Infusion EDI Coalition (HIEC) Product/Service Code, `N4` - National Drug Code in 5-4-2 Format, or `ZZ` - Mutually Defined
- **`benefitsInformation[].coverageLevel`** (`string`): The full name of the coverage level code.

Payers may sometimes return other non-compliant values.
  - Allowed values: `Children Only`, `Dependents Only`, `Employee and Children`, `Employee Only`, `Employee and Spouse`, `Family`, `Individual`, `Spouse and Children`, `Spouse Only`
- **`benefitsInformation[].coverageLevelCode`** (`string`): Code indicating the level of coverage for the patient. 

This will either be `CHD` - Children Only, `DEP` - Dependents Only, `ECH` - Employee and Children, `EMP` - Employee Only, `ESP` - Employee and Spouse, `FAM` - Family, `IND` - Individual, `SPC` - Spouse and Children, `SPO` - Spouse Only, or `Unknown`.

Payers may sometimes return other non-compliant values.
  - Allowed values: `CHD`, `DEP`, `ECH`, `EMP`, `ESP`, `FAM`, `IND`, `SPC`, `SPO`
- **`benefitsInformation[].eligibilityAdditionalInformation`** (`object`)
- **`benefitsInformation[].eligibilityAdditionalInformation.codeCategory`** (`string`): Payers may sometimes return other non-compliant values.
  - Allowed values: `44`
- **`benefitsInformation[].eligibilityAdditionalInformation.codeListQualifier`** (`string`): The name of the `codeListQualifierCode`. For example `Mutually Defined` when the code is set to `ZZ`.
- **`benefitsInformation[].eligibilityAdditionalInformation.codeListQualifierCode`** (`string`): Payers may sometimes return other non-compliant values.
  - Allowed values: `GR`, `NI`, `ZZ`
- **`benefitsInformation[].eligibilityAdditionalInformation.industry`** (`string`): The name of the `industryCode`. For example `Pharmacy` when the code is `01`.
- **`benefitsInformation[].eligibilityAdditionalInformation.industryCode`** (`string`): The specific industry code. When `codeListQualifierCode` is set to `ZZ` - Mutually Defined, this property will be set to a place of service code. Visit the [Place of Service Code Set](https://www.cms.gov/medicare/coding-billing/place-of-service-codes/code-sets) for a complete list of these codes and their descriptions.
- **`benefitsInformation[].eligibilityAdditionalInformation.injuredBodyPartName`** (`string`): Description of injured body parts.
- **`benefitsInformation[].eligibilityAdditionalInformationList`** (`array of EligibilityAdditionalInformation objects`): Used when there are multiple Nature of Injury Codes or a Facility Type Codes included in the response.
- **`benefitsInformation[].eligibilityAdditionalInformationList[].codeCategory`** (`string`): Payers may sometimes return other non-compliant values.
  - Allowed values: `44`
- **`benefitsInformation[].eligibilityAdditionalInformationList[].codeListQualifier`** (`string`): The name of the `codeListQualifierCode`. For example `Mutually Defined` when the code is set to `ZZ`.
- **`benefitsInformation[].eligibilityAdditionalInformationList[].codeListQualifierCode`** (`string`): Payers may sometimes return other non-compliant values.
  - Allowed values: `GR`, `NI`, `ZZ`
- **`benefitsInformation[].eligibilityAdditionalInformationList[].industry`** (`string`): The name of the `industryCode`. For example `Pharmacy` when the code is `01`.
- **`benefitsInformation[].eligibilityAdditionalInformationList[].industryCode`** (`string`): The specific industry code. When `codeListQualifierCode` is set to `ZZ` - Mutually Defined, this property will be set to a place of service code. Visit the [Place of Service Code Set](https://www.cms.gov/medicare/coding-billing/place-of-service-codes/code-sets) for a complete list of these codes and their descriptions.
- **`benefitsInformation[].eligibilityAdditionalInformationList[].injuredBodyPartName`** (`string`): Description of injured body parts.
- **`benefitsInformation[].headerLoopIdentifierCode`** (`string`): The loop header identifier number in the `LS` segment of the original X12 EDI transaction.
- **`benefitsInformation[].inPlanNetworkIndicator`** (`string`): The name of the in-plan network indicator code.

Payers may sometimes return other non-compliant values.
  - Allowed values: `Yes`, `No`, `Unknown`, `Not Applicable`
- **`benefitsInformation[].inPlanNetworkIndicatorCode`** (`string`): Code indicating whether the benefit is in-network or out-of-network. Can be `Y` - Yes, `N` - No, `U` - Unknown, or `W` - Not Applicable

 Code `U` indicates that it is unknown whether the benefits are in or out-of-network. Code `W` indicates that the benefit applies to both in and out-of-network providers. 
 
 Note that this property **doesn't indicate** whether the provider is in or out-of-network for the patient. To determine that, you must check with the payer directly.

Payers may sometimes return other non-compliant values.
  - Allowed values: `Y`, `N`, `U`, `W`
- **`benefitsInformation[].insuranceType`** (`string`): The full name of the insurance type code.

Payers may sometimes return other non-compliant values.
  - Allowed values: `Medicare Secondary Working Aged Beneficiary or Spouse with Employer Group Health Plan`, `Medicare Secondary End-Stage Renal Disease Beneficiary in the Mandated Coordination Period with an Employer's Group Health Plan`, `Medicare Secondary, No-fault Insurance including Auto is Primary`, `Medicare Secondary Worker's Compensation`, `Medicare Secondary Public Health Service (PHS)or Other Federal Agency`, `Medicare Secondary Black Lung`, `Medicare Secondary Veteran's Administration`, `Medicare Secondary Disabled Beneficiary Under Age 65 with Large Group Health Plan (LGHP)`, `Medicare Secondary, Other Liability Insurance is Primary`, `Auto Insurance Policy`, `Commercial`, `Consolidated Omnibus Budget Reconciliation Act (COBRA)`, `Medicare Conditionally Primary`, `Disability`, `Disability Benefits`, `Exclusive Provider Organization`, `Family or Friends`, `Group Policy`, `Health Maintenance Organization (HMO)`, `Health Maintenance Organization (HMO) - Medicare Risk`, `Special Low Income Medicare Beneficiary`, `Indemnity`, `Individual Policy`, `Long Term Care`, `Long Term Policy`, `Life Insurance`, `Litigation`, `Medicare Part A`, `Medicare Part B`, `Medicaid`, `Medigap Part A`, `Medigap Part B`, `Medicare Primary`, `Other`, `Property Insurance - Personal`, `Personal`, `Personal Payment (Cash - No Insurance)`, `Preferred Provider Organization (PPO)`, `Point of Service (POS)`, `Qualified Medicare Beneficiary`, `Property Insurance - Real`, `Supplemental Policy`, `Tax Equity Fiscal Responsibility Act (TEFRA)`, `Workers Compensation`, `Wrap Up Policy`
- **`benefitsInformation[].insuranceTypeCode`** (`string`): Code identifying the type of insurance policy.

Payers may sometimes return other non-compliant values.
  - Allowed values: `12`, `13`, `14`, `15`, `16`, `41`, `42`, `43`, `47`, `AP`, `C1`, `CO`, `CP`, `D`, `DB`, `EP`, `FF`, `GP`, `HM`, `HN`, `HS`, `IN`, `IP`, `LC`, `LD`, `LI`, `LT`, `MA`, `MB`, `MC`, `MH`, `MI`, `MP`, `OT`, `PE`, `PL`, `PP`, `PR`, `PS`, `QM`, `RP`, `SP`, `TF`, `WC`, `WU`
- **`benefitsInformation[].name`** (`string`): The full name of the benefits information code.

Payers may sometimes return other non-compliant values.
  - Allowed values: `Active Coverage`, `Active - Full Risk Capitation`, `Active - Services Capitated`, `Active - Services Capitated to Primary Care Physician`, `Active - Pending Investigation`, `Inactive`, `Inactive - Pending Eligibility Update`, `Inactive - Pending Investigation`, `Co-Insurance`, `Co-Payment`, `Deductible`, `Coverage Basis`, `Benefit Description`, `Exclusions`, `Limitations`, `Out of Pocket (Stop Loss)`, `Unlimited`, `Non-Covered`, `Cost Containment`, `Reserve`, `Primary Care Provider`, `Pre-existing Condition`, `Managed Care Coordinator`, `Services Restricted to Following Provider`, `Not Deemed a Medical Necessity`, `Benefit Disclaimer`, `Second Surgical Opinion Required`, `Other or Additional Payor`, `Prior Year(s) History`, `Card(s) Reported Lost/Stolen`, `Contact Following Entity for Eligibility or Benefit Information`, `Cannot Process`, `Other Source of Data`, `Health Care Facility`, `Spend Down`
- **`benefitsInformation[].planCoverage`** (`string`): The specific product name or special program name for an insurance plan. For example `Gold 1-2-3`.

Payers are normally required to send the plan name when `benefitsInformation[].code` is set to values `1` - `8` and the `benefitsInformation[].serviceTypeCodes` contains `30` (Health Benefit Plan Coverage). However, behavior may vary by payer, so don't rely on this information being present in the response. Note that the plan name returned in this property may not exactly match the name the payer uses in official plan documents or marketing literature.

Visit [What's the plan name?](https://www.stedi.com/docs/healthcare/eligibility-active-coverage-benefits#what’s-the-plan-name%3F) in the benefits response documentation for more details.
- **`benefitsInformation[].quantityQualifier`** (`string`): The name of the quantity qualifier code.

Payers may sometimes return other non-compliant values.
  - Allowed values: `Minimum`, `Quantity Used`, `Covered - Actual`, `Covered - Estimated`, `Number of Co-insurance Days`, `Deductible Blood Units`, `Days`, `Hours`, `Life-time Reserve - Actual`, `Life-time Reserve - Estimated`, `Maximum`, `Month`, `Number of Services or Procedures`, `Quantity Approved`, `Age, High Value`, `Age, Low Value`, `Visits`, `Years`
- **`benefitsInformation[].quantityQualifierCode`** (`string`): Code indicating the type of quantity for the benefit.

Payers may sometimes return other non-compliant values.
  - Allowed values: `8H`, `99`, `CA`, `CE`, `D3`, `DB`, `DY`, `HS`, `LA`, `LE`, `M2`, `MN`, `P6`, `QA`, `S7`, `S8`, `VS`, `YY`
- **`benefitsInformation[].serviceTypeCodes`** (`array of strings`): Service Type Codes (STCs) related to the benefit type. For example, `7` - Anesthesia. Visit [Service Type Codes](https://www.stedi.com/docs/healthcare/send-eligibility-checks#service-type-codes) for a complete list.

This list is specific to X12 version 005010, which is the mandated version for eligibility checks. It differs from the current [X12 Service Type Codes](https://x12.org/codes/service-type-codes) list, which applies to X12 versions later than 005010.

Payers may sometimes return other non-compliant values.
- **`benefitsInformation[].serviceTypes`** (`array of strings`): The names of the Service Type Codes listed in the `serviceTypeCodes` array. Visit [Service Type Codes](https://www.stedi.com/docs/healthcare/send-eligibility-checks#service-type-codes) for a complete list of codes and their names.

The word physician in service type codes refers to any healthcare provider, including physician assistants, nurse practitioners, and other types of healthcare professionals.

Payers may sometimes return other non-compliant values.
- **`benefitsInformation[].timeQualifier`** (`string`): The name of the time period qualifier code. 
 
 Note that for the patient's deductible, `Calendar Year` indicates the patient's total deductible amount for the year, while `Remaining` indicates the amount left to meet the deductible. Visit [Payer benefit response](https://www.stedi.com/docs/healthcare/eligibility-patient-responsibility-benefits#deductible) to learn more about deductibles.

Payers may sometimes return other non-compliant values.
  - Allowed values: `Hour`, `Day`, `24 Hours`, `Years`, `Service Year`, `Calendar Year`, `Year to Date`, `Contract`, `Episode`, `Visit`, `Outlier`, `Remaining`, `Exceeded`, `Not Exceeded`, `Lifetime`, `Lifetime Remaining`, `Month`, `Week`, `Admission`
- **`benefitsInformation[].timeQualifierCode`** (`string`): Code indicating the time period for the benefit information.

Payers may sometimes return other non-compliant values.
  - Allowed values: `6`, `7`, `13`, `21`, `22`, `23`, `24`, `25`, `26`, `27`, `28`, `29`, `30`, `31`, `32`, `33`, `34`, `35`, `36`
- **`benefitsInformation[].trailerLoopIdentifierCode`** (`string`): The loop trailer identifier number in the `LE` segment of the original X12 EDI transaction.
- **`controlNumber`** (`string`): An identifier for the payer's response.
- **`dependents`** (`array of ResponseDependent objects`): Information about the patient when they are a dependent. When the patient is a dependent, this array will contain a single object with the patient's information. When the patient is a subscriber, or considered to be a subscriber because they have a unique member ID, their information is returned in the `subscriber` object, and this array will be empty.

 When present, this object will always include the dependent's name for identification, but many payers will also return the date of birth and other identifying information.
- **`dependents[].aaaErrors`** (`array of EligibilityCheckDependentError objects`)
- **`dependents[].aaaErrors[].code`** (`string`): Payers may sometimes return other non-compliant values.
  - Allowed values: `15`, `33`, `35`, `42`, `43`, `45`, `47`, `48`, `49`, `51`, `52`, `53`, `54`, `55`, `56`, `57`, `58`, `60`, `61`, `62`, `63`, `64`, `65`, `66`, `67`, `68`, `69`, `70`, `71`, `77`, `98`, `AA`, `AE`, `AF`, `AG`, `AO`, `CI`, `E8`, `IA`, `MA`
- **`dependents[].aaaErrors[].description`** (`string`): The error description.
- **`dependents[].aaaErrors[].field`** (`string`): The error type, `AAA`.
- **`dependents[].aaaErrors[].followupAction`** (`string`): Payers may sometimes return other non-compliant values.
  - Allowed values: `Please Correct and Resubmit`, `Resubmission Not Allowed`, `Resubmission Allowed`, `Do Not Resubmit; Inquiry Initiated to a Third Party`, `Please Wait 30 Days and Resubmit`, `Please Wait 10 Days and Resubmit`, `Do Not Resubmit; We Will Hold Your Request and Respond Again Shortly`
- **`dependents[].aaaErrors[].location`** (`string`): The location of the error within the original X12 EDI response.
- **`dependents[].aaaErrors[].possibleResolutions`** (`string`): Information to help you correct the error.

We periodically update this guidance, so these strings may change at any time and may differ between eligibility responses. **Don't build programmatic logic that depends on matching these strings exactly.**
- **`dependents[].address`** (`object`)
- **`dependents[].address.address1`** (`string`): The first line of the address.
- **`dependents[].address.address2`** (`string`): The second line of the address.
- **`dependents[].address.city`** (`string`): The city.
- **`dependents[].address.countryCode`** (`string`): The two-letter country code from [Part 1 of ISO 3166](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2).
- **`dependents[].address.countrySubDivisionCode`** (`string`): The country subdivision code from [Part 2 of ISO 3166](https://en.wikipedia.org/wiki/ISO_3166-2).
- **`dependents[].address.postalCode`** (`string`): The United States or Canadian postal code, excluding punctuation and blanks.
- **`dependents[].address.state`** (`string`): The US state or Canadian province code with unknown option. For example, `TN` for Tennessee or `NB` for New Brunswick.

Payers may sometimes return other non-compliant values.
  - Allowed values: `NL`, `PE`, `NS`, `NB`, `QC`, `ON`, `MB`, `SK`, `AB`, `BC`, `YT`, `NT`, `NU`, `DC`, `AS`, `GU`, `MP`, `PR`, `UM`, `VI`, `AA`, `AE`, `AP`, `AK`, `AL`, `AR`, `AZ`, `CA`, `CO`, `CT`, `DE`, `FL`, `GA`, `HI`, `IA`, `ID`, `IL`, `IN`, `KS`, `KY`, `LA`, `MA`, `MD`, `ME`, `MI`, `MN`, `MO`, `MS`, `MT`, `NC`, `ND`, `NE`, `NH`, `NJ`, `NM`, `NV`, `NY`, `OH`, `OK`, `OR`, `PA`, `RI`, `SC`, `SD`, `TN`, `TX`, `UT`, `VA`, `VT`, `WA`, `WI`, `WV`, `WY`
- **`dependents[].birthSequenceNumber`** (`string`): The number assigned to each family member born with the same birth date, such as twins or triplets. Indicates the birth order when there are multiple births associated with the provided birth date.
- **`dependents[].dateOfBirth`** (`string`): The member's date of birth.
- **`dependents[].dateTimePeriod`** (`string`): The military service date.
- **`dependents[].dateTimePeriodFormatQualifier`** (`string`): Payers may sometimes return other non-compliant values.
  - Allowed values: `D8`, `RD8`
- **`dependents[].description`** (`string`): Context that identifies the exact military unit. Used to report military service data.
- **`dependents[].employmentStatusCode`** (`string`): Payers may sometimes return other non-compliant values.
  - Allowed values: `AE`, `AO`, `AS`, `AT`, `AU`, `CC`, `DD`, `HD`, `IR`, `LX`, `PE`, `RE`, `RM`, `RR`, `RU`
- **`dependents[].endDateTimePeriod`** (`string`): The military service end date.
- **`dependents[].entityIdentifier`** (`string`): The entity identifier for the dependent.
  - Allowed values: `Dependent`
- **`dependents[].entityType`** (`string`): The type of entity.

Payers may sometimes return other non-compliant values.
  - Allowed values: `Person`, `Non-Person Entity`
- **`dependents[].firstName`** (`string`): The member's first name.
- **`dependents[].gender`** (`string`)
  - Allowed values: `M`, `F`, `U`
- **`dependents[].governmentServiceAffiliationCode`** (`string`): Payers may sometimes return other non-compliant values.
  - Allowed values: `A`, `B`, `C`, `D`, `E`, `F`, `G`, `H`, `I`, `J`, `K`, `L`, `M`, `N`, `O`, `Q`, `R`, `S`, `U`, `W`
- **`dependents[].groupDescription`** (`string`): Group name
- **`dependents[].groupNumber`** (`string`): The group number associated with the insurance policy.
- **`dependents[].healthCareDiagnosisCodes`** (`array of HealthCareDiagnosisCode objects`)
- **`dependents[].healthCareDiagnosisCodes[].diagnosisCode`** (`string`): The diagnosis code. The decimal points are omitted in diagnosis codes - the decimal point is assumed.
- **`dependents[].healthCareDiagnosisCodes[].diagnosisTypeCode`** (`string`): The type of diagnosis code provided. It can be `ABK` - International Classification of Diseases Clinical Modification (ICD-10-CM) Principal Diagnosis or `BK` - International Classification of Diseases Clinical Modification (ICD-9-CM) Principal Diagnosis.
- **`dependents[].informationStatusCode`** (`string`): Payers may sometimes return other non-compliant values.
  - Allowed values: `A`, `C`, `L`, `O`, `P`, `S`, `T`
- **`dependents[].insuredIndicator`** (`string`): Indicates the status of the insured. For the dependent, this is always `N`.
  - Allowed values: `N`
- **`dependents[].lastName`** (`string`): The member's last name.
- **`dependents[].maintenanceReasonCode`** (`string`): Code identifying the reason for the changes to subscriber identifying information, such as name, date of birth, or address. This is always `25`

Payers may sometimes return other non-compliant values.
  - Allowed values: `25`
- **`dependents[].maintenanceTypeCode`** (`string`): The maintenance type code. Used to acknowledge a change in the identifying elements for the subscriber from those submitted in the original eligibility check request. It can also be included when the payer used the birth sequence number from the original request to locate the subscriber in their system. This is always `001`

Payers may sometimes return other non-compliant values.
  - Allowed values: `001`
- **`dependents[].memberId`** (`string`): This property will never be populated. Please use `subscriber.memberId` instead.
- **`dependents[].middleName`** (`string`): The member's middle name or initial.
- **`dependents[].militaryServiceRankCode`** (`string`): Payers may sometimes return other non-compliant values.
  - Allowed values: `A1`, `A2`, `A3`, `B1`, `B2`, `C1`, `C2`, `C3`, `C4`, `C5`, `C6`, `C7`, `C8`, `C9`, `E1`, `F1`, `F2`, `F3`, `F4`, `G1`, `G4`, `L1`, `L2`, `L3`, `L4`, `L5`, `L6`, `M1`, `M2`, `M3`, `M4`, `M5`, `M6`, `P1`, `P2`, `P3`, `P4`, `P5`, `R1`, `R2`, `S1`, `S2`, `S3`, `S4`, `S5`, `S6`, `S7`, `S8`, `S9`, `SA`, `SB`, `SC`, `T1`, `V1`, `W1`
- **`dependents[].planDescription`** (`string`): Plan name
- **`dependents[].planNetworkDescription`** (`string`): Plan network name
- **`dependents[].planNetworkIdNumber`** (`string`): The network identification number associated with the insurance policy.
- **`dependents[].planNumber`** (`string`): The plan number associated with the insurance policy.
- **`dependents[].relationToSubscriber`** (`string`): The name of the `relationToSubscriberCode`. For example, `Child` when the code is `19`.
  - Allowed values: `Spouse`, `Child`, `Employee`, `Unknown`, `Organ Donor`, `Cadaver Donor`, `Life Partner`, `Other Relationship`
- **`dependents[].relationToSubscriberCode`** (`string`): For the dependent, this can be `01` - Spouse, `19` - Child, `20` Employee, `21` - Unknown, `39` - Organ Donor, `40` - Cadaver Donor, `53` - Life Partner, or `G8` - Other Relationship.
  - Allowed values: `01`, `19`, `20`, `21`, `39`, `40`, `53`, `G8`, `Unknown`
- **`dependents[].responseProvider`** (`object`): Information about the entity that submitted the original eligibility check request. This may be an individual practitioner, a medical group, a hospital, or another type of healthcare provider. This object will always include at least one identifier, such as the provider's [NPI](https://www.stedi.com/docs/healthcare/national-provider-identifier), tax ID, or EIN.
- **`dependents[].responseProvider.aaaErrors`** (`array of EligibilityCheckProviderError objects`)
- **`dependents[].responseProvider.aaaErrors[].code`** (`string`): Payers may sometimes return other non-compliant values.
  - Allowed values: `15`, `41`, `43`, `44`, `45`, `46`, `47`, `48`, `50`, `51`, `79`, `97`, `T4`
- **`dependents[].responseProvider.aaaErrors[].description`** (`string`): The error description.
- **`dependents[].responseProvider.aaaErrors[].field`** (`string`): The error type, `AAA`.
- **`dependents[].responseProvider.aaaErrors[].followupAction`** (`string`): Payers may sometimes return other non-compliant values.
  - Allowed values: `Please Correct and Resubmit`, `Resubmission Not Allowed`, `Resubmission Allowed`, `Do Not Resubmit; Inquiry Initiated to a Third Party`, `Please Wait 30 Days and Resubmit`, `Please Wait 10 Days and Resubmit`, `Do Not Resubmit; We Will Hold Your Request and Respond Again Shortly`
- **`dependents[].responseProvider.aaaErrors[].location`** (`string`): The location of the error within the original X12 EDI response.
- **`dependents[].responseProvider.aaaErrors[].possibleResolutions`** (`string`): Information to help you correct the error.

We periodically update this guidance, so these strings may change at any time and may differ between eligibility responses. **Don't build programmatic logic that depends on matching these strings exactly.**
- **`dependents[].responseProvider.address`** (`object`)
- **`dependents[].responseProvider.address.address1`** (`string`): The first line of the address.
- **`dependents[].responseProvider.address.address2`** (`string`): The second line of the address.
- **`dependents[].responseProvider.address.city`** (`string`): The city.
- **`dependents[].responseProvider.address.countryCode`** (`string`): The two-letter country code from [Part 1 of ISO 3166](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2).
- **`dependents[].responseProvider.address.countrySubDivisionCode`** (`string`): The country subdivision code from [Part 2 of ISO 3166](https://en.wikipedia.org/wiki/ISO_3166-2).
- **`dependents[].responseProvider.address.postalCode`** (`string`): The United States or Canadian postal code, excluding punctuation and blanks.
- **`dependents[].responseProvider.address.state`** (`string`): The US state or Canadian province code with unknown option. For example, `TN` for Tennessee or `NB` for New Brunswick.

Payers may sometimes return other non-compliant values.
  - Allowed values: `NL`, `PE`, `NS`, `NB`, `QC`, `ON`, `MB`, `SK`, `AB`, `BC`, `YT`, `NT`, `NU`, `DC`, `AS`, `GU`, `MP`, `PR`, `UM`, `VI`, `AA`, `AE`, `AP`, `AK`, `AL`, `AR`, `AZ`, `CA`, `CO`, `CT`, `DE`, `FL`, `GA`, `HI`, `IA`, `ID`, `IL`, `IN`, `KS`, `KY`, `LA`, `MA`, `MD`, `ME`, `MI`, `MN`, `MO`, `MS`, `MT`, `NC`, `ND`, `NE`, `NH`, `NJ`, `NM`, `NV`, `NY`, `OH`, `OK`, `OR`, `PA`, `RI`, `SC`, `SD`, `TN`, `TX`, `UT`, `VA`, `VT`, `WA`, `WI`, `WV`, `WY`
- **`dependents[].responseProvider.employersId`** (`string`): Deprecated; The provider's identification number for the entity receiving the benefits information.
This shape is deprecated: This property is no longer used.
- **`dependents[].responseProvider.entityIdentifier`** (`string`): A code identifying the type of provider.

Payers may sometimes return other non-compliant values.
  - Allowed values: `Provider`, `Third-Party Administrator`, `Employer`, `Hospital`, `Facility`, `Gateway Provider`, `Plan Sponsor`, `Payer`
- **`dependents[].responseProvider.entityType`** (`string`): The type of entity.

Payers may sometimes return other non-compliant values.
  - Allowed values: `Person`, `Non-Person Entity`
- **`dependents[].responseProvider.federalTaxpayersIdNumber`** (`string`): The Federal Taxpayer Identification Number (also known as an EIN).
- **`dependents[].responseProvider.middleName`** (`string`): The provider's middle name. This applies to providers that are an individual.
- **`dependents[].responseProvider.npi`** (`string`): The provider's [National Provider Identifier (NPI)](https://www.stedi.com/docs/healthcare/national-provider-identifier).
- **`dependents[].responseProvider.payorIdentification`** (`string`): The payer identification.
- **`dependents[].responseProvider.pharmacyProcessorNumber`** (`string`): The pharmacy processor number.
- **`dependents[].responseProvider.providerCode`** (`string`): A code indicating the type of provider. Visit [Eligibility code lists](https://www.stedi.com/docs/healthcare/eligibility-code-lists#provider-codes) for a complete list.

Payers may sometimes return other non-compliant values.
  - Allowed values: `AD`, `AT`, `BI`, `CO`, `CV`, `H`, `HH`, `LA`, `OT`, `P1`, `P2`, `PC`, `PE`, `R`, `RF`, `SB`, `SK`, `SU`
- **`dependents[].responseProvider.providerFirstName`** (`string`): The provider's first name. This applies to providers that are an individual.
- **`dependents[].responseProvider.providerName`** (`string`): The provider's last name. This applies to providers that are an individual.
- **`dependents[].responseProvider.providerOrgName`** (`string`): The provider's organization name.
- **`dependents[].responseProvider.referenceIdentification`** (`string`): The Health Care Provider Taxonomy Code.
- **`dependents[].responseProvider.serviceProviderNumber`** (`string`): The service provider number. This is an identification number assigned by the payer.
- **`dependents[].responseProvider.servicesPlanID`** (`string`): The Centers for Medicare and Medicaid Services (CMS) Plan ID.
- **`dependents[].responseProvider.ssn`** (`string`): The Social Security Number (SSN).
- **`dependents[].responseProvider.suffix`** (`string`): The provider's name suffix, such as Jr., Sr., or III.
- **`dependents[].ssn`** (`string`): The member's Social Security Number (SSN).
- **`dependents[].startDateTimePeriod`** (`string`): The military service start date.
- **`dependents[].suffix`** (`string`): The name suffix, such as Jr., Sr., or III.
- **`dependents[].uniqueHealthIdentifier`** (`string`): The member's unique health identifier.
- **`eligibilitySearchId`** (`string`): An identifier that allows Stedi to group eligibility checks for the same patient into a unified record in the Stedi portal called an [eligibility search](https://www.stedi.com/docs/healthcare/eligibility-searches-view).

This property is for use by Stedi tools only, such as Stedi's MCP server.
- **`errors`** (`array of EligibilityCheckError objects`): When a payer rejects your eligibility check, the response contains one or more [`AAA` errors](https://www.stedi.com/docs/healthcare/eligibility-troubleshooting#payer-aaa-errors) that specify the reasons for the rejection and any recommended follow-up actions.

Any errors that occur at the `payer`, `provider`, `subscriber`, or `dependents` levels are also included in this array, allowing you to review all errors in a central location. If there are no `AAA` errors, this array will be empty.
- **`errors[].code`** (`string`): This is a superset of all the possible codes in the sub-loops, as all errors are bubbled up to the top level of the response

Payers may sometimes return other non-compliant values.
  - Allowed values: `04`, `15`, `33`, `35`, `41`, `42`, `43`, `44`, `45`, `46`, `47`, `48`, `49`, `50`, `51`, `52`, `53`, `54`, `55`, `56`, `57`, `58`, `60`, `61`, `62`, `63`, `64`, `65`, `66`, `67`, `68`, `69`, `70`, `71`, `72`, `73`, `74`, `75`, `76`, `77`, `78`, `79`, `80`, `97`, `98`, `AA`, `AE`, `AF`, `AG`, `AO`, `CI`, `E8`, `IA`, `MA`, `T4`
- **`errors[].description`** (`string`): The error description.
- **`errors[].field`** (`string`): The error type, `AAA`.
- **`errors[].followupAction`** (`string`): Payers may sometimes return other non-compliant values.
  - Allowed values: `Please Correct and Resubmit`, `Resubmission Not Allowed`, `Please Resubmit Original Transaction`, `Resubmission Allowed`, `Do Not Resubmit; Inquiry Initiated to a Third Party`, `Please Wait 30 Days and Resubmit`, `Please Wait 10 Days and Resubmit`, `Do Not Resubmit; We Will Hold Your Request and Respond Again Shortly`
- **`errors[].location`** (`string`): The location of the error within the original X12 EDI response.
- **`errors[].possibleResolutions`** (`string`): Information to help you correct the error.

We periodically update this guidance, so these strings may change at any time and may differ between eligibility responses. **Don't build programmatic logic that depends on matching these strings exactly.**
- **`id`** (`string`): A globally unique identifier for this eligibility check across all Stedi accounts. It's formatted as `ec_<uuid>`. For example: `ec_550e8400-e29b-41d4-a716-446655440000`. You can use this ID to track this eligibility check and to construct deep links to eligibility checks in the Stedi portal.
- **`implementationTransactionSetSyntaxError`** (`string`): The implementation transaction set error code provided in `IK502` of the 999 transaction.
- **`meta`** (`object`): Metadata about the response. Stedi uses this data for tracking and troubleshooting.
- **`meta.applicationMode`** (`string`): The type of data in the request. This is either `production` when you send a request with a standard API key or `test` when you send a request in test mode with a [test API key](https://www.stedi.com/docs/api-reference/index#api-key-types). The `information` value is not currently used.

Payers may sometimes return other non-compliant values.
  - Allowed values: `production`, `test`, `information`
- **`meta.billerId`** (`string`): The biller ID Stedi assigns to this request.
- **`meta.outboundTraceId`** (`string`): The transaction identifier in the request's `BHT03` element. This identifier isn't guaranteed to be globally unique. We recommend using the `id` property to identify and track eligibility checks instead.
- **`meta.senderId`** (`string`): The sender ID Stedi assigns to this request.
- **`meta.submitterId`** (`string`): The submitter ID Stedi assigns to this request.
- **`meta.traceId`** (`string`): The transaction identifier in the response's `BHT03` element. This should be the same as the `outboundTraceId`.
- **`payer`** (`object`): Information about the payer providing the benefits information. The response will always include the payer's business name and an identifier, such as the payer's tax ID. Most payers also include contact information.
- **`payer.aaaErrors`** (`array of EligibilityCheckPayerError objects`)
- **`payer.aaaErrors[].code`** (`string`): Payers may sometimes return other non-compliant values.
  - Allowed values: `04`, `41`, `42`, `79`, `80`, `T4`
- **`payer.aaaErrors[].description`** (`string`): The error description.
- **`payer.aaaErrors[].field`** (`string`): The error type, `AAA`.
- **`payer.aaaErrors[].followupAction`** (`string`): Payers may sometimes return other non-compliant values.
  - Allowed values: `Please Correct and Resubmit`, `Resubmission Not Allowed`, `Please Resubmit Original Transaction`, `Resubmission Allowed`, `Do Not Resubmit; Inquiry Initiated to a Third Party`, `Please Wait 30 Days and Resubmit`, `Please Wait 10 Days and Resubmit`, `Do Not Resubmit; We Will Hold Your Request and Respond Again Shortly`
- **`payer.aaaErrors[].location`** (`string`): The location of the error within the original X12 EDI response.
- **`payer.aaaErrors[].possibleResolutions`** (`string`): Information to help you correct the error.

We periodically update this guidance, so these strings may change at any time and may differ between eligibility responses. **Don't build programmatic logic that depends on matching these strings exactly.**
- **`payer.centersForMedicareAndMedicaidPlanId`** (`string`): The payer's Centers for Medicare and Medicaid Services PlanID.
- **`payer.contactInformation`** (`object`)
- **`payer.contactInformation.contacts`** (`array of Contacts objects`): The contact information.
- **`payer.contactInformation.contacts[].communicationMode`** (`string`): Payers may sometimes return other non-compliant values.
  - Allowed values: `Electronic Data Interchange Access Number`, `Electronic Mail`, `Facsimile`, `Telephone`, `Uniform Resource Locator (URL)`, `Telephone Extension`, `Work Phone Number`
- **`payer.contactInformation.contacts[].communicationNumber`** (`string`): The communication number referenced in `communicationMode`. It includes the country or area code when applicable. 
 
 Note that phone numbers are formatted as AAABBBCCCC, where AAA represents the area code, BBB represents the telephone number prefix, and CCCC represents the telephone number. Phone numbers are provided without separators, such as dashes or parentheses. For example, `5551123345` for `555-112-3345`.
- **`payer.contactInformation.name`** (`string`): The name of the contact person.
- **`payer.employersId`** (`string`): Deprecated; The payer's identification number for the entity receiving the benefits information.
This shape is deprecated: This property is no longer used.
- **`payer.entityIdentifier`** (`string`): The entity identifier code for the payer.

Payers may sometimes return other non-compliant values.
  - Allowed values: `Third-Party Administrator`, `Employer`, `Gateway Provider`, `Plan Sponsor`, `Payer`
- **`payer.entityType`** (`string`): The type of entity.

Payers may sometimes return other non-compliant values.
  - Allowed values: `Person`, `Non-Person Entity`
- **`payer.etin`** (`string`): The payer's Electronic Transmitter Identification Number (ETIN).
- **`payer.federalTaxpayersIdNumber`** (`string`): The payer's federal taxpayer's identification number.
- **`payer.firstName`** (`string`): The payer's first name, when the payer is an individual (not commonly used).
- **`payer.lastName`** (`string`): The payer's last name. Used when the payer is an individual (not commonly used).
- **`payer.middleName`** (`string`): The payer's middle name or initial, when the payer is an individual (not commonly used).
- **`payer.naic`** (`string`): The payer's National Association of Insurance Commissioners (NAIC) identification number.
- **`payer.name`** (`string`): The payer's business name, when the payer is not a person.
- **`payer.npi`** (`string`): The payer's [National Provider Identifier (NPI)](https://www.stedi.com/docs/healthcare/national-provider-identifier).
- **`payer.payorIdentification`** (`string`): The payer identification.
- **`payer.suffix`** (`string`): The payer's name suffix, such as Jr. or III. Used when the payer is an individual (not commonly used).
- **`planDateInformation`** (`object`): Contains the dates associated with the subscriber and dependents' (if applicable) insurance plan. This information is used to determine their eligibility for benefits.
- Most fields contain a single date, but some can contain either a single date or a date range. Each field's documentation specifies its format.
- Fields that can contain either a single date or date range include: `plan`, `eligibility`, `planBegin`, `admission`, and `service`.
- The provided dates apply to every benefit within the patient's health plan unless specifically noted within a `benefitsInformation[].benefitsDateInformation` object.
- If the payer sends back date(s) that are different for the subscriber and dependents, Stedi includes only the dates for the dependent in this object and omits the subscriber's date(s). Dependents can have different coverage dates than the subscriber due to qualifying life events, such as starting a new job or passing the age limit for coverage through their parent's plan.
- Most payers return either `plan` or `planBegin` and `planEnd`, but the exact dates returned depend on the payer's discretion and the patient's insurance plan.
- If the date of service is after the earliest ending `plan`, `eligibility`, `planEnd`, `eligibilityEnd`, `policyEffective`, or `policyExpiration` value, the patient likely doesn't have active coverage.
- **`planDateInformation.added`** (`string`): Added date. Payers may return this information in the case of retroactive eligibility.
- **`planDateInformation.admission`** (`string`): The admission date or dates.
- **`planDateInformation.benefit`** (`string`): The benefit date.
- **`planDateInformation.benefitBegin`** (`string`): The benefit begin date.
- **`planDateInformation.benefitEnd`** (`string`): The benefit end date.
- **`planDateInformation.certification`** (`string`): The certification date.
- **`planDateInformation.cobraBegin`** (`string`): The date when COBRA coverage begins.
- **`planDateInformation.cobraEnd`** (`string`): The date when COBRA coverage ends.
- **`planDateInformation.completion`** (`string`): The completion date.
- **`planDateInformation.coordinationOfBenefits`** (`string`): The coordination of benefits date.
- **`planDateInformation.dateOfDeath`** (`string`): The date of death. Payers may return this information in the case of a deceased subscriber or dependent.
- **`planDateInformation.dateOfLastUpdate`** (`string`): The date when the plan information was last updated.
- **`planDateInformation.discharge`** (`string`): The discharge date.
- **`planDateInformation.effectiveDateOfChange`** (`string`): The effective date of change.
- **`planDateInformation.eligibility`** (`string`): Plan eligibility dates.
- **`planDateInformation.eligibilityBegin`** (`string`): The date when the patient is first eligible for benefits under the plan.
- **`planDateInformation.eligibilityEnd`** (`string`): The date when the patient is no longer eligible for benefits under the plan.
- **`planDateInformation.enrollment`** (`string`): The date when the patient is enrolled in the plan.
- **`planDateInformation.issue`** (`string`): The issue date.
- **`planDateInformation.latestVisitOrConsultation`** (`string`): The latest visit or consultation date.
- **`planDateInformation.periodEnd`** (`string`): The end of a period.
- **`planDateInformation.periodStart`** (`string`): The start of a period.
- **`planDateInformation.plan`** (`string`): Plan effective dates.
- **`planDateInformation.planBegin`** (`string`): The date coverage from the plan begins.
- **`planDateInformation.planEnd`** (`string`): The date coverage from the plan ends.
- **`planDateInformation.policyEffective`** (`string`): The date when the policy becomes effective.
- **`planDateInformation.policyExpiration`** (`string`): The date when the policy expires.
- **`planDateInformation.premiumPaidToDateBegin`** (`string`): The start of the period when the plan premium was paid in full.
- **`planDateInformation.premiumPaidToDateEnd`** (`string`): The end of period when the plan premium payments are up-to-date.
- **`planDateInformation.primaryCareProvider`** (`string`): The primary care provider date.
- **`planDateInformation.service`** (`string`): The service date or dates.
- **`planDateInformation.status`** (`string`): The status date.
- **`planInformation`** (`object`): Additional identification for the subscriber's healthcare plan.
- **`planInformation.agencyClaimNumber`** (`string`): The agency claim number, only used when the information source is a Property and Casualty payer.
- **`planInformation.alternativeListId`** (`string`): The alternative list ID - identifies a list of alternative drugs with the associated formulary status for the patient.
- **`planInformation.caseNumber`** (`string`): The case number
- **`planInformation.centersForMedicareAndMedicaidServicesNPI`** (`string`): The [National Provider Identifier (NPI)](https://www.stedi.com/docs/healthcare/national-provider-identifier) assigned by the Centers for Medicare and Medicaid Services
- **`planInformation.classOfContractCode`** (`string`): The class of contract code - used to identify the applicable class of contract for claims processing.
- **`planInformation.contractNumber`** (`string`): The contract number of a contract between the payer and the provider that requested the eligibility check.
- **`planInformation.coverageListId`** (`string`): The coverage list ID - identifies a list of drugs that have coverage limitations for the patient.
- **`planInformation.drugFormularyNumber`** (`string`): The drug formulary number
- **`planInformation.electronicDevicePin`** (`string`): The electronic device pin number
- **`planInformation.eligibilityCategory`** (`string`): The eligibility category
- **`planInformation.facilityIdNumber`** (`string`): The facility ID number
- **`planInformation.facilityNetworkIdentificationNumber`** (`string`): The facility network identification number
- **`planInformation.familyUnitNumber`** (`string`): The family unit number
- **`planInformation.federalTaxpayersIdentificationNumber`** (`string`): The federal taxpayer's identification number
- **`planInformation.groupDescription`** (`string`): The group description
- **`planInformation.groupNumber`** (`string`): The group number
- **`planInformation.hicNumber`** (`string`): The health insurance claim number (HICN). Note that CMS previously used the HICN to uniquely identify Medicare beneficiaries. However, they have since transitioned to a new, randomized Medicare Beneficiary Identifier (MBI) format. The HICN is no longer used for Medicare transactions but this property is now used by some payers to return MBI. If you receive a value in this property that matches the format specified in the [Medicare Beneficiary Identifier documentation](https://www.cms.gov/training-education/partner-outreach-resources/new-medicare-card/medical-beneficiary-identifiers-mbis), the number is likely an MBI and we recommend sending a follow-up eligibility check to CMS for additional benefits data. This most commonly occurs with patients who are covered by both Medicare and Medicaid.
- **`planInformation.idCardNumber`** (`string`): The identity card number, used when the Identity Card Number is different than the Member Identification Number.
- **`planInformation.idCardSerialNumber`** (`string`): The identification card serial number. The Identification Card Serial Number uniquely identifies the identification card when multiple cards have been or will be issued to a member, such as a replacement card.
- **`planInformation.insurancePolicyNumber`** (`string`): The insurance policy number
- **`planInformation.issueNumber`** (`string`): The issue number
- **`planInformation.medicaidProviderNumber`** (`string`): The Medicaid provider number
- **`planInformation.medicaidRecipientIdNumber`** (`string`): The Medicaid recipient identification number
- **`planInformation.medicalAssistanceCategory`** (`string`): The medical assistance category
- **`planInformation.medicalRecordIdentificationNumber`** (`string`): The medical record identification number
- **`planInformation.medicareProviderNumber`** (`string`): The Medicare provider number
- **`planInformation.memberId`** (`string`): The member identification number - only used when checking eligibility with a Workers' Compensation or Property and Casualty insurer.
- **`planInformation.patientAccountNumber`** (`string`): The patient account number. If you included this value in the original eligibility request, the payer will return the same value here in the response.
- **`planInformation.personalIdentificationNumber`** (`string`): The personal identification number (PIN)
- **`planInformation.planDescription`** (`string`): The plan description
- **`planInformation.planNetworkIdDescription`** (`string`): The plan, group, or plan network name
- **`planInformation.planNetworkIdNumber`** (`string`): The plan network identification number
- **`planInformation.planNumber`** (`string`): The plan number
- **`planInformation.policyNumber`** (`string`): The group or policy number
- **`planInformation.priorAuthorizationNumber`** (`string`): The prior authorization number
- **`planInformation.priorIdNumber`** (`string`): The prior identifier number
- **`planInformation.referralNumber`** (`string`): The referral number
- **`planInformation.socialSecurityNumber`** (`string`): The social security number
- **`planInformation.stateLicenseNumber`** (`string`): The state license number
- **`planInformation.submitterIdentificationNumber`** (`string`): The submitter identification number
- **`planInformation.userIdentification`** (`string`): The user identification
- **`planStatus`** (`array of PlanStatus objects`): Please use `benefitsInformation` instead.
- **`planStatus[].planDetails`** (`string`)
- **`planStatus[].serviceTypeCodes`** (`array of strings`): Service Type Codes (STCs) related to the benefit type. For example, `7` - Anesthesia. Visit [Service Type Codes](https://www.stedi.com/docs/healthcare/send-eligibility-checks#service-type-codes) for a complete list.

This list is specific to X12 version 005010, which is the mandated version for eligibility checks. It differs from the current [X12 Service Type Codes](https://x12.org/codes/service-type-codes) list, which applies to X12 versions later than 005010.

Payers may sometimes return other non-compliant values.
- **`planStatus[].status`** (`string`)
- **`planStatus[].statusCode`** (`string`)
- **`provider`** (`object`): Information about the entity that submitted the original eligibility check request. This may be an individual practitioner, a medical group, a hospital, or another type of healthcare provider. This object will always include at least one identifier, such as the provider's [NPI](https://www.stedi.com/docs/healthcare/national-provider-identifier), tax ID, or EIN.
- **`provider.aaaErrors`** (`array of EligibilityCheckProviderError objects`)
- **`provider.aaaErrors[].code`** (`string`): Payers may sometimes return other non-compliant values.
  - Allowed values: `15`, `41`, `43`, `44`, `45`, `46`, `47`, `48`, `50`, `51`, `79`, `97`, `T4`
- **`provider.aaaErrors[].description`** (`string`): The error description.
- **`provider.aaaErrors[].field`** (`string`): The error type, `AAA`.
- **`provider.aaaErrors[].followupAction`** (`string`): Payers may sometimes return other non-compliant values.
  - Allowed values: `Please Correct and Resubmit`, `Resubmission Not Allowed`, `Resubmission Allowed`, `Do Not Resubmit; Inquiry Initiated to a Third Party`, `Please Wait 30 Days and Resubmit`, `Please Wait 10 Days and Resubmit`, `Do Not Resubmit; We Will Hold Your Request and Respond Again Shortly`
- **`provider.aaaErrors[].location`** (`string`): The location of the error within the original X12 EDI response.
- **`provider.aaaErrors[].possibleResolutions`** (`string`): Information to help you correct the error.

We periodically update this guidance, so these strings may change at any time and may differ between eligibility responses. **Don't build programmatic logic that depends on matching these strings exactly.**
- **`provider.address`** (`object`)
- **`provider.address.address1`** (`string`): The first line of the address.
- **`provider.address.address2`** (`string`): The second line of the address.
- **`provider.address.city`** (`string`): The city.
- **`provider.address.countryCode`** (`string`): The two-letter country code from [Part 1 of ISO 3166](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2).
- **`provider.address.countrySubDivisionCode`** (`string`): The country subdivision code from [Part 2 of ISO 3166](https://en.wikipedia.org/wiki/ISO_3166-2).
- **`provider.address.postalCode`** (`string`): The United States or Canadian postal code, excluding punctuation and blanks.
- **`provider.address.state`** (`string`): The US state or Canadian province code with unknown option. For example, `TN` for Tennessee or `NB` for New Brunswick.

Payers may sometimes return other non-compliant values.
  - Allowed values: `NL`, `PE`, `NS`, `NB`, `QC`, `ON`, `MB`, `SK`, `AB`, `BC`, `YT`, `NT`, `NU`, `DC`, `AS`, `GU`, `MP`, `PR`, `UM`, `VI`, `AA`, `AE`, `AP`, `AK`, `AL`, `AR`, `AZ`, `CA`, `CO`, `CT`, `DE`, `FL`, `GA`, `HI`, `IA`, `ID`, `IL`, `IN`, `KS`, `KY`, `LA`, `MA`, `MD`, `ME`, `MI`, `MN`, `MO`, `MS`, `MT`, `NC`, `ND`, `NE`, `NH`, `NJ`, `NM`, `NV`, `NY`, `OH`, `OK`, `OR`, `PA`, `RI`, `SC`, `SD`, `TN`, `TX`, `UT`, `VA`, `VT`, `WA`, `WI`, `WV`, `WY`
- **`provider.employersId`** (`string`): Deprecated; The provider's identification number for the entity receiving the benefits information.
This shape is deprecated: This property is no longer used.
- **`provider.entityIdentifier`** (`string`): A code identifying the type of provider.

Payers may sometimes return other non-compliant values.
  - Allowed values: `Provider`, `Third-Party Administrator`, `Employer`, `Hospital`, `Facility`, `Gateway Provider`, `Plan Sponsor`, `Payer`
- **`provider.entityType`** (`string`): The type of entity.

Payers may sometimes return other non-compliant values.
  - Allowed values: `Person`, `Non-Person Entity`
- **`provider.federalTaxpayersIdNumber`** (`string`): The Federal Taxpayer Identification Number (also known as an EIN).
- **`provider.middleName`** (`string`): The provider's middle name. This applies to providers that are an individual.
- **`provider.npi`** (`string`): The provider's [National Provider Identifier (NPI)](https://www.stedi.com/docs/healthcare/national-provider-identifier).
- **`provider.payorIdentification`** (`string`): The payer identification.
- **`provider.pharmacyProcessorNumber`** (`string`): The pharmacy processor number.
- **`provider.providerCode`** (`string`): A code indicating the type of provider. Visit [Eligibility code lists](https://www.stedi.com/docs/healthcare/eligibility-code-lists#provider-codes) for a complete list.

Payers may sometimes return other non-compliant values.
  - Allowed values: `AD`, `AT`, `BI`, `CO`, `CV`, `H`, `HH`, `LA`, `OT`, `P1`, `P2`, `PC`, `PE`, `R`, `RF`, `SB`, `SK`, `SU`
- **`provider.providerFirstName`** (`string`): The provider's first name. This applies to providers that are an individual.
- **`provider.providerName`** (`string`): The provider's last name. This applies to providers that are an individual.
- **`provider.providerOrgName`** (`string`): The provider's organization name.
- **`provider.referenceIdentification`** (`string`): The Health Care Provider Taxonomy Code.
- **`provider.serviceProviderNumber`** (`string`): The service provider number. This is an identification number assigned by the payer.
- **`provider.servicesPlanID`** (`string`): The Centers for Medicare and Medicaid Services (CMS) Plan ID.
- **`provider.ssn`** (`string`): The Social Security Number (SSN).
- **`provider.suffix`** (`string`): The provider's name suffix, such as Jr., Sr., or III.
- **`reassociationKey`** (`string`)
- **`status`** (`string`): Errors Stedi encountered when generating or sending the final X12 EDI transaction to the payer. These can include validation errors and payer unavailable errors that prevent delivery.
- **`subscriber`** (`object`): Information about the primary policyholder for the insurance plan listed in the original eligibility check request. The response will always include either the subscriber's name or member ID for identification, but most payers will also return the subscriber's date of birth and other identifying information.
- **`subscriber.aaaErrors`** (`array of EligibilityCheckSubscriberError objects`)
- **`subscriber.aaaErrors[].code`** (`string`): Payers may sometimes return other non-compliant values.
  - Allowed values: `15`, `33`, `35`, `42`, `43`, `45`, `47`, `48`, `49`, `51`, `52`, `53`, `54`, `55`, `56`, `57`, `58`, `60`, `61`, `62`, `63`, `69`, `70`, `71`, `72`, `73`, `74`, `75`, `76`, `78`, `98`, `AA`, `AE`, `AF`, `AG`, `AO`, `CI`, `E8`, `IA`, `MA`
- **`subscriber.aaaErrors[].description`** (`string`): The error description.
- **`subscriber.aaaErrors[].field`** (`string`): The error type, `AAA`.
- **`subscriber.aaaErrors[].followupAction`** (`string`): Payers may sometimes return other non-compliant values.
  - Allowed values: `Please Correct and Resubmit`, `Resubmission Not Allowed`, `Resubmission Allowed`, `Do Not Resubmit; Inquiry Initiated to a Third Party`, `Please Wait 30 Days and Resubmit`, `Please Wait 10 Days and Resubmit`, `Do Not Resubmit; We Will Hold Your Request and Respond Again Shortly`
- **`subscriber.aaaErrors[].location`** (`string`): The location of the error within the original X12 EDI response.
- **`subscriber.aaaErrors[].possibleResolutions`** (`string`): Information to help you correct the error.

We periodically update this guidance, so these strings may change at any time and may differ between eligibility responses. **Don't build programmatic logic that depends on matching these strings exactly.**
- **`subscriber.address`** (`object`)
- **`subscriber.address.address1`** (`string`): The first line of the address.
- **`subscriber.address.address2`** (`string`): The second line of the address.
- **`subscriber.address.city`** (`string`): The city.
- **`subscriber.address.countryCode`** (`string`): The two-letter country code from [Part 1 of ISO 3166](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2).
- **`subscriber.address.countrySubDivisionCode`** (`string`): The country subdivision code from [Part 2 of ISO 3166](https://en.wikipedia.org/wiki/ISO_3166-2).
- **`subscriber.address.postalCode`** (`string`): The United States or Canadian postal code, excluding punctuation and blanks.
- **`subscriber.address.state`** (`string`): The US state or Canadian province code with unknown option. For example, `TN` for Tennessee or `NB` for New Brunswick.

Payers may sometimes return other non-compliant values.
  - Allowed values: `NL`, `PE`, `NS`, `NB`, `QC`, `ON`, `MB`, `SK`, `AB`, `BC`, `YT`, `NT`, `NU`, `DC`, `AS`, `GU`, `MP`, `PR`, `UM`, `VI`, `AA`, `AE`, `AP`, `AK`, `AL`, `AR`, `AZ`, `CA`, `CO`, `CT`, `DE`, `FL`, `GA`, `HI`, `IA`, `ID`, `IL`, `IN`, `KS`, `KY`, `LA`, `MA`, `MD`, `ME`, `MI`, `MN`, `MO`, `MS`, `MT`, `NC`, `ND`, `NE`, `NH`, `NJ`, `NM`, `NV`, `NY`, `OH`, `OK`, `OR`, `PA`, `RI`, `SC`, `SD`, `TN`, `TX`, `UT`, `VA`, `VT`, `WA`, `WI`, `WV`, `WY`
- **`subscriber.birthSequenceNumber`** (`string`): The number assigned to each family member born with the same birth date, such as twins or triplets. Indicates the birth order when there are multiple births associated with the provided birth date.
- **`subscriber.dateOfBirth`** (`string`): The member's date of birth.
- **`subscriber.dateTimePeriod`** (`string`): The military service date.
- **`subscriber.dateTimePeriodFormatQualifier`** (`string`): Payers may sometimes return other non-compliant values.
  - Allowed values: `D8`, `RD8`
- **`subscriber.description`** (`string`): Context that identifies the exact military unit. Used to report military service data.
- **`subscriber.employmentStatusCode`** (`string`): Payers may sometimes return other non-compliant values.
  - Allowed values: `AE`, `AO`, `AS`, `AT`, `AU`, `CC`, `DD`, `HD`, `IR`, `LX`, `PE`, `RE`, `RM`, `RR`, `RU`
- **`subscriber.endDateTimePeriod`** (`string`): The military service end date.
- **`subscriber.entityIdentifier`** (`string`): The entity identifier for the subscriber.
  - Allowed values: `Insured or Subscriber`
- **`subscriber.entityType`** (`string`): The type of entity.

Payers may sometimes return other non-compliant values.
  - Allowed values: `Person`, `Non-Person Entity`
- **`subscriber.firstName`** (`string`): The member's first name.
- **`subscriber.gender`** (`string`)
  - Allowed values: `M`, `F`, `U`
- **`subscriber.governmentServiceAffiliationCode`** (`string`): Payers may sometimes return other non-compliant values.
  - Allowed values: `A`, `B`, `C`, `D`, `E`, `F`, `G`, `H`, `I`, `J`, `K`, `L`, `M`, `N`, `O`, `Q`, `R`, `S`, `U`, `W`
- **`subscriber.groupDescription`** (`string`): Group name
- **`subscriber.groupNumber`** (`string`): The group number associated with the insurance policy.
- **`subscriber.healthCareDiagnosisCodes`** (`array of HealthCareDiagnosisCode objects`)
- **`subscriber.healthCareDiagnosisCodes[].diagnosisCode`** (`string`): The diagnosis code. The decimal points are omitted in diagnosis codes - the decimal point is assumed.
- **`subscriber.healthCareDiagnosisCodes[].diagnosisTypeCode`** (`string`): The type of diagnosis code provided. It can be `ABK` - International Classification of Diseases Clinical Modification (ICD-10-CM) Principal Diagnosis or `BK` - International Classification of Diseases Clinical Modification (ICD-9-CM) Principal Diagnosis.
- **`subscriber.informationStatusCode`** (`string`): Payers may sometimes return other non-compliant values.
  - Allowed values: `A`, `C`, `L`, `O`, `P`, `S`, `T`
- **`subscriber.insuredIndicator`** (`string`): Indicates the status of the insured. For the subscriber, this is always `Y`.
  - Allowed values: `Y`
- **`subscriber.lastName`** (`string`): The member's last name.
- **`subscriber.maintenanceReasonCode`** (`string`): Code identifying the reason for the changes to subscriber identifying information, such as name, date of birth, or address. This is always `25`

Payers may sometimes return other non-compliant values.
  - Allowed values: `25`
- **`subscriber.maintenanceTypeCode`** (`string`): The maintenance type code. Used to acknowledge a change in the identifying elements for the subscriber from those submitted in the original eligibility check request. It can also be included when the payer used the birth sequence number from the original request to locate the subscriber in their system. This is always `001`

Payers may sometimes return other non-compliant values.
  - Allowed values: `001`
- **`subscriber.memberId`** (`string`): The member ID for the insurance policy.
- **`subscriber.middleName`** (`string`): The member's middle name or initial.
- **`subscriber.militaryServiceRankCode`** (`string`): Payers may sometimes return other non-compliant values.
  - Allowed values: `A1`, `A2`, `A3`, `B1`, `B2`, `C1`, `C2`, `C3`, `C4`, `C5`, `C6`, `C7`, `C8`, `C9`, `E1`, `F1`, `F2`, `F3`, `F4`, `G1`, `G4`, `L1`, `L2`, `L3`, `L4`, `L5`, `L6`, `M1`, `M2`, `M3`, `M4`, `M5`, `M6`, `P1`, `P2`, `P3`, `P4`, `P5`, `R1`, `R2`, `S1`, `S2`, `S3`, `S4`, `S5`, `S6`, `S7`, `S8`, `S9`, `SA`, `SB`, `SC`, `T1`, `V1`, `W1`
- **`subscriber.planDescription`** (`string`): Plan name
- **`subscriber.planNetworkDescription`** (`string`): Plan network name
- **`subscriber.planNetworkIdNumber`** (`string`): The network identification number associated with the insurance policy.
- **`subscriber.planNumber`** (`string`): The plan number associated with the insurance policy.
- **`subscriber.relationToSubscriber`** (`string`): The name of the `relationToSubscriberCode`. For the subscriber, this is always `Self`.
  - Allowed values: `Self`
- **`subscriber.relationToSubscriberCode`** (`string`): For the subscriber, this is always `18` for Self.
  - Allowed values: `18`
- **`subscriber.responseProvider`** (`object`): Information about the entity that submitted the original eligibility check request. This may be an individual practitioner, a medical group, a hospital, or another type of healthcare provider. This object will always include at least one identifier, such as the provider's [NPI](https://www.stedi.com/docs/healthcare/national-provider-identifier), tax ID, or EIN.
- **`subscriber.responseProvider.aaaErrors`** (`array of EligibilityCheckProviderError objects`)
- **`subscriber.responseProvider.aaaErrors[].code`** (`string`): Payers may sometimes return other non-compliant values.
  - Allowed values: `15`, `41`, `43`, `44`, `45`, `46`, `47`, `48`, `50`, `51`, `79`, `97`, `T4`
- **`subscriber.responseProvider.aaaErrors[].description`** (`string`): The error description.
- **`subscriber.responseProvider.aaaErrors[].field`** (`string`): The error type, `AAA`.
- **`subscriber.responseProvider.aaaErrors[].followupAction`** (`string`): Payers may sometimes return other non-compliant values.
  - Allowed values: `Please Correct and Resubmit`, `Resubmission Not Allowed`, `Resubmission Allowed`, `Do Not Resubmit; Inquiry Initiated to a Third Party`, `Please Wait 30 Days and Resubmit`, `Please Wait 10 Days and Resubmit`, `Do Not Resubmit; We Will Hold Your Request and Respond Again Shortly`
- **`subscriber.responseProvider.aaaErrors[].location`** (`string`): The location of the error within the original X12 EDI response.
- **`subscriber.responseProvider.aaaErrors[].possibleResolutions`** (`string`): Information to help you correct the error.

We periodically update this guidance, so these strings may change at any time and may differ between eligibility responses. **Don't build programmatic logic that depends on matching these strings exactly.**
- **`subscriber.responseProvider.address`** (`object`)
- **`subscriber.responseProvider.address.address1`** (`string`): The first line of the address.
- **`subscriber.responseProvider.address.address2`** (`string`): The second line of the address.
- **`subscriber.responseProvider.address.city`** (`string`): The city.
- **`subscriber.responseProvider.address.countryCode`** (`string`): The two-letter country code from [Part 1 of ISO 3166](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2).
- **`subscriber.responseProvider.address.countrySubDivisionCode`** (`string`): The country subdivision code from [Part 2 of ISO 3166](https://en.wikipedia.org/wiki/ISO_3166-2).
- **`subscriber.responseProvider.address.postalCode`** (`string`): The United States or Canadian postal code, excluding punctuation and blanks.
- **`subscriber.responseProvider.address.state`** (`string`): The US state or Canadian province code with unknown option. For example, `TN` for Tennessee or `NB` for New Brunswick.

Payers may sometimes return other non-compliant values.
  - Allowed values: `NL`, `PE`, `NS`, `NB`, `QC`, `ON`, `MB`, `SK`, `AB`, `BC`, `YT`, `NT`, `NU`, `DC`, `AS`, `GU`, `MP`, `PR`, `UM`, `VI`, `AA`, `AE`, `AP`, `AK`, `AL`, `AR`, `AZ`, `CA`, `CO`, `CT`, `DE`, `FL`, `GA`, `HI`, `IA`, `ID`, `IL`, `IN`, `KS`, `KY`, `LA`, `MA`, `MD`, `ME`, `MI`, `MN`, `MO`, `MS`, `MT`, `NC`, `ND`, `NE`, `NH`, `NJ`, `NM`, `NV`, `NY`, `OH`, `OK`, `OR`, `PA`, `RI`, `SC`, `SD`, `TN`, `TX`, `UT`, `VA`, `VT`, `WA`, `WI`, `WV`, `WY`
- **`subscriber.responseProvider.employersId`** (`string`): Deprecated; The provider's identification number for the entity receiving the benefits information.
This shape is deprecated: This property is no longer used.
- **`subscriber.responseProvider.entityIdentifier`** (`string`): A code identifying the type of provider.

Payers may sometimes return other non-compliant values.
  - Allowed values: `Provider`, `Third-Party Administrator`, `Employer`, `Hospital`, `Facility`, `Gateway Provider`, `Plan Sponsor`, `Payer`
- **`subscriber.responseProvider.entityType`** (`string`): The type of entity.

Payers may sometimes return other non-compliant values.
  - Allowed values: `Person`, `Non-Person Entity`
- **`subscriber.responseProvider.federalTaxpayersIdNumber`** (`string`): The Federal Taxpayer Identification Number (also known as an EIN).
- **`subscriber.responseProvider.middleName`** (`string`): The provider's middle name. This applies to providers that are an individual.
- **`subscriber.responseProvider.npi`** (`string`): The provider's [National Provider Identifier (NPI)](https://www.stedi.com/docs/healthcare/national-provider-identifier).
- **`subscriber.responseProvider.payorIdentification`** (`string`): The payer identification.
- **`subscriber.responseProvider.pharmacyProcessorNumber`** (`string`): The pharmacy processor number.
- **`subscriber.responseProvider.providerCode`** (`string`): A code indicating the type of provider. Visit [Eligibility code lists](https://www.stedi.com/docs/healthcare/eligibility-code-lists#provider-codes) for a complete list.

Payers may sometimes return other non-compliant values.
  - Allowed values: `AD`, `AT`, `BI`, `CO`, `CV`, `H`, `HH`, `LA`, `OT`, `P1`, `P2`, `PC`, `PE`, `R`, `RF`, `SB`, `SK`, `SU`
- **`subscriber.responseProvider.providerFirstName`** (`string`): The provider's first name. This applies to providers that are an individual.
- **`subscriber.responseProvider.providerName`** (`string`): The provider's last name. This applies to providers that are an individual.
- **`subscriber.responseProvider.providerOrgName`** (`string`): The provider's organization name.
- **`subscriber.responseProvider.referenceIdentification`** (`string`): The Health Care Provider Taxonomy Code.
- **`subscriber.responseProvider.serviceProviderNumber`** (`string`): The service provider number. This is an identification number assigned by the payer.
- **`subscriber.responseProvider.servicesPlanID`** (`string`): The Centers for Medicare and Medicaid Services (CMS) Plan ID.
- **`subscriber.responseProvider.ssn`** (`string`): The Social Security Number (SSN).
- **`subscriber.responseProvider.suffix`** (`string`): The provider's name suffix, such as Jr., Sr., or III.
- **`subscriber.ssn`** (`string`): The member's Social Security Number (SSN).
- **`subscriber.startDateTimePeriod`** (`string`): The military service start date.
- **`subscriber.suffix`** (`string`): The name suffix, such as Jr., Sr., or III.
- **`subscriber.uniqueHealthIdentifier`** (`string`): The member's unique health identifier.
- **`subscriberTraceNumbers`** (`array of SubscriberTraceNumber objects`): A unique identifier for the eligibility request. It's used to trace the transaction. Stedi always generates a trace number for internal tracking, and the payer may generate one as well. You can also optionally [supply your own trace number](https://www.stedi.com/docs/healthcare/send-eligibility-checks#trn) in a `TRN` segment.

Stedi returns its internal trace number in this array as well as the trace numbers from you and the payer (if provided).
- **`subscriberTraceNumbers[].originatingCompanyIdentifier`** (`string`): The identifier of the organization that assigned the trace number.
- **`subscriberTraceNumbers[].referenceIdentification`** (`string`): The unique trace number assigned to the transaction.
- **`subscriberTraceNumbers[].secondaryReferenceIdentification`** (`string`): Identifies a subdivision within the organization that assigned the trace number.
- **`subscriberTraceNumbers[].traceType`** (`string`): The full name of the `traceTypeCode`. For example `Current Transaction Trace Numbers`.
- **`subscriberTraceNumbers[].traceTypeCode`** (`string`): The code that identifies the type of trace number. Can be `1` - Current Transaction Trace Numbers (refers to trace numbers assigned by the payer) or `2` - Referenced Trace Numbers (refers to numbers sent in the original eligibility check request).
- **`tradingPartnerServiceId`** (`string`): An ID for the payer you identified in the original eligibility check request. This value may differ from the `tradingPartnerServiceId` you submitted in the original request because it reflects the payer's internal concept of their ID, not necessarily the ID Stedi uses to route requests to this payer.
- **`transactionSetAcknowledgement`** (`string`): The transaction set acknowledgment code provided in in the [X12 EDI 999 response](https://portal.stedi.com/app/guides/view/hipaa/implementation-acknowledgment-x231/01HRF41ES1DVGCA6X1EHSRPFXZ#properties.heading.properties.transaction_set_response_header_AK2_loop.items.properties.transaction_set_response_trailer_IK5).
- **`warnings`** (`array of Warning objects`): Issues with your eligibility request that could affect the results, or information about the response. For example, warnings can help explain why the request was rejected.
- **`warnings[].code`** (`string`): The warning code.
- **`warnings[].description`** (`string`): The warning description.
- **`x12`** (`string`): Typically this property contains the raw X12 EDI [271 Eligibility Benefit Response](https://portal.stedi.com/app/guides/view/hipaa/health-care-eligibility-benefit-response-x279a1/01GS66YHZPB37ABF34DBPSR213) from the payer.

In some circumstances, this property may contain a [999 Implementation Acknowledgment](https://portal.stedi.com/app/guides/view/hipaa/implementation-acknowledgment-x231a1/01HMRQV0N8SPHG58M4ZG1CRHH0) instead of a 271. A 999 indicates validation errors in the X12 EDI transaction, such as improper formatting or missing or invalid values.

If the 999 is returned in this property, many of the other response properties will be empty, as they are mapped to information in the 271.

**Example:**

```json
{
  "benefitsInformation": [
    {
      "additionalInformation": [
        {
          "description": "PROVIDER IS OUT NETWORK FOR MEMBER"
        },
        {
          "description": "FUNDING TYPE = SELF INSURED - LARGE GROUP"
        }
      ],
      "benefitsDateInformation": {
        "dateOfLastUpdate": "20240731"
      },
      "benefitsRelatedEntities": [
        {
          "address": {
            "address1": "P.O. BOX 30555",
            "city": "SALT LAKE CITY",
            "postalCode": "841300555",
            "state": "UT"
          },
          "contactInformation": {
            "contacts": [
              {
                "communicationMode": "Uniform Resource Locator (URL)",
                "communicationNumber": "WWW.UHCPROVIDER.COM"
              }
            ]
          },
          "entityIdentification": "PI",
          "entityIdentificationValue": "87726",
          "entityIdentifier": "Payer",
          "entityName": "UNITEDHEALTHCARE",
          "entityType": "Non-Person Entity"
        }
      ],
      "benefitsRelatedEntity": {
        "address": {
          "address1": "P.O. BOX 30555",
          "city": "SALT LAKE CITY",
          "postalCode": "841300555",
          "state": "UT"
        },
        "contactInformation": {
          "contacts": [
            {
              "communicationMode": "Uniform Resource Locator (URL)",
              "communicationNumber": "WWW.UHCPROVIDER.COM"
            }
          ]
        },
        "entityIdentification": "PI",
        "entityIdentificationValue": "87726",
        "entityIdentifier": "Payer",
        "entityName": "UNITEDHEALTHCARE",
        "entityType": "Non-Person Entity"
      },
      "code": "1",
      "inPlanNetworkIndicator": "Not Applicable",
      "inPlanNetworkIndicatorCode": "W",
      "insuranceType": "Commercial",
      "insuranceTypeCode": "C1",
      "name": "Active Coverage",
      "planCoverage": "CHOICE PLUS",
      "serviceTypeCodes": [
        "30"
      ],
      "serviceTypes": [
        "Health Benefit Plan Coverage"
      ]
    },
    {
      "additionalInformation": [
        {
          "description": "HIGHEST BENEFIT"
        },
        {
          "description": "DEDUCTIBLE IS MET WHEN FAMILY AMOUNT IS SATISFIED"
        }
      ],
      "benefitAmount": "0",
      "code": "C",
      "coverageLevel": "Family",
      "coverageLevelCode": "FAM",
      "inPlanNetworkIndicator": "Yes",
      "inPlanNetworkIndicatorCode": "Y",
      "name": "Deductible",
      "serviceTypeCodes": [
        "30"
      ],
      "serviceTypes": [
        "Health Benefit Plan Coverage"
      ],
      "timeQualifier": "Calendar Year",
      "timeQualifierCode": "23"
    },
    {
      "additionalInformation": [
        {
          "description": "HIGHEST BENEFIT"
        },
        {
          "description": "OOP MAXIMUM IS MET WHEN FAMILY AMOUNT IS SATISFIED"
        }
      ],
      "benefitAmount": "0",
      "code": "G",
      "coverageLevel": "Family",
      "coverageLevelCode": "FAM",
      "inPlanNetworkIndicator": "Yes",
      "inPlanNetworkIndicatorCode": "Y",
      "insuranceType": "Commercial",
      "insuranceTypeCode": "C1",
      "name": "Out of Pocket (Stop Loss)",
      "serviceTypeCodes": [
        "30"
      ],
      "serviceTypes": [
        "Health Benefit Plan Coverage"
      ],
      "timeQualifier": "Calendar Year",
      "timeQualifierCode": "23"
    },
    {
      "additionalInformation": [
        {
          "description": "HIGHEST BENEFIT"
        },
        {
          "description": "DEDUCTIBLE IS MET WHEN FAMILY AMOUNT IS SATISFIED"
        }
      ],
      "benefitAmount": "0",
      "code": "C",
      "coverageLevel": "Family",
      "coverageLevelCode": "FAM",
      "inPlanNetworkIndicator": "Yes",
      "inPlanNetworkIndicatorCode": "Y",
      "name": "Deductible",
      "serviceTypeCodes": [
        "30"
      ],
      "serviceTypes": [
        "Health Benefit Plan Coverage"
      ],
      "timeQualifier": "Year to Date",
      "timeQualifierCode": "24"
    },
    {
      "additionalInformation": [
        {
          "description": "HIGHEST BENEFIT"
        },
        {
          "description": "DEDUCTIBLE IS MET WHEN FAMILY AMOUNT IS SATISFIED"
        }
      ],
      "benefitAmount": "0",
      "code": "C",
      "coverageLevel": "Family",
      "coverageLevelCode": "FAM",
      "inPlanNetworkIndicator": "Yes",
      "inPlanNetworkIndicatorCode": "Y",
      "name": "Deductible",
      "serviceTypeCodes": [
        "30"
      ],
      "serviceTypes": [
        "Health Benefit Plan Coverage"
      ],
      "timeQualifier": "Remaining",
      "timeQualifierCode": "29"
    },
    {
      "additionalInformation": [
        {
          "description": "HIGHEST BENEFIT"
        },
        {
          "description": "OOP MAXIMUM IS MET WHEN FAMILY AMOUNT IS SATISFIED"
        }
      ],
      "benefitAmount": "0",
      "code": "G",
      "coverageLevel": "Family",
      "coverageLevelCode": "FAM",
      "inPlanNetworkIndicator": "Yes",
      "inPlanNetworkIndicatorCode": "Y",
      "insuranceType": "Commercial",
      "insuranceTypeCode": "C1",
      "name": "Out of Pocket (Stop Loss)",
      "serviceTypeCodes": [
        "30"
      ],
      "serviceTypes": [
        "Health Benefit Plan Coverage"
      ],
      "timeQualifier": "Year to Date",
      "timeQualifierCode": "24"
    },
    {
      "additionalInformation": [
        {
          "description": "HIGHEST BENEFIT"
        },
        {
          "description": "OOP MAXIMUM IS MET WHEN FAMILY AMOUNT IS SATISFIED"
        }
      ],
      "benefitAmount": "0",
      "code": "G",
      "coverageLevel": "Family",
      "coverageLevelCode": "FAM",
      "inPlanNetworkIndicator": "Yes",
      "inPlanNetworkIndicatorCode": "Y",
      "insuranceType": "Commercial",
      "insuranceTypeCode": "C1",
      "name": "Out of Pocket (Stop Loss)",
      "serviceTypeCodes": [
        "30"
      ],
      "serviceTypes": [
        "Health Benefit Plan Coverage"
      ],
      "timeQualifier": "Remaining",
      "timeQualifierCode": "29"
    },
    {
      "additionalInformation": [
        {
          "description": "DEDUCTIBLE IS MET WHEN FAMILY AMOUNT IS SATISFIED"
        }
      ],
      "benefitAmount": "3200",
      "code": "C",
      "coverageLevel": "Family",
      "coverageLevelCode": "FAM",
      "inPlanNetworkIndicator": "Not Applicable",
      "inPlanNetworkIndicatorCode": "W",
      "name": "Deductible",
      "serviceTypeCodes": [
        "30"
      ],
      "serviceTypes": [
        "Health Benefit Plan Coverage"
      ],
      "timeQualifier": "Year to Date",
      "timeQualifierCode": "24"
    },
    {
      "additionalInformation": [
        {
          "description": "OOP MAXIMUM IS MET WHEN FAMILY AMOUNT IS SATISFIED"
        }
      ],
      "benefitAmount": "5555.16",
      "code": "G",
      "coverageLevel": "Family",
      "coverageLevelCode": "FAM",
      "inPlanNetworkIndicator": "Not Applicable",
      "inPlanNetworkIndicatorCode": "W",
      "insuranceType": "Commercial",
      "insuranceTypeCode": "C1",
      "name": "Out of Pocket (Stop Loss)",
      "serviceTypeCodes": [
        "30"
      ],
      "serviceTypes": [
        "Health Benefit Plan Coverage"
      ],
      "timeQualifier": "Year to Date",
      "timeQualifierCode": "24"
    },
    {
      "additionalInformation": [
        {
          "description": "OOP MAXIMUM IS MET WHEN FAMILY AMOUNT IS SATISFIED"
        }
      ],
      "benefitAmount": "15500",
      "code": "G",
      "coverageLevel": "Family",
      "coverageLevelCode": "FAM",
      "inPlanNetworkIndicator": "No",
      "inPlanNetworkIndicatorCode": "N",
      "insuranceType": "Commercial",
      "insuranceTypeCode": "C1",
      "name": "Out of Pocket (Stop Loss)",
      "serviceTypeCodes": [
        "30"
      ],
      "serviceTypes": [
        "Health Benefit Plan Coverage"
      ],
      "timeQualifier": "Calendar Year",
      "timeQualifierCode": "23"
    },
    {
      "additionalInformation": [
        {
          "description": "OOP MAXIMUM IS MET WHEN FAMILY AMOUNT IS SATISFIED"
        }
      ],
      "benefitAmount": "6850",
      "code": "G",
      "coverageLevel": "Family",
      "coverageLevelCode": "FAM",
      "inPlanNetworkIndicator": "Yes",
      "inPlanNetworkIndicatorCode": "Y",
      "insuranceType": "Commercial",
      "insuranceTypeCode": "C1",
      "name": "Out of Pocket (Stop Loss)",
      "serviceTypeCodes": [
        "30"
      ],
      "serviceTypes": [
        "Health Benefit Plan Coverage"
      ],
      "timeQualifier": "Calendar Year",
      "timeQualifierCode": "23"
    },
    {
      "additionalInformation": [
        {
          "description": "DEDUCTIBLE IS MET WHEN FAMILY AMOUNT IS SATISFIED"
        }
      ],
      "benefitAmount": "3200",
      "code": "C",
      "coverageLevel": "Family",
      "coverageLevelCode": "FAM",
      "inPlanNetworkIndicator": "Yes",
      "inPlanNetworkIndicatorCode": "Y",
      "name": "Deductible",
      "serviceTypeCodes": [
        "30"
      ],
      "serviceTypes": [
        "Health Benefit Plan Coverage"
      ],
      "timeQualifier": "Calendar Year",
      "timeQualifierCode": "23"
    },
    {
      "additionalInformation": [
        {
          "description": "DEDUCTIBLE IS MET WHEN FAMILY AMOUNT IS SATISFIED"
        }
      ],
      "benefitAmount": "0",
      "code": "C",
      "coverageLevel": "Family",
      "coverageLevelCode": "FAM",
      "inPlanNetworkIndicator": "Yes",
      "inPlanNetworkIndicatorCode": "Y",
      "name": "Deductible",
      "serviceTypeCodes": [
        "30"
      ],
      "serviceTypes": [
        "Health Benefit Plan Coverage"
      ],
      "timeQualifier": "Remaining",
      "timeQualifierCode": "29"
    },
    {
      "additionalInformation": [
        {
          "description": "DEDUCTIBLE IS MET WHEN FAMILY AMOUNT IS SATISFIED"
        }
      ],
      "benefitAmount": "5000",
      "code": "C",
      "coverageLevel": "Family",
      "coverageLevelCode": "FAM",
      "inPlanNetworkIndicator": "No",
      "inPlanNetworkIndicatorCode": "N",
      "name": "Deductible",
      "serviceTypeCodes": [
        "30"
      ],
      "serviceTypes": [
        "Health Benefit Plan Coverage"
      ],
      "timeQualifier": "Calendar Year",
      "timeQualifierCode": "23"
    },
    {
      "additionalInformation": [
        {
          "description": "OOP MAXIMUM IS MET WHEN FAMILY AMOUNT IS SATISFIED"
        }
      ],
      "benefitAmount": "1294.84",
      "code": "G",
      "coverageLevel": "Family",
      "coverageLevelCode": "FAM",
      "inPlanNetworkIndicator": "Yes",
      "inPlanNetworkIndicatorCode": "Y",
      "insuranceType": "Commercial",
      "insuranceTypeCode": "C1",
      "name": "Out of Pocket (Stop Loss)",
      "serviceTypeCodes": [
        "30"
      ],
      "serviceTypes": [
        "Health Benefit Plan Coverage"
      ],
      "timeQualifier": "Remaining",
      "timeQualifierCode": "29"
    },
    {
      "additionalInformation": [
        {
          "description": "OOP MAXIMUM IS MET WHEN FAMILY AMOUNT IS SATISFIED"
        }
      ],
      "benefitAmount": "9944.84",
      "code": "G",
      "coverageLevel": "Family",
      "coverageLevelCode": "FAM",
      "inPlanNetworkIndicator": "No",
      "inPlanNetworkIndicatorCode": "N",
      "insuranceType": "Commercial",
      "insuranceTypeCode": "C1",
      "name": "Out of Pocket (Stop Loss)",
      "serviceTypeCodes": [
        "30"
      ],
      "serviceTypes": [
        "Health Benefit Plan Coverage"
      ],
      "timeQualifier": "Remaining",
      "timeQualifierCode": "29"
    },
    {
      "additionalInformation": [
        {
          "description": "DEDUCTIBLE IS MET WHEN FAMILY AMOUNT IS SATISFIED"
        }
      ],
      "benefitAmount": "1800",
      "code": "C",
      "coverageLevel": "Family",
      "coverageLevelCode": "FAM",
      "inPlanNetworkIndicator": "No",
      "inPlanNetworkIndicatorCode": "N",
      "name": "Deductible",
      "serviceTypeCodes": [
        "30"
      ],
      "serviceTypes": [
        "Health Benefit Plan Coverage"
      ],
      "timeQualifier": "Remaining",
      "timeQualifierCode": "29"
    },
    {
      "additionalInformation": [
        {
          "description": "HIGHEST BENEFIT"
        }
      ],
      "code": "1",
      "inPlanNetworkIndicator": "Yes",
      "inPlanNetworkIndicatorCode": "Y",
      "name": "Active Coverage",
      "serviceTypeCodes": [
        "A6"
      ],
      "serviceTypes": [
        "Psychotherapy"
      ]
    },
    {
      "additionalInformation": [
        {
          "description": "ABLETO FULLY FUNDED"
        }
      ],
      "code": "1",
      "inPlanNetworkIndicator": "Yes",
      "inPlanNetworkIndicatorCode": "Y",
      "name": "Active Coverage",
      "serviceTypeCodes": [
        "A6"
      ],
      "serviceTypes": [
        "Psychotherapy"
      ]
    },
    {
      "additionalInformation": [
        {
          "description": "ABLETO PARTIALLY FUNDED"
        }
      ],
      "code": "1",
      "inPlanNetworkIndicator": "Yes",
      "inPlanNetworkIndicatorCode": "Y",
      "name": "Active Coverage",
      "serviceTypeCodes": [
        "A6"
      ],
      "serviceTypes": [
        "Psychotherapy"
      ]
    },
    {
      "code": "1",
      "inPlanNetworkIndicator": "Not Applicable",
      "inPlanNetworkIndicatorCode": "W",
      "name": "Active Coverage",
      "serviceTypeCodes": [
        "A6"
      ],
      "serviceTypes": [
        "Psychotherapy"
      ]
    },
    {
      "benefitPercent": "0.4",
      "code": "A",
      "coverageLevel": "Individual",
      "coverageLevelCode": "IND",
      "eligibilityAdditionalInformation": {
        "codeListQualifier": "Mutually Defined",
        "codeListQualifierCode": "ZZ",
        "industry": "Office",
        "industryCode": "11"
      },
      "eligibilityAdditionalInformationList": [
        {
          "codeListQualifier": "Mutually Defined",
          "codeListQualifierCode": "ZZ",
          "industry": "Office",
          "industryCode": "11"
        }
      ],
      "inPlanNetworkIndicator": "No",
      "inPlanNetworkIndicatorCode": "N",
      "name": "Co-Insurance",
      "serviceTypeCodes": [
        "A6"
      ],
      "serviceTypes": [
        "Psychotherapy"
      ],
      "timeQualifier": "Visit",
      "timeQualifierCode": "27"
    },
    {
      "benefitPercent": "0.2",
      "code": "A",
      "coverageLevel": "Individual",
      "coverageLevelCode": "IND",
      "eligibilityAdditionalInformation": {
        "codeListQualifier": "Mutually Defined",
        "codeListQualifierCode": "ZZ",
        "industry": "Office",
        "industryCode": "11"
      },
      "eligibilityAdditionalInformationList": [
        {
          "codeListQualifier": "Mutually Defined",
          "codeListQualifierCode": "ZZ",
          "industry": "Office",
          "industryCode": "11"
        }
      ],
      "inPlanNetworkIndicator": "Yes",
      "inPlanNetworkIndicatorCode": "Y",
      "name": "Co-Insurance",
      "serviceTypeCodes": [
        "A6"
      ],
      "serviceTypes": [
        "Psychotherapy"
      ],
      "timeQualifier": "Visit",
      "timeQualifierCode": "27"
    },
    {
      "additionalInformation": [
        {
          "description": "HIGHEST BENEFIT"
        }
      ],
      "benefitPercent": "0.2",
      "code": "A",
      "coverageLevel": "Individual",
      "coverageLevelCode": "IND",
      "eligibilityAdditionalInformation": {
        "codeListQualifier": "Mutually Defined",
        "codeListQualifierCode": "ZZ",
        "industry": "Office",
        "industryCode": "11"
      },
      "eligibilityAdditionalInformationList": [
        {
          "codeListQualifier": "Mutually Defined",
          "codeListQualifierCode": "ZZ",
          "industry": "Office",
          "industryCode": "11"
        }
      ],
      "inPlanNetworkIndicator": "Yes",
      "inPlanNetworkIndicatorCode": "Y",
      "name": "Co-Insurance",
      "serviceTypeCodes": [
        "A6"
      ],
      "serviceTypes": [
        "Psychotherapy"
      ],
      "timeQualifier": "Visit",
      "timeQualifierCode": "27"
    },
    {
      "additionalInformation": [
        {
          "description": "ABLETO PARTIALLY FUNDED"
        }
      ],
      "benefitPercent": "0.2",
      "code": "A",
      "coverageLevel": "Individual",
      "coverageLevelCode": "IND",
      "eligibilityAdditionalInformation": {
        "codeListQualifier": "Mutually Defined",
        "codeListQualifierCode": "ZZ",
        "industry": "Office",
        "industryCode": "11"
      },
      "eligibilityAdditionalInformationList": [
        {
          "codeListQualifier": "Mutually Defined",
          "codeListQualifierCode": "ZZ",
          "industry": "Office",
          "industryCode": "11"
        }
      ],
      "inPlanNetworkIndicator": "Yes",
      "inPlanNetworkIndicatorCode": "Y",
      "name": "Co-Insurance",
      "serviceTypeCodes": [
        "A6"
      ],
      "serviceTypes": [
        "Psychotherapy"
      ],
      "timeQualifier": "Visit",
      "timeQualifierCode": "27"
    },
    {
      "additionalInformation": [
        {
          "description": "ABLETO FULLY FUNDED"
        }
      ],
      "benefitPercent": "0",
      "code": "A",
      "coverageLevel": "Individual",
      "coverageLevelCode": "IND",
      "eligibilityAdditionalInformation": {
        "codeListQualifier": "Mutually Defined",
        "codeListQualifierCode": "ZZ",
        "industry": "Office",
        "industryCode": "11"
      },
      "eligibilityAdditionalInformationList": [
        {
          "codeListQualifier": "Mutually Defined",
          "codeListQualifierCode": "ZZ",
          "industry": "Office",
          "industryCode": "11"
        }
      ],
      "inPlanNetworkIndicator": "Yes",
      "inPlanNetworkIndicatorCode": "Y",
      "name": "Co-Insurance",
      "serviceTypeCodes": [
        "A6"
      ],
      "serviceTypes": [
        "Psychotherapy"
      ],
      "timeQualifier": "Visit",
      "timeQualifierCode": "27"
    },
    {
      "additionalInformation": [
        {
          "description": "HIGHEST BENEFIT"
        }
      ],
      "benefitAmount": "0",
      "code": "B",
      "coverageLevel": "Individual",
      "coverageLevelCode": "IND",
      "eligibilityAdditionalInformation": {
        "codeListQualifier": "Mutually Defined",
        "codeListQualifierCode": "ZZ",
        "industry": "Office",
        "industryCode": "11"
      },
      "eligibilityAdditionalInformationList": [
        {
          "codeListQualifier": "Mutually Defined",
          "codeListQualifierCode": "ZZ",
          "industry": "Office",
          "industryCode": "11"
        }
      ],
      "inPlanNetworkIndicator": "Yes",
      "inPlanNetworkIndicatorCode": "Y",
      "name": "Co-Payment",
      "serviceTypeCodes": [
        "A6"
      ],
      "serviceTypes": [
        "Psychotherapy"
      ],
      "timeQualifier": "Visit",
      "timeQualifierCode": "27"
    },
    {
      "additionalInformation": [
        {
          "description": "ABLETO PARTIALLY FUNDED"
        }
      ],
      "benefitAmount": "0",
      "code": "B",
      "coverageLevel": "Individual",
      "coverageLevelCode": "IND",
      "eligibilityAdditionalInformation": {
        "codeListQualifier": "Mutually Defined",
        "codeListQualifierCode": "ZZ",
        "industry": "Office",
        "industryCode": "11"
      },
      "eligibilityAdditionalInformationList": [
        {
          "codeListQualifier": "Mutually Defined",
          "codeListQualifierCode": "ZZ",
          "industry": "Office",
          "industryCode": "11"
        }
      ],
      "inPlanNetworkIndicator": "Yes",
      "inPlanNetworkIndicatorCode": "Y",
      "name": "Co-Payment",
      "serviceTypeCodes": [
        "A6"
      ],
      "serviceTypes": [
        "Psychotherapy"
      ],
      "timeQualifier": "Visit",
      "timeQualifierCode": "27"
    },
    {
      "benefitAmount": "0",
      "code": "B",
      "coverageLevel": "Individual",
      "coverageLevelCode": "IND",
      "eligibilityAdditionalInformation": {
        "codeListQualifier": "Mutually Defined",
        "codeListQualifierCode": "ZZ",
        "industry": "Office",
        "industryCode": "11"
      },
      "eligibilityAdditionalInformationList": [
        {
          "codeListQualifier": "Mutually Defined",
          "codeListQualifierCode": "ZZ",
          "industry": "Office",
          "industryCode": "11"
        }
      ],
      "inPlanNetworkIndicator": "Not Applicable",
      "inPlanNetworkIndicatorCode": "W",
      "name": "Co-Payment",
      "serviceTypeCodes": [
        "A6"
      ],
      "serviceTypes": [
        "Psychotherapy"
      ],
      "timeQualifier": "Visit",
      "timeQualifierCode": "27"
    },
    {
      "additionalInformation": [
        {
          "description": "ABLETO FULLY FUNDED"
        }
      ],
      "benefitAmount": "0",
      "code": "B",
      "coverageLevel": "Individual",
      "coverageLevelCode": "IND",
      "eligibilityAdditionalInformation": {
        "codeListQualifier": "Mutually Defined",
        "codeListQualifierCode": "ZZ",
        "industry": "Office",
        "industryCode": "11"
      },
      "eligibilityAdditionalInformationList": [
        {
          "codeListQualifier": "Mutually Defined",
          "codeListQualifierCode": "ZZ",
          "industry": "Office",
          "industryCode": "11"
        }
      ],
      "inPlanNetworkIndicator": "Yes",
      "inPlanNetworkIndicatorCode": "Y",
      "name": "Co-Payment",
      "serviceTypeCodes": [
        "A6"
      ],
      "serviceTypes": [
        "Psychotherapy"
      ],
      "timeQualifier": "Visit",
      "timeQualifierCode": "27"
    },
    {
      "benefitAmount": "0",
      "code": "C",
      "inPlanNetworkIndicator": "Yes",
      "inPlanNetworkIndicatorCode": "Y",
      "name": "Deductible",
      "serviceTypeCodes": [
        "A6"
      ],
      "serviceTypes": [
        "Psychotherapy"
      ],
      "timeQualifier": "Visit",
      "timeQualifierCode": "27"
    },
    {
      "additionalInformation": [
        {
          "description": "ABLETO FULLY FUNDED"
        }
      ],
      "benefitAmount": "0",
      "code": "C",
      "coverageLevel": "Family",
      "coverageLevelCode": "FAM",
      "inPlanNetworkIndicator": "Yes",
      "inPlanNetworkIndicatorCode": "Y",
      "name": "Deductible",
      "serviceTypeCodes": [
        "A6"
      ],
      "serviceTypes": [
        "Psychotherapy"
      ],
      "timeQualifier": "Calendar Year",
      "timeQualifierCode": "23"
    },
    {
      "additionalInformation": [
        {
          "description": "ABLETO PARTIALLY FUNDED"
        }
      ],
      "benefitAmount": "0",
      "code": "F",
      "coverageLevel": "Individual",
      "coverageLevelCode": "IND",
      "inPlanNetworkIndicator": "Yes",
      "inPlanNetworkIndicatorCode": "Y",
      "name": "Limitations",
      "serviceTypeCodes": [
        "A6"
      ],
      "serviceTypes": [
        "Psychotherapy"
      ],
      "timeQualifier": "Visit",
      "timeQualifierCode": "27"
    },
    {
      "additionalInformation": [
        {
          "description": "HIGHEST BENEFIT"
        }
      ],
      "benefitAmount": "0",
      "code": "F",
      "coverageLevel": "Individual",
      "coverageLevelCode": "IND",
      "inPlanNetworkIndicator": "Yes",
      "inPlanNetworkIndicatorCode": "Y",
      "name": "Limitations",
      "serviceTypeCodes": [
        "A6"
      ],
      "serviceTypes": [
        "Psychotherapy"
      ],
      "timeQualifier": "Visit",
      "timeQualifierCode": "27"
    },
    {
      "additionalInformation": [
        {
          "description": "ABLETO FULLY FUNDED"
        }
      ],
      "benefitAmount": "0",
      "code": "F",
      "coverageLevel": "Individual",
      "coverageLevelCode": "IND",
      "inPlanNetworkIndicator": "Yes",
      "inPlanNetworkIndicatorCode": "Y",
      "name": "Limitations",
      "serviceTypeCodes": [
        "A6"
      ],
      "serviceTypes": [
        "Psychotherapy"
      ],
      "timeQualifier": "Visit",
      "timeQualifierCode": "27"
    },
    {
      "benefitAmount": "0",
      "code": "F",
      "coverageLevel": "Individual",
      "coverageLevelCode": "IND",
      "inPlanNetworkIndicator": "Yes",
      "inPlanNetworkIndicatorCode": "Y",
      "name": "Limitations",
      "serviceTypeCodes": [
        "A6"
      ],
      "serviceTypes": [
        "Psychotherapy"
      ],
      "timeQualifier": "Visit",
      "timeQualifierCode": "27"
    },
    {
      "additionalInformation": [
        {
          "description": "ADDITIONAL COVERED PER OCCURRENCE"
        },
        {
          "description": "ABLETO PARTIALLY FUNDED"
        }
      ],
      "benefitAmount": "0",
      "code": "F",
      "coverageLevel": "Individual",
      "coverageLevelCode": "IND",
      "inPlanNetworkIndicator": "Yes",
      "inPlanNetworkIndicatorCode": "Y",
      "name": "Limitations",
      "serviceTypeCodes": [
        "A6"
      ],
      "serviceTypes": [
        "Psychotherapy"
      ],
      "timeQualifier": "Visit",
      "timeQualifierCode": "27"
    },
    {
      "additionalInformation": [
        {
          "description": "ADDITIONAL COVERED PER OCCURRENCE"
        }
      ],
      "benefitAmount": "0",
      "code": "F",
      "coverageLevel": "Individual",
      "coverageLevelCode": "IND",
      "inPlanNetworkIndicator": "Yes",
      "inPlanNetworkIndicatorCode": "Y",
      "name": "Limitations",
      "serviceTypeCodes": [
        "A6"
      ],
      "serviceTypes": [
        "Psychotherapy"
      ],
      "timeQualifier": "Visit",
      "timeQualifierCode": "27"
    },
    {
      "additionalInformation": [
        {
          "description": "ADDITIONAL COVERED PER OCCURRENCE"
        },
        {
          "description": "HIGHEST BENEFIT"
        }
      ],
      "benefitAmount": "0",
      "code": "F",
      "coverageLevel": "Individual",
      "coverageLevelCode": "IND",
      "inPlanNetworkIndicator": "Yes",
      "inPlanNetworkIndicatorCode": "Y",
      "name": "Limitations",
      "serviceTypeCodes": [
        "A6"
      ],
      "serviceTypes": [
        "Psychotherapy"
      ],
      "timeQualifier": "Visit",
      "timeQualifierCode": "27"
    },
    {
      "additionalInformation": [
        {
          "description": "ADDITIONAL COVERED PER OCCURRENCE"
        },
        {
          "description": "ABLETO FULLY FUNDED"
        }
      ],
      "benefitAmount": "0",
      "code": "F",
      "coverageLevel": "Individual",
      "coverageLevelCode": "IND",
      "inPlanNetworkIndicator": "Yes",
      "inPlanNetworkIndicatorCode": "Y",
      "name": "Limitations",
      "serviceTypeCodes": [
        "A6"
      ],
      "serviceTypes": [
        "Psychotherapy"
      ],
      "timeQualifier": "Visit",
      "timeQualifierCode": "27"
    },
    {
      "benefitsRelatedEntities": [
        {
          "entityIdentification": "XX",
          "entityIdentificationValue": "1235600834",
          "entityIdentifier": "Provider",
          "entityName": "NEW YORK MEDICAL BEHAVIORAL HEALTH SERVICES",
          "entityType": "Non-Person Entity"
        }
      ],
      "benefitsRelatedEntity": {
        "entityIdentification": "XX",
        "entityIdentificationValue": "1235600834",
        "entityIdentifier": "Provider",
        "entityName": "NEW YORK MEDICAL BEHAVIORAL HEALTH SERVICES",
        "entityType": "Non-Person Entity"
      },
      "code": "X",
      "inPlanNetworkIndicator": "Not Applicable",
      "inPlanNetworkIndicatorCode": "W",
      "name": "Health Care Facility"
    }
  ],
  "controlNumber": "345459952",
  "dependents": [
    {
      "dateOfBirth": "19521121",
      "entityType": "Person",
      "firstName": "Jane",
      "gender": "F",
      "insuredIndicator": "N",
      "lastName": "Doe",
      "maintenanceReasonCode": "25",
      "maintenanceTypeCode": "001",
      "middleName": "Alex",
      "planNumber": "UVdQAC5j6f",
      "relationToSubscriber": "Spouse",
      "relationToSubscriberCode": "01"
    }
  ],
  "eligibilitySearchId": "019f4829-fecb-7b60-86a9-6ca38f7d1db7",
  "errors": [],
  "id": "ec_019f4829-fecb-7b60-86a9-6c900ad94bfb",
  "meta": {
    "applicationMode": "test",
    "outboundTraceId": "01KX42KZPCP7W5HHVSEY1Z8TEW",
    "senderId": "STEDI",
    "submitterId": "117151744",
    "traceId": "01JDQV00485EPP4D6BD8GM1SWM"
  },
  "payer": {
    "contactInformation": {
      "contacts": [
        {
          "communicationMode": "Uniform Resource Locator (URL)",
          "communicationNumber": "WWW.UHCPROVIDER.COM"
        }
      ]
    },
    "entityIdentifier": "Payer",
    "entityType": "Non-Person Entity",
    "name": "UNITEDHEALTHCARE",
    "payorIdentification": "87726"
  },
  "planDateInformation": {
    "plan": "20240101-20241231"
  },
  "planInformation": {
    "groupNumber": "186084",
    "planNumber": "UVdQAC5j6f"
  },
  "planStatus": [
    {
      "planDetails": "CHOICE PLUS",
      "serviceTypeCodes": [
        "30"
      ],
      "status": "Active Coverage",
      "statusCode": "1"
    },
    {
      "serviceTypeCodes": [
        "A6"
      ],
      "status": "Active Coverage",
      "statusCode": "1"
    },
    {
      "serviceTypeCodes": [
        "A6"
      ],
      "status": "Active Coverage",
      "statusCode": "1"
    },
    {
      "serviceTypeCodes": [
        "A6"
      ],
      "status": "Active Coverage",
      "statusCode": "1"
    },
    {
      "serviceTypeCodes": [
        "A6"
      ],
      "status": "Active Coverage",
      "statusCode": "1"
    }
  ],
  "provider": {
    "entityIdentifier": "Provider",
    "entityType": "Non-Person Entity",
    "npi": "1999999984",
    "providerName": "Jerde - Sauer"
  },
  "reassociationKey": "345459952",
  "subscriber": {
    "address": {
      "address1": "123 Sunnyvale Lane",
      "city": "Fosterburgh",
      "postalCode": "91016",
      "state": "TX"
    },
    "dateOfBirth": "19760214",
    "entityIdentifier": "Insured or Subscriber",
    "entityType": "Person",
    "firstName": "John",
    "gender": "M",
    "groupNumber": "186084",
    "lastName": "Doe",
    "memberId": "UHC202649",
    "middleName": "A",
    "planNumber": "UVdQAC5j6f"
  },
  "tradingPartnerServiceId": "87726",
  "x12": "ISA*00*          *00*          *ZZ*STEDI          *01*117151744      *260709*1835*^*00501*345459952*0*T*`~GS*HB*STEDI*117151744*20260709*183539*1*X*005010X279A1~ST*271*0001*005010X279A1~BHT*0022*11*01JDQV00485EPP4D6BD8GM1SWM*20260325*0901~HL*1**20*1~NM1*PR*2*UNITEDHEALTHCARE*****PI*87726~PER*IC**UR*WWW.UHCPROVIDER.COM~HL*2*1*21*1~NM1*1P*2*Jerde - Sauer*****XX*1999999984~HL*3*2*22*1~NM1*IL*1*Doe*John*A***MI*UHC202649~REF*6P*186084~REF*18*UVdQAC5j6f~N3*123 Sunnyvale Lane~N4*Fosterburgh*TX*91016~DMG*D8*19760214*M~DTP*291*RD8*20240101-20241231~HL*4*3*23*0~NM1*03*1*Doe*Jane*Alex~REF*18*UVdQAC5j6f~DMG*D8*19521121*F~INS*N*01*001*25~EB*1**30*C1*CHOICE PLUS*******W~DTP*636*D8*20240731~MSG*PROVIDER IS OUT NETWORK FOR MEMBER~MSG*FUNDING TYPE = SELF INSURED - LARGE GROUP~LS*2120~NM1*PR*2*UNITEDHEALTHCARE*****PI*87726~N3*P.O. BOX 30555~N4*SALT LAKE CITY*UT*841300555~PER*IC**UR*WWW.UHCPROVIDER.COM~LE*2120~EB*C*FAM*30***23*0*****Y~MSG*HIGHEST BENEFIT~MSG*DEDUCTIBLE IS MET WHEN FAMILY AMOUNT IS SATISFIED~EB*G*FAM*30*C1**23*0*****Y~MSG*HIGHEST BENEFIT~MSG*OOP MAXIMUM IS MET WHEN FAMILY AMOUNT IS SATISFIED~EB*C*FAM*30***24*0*****Y~MSG*HIGHEST BENEFIT~MSG*DEDUCTIBLE IS MET WHEN FAMILY AMOUNT IS SATISFIED~EB*C*FAM*30***29*0*****Y~MSG*HIGHEST BENEFIT~MSG*DEDUCTIBLE IS MET WHEN FAMILY AMOUNT IS SATISFIED~EB*G*FAM*30*C1**24*0*****Y~MSG*HIGHEST BENEFIT~MSG*OOP MAXIMUM IS MET WHEN FAMILY AMOUNT IS SATISFIED~EB*G*FAM*30*C1**29*0*****Y~MSG*HIGHEST BENEFIT~MSG*OOP MAXIMUM IS MET WHEN FAMILY AMOUNT IS SATISFIED~EB*C*FAM*30***24*3200*****W~MSG*DEDUCTIBLE IS MET WHEN FAMILY AMOUNT IS SATISFIED~EB*G*FAM*30*C1**24*5555.16*****W~MSG*OOP MAXIMUM IS MET WHEN FAMILY AMOUNT IS SATISFIED~EB*G*FAM*30*C1**23*15500*****N~MSG*OOP MAXIMUM IS MET WHEN FAMILY AMOUNT IS SATISFIED~EB*G*FAM*30*C1**23*6850*****Y~MSG*OOP MAXIMUM IS MET WHEN FAMILY AMOUNT IS SATISFIED~EB*C*FAM*30***23*3200*****Y~MSG*DEDUCTIBLE IS MET WHEN FAMILY AMOUNT IS SATISFIED~EB*C*FAM*30***29*0*****Y~MSG*DEDUCTIBLE IS MET WHEN FAMILY AMOUNT IS SATISFIED~EB*C*FAM*30***23*5000*****N~MSG*DEDUCTIBLE IS MET WHEN FAMILY AMOUNT IS SATISFIED~EB*G*FAM*30*C1**29*1294.84*****Y~MSG*OOP MAXIMUM IS MET WHEN FAMILY AMOUNT IS SATISFIED~EB*G*FAM*30*C1**29*9944.84*****N~MSG*OOP MAXIMUM IS MET WHEN FAMILY AMOUNT IS SATISFIED~EB*C*FAM*30***29*1800*****N~MSG*DEDUCTIBLE IS MET WHEN FAMILY AMOUNT IS SATISFIED~EB*1**A6*********Y~MSG*HIGHEST BENEFIT~EB*1**A6*********Y~MSG*ABLETO FULLY FUNDED~EB*1**A6*********Y~MSG*ABLETO PARTIALLY FUNDED~EB*1**A6*********W~EB*A*IND*A6***27**.4****N~III*ZZ*11~EB*A*IND*A6***27**.2****Y~III*ZZ*11~EB*A*IND*A6***27**.2****Y~MSG*HIGHEST BENEFIT~III*ZZ*11~EB*A*IND*A6***27**.2****Y~MSG*ABLETO PARTIALLY FUNDED~III*ZZ*11~EB*A*IND*A6***27**0****Y~MSG*ABLETO FULLY FUNDED~III*ZZ*11~EB*B*IND*A6***27*0*****Y~MSG*HIGHEST BENEFIT~III*ZZ*11~EB*B*IND*A6***27*0*****Y~MSG*ABLETO PARTIALLY FUNDED~III*ZZ*11~EB*B*IND*A6***27*0*****W~III*ZZ*11~EB*B*IND*A6***27*0*****Y~MSG*ABLETO FULLY FUNDED~III*ZZ*11~EB*C**A6***27*0*****Y~EB*C*FAM*A6***23*0*****Y~MSG*ABLETO FULLY FUNDED~EB*F*IND*A6***27*0*****Y~MSG*ABLETO PARTIALLY FUNDED~EB*F*IND*A6***27*0*****Y~MSG*HIGHEST BENEFIT~EB*F*IND*A6***27*0*****Y~MSG*ABLETO FULLY FUNDED~EB*F*IND*A6***27*0*****Y~EB*F*IND*A6***27*0*****Y~MSG*ADDITIONAL COVERED PER OCCURRENCE~MSG*ABLETO PARTIALLY FUNDED~EB*F*IND*A6***27*0*****Y~MSG*ADDITIONAL COVERED PER OCCURRENCE~EB*F*IND*A6***27*0*****Y~MSG*ADDITIONAL COVERED PER OCCURRENCE~MSG*HIGHEST BENEFIT~EB*F*IND*A6***27*0*****Y~MSG*ADDITIONAL COVERED PER OCCURRENCE~MSG*ABLETO FULLY FUNDED~EB*X***********W~LS*2120~NM1*1P*2*NEW YORK MEDICAL BEHAVIORAL HEALTH SERVICES*****XX*1235600834~LE*2120~SE*125*0001~GE*1*1~IEA*1*345459952~"
}
```

#### 400

EligibilityRawX12Check400Error 400 response

**Schema:** `EligibilityRawX12Check400ErrorResponseContent`


**Example:**

```json
{
  "eligibilitySearchId": "0198afb0-0e35-7ed3-bc66-6c387c60f4bb",
  "errors": [
    {
      "code": "71",
      "description": "Parse errors: Loop has fewer than the minimum of 1 items",
      "followupAction": "Please Correct and Resubmit",
      "location": "subscriber_level_HL_loop",
      "possibleResolutions": "The X12 request could not be parsed. Verify the request is a valid 270 transaction."
    }
  ],
  "id": "ec_650e8400-e29b-41d4-a716-446655440002",
  "status": "ERROR"
}
```

#### 403

AccessDeniedException 403 response

**Schema:** `AccessDeniedExceptionResponseContent`

**Properties:**

- **`code`** (`string`): Error classification code
- **`message`** (`string`) (required): Human-readable error message
#### 404

ResourceNotFoundException 404 response

**Schema:** `ResourceNotFoundExceptionResponseContent`

**Properties:**

- **`code`** (`string`): Error classification code
- **`message`** (`string`) (required): Human-readable error message
#### 429

ThrottlingException 429 response

**Schema:** `ThrottlingExceptionResponseContent`

**Properties:**

- **`code`** (`string`): Error classification code
- **`message`** (`string`) (required): Human-readable error message
#### 500

InternalFailureException 500 response

**Schema:** `InternalFailureExceptionResponseContent`

**Properties:**

- **`code`** (`string`): Error classification code
- **`message`** (`string`) (required): Human-readable error message
#### 503

ServiceUnavailableException 503 response

**Schema:** `ServiceUnavailableExceptionResponseContent`

**Properties:**

- **`code`** (`string`)
- **`message`** (`string`) (required)
#### 504

GatewayTimeoutException 504 response

**Schema:** `GatewayTimeoutExceptionResponseContent`

**Properties:**

- **`code`** (`string`)
- **`message`** (`string`) (required)


# Real-Time Eligibility Check (270/271) SOAP
Source: https://www.stedi.com/docs/healthcare/api-reference/post-healthcare-eligibility-soap
Submit real-time eligibility checks over SOAP using the CAQH CORE vC2.2.0 XML Schema

[Real-time eligibility checks](/healthcare/send-eligibility-checks) are ideal for in-person patient visits, telehealth appointments, and other scenarios where you need immediate information about a patient's coverage. This endpoint is ideal when you must meet CAQH Core Connectivity Safe Harbor requirements or integrate with systems requiring CAQH CORE-compliant SOAP connectivity.

1. Call this endpoint with a request in XML format. The XML must conform to the [CAQH CORE vC2.2.0 XML Schema](https://www.caqh.org/core/connectivity). The `Payload` element must contain a valid eligibility check in [270 X12 EDI format](https://portal.stedi.com/app/guides/view/hipaa/health-care-eligibility-benefit-inquiry-x279a1/01GRYB6GTDJ4MEP5Z16CGMQWT6). We recommend reviewing the requirements for a [basic eligibility request](/healthcare/send-eligibility-checks#body---x12-edi).
2. Stedi validates your eligibility check and sends it to the payer.
3. The endpoint returns a synchronous SOAP response in [XML format](#response). It contains the full [271 X12 EDI](https://portal.stedi.com/app/guides/view/hipaa/health-care-eligibility-benefit-response-x279a1/01GS66YHZPB37ABF34DBPSR213) response from the payer containing the patient's eligibility and benefits information.

<Tip>
  Test your integration with [eligibility mock
  requests](/healthcare/api-reference/mock-requests-eligibility-checks).
</Tip>

## Headers [#headers]

| Name              | Required | Description                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        |
| ----------------- | -------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `Content-Type`    | Yes      | Set to `application/soap+xml`.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     |
| `X-Forwarded-For` | No       | **(CMS requests only):** Starting November 8, 2025, the Centers for Medicare & Medicaid Services (CMS) requires submitters to include network IP addresses from an eligibility request's point of origin through receipt by the HETS system.<ul><li>To comply with this requirement, you may need to include the `X-Forwarded-For` header in requests to CMS.</li> <li>When present, this header should contain a comma-separated list of upstream IP addresses, starting with the originating system and continuing through every intermediary. You can exclude your IP address from the list.</li><li>Stedi blocks eligibility requests to CMS when any IP address in the chain – the originating IP address or any in the `X-Forwarded-For` header – is located outside the United States.</li><li>Visit [CMS traceability requirements](/healthcare/send-eligibility-checks#cms-traceability-requirements) for details and examples.</li></ul> |

## Request [#request]

The request payload must be XML that conforms to the [CAQH CORE vC2.2.0 XML Schema](https://www.caqh.org/core/connectivity). It consists of three main parts: the envelope, the header, and the body.

```xml
<soapenv:Envelope>
  <soapenv:Header>
    ...
  </soapenv:Header>
  <soapenv:Body>
      ...
  </soapenv:Body>
</soapenv:Envelope>
```

### Envelope [#envelope]

The SOAP `Envelope` element wraps both the header and body. It defines the message structure according to the SOAP specification.

```xml
<soapenv:Envelope xmlns:soapenv="http://www.w3.org/2003/05/soap-envelope" xmlns:cor="http://www.caqh.org/SOAP/WSDL/CORERule2.2.0.xsd">
```

`Envelope` must declare the following namespaces:

{/* prettier-ignore-start */}

| Namespace declaration | Required | Description                                                                                                       |
| --------------------- | -------- | ----------------------------------------------------------------------------------------------------------------- |
| `xmlns:soapenv`       | Yes      | Declares the XML namespace for the SOAP envelope. Must be set to `http://www.w3.org/2003/05/soap-envelope`.       |
| `xmlns:cor`           | Yes      | Declares the XML namespace for CAQH CORE rules. Must be set to `http://www.caqh.org/SOAP/WSDL/CORERule2.2.0.xsd`. |

{/* prettier-ignore-end */}

### Header [#header]

The `Header` element specifies the WS-Security namespace (`wsse`) and contains the required credentials for authentication.

```xml
<soapenv:Header>
  <wsse:Security soapenv:mustUnderstand="true" xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">
    <wsse:UsernameToken>
      <wsse:Username>STEDI-ACCOUNT-ID</wsse:Username>
      <wsse:Password>STEDI-API-KEY</wsse:Password>
    </wsse:UsernameToken>
  </wsse:Security>
</soapenv:Header>
```

`Header` must include the following elements:

{/* prettier-ignore-start */}

| Element         | Required | Description                                                                                                                                                                                                                                                                                                                                                                                                              |
| --------------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| `wsse:Security` | Yes      | The parent container for the security token. It includes: <ul><li>The `soapenv:mustUnderstand` attribute, set to `true`.</li><li>The `xmlns:wsse` namespace declaration, set to `http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd`</li><li>The `xmlns:wsu` namespace declaration, set to `http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd`</li></ul> |
| `wsse:Username` | Yes      | Set this to your **Stedi Account ID**. You can find your account ID at the end of any Stedi portal URL. For example, in `https://portal.stedi.com/app/healthcare/eligibility?account=1111-33333-55555`, the account ID is `1111-33333-55555`.                                                                                                                                                                            |
| `wsse:Password` | Yes      | Set this to your **API Key**. You can create and manage API keys from the [API Keys page](https://portal.stedi.com/app/settings/developer/api-keys) in the Stedi portal.                                                                                                                                                                                                                                                 |

{/* prettier-ignore-end */}

### Body [#body]

The `Body` element contains the request details, and it must conform to the [CAQH CORE XML Schema vC2.2.0](https://www.caqh.org/core/connectivity).

```xml
<soapenv:Body>
  <cor:COREEnvelopeRealTimeRequest>
    <PayloadType>X12_270_Request_005010X279A1</PayloadType>
    <ProcessingMode>RealTime</ProcessingMode>
    <PayloadID>YOUR-PAYLOAD-ID</PayloadID>
    <TimeStamp>2007-08-30T10:20:34.000Z</TimeStamp>
    <SenderID>SENDER-ID</SenderID>
    <ReceiverID>RECEIVER-ID</ReceiverID>
    <CORERuleVersion>2.2.0</CORERuleVersion>
    <Payload><![CDATA[ISA*00*          *00*          *ZZ*AV09311993     *01*030240928      *210101*1200*^*00501*000000001*0*P*>~GS*HS*1510848*030240928*20210101*120000*1*X*005010X279A1~ST*270*0001*005010X279A1~BHT*0022*13*00000000000000000000000000*20210101*1200~HL*1**20*1~NM1*PR*2*UnitedHealthcare*****PI*87726~HL*2*1*21*1~NM1*1P*2*Provider Name*****XX*1999999984~HL*3*2*22*1~NM1*IL*1*Doe*John****MI*UHC202649~HL*4*3*23*0~TRN*1*00000000000000000000000000*3117151744~NM1*03*1*Doe*Jane~DMG*D8*19521121~EQ*30~SE*14*0001~GE*1*1~IEA*1*000000001~]]></Payload>
  </cor:COREEnvelopeRealTimeRequest>
</soapenv:Body>
```

`Body` must include the following elements:

{/* prettier-ignore-start */}

| Element           | Required | Description                                                                                                                                                                                                                                                                                                                                                                               |
| ----------------- | -------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `PayloadType`     | Yes      | The type of transaction. Must be set to `X12_270_Request_005010X279A1`.                                                                                                                                                                                                                                                                                                                   |
| `ProcessingMode`  | Yes      | The processing mode. Must be set to `RealTime`.                                                                                                                                                                                                                                                                                                                                           |
| `PayloadID`       | Yes      | A unique identifier for the request. Must be a valid UUID.                                                                                                                                                                                                                                                                                                                                |
| `TimeStamp`       | Yes      | UTC time in ISO 8601 format, such as `2024-07-28T12:00:00Z`.                                                                                                                                                                                                                                                                                                                              |
| `SenderID`        | Yes      | An identifier for the transaction sender.<ul><li>Can be up to 50 characters.</li><li>Set this to the value you plan to use in the eligibility check's `ISA06` (Interchange Sender ID) element.</li></ul>                                                                                                                                                                                  |
| `ReceiverID`      | Yes      | An identifier for the transaction receiver. <ul><li>Can be up to 50 characters.</li><li> Set this to the value you plan to use in the eligibility check's `ISA08` (Interchange Receiver ID) element.</li></ul>                                                                                                                                                                            |
| `CORERuleVersion` | Yes      | The CAQH CORE rule version. Must be set to `2.2.0`.                                                                                                                                                                                                                                                                                                                                       |
| `Payload`         | Yes      | The X12 EDI 270 eligibility check wrapped in `<![CDATA[ ... ]]>`.<ul><li>Must conform to [270 X12 EDI format](https://portal.stedi.com/app/guides/view/hipaa/health-care-eligibility-benefit-inquiry-x279a1/01GRYB6GTDJ4MEP5Z16CGMQWT6).</li><li>We recommend reviewing the requirements for a [basic eligibility request](/healthcare/send-eligibility-checks#body---x12-edi).</li></ul> |

{/* prettier-ignore-end */}

## Response [#response]

The HTTP response must include the following additional headers:

| Header                        | Description                                                                                                                                                                                                           | Example                                   |
| ----------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------- |
| `stedi-id`                    | A Stedi-assigned unique identifier for the eligibility check, formatted as `ec_<UUID>`. You can use this ID to track the eligibility check and deep link to its results in the Stedi portal.                          | `ec_f81d4fae-7dec-11d0-a765-00a0c91e6b12` |
| `stedi-eligibility-search-id` | A Stedi-assigned identifier that allows Stedi to group eligibility checks for the same patient into a unified record in the Stedi portal called an [eligibility search](/healthcare/eligibility-views#searches-view). | `01997873-bebb-7b33-81ef-f408866dfb2cb`   |

The response body is a SOAP message, and its structure is similar to the request. The `Payload` element typically contains the payer's X12 EDI 271 response. However, if you send a request that fails X12 EDI validation, it will contain a 999 Implementation Acknowledgment indicating the errors.

```xml
<soapenv:Envelope xmlns:soapenv="http://www.w3.org/2003/05/soap-envelope"
               xmlns:cor="http://www.caqh.org/SOAP/WSDL/CORERule2.2.0.xsd">
  <soapenv:Header/>
  <soapenv:Body>
    <cor:COREEnvelopeRealTimeResponse>
      <PayloadType>X12_271_Response_005010X279A1</PayloadType>
      <ProcessingMode>RealTime</ProcessingMode>
      <PayloadID>f81d4fae-7dec-11d0-a765-00a0c91e6b12</PayloadID>
      <TimeStamp>2025-08-06T22:23:50Z</TimeStamp>
      <SenderID>RECEIVER_ID</SenderID>
      <ReceiverID>STEDI</ReceiverID>
      <CORERuleVersion>2.2.0</CORERuleVersion>
      <Payload><![CDATA[ISA*00*          *00*          *ZZ*STEDI          *01*117151744      *260709*2201*^*00501*545482648*0*T*`~GS*HB*STEDI*117151744*20260709*220136*1*X*005010X279A1~ST*271*0001*005010X279A1~BHT*0022*11*01JDQV00485EPP4D6BD8GM1SWM*20260325*0901~HL*1**20*1~NM1*PR*2*UNITEDHEALTHCARE*****PI*87726~PER*IC**UR*WWW.UHCPROVIDER.COM~HL*2*1*21*1~NM1*1P*2*Jerde - Sauer*****XX*1999999984~HL*3*2*22*1~NM1*IL*1*Doe*John*A***MI*UHC202649~REF*6P*186084~REF*18*UVdQAC5j6f~N3*123 Sunnyvale Lane~N4*Fosterburgh*TX*91016~DMG*D8*19760214*M~DTP*291*RD8*20240101-20241231~HL*4*3*23*0~NM1*03*1*Doe*Jane*Alex~REF*18*UVdQAC5j6f~DMG*D8*19521121*F~INS*N*01*001*25~EB*1**30*C1*CHOICE PLUS*******W~DTP*636*D8*20240731~MSG*PROVIDER IS OUT NETWORK FOR MEMBER~MSG*FUNDING TYPE = SELF INSURED - LARGE GROUP~LS*2120~NM1*PR*2*UNITEDHEALTHCARE*****PI*87726~N3*P.O. BOX 30555~N4*SALT LAKE CITY*UT*841300555~PER*IC**UR*WWW.UHCPROVIDER.COM~LE*2120~EB*C*FAM*30***23*0*****Y~MSG*HIGHEST BENEFIT~MSG*DEDUCTIBLE IS MET WHEN FAMILY AMOUNT IS SATISFIED~EB*G*FAM*30*C1**23*0*****Y~MSG*HIGHEST BENEFIT~MSG*OOP MAXIMUM IS MET WHEN FAMILY AMOUNT IS SATISFIED~EB*C*FAM*30***24*0*****Y~MSG*HIGHEST BENEFIT~MSG*DEDUCTIBLE IS MET WHEN FAMILY AMOUNT IS SATISFIED~EB*C*FAM*30***29*0*****Y~MSG*HIGHEST BENEFIT~MSG*DEDUCTIBLE IS MET WHEN FAMILY AMOUNT IS SATISFIED~EB*G*FAM*30*C1**24*0*****Y~MSG*HIGHEST BENEFIT~MSG*OOP MAXIMUM IS MET WHEN FAMILY AMOUNT IS SATISFIED~EB*G*FAM*30*C1**29*0*****Y~MSG*HIGHEST BENEFIT~MSG*OOP MAXIMUM IS MET WHEN FAMILY AMOUNT IS SATISFIED~EB*C*FAM*30***24*3200*****W~MSG*DEDUCTIBLE IS MET WHEN FAMILY AMOUNT IS SATISFIED~EB*G*FAM*30*C1**24*5555.16*****W~MSG*OOP MAXIMUM IS MET WHEN FAMILY AMOUNT IS SATISFIED~EB*G*FAM*30*C1**23*15500*****N~MSG*OOP MAXIMUM IS MET WHEN FAMILY AMOUNT IS SATISFIED~EB*G*FAM*30*C1**23*6850*****Y~MSG*OOP MAXIMUM IS MET WHEN FAMILY AMOUNT IS SATISFIED~EB*C*FAM*30***23*3200*****Y~MSG*DEDUCTIBLE IS MET WHEN FAMILY AMOUNT IS SATISFIED~EB*C*FAM*30***29*0*****Y~MSG*DEDUCTIBLE IS MET WHEN FAMILY AMOUNT IS SATISFIED~EB*C*FAM*30***23*5000*****N~MSG*DEDUCTIBLE IS MET WHEN FAMILY AMOUNT IS SATISFIED~EB*G*FAM*30*C1**29*1294.84*****Y~MSG*OOP MAXIMUM IS MET WHEN FAMILY AMOUNT IS SATISFIED~EB*G*FAM*30*C1**29*9944.84*****N~MSG*OOP MAXIMUM IS MET WHEN FAMILY AMOUNT IS SATISFIED~EB*C*FAM*30***29*1800*****N~MSG*DEDUCTIBLE IS MET WHEN FAMILY AMOUNT IS SATISFIED~EB*1**A6*********Y~MSG*HIGHEST BENEFIT~EB*1**A6*********Y~MSG*ABLETO FULLY FUNDED~EB*1**A6*********Y~MSG*ABLETO PARTIALLY FUNDED~EB*1**A6*********W~EB*A*IND*A6***27**.4****N~III*ZZ*11~EB*A*IND*A6***27**.2****Y~III*ZZ*11~EB*A*IND*A6***27**.2****Y~MSG*HIGHEST BENEFIT~III*ZZ*11~EB*A*IND*A6***27**.2****Y~MSG*ABLETO PARTIALLY FUNDED~III*ZZ*11~EB*A*IND*A6***27**0****Y~MSG*ABLETO FULLY FUNDED~III*ZZ*11~EB*B*IND*A6***27*0*****Y~MSG*HIGHEST BENEFIT~III*ZZ*11~EB*B*IND*A6***27*0*****Y~MSG*ABLETO PARTIALLY FUNDED~III*ZZ*11~EB*B*IND*A6***27*0*****W~III*ZZ*11~EB*B*IND*A6***27*0*****Y~MSG*ABLETO FULLY FUNDED~III*ZZ*11~EB*C**A6***27*0*****Y~EB*C*FAM*A6***23*0*****Y~MSG*ABLETO FULLY FUNDED~EB*F*IND*A6***27*0*****Y~MSG*ABLETO PARTIALLY FUNDED~EB*F*IND*A6***27*0*****Y~MSG*HIGHEST BENEFIT~EB*F*IND*A6***27*0*****Y~MSG*ABLETO FULLY FUNDED~EB*F*IND*A6***27*0*****Y~EB*F*IND*A6***27*0*****Y~MSG*ADDITIONAL COVERED PER OCCURRENCE~MSG*ABLETO PARTIALLY FUNDED~EB*F*IND*A6***27*0*****Y~MSG*ADDITIONAL COVERED PER OCCURRENCE~EB*F*IND*A6***27*0*****Y~MSG*ADDITIONAL COVERED PER OCCURRENCE~MSG*HIGHEST BENEFIT~EB*F*IND*A6***27*0*****Y~MSG*ADDITIONAL COVERED PER OCCURRENCE~MSG*ABLETO FULLY FUNDED~EB*X***********W~LS*2120~NM1*1P*2*NEW YORK MEDICAL BEHAVIORAL HEALTH SERVICES*****XX*1235600834~LE*2120~SE*125*0001~GE*1*1~IEA*1*545482648~]]></Payload>
      <ErrorCode>Success</ErrorCode>
      <ErrorMessage></ErrorMessage>
    </cor:COREEnvelopeRealTimeResponse>
  </soapenv:Body>
</soapenv:Envelope>
```

The response body includes the following elements:

{/* prettier-ignore-start */}

| Element           | Description                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              |
| ----------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| `PayloadType`     | The type of the payload returned in the response.<ul><li>`X12_271_Response_005010X279A1` for requests that pass X12 EDI validation. A 271 can contain benefits information for the patient or [`AAA` errors](/healthcare/eligibility-troubleshooting#payer-aaa-errors).</li><li>`X12_999_Response_005010X231A1` for requests that fail [X12 EDI validation](/healthcare/eligibility-troubleshooting#x12-edi-validation-errors).</li><li>`CoreEnvelopeError` when there's a [Core-compliant error](/healthcare/eligibility-troubleshooting#core-compliant-errors) or Stedi couldn't parse the X12 EDI envelope.</li></ul> |
| `ProcessingMode`  | The processing mode used for the request. This is always `RealTime`.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     |
| `PayloadID`       | A unique identifier Stedi generated for the transaction. This won't be the same value you submitted as the `PayloadID` in the request.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   |
| `TimeStamp`       | The timestamp when the response was generated in ISO 8601 format.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        |
| `SenderID`        | The ID of the sender of the response. This is always the same as the `ReceiverID` in the request.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        |
| `ReceiverID`      | The ID of the receiver of the response. This is always the same as the `SenderID` in the request.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        |
| `CORERuleVersion` | The CAQH CORE rule version. This is always `2.2.0`.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      |
| `Payload`         | The X12 EDI response.<ul><li>271 Eligibility Benefit Response for requests that pass X12 EDI validation. A 271 can contain benefits information for the patient or [`AAA` errors](/healthcare/eligibility-troubleshooting#payer-aaa-errors).</li><li>999 Implementation Acknowledgment when the request fails [X12 EDI validation](/healthcare/eligibility-troubleshooting#x12-edi-validation-errors).</li><li>Empty when the request fails due to a [CORE-compliant error](/healthcare/eligibility-troubleshooting#core-compliant-errors) or because Stedi couldn't parse the X12 EDI envelope.</li></ul>               |
| `ErrorCode`       | The error code, if any, associated with the response. These errors typically indicate issues with the request body, such as missing or invalid elements. They can also indicate authentication issues and other processing errors. [Learn more](/healthcare/eligibility-troubleshooting#core-compliant-errors).                                                                                                                                                                                                                                                                                                          |
| `ErrorMessage`    | A description of the error, if any.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      |
| `Fault`           | Only included when there is a [SOAP fault](/healthcare/eligibility-troubleshooting#soap-faults). It includes a `Code` and `Reason` element that describe the error.                                                                                                                                                                                                                                                                                                                                                                                                                                                      |

{/* prettier-ignore-end */}

## HTTP status codes [#http-status-codes]

Most errors return SOAP, but some return JSON containing the HTTP status code and a brief message describing the error.

{/* prettier-ignore-start */}

| Status Code                 | Response | Description                                                                                                                                                                                                                                                                                                                                                                               |
| --------------------------- | -------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `200 OK`                    | SOAP     | Indicates a successful request. Note that Stedi returns a `200` even when the payer returns [`AAA` errors](/healthcare/eligibility-troubleshooting#payer-aaa-errors) in the 271 response.                                                                                                                                                                                                 |
| `400 Bad Request`           | SOAP     | Indicates a [SOAP fault](/healthcare/eligibility-troubleshooting#soap-faults), an error with the [SOAP request body](/healthcare/eligibility-troubleshooting#core-compliant-errors), or an [X12 EDI validation error](/healthcare/eligibility-troubleshooting#x12-edi-validation-errors).                                                                                                 |
| `401 Unauthorized`          | SOAP     | Indicates issues with the Stedi account ID or API key you provided. [Example](/healthcare/eligibility-troubleshooting#authentication-errors)                                                                                                                                                                                                                                              |
| `404 Not Found`             | JSON     | Indicates that the specified endpoint doesn't exist. Verify that you are using the correct URL for this endpoint: `https://healthcare.us.stedi.com/2025-06-01/protocols/caqh-core`.                                                                                                                                                                                                       |
| `429 Too Many Requests`     | SOAP     | Indicates that you have exceeded your [concurrency limit](/healthcare/api-reference#concurrency-limits) for this endpoint. The X12 response will contain an `AAA` error with code `42`. Stedi will continue rejecting additional requests with a `429` status code until one of your previous requests is completed. [Example](/healthcare/eligibility-troubleshooting#too-many-requests) |
| `500 Internal Server Error` | JSON     | Indicates an unexpected error on Stedi's side. If you encounter this error, please contact [Stedi Support](https://stedi.com/support) for assistance.                                                                                                                                                                                                                                     |

{/* prettier-ignore-end */}

## API Specification

Submit real-time eligibility checks over SOAP using the CAQH CORE vC2.2.0 XML Schema

**Endpoint:** `POST /protocols/caqh-core`

**Base URL:** `https://healthcare.us.stedi.com/2025-06-01`

### Parameters

- **`X-Forwarded-For`** (header): 
  - Type: `string`

### Request Body

### Responses

#### 200

200 response

#### 400

Bad Request - The server could not process the request due to invalid syntax or missing required fields.

#### 401

Unauthorized - Authentication failed. Verify the security credentials in the SOAP header.

#### 404

Not Found - The requested resource could not be found.

**Properties:**

- **`message`** (`string`) (required)
- **`code`** (`string`) (required)
#### 429

Too Many Requests

#### 500

Internal Server Error - An unexpected error occurred on the server.

**Properties:**

- **`message`** (`string`) (required)
- **`code`** (`string`) (required)


# Real-Time Eligibility Check (270/271) JSON
Source: https://www.stedi.com/docs/healthcare/api-reference/post-healthcare-eligibility


[Real-time eligibility checks](/healthcare/send-eligibility-checks) are ideal for in-person patient visits, telehealth appointments, and other scenarios where you need immediate information about a patient's coverage.

1. Call this endpoint with a JSON payload. The required information can vary depending on the circumstances, but we recommend starting with a [basic eligibility request](/healthcare/send-eligibility-checks#body---json).
2. Stedi translates your request to the X12 270 EDI format and sends it to the payer.
3. The endpoint returns a synchronous response from the payer in both JSON and raw X12 EDI format. The response contains the patient's eligibility and benefits information. Note that our documentation lists all enums officially allowed in the eligibility response. Some payers return non-compliant values, which Stedi passes through as is.

<Tip>
  Test your integration with [eligibility mock
  requests](/healthcare/api-reference/mock-requests-eligibility-checks).
</Tip>

## API Specification

Submit a real-time 270/271 eligibility check in JSON format

**Endpoint:** `POST /change/medicalnetwork/eligibility/v3`

**Base URL:** `https://healthcare.us.stedi.com/2024-04-01`

### Parameters

- **`X-Forwarded-For`** (header): 
  - Type: `string`

### Request Body

**Schema:** `EligibilityCheckRequestContent`

**Properties:**

- **`controlNumber`** (`string`): Stedi generates a control number for each eligibility check, so you don’t need to include this property in your request.
- **`dependents`** (`array of RequestDependent objects`): A dependent for which you want to retrieve benefits information.
- You can only submit one dependent per eligibility check.
- Only include the patient's information here when they are listed as a dependent on the subscriber's insurance plan AND the payer cannot uniquely identify them through information outside the subscriber's policy. For example, if the dependent has their own member ID number, you should identify them in the `subscriber` object instead. This includes member IDs that differ only by a suffix, such as `01`, because the patient can still be uniquely identified.
- Most Medicaid plans don't support dependents, with a [few exceptions](https://www.stedi.com/docs/healthcare/send-eligibility-checks#medicaid-dependents). Sending this array to payers that don't support dependents will either cause an error, or the payer may ignore the information and return results for the subscriber instead.
- Each payer has different requirements, so you should supply the fields necessary for each payer to identify the dependent in their system. However, we **strongly recommend** including the dependent's date of birth in the request when available because many payers return errors without it.
- Enter the patient's name exactly as written on their insurance card, if available, including any special or punctuation characters such as apostrophes, hyphens (dashes), or spaces. Visit [patient names](https://www.stedi.com/docs/healthcare/send-eligibility-checks#patient-names) for all best practices to avoid unnecessary failures.
- **`dependents[].additionalIdentification`** (`object`): Use this object when you need to provide an additional identification number for the dependent. This is rarely required for standard eligibility checks.
- **`dependents[].additionalIdentification.agencyClaimNumber`** (`string`): The Property and Casualty Claim Number associated with the patient. You should only submit this value when when you are submitting an eligibility request to a property and casualty payer.
- **`dependents[].additionalIdentification.contractNumber`** (`string`): The contract number for an existing contract between the payer and the provider requesting the eligibility check.
- **`dependents[].additionalIdentification.healthInsuranceClaimNumber`** (`string`): This property is never used in practice.
- **`dependents[].additionalIdentification.identificationCardSerialNumber`** (`string`): The identification card serial number. You can include this when the ID card has a number in addition to the member ID number. The Identification Card Serial Number uniquely identifies the card when multiple cards have been or will be issued to a member, such as a replacement card.
- **`dependents[].additionalIdentification.insurancePolicyNumber`** (`string`): The insurance policy number.
- **`dependents[].additionalIdentification.medicalRecordIdentificationNumber`** (`string`): The medical record identification number.
- **`dependents[].additionalIdentification.memberIdentificationNumber`** (`string`): Not intended for most use cases. Only set this when the property and casualty patient identifier is a member ID that would be used in an 837 claim submission.

If the patient has their own member ID for the health plan, you should identify them in the `subscriber` object. If the patient doesn't have their own member ID, don't set this property.
- **`dependents[].additionalIdentification.patientAccountNumber`** (`string`): The patient account number.
- **`dependents[].additionalIdentification.planNetworkIdentificationNumber`** (`string`): The plan network identification number.
- **`dependents[].additionalIdentification.planNumber`** (`string`): The insurance plan number.
- **`dependents[].additionalIdentification.policyNumber`** (`string`): The insurance group or policy number.
- **`dependents[].address`** (`object`): Address information for the dependent. When providing address information, we recommend including `state` for member identification in addition to the required `address1` and `city` properties.
- **`dependents[].address.address1`** (`string`) (required): The first line of the address.
- **`dependents[].address.address2`** (`string`): The second line of the address.
- **`dependents[].address.city`** (`string`) (required): The city.
- **`dependents[].address.countryCode`** (`string`): The two-letter country code from [Part 1 of ISO 3166](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2).
- **`dependents[].address.countrySubDivisionCode`** (`string`): The country subdivision code from [Part 2 of ISO 3166](https://en.wikipedia.org/wiki/ISO_3166-2).
- **`dependents[].address.postalCode`** (`string`): The United States or Canadian postal code, excluding punctuation and blanks.
- **`dependents[].address.state`** (`string`): The US state or Canadian province code. For example, `TN` for Tennessee or `NB` for New Brunswick.
  - Allowed values: `NL`, `PE`, `NS`, `NB`, `QC`, `ON`, `MB`, `SK`, `AB`, `BC`, `YT`, `NT`, `NU`, `DC`, `AS`, `GU`, `MP`, `PR`, `UM`, `VI`, `AA`, `AE`, `AP`, `AK`, `AL`, `AR`, `AZ`, `CA`, `CO`, `CT`, `DE`, `FL`, `GA`, `HI`, `IA`, `ID`, `IL`, `IN`, `KS`, `KY`, `LA`, `MA`, `MD`, `ME`, `MI`, `MN`, `MO`, `MS`, `MT`, `NC`, `ND`, `NE`, `NH`, `NJ`, `NM`, `NV`, `NY`, `OH`, `OK`, `OR`, `PA`, `RI`, `SC`, `SD`, `TN`, `TX`, `UT`, `VA`, `VT`, `WA`, `WI`, `WV`, `WY`
- **`dependents[].beginningCardIssueDate`** (`string`): The date the insurance card was issued. Use when you need to specify a date range. Provide the end of the range in the `endCardIssueDate` property.
- **`dependents[].beginningPlanIssueDate`** (`string`): The date the insurance plan begins. Use when you need to specify a date range. Provide the end of the range in the `endPlanIssueDate` property.
- **`dependents[].birthSequenceNumber`** (`string`): The number assigned to each family member born with the same birth date, such as twins or triplets. Use to indicate the birth order when there are multiple births associated with the provided birth date.
- **`dependents[].dateOfBirth`** (`string`): The dependent's date of birth (DOB). We **strongly recommend** including the DOB in your request. Many payers need this information to identify the patient in their system and will immediately return an error when it's not provided.
- **`dependents[].eligibilityCategory`** (`string`): The eligibility category for the dependent.
- **`dependents[].endCardIssueDate`** (`string`): The date the insurance card expires. Use when you need to specify a date range. Provide the start of the range in the `beginningCardIssueDate` property.
- **`dependents[].endPlanIssueDate`** (`string`): The date the insurance plan ends. Use when you need to specify a date range. Provide the start of the range in the `beginningPlanIssueDate` property.
- **`dependents[].firstName`** (`string`): The dependent's first name.
- **`dependents[].gender`** (`string`)
  - Allowed values: `M`, `F`
- **`dependents[].groupNumber`** (`string`): The group number for the dependent's insurance plan.
- **`dependents[].healthCareCodeInformation`** (`array of HealthCareInformation objects`): Information about the dependent's health care diagnosis. You can include up to eight entries in this array. 

The first array entry must have `diagnosisTypeCode` set to `ABK`. All subsequent entries must have `diagnosisTypeCode` set to `ABF`.
- **`dependents[].healthCareCodeInformation[].diagnosisCode`** (`string`) (required): The diagnosis code. Omit the decimal points in diagnosis codes - the decimal point is assumed.
- **`dependents[].healthCareCodeInformation[].diagnosisTypeCode`** (`string`) (required): The type of diagnosis code you are providing. You can set to `BK` - International Classification of Diseases Clinical Modification (ICD-9-CM) Principal Diagnosis, `ABK` - International Classification of Diseases Clinical Modification (ICD-10-CM) Principal Diagnosis, `BF`- International Classification of Diseases Clinical Modification (ICD-9-CM) Diagnosis, or `ABF`- International Classification of Diseases Clinical Modification (ICD-10-CM) Diagnosis. 

 Note that ICD-9 codes are **deprecated** and should no longer be used in eligibility checks.
  - Allowed values: `BK`, `ABK`, `BF`, `ABF`
- **`dependents[].idCard`** (`string`): The dependent's insurance card number.
- **`dependents[].idCardIssueDate`** (`string`): The date the insurance card was issued. Use to specify a single date.
- **`dependents[].individualRelationshipCode`** (`string`): The dependent's relationship to the subscriber. You can set this to `01` - Spouse, `19` - Child, `34` - Other Adult.
  - Allowed values: `01`, `19`, `34`
- **`dependents[].issueNumber`** (`string`): The issue number for the dependent's insurance policy.
- **`dependents[].lastName`** (`string`): The dependent's last name. **Don't** include the dependent's name suffix, such as Jr. or III. Use the designated `suffix` property instead.
- **`dependents[].memberId`** (`string`): This shape is deprecated: This property is no longer used.
- **`dependents[].middleName`** (`string`): The dependent's middle name or middle initial.
- **`dependents[].planIssueDate`** (`string`): The date the insurance plan begins. Use to specify a single date.
- **`dependents[].providerCode`** (`string`): Use this for providers that are not requesting the eligibility check - the requestor is specified in the `provider` object. For example, if you are a hospital making an eligibility request, this is where you would specify information about a referring provider's role. 

 You can use one of the following: `AD` - Admitting, `AT` - Attending, `BI` - Billing, `CO` - Consulting, `CV` - Covering, `H` - Hospital, `HH` - Home Health Care, `LA` - Laboratory, `OT` - Other Physician, `P1` - Pharmacist, `P2` - Pharmacy, `PC` - Primary Care Physician, `PE`- Performing, `R`- Rural Health Clinic, `RF` - Referring, `SB` - Submitting, `SK` - Skilled Nursing Facility, `SU` - Supervising
  - Allowed values: `AD`, `AT`, `BI`, `CO`, `CV`, `H`, `HH`, `LA`, `OT`, `P1`, `P2`, `PC`, `PE`, `R`, `RF`, `SK`, `SU`
- **`dependents[].providerIdentifier`** (`string`): The provider identifier you specified in the `referenceIdentificationQualifier` property. For example, the provider's National Provider ID or Federal Taxpayer Identification number. If you set the `referenceIdentificationQualifier` to `PXC`, then this property should contain the provider's taxonomy code.
- **`dependents[].referenceIdentificationQualifier`** (`string`): The type of `providerIdentifier` you are using. Use for providers that are not requesting the eligibility check, such as the referring provider.
- Set to `HPI` when the National Provider ID is mandated for use.
- Set to `PXC` if you're identifying a type of specialty associated with services provided to the dependent. 
 
 Otherwise, you can set to the following: `9K` - Servicer, `D3` - National Council for Prescription Drug Programs Pharmacy Number, `EI` - Employer's Identification Number, `HPI` - Centers for Medicare and Medicaid Services National Provider Identifier, `PXC` - Health Care Provider Taxonomy Code, `SY` - Social Security Number, `TJ` - Federal Taxpayer's Identification Number
  - Allowed values: `9K`, `D3`, `EI`, `HPI`, `PXC`, `SY`, `TJ`
- **`dependents[].ssn`** (`string`): The dependent's social security number. Don't use this for Federally-administered programs, such as Medicare.
- **`dependents[].suffix`** (`string`): The dependent's name suffix, such as Sr. or III. Only include the dependent's personal name suffix - **don't** include professional or academic titles, such as M.D. or MBA.
- **`eligibilitySearchId`** (`string`): An identifier that allows Stedi to group eligibility checks for the same patient into a unified record in the Stedi portal called an [eligibility search](https://www.stedi.com/docs/healthcare/eligibility-searches-view).

This property is for use by Stedi tools only, such as Stedi's MCP server.
- **`encounter`** (`object`): Details about the eligibility or benefit information you are requesting for the patient.
- If you don't specify either `serviceTypeCodes` or a `procedureCode` and `productOrServiceIDQualifier`, Stedi defaults to using `30` (Plan coverage and general benefits) as the only `serviceTypeCodes` value.
- You can specify either a single `dateOfService` or a `beginningDateOfService` and `endDateOfService`. The payer defaults to using the current date in their timezone if you don't include one.
- When checking eligibility for today, omit the `dateOfService` property to ensure consistent behavior across payers.
- We recommend submitting dates up to 12 months in the past or up to the end of the current month. Payers aren't required to support dates outside these ranges. However, some payers such as the Centers for Medicare and Medicaid Services (CMS) do support requests for dates further in the future - especially the next calendar month. Check the payer's documentation to determine their specific behavior.
- **`encounter.beginningDateOfService`** (`string`): The beginning date of service. If you include this value, you must also include the `endDateOfService`.
- **`encounter.dateOfService`** (`string`): The date of service. You can use this value to specify a single occasion, such as a doctor's visit. If you don't specify a service date (either a single day or a range of dates), the payer defaults to using the current date in their timezone.
- **`encounter.diagnosisCodePointer`** (`array of strings`): Diagnosis code pointers in order of importance to the service. These pointers are an index to the ICD-10 codes you included in the `subscriber.healthCareCodeInformation` or `dependents.healthCareCodeInformation` object arrays. The pointer values can be from 1 - 8 (integer numbers). If you are including diagnosis codes, you **must** set at least one pointer here for the primary diagnosis. Then, you can add up to three additional pointers (up to four in total). Don't put ICD-10 codes here.
- **`encounter.endDateOfService`** (`string`): The end date of service. If you include this value, you must also include the `beginningDateOfService`.
- **`encounter.industryCode`** (`string`): The type of facility where the service was provided. You can set this to one of the [place of service codes](https://www.cms.gov/medicare/coding-billing/place-of-service-codes/code-sets).
  - Allowed values: `01`, `02`, `03`, `04`, `05`, `06`, `07`, `08`, `09`, `10`, `11`, `12`, `13`, `14`, `15`, `16`, `17`, `18`, `19`, `20`, `21`, `22`, `23`, `24`, `25`, `26`, `31`, `32`, `33`, `34`, `41`, `42`, `49`, `50`, `51`, `52`, `53`, `54`, `55`, `56`, `57`, `58`, `60`, `61`, `62`, `65`, `71`, `72`, `81`, `99`
- **`encounter.medicalProcedures`** (`array of MedicalProcedure objects`): Use only when you need to send multiple procedure codes in a single request. Otherwise, use the `encounter.procedureCode` and `encounter.productOrServiceIDQualifier` properties.
- **`encounter.medicalProcedures[].diagnosisCodePointer`** (`array of strings`): The diagnosis code pointer.
- **`encounter.medicalProcedures[].procedureCode`** (`string`) (required): The procedure code.
- **`encounter.medicalProcedures[].procedureModifiers`** (`array of strings`): Procedure modifiers that provide additional information related to the service.
- **`encounter.medicalProcedures[].productOrServiceIDQualifier`** (`string`) (required): Code identifying the type/source of the `procedureCode`. You can set this to `AD` - American Dental Association Codes, `CJ` - Current Procedural Terminology (CPT) Codes, `HC` - Health Care Financing Administration Common Procedural Coding System (HCPCS) Codes, `ID` - International Classification of Diseases, 9th Revision, Clinical Modification (ICD-9-CM) - Procedure, `IV` - Home Infusion EDI Coalition (HIEC) Product/Service Code, `N4` - National Drug Code in 5-4-2 Format, or `ZZ` - Mutually Defined.
  - Allowed values: `AD`, `CJ`, `HC`, `ID`, `IV`, `N4`, `ZZ`
- **`encounter.priorAuthorizationOrReferralNumber`** (`string`): The prior authorization or referral number for a particular benefit or procedure.
- **`encounter.procedureCode`** (`string`): The procedure code.
- **`encounter.procedureModifiers`** (`array of strings`): The procedure modifier that provides additional information related to the performance of the service.
- **`encounter.productOrServiceIDQualifier`** (`string`): Code identifying the type/source of the `procedureCode`. You can set this to `AD` - American Dental Association Codes, `CJ` - Current Procedural Terminology (CPT) Codes, `HC` - Health Care Financing Administration Common Procedural Coding System (HCPCS) Codes, `ID` - International Classification of Diseases, 9th Revision, Clinical Modification (ICD-9-CM) - Procedure, `IV` - Home Infusion EDI Coalition (HIEC) Product/Service Code, `N4` - National Drug Code in 5-4-2 Format, or `ZZ` - Mutually Defined.
  - Allowed values: `AD`, `CJ`, `HC`, `ID`, `IV`, `N4`, `ZZ`
- **`encounter.referenceIdentificationQualifier`** (`string`): The type of information you provided in the `priorAuthorizationOrReferralNumber` property. You can set this to `9F` - Referral Number or `G1` - Prior Authorization Number.
  - Allowed values: `9F`, `G1`
- **`encounter.serviceTypeCodes`** (`array of strings`): One or more codes classifying the type of services for which you want to receive benefits information.

If you don't specify a service type code or a `procedureCode` and `productOrServiceIDQualifier`, Stedi defaults to using `30` - Health Benefit Plan Coverage. Visit [Service Type Codes](https://www.stedi.com/docs/healthcare/eligibility-stc-procedure-codes#full-stc-list) for a complete list.

Not all payers support all service type codes, and not all payers support multiple service type codes in the same request. We recommend including one service type code per request unless you're sure the payer supports multiple.

Payers aren't required to respond with exactly the same STC(s) in the response, so you may receive benefits information for STCs you didn't request. However, receiving different STCs can mean that the payer is ignoring the STC you sent, which is why we recommend [testing payers](https://www.stedi.com/docs/healthcare/eligibility-stc-procedure-codes#test-payer-stc-support) to determine their support for specific STCs.
- **`externalPatientId`** (`string`): A unique identifier for the patient that Stedi uses to identify and correlate historical eligibility checks for the same individual. We recommend including this value in all requests.
- **`informationReceiverName`** (`object`)
- **`informationReceiverName.address`** (`object`): Address information for the provider.
  - Only include when specifically instructed by a payer, such as when the provider has multiple locations and you need to identify the specific location making the request.
  - You must include at least the `address1` and `city` properties.
- **`informationReceiverName.address.address1`** (`string`) (required): The first line of the address.
- **`informationReceiverName.address.address2`** (`string`): The second line of the address.
- **`informationReceiverName.address.city`** (`string`) (required): The city.
- **`informationReceiverName.address.countryCode`** (`string`): The two-letter country code from [Part 1 of ISO 3166](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2).
- **`informationReceiverName.address.countrySubDivisionCode`** (`string`): The country subdivision code from [Part 2 of ISO 3166](https://en.wikipedia.org/wiki/ISO_3166-2).
- **`informationReceiverName.address.postalCode`** (`string`): The United States or Canadian postal code, excluding punctuation and blanks.
- **`informationReceiverName.address.state`** (`string`): The US state or Canadian province code. For example, `TN` for Tennessee or `NB` for New Brunswick.
  - Allowed values: `NL`, `PE`, `NS`, `NB`, `QC`, `ON`, `MB`, `SK`, `AB`, `BC`, `YT`, `NT`, `NU`, `DC`, `AS`, `GU`, `MP`, `PR`, `UM`, `VI`, `AA`, `AE`, `AP`, `AK`, `AL`, `AR`, `AZ`, `CA`, `CO`, `CT`, `DE`, `FL`, `GA`, `HI`, `IA`, `ID`, `IL`, `IN`, `KS`, `KY`, `LA`, `MA`, `MD`, `ME`, `MI`, `MN`, `MO`, `MS`, `MT`, `NC`, `ND`, `NE`, `NH`, `NJ`, `NM`, `NV`, `NY`, `OH`, `OK`, `OR`, `PA`, `RI`, `SC`, `SD`, `TN`, `TX`, `UT`, `VA`, `VT`, `WA`, `WI`, `WV`, `WY`
- **`informationReceiverName.contactNumber`** (`string`)
- **`informationReceiverName.contractNumber`** (`string`)
- **`informationReceiverName.devicePinNumber`** (`string`)
- **`informationReceiverName.facilityIdNumber`** (`string`)
- **`informationReceiverName.facilityNetworkIdNumber`** (`string`)
- **`informationReceiverName.federalTaxpayerIdentificationNumber`** (`string`)
- **`informationReceiverName.informationReceiverAdditionalIdentifierState`** (`string`)
- **`informationReceiverName.medicaidProviderNumber`** (`string`): The provider's Medicaid provider number.
- **`informationReceiverName.medicareProviderNumber`** (`string`)
- **`informationReceiverName.nationalProviderIdentifier`** (`string`)
- **`informationReceiverName.priorIdentifierNumber`** (`string`)
- **`informationReceiverName.providerPlanNetworkIdNumber`** (`string`)
- **`informationReceiverName.socialSecurityNumber`** (`string`)
- **`informationReceiverName.stateLicenceNumber`** (`string`)
- **`informationReceiverName.submitterIdNumber`** (`string`)
- **`portalPassword`** (`string`): The password that the provider uses to log in to the payer's portal. For payers Medicaid California, AltaMed, and Kern Family Health Care, this property is **required** and should be the [provider's PIN](https://www.stedi.com/docs/healthcare/eligibility-troubleshooting#portal-credentials). Otherwise, this is not commonly used.
- **`portalUsername`** (`string`): The username that the provider uses to log in to the payer's portal. This is not commonly used.
- **`provider`** (`object`) (required): Information about the entity requesting the eligibility check. This may be an individual practitioner, a medical group, a hospital, or another type of healthcare provider.
 - You must provide the `organizationName` (if the entity is an organization), or `firstName` and `lastName` (if the provider is an individual).
 - You must also provide an identifier - this is typically the provider's [National Provider Identifier](https://www.stedi.com/docs/healthcare/national-provider-identifier) (`npi`). If the provider doesn't have an NPI, you can supply an alternative, such as their `taxId` or `ssn`.
 - Don't include additional properties, such as `taxId` or `address`, unless they are specifically required or suggested by the payer.
- **`provider.address`** (`object`): Address information for the provider.
  - Only include when specifically instructed by a payer, such as when the provider has multiple locations and you need to identify the specific location making the request.
  - You must include at least the `address1` and `city` properties.
- **`provider.address.address1`** (`string`) (required): The first line of the address.
- **`provider.address.address2`** (`string`): The second line of the address.
- **`provider.address.city`** (`string`) (required): The city.
- **`provider.address.countryCode`** (`string`): The two-letter country code from [Part 1 of ISO 3166](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2).
- **`provider.address.countrySubDivisionCode`** (`string`): The country subdivision code from [Part 2 of ISO 3166](https://en.wikipedia.org/wiki/ISO_3166-2).
- **`provider.address.postalCode`** (`string`): The United States or Canadian postal code, excluding punctuation and blanks.
- **`provider.address.state`** (`string`): The US state or Canadian province code. For example, `TN` for Tennessee or `NB` for New Brunswick.
  - Allowed values: `NL`, `PE`, `NS`, `NB`, `QC`, `ON`, `MB`, `SK`, `AB`, `BC`, `YT`, `NT`, `NU`, `DC`, `AS`, `GU`, `MP`, `PR`, `UM`, `VI`, `AA`, `AE`, `AP`, `AK`, `AL`, `AR`, `AZ`, `CA`, `CO`, `CT`, `DE`, `FL`, `GA`, `HI`, `IA`, `ID`, `IL`, `IN`, `KS`, `KY`, `LA`, `MA`, `MD`, `ME`, `MI`, `MN`, `MO`, `MS`, `MT`, `NC`, `ND`, `NE`, `NH`, `NJ`, `NM`, `NV`, `NY`, `OH`, `OK`, `OR`, `PA`, `RI`, `SC`, `SD`, `TN`, `TX`, `UT`, `VA`, `VT`, `WA`, `WI`, `WV`, `WY`
- **`provider.contactNumber`** (`string`): The provider's contract number. Only include when required by a payer.
This shape is deprecated: Use `contractNumber` instead.
- **`provider.contractNumber`** (`string`): The provider's contract number. Only include when required by a payer.
- **`provider.devicePinNumber`** (`string`): The provider's electronic device pin number. Only include when required by a payer.
- **`provider.employersId`** (`string`): Deprecated; The submitter's Employer's Identification Number (EIN). Only use when an employer is checking the eligibility and benefits of their employees.
This shape is deprecated: This property is no longer used.
- **`provider.facilityIdNumber`** (`string`): The ID number for the provider's facility. Only include when required by a payer.
- **`provider.facilityNetworkIdNumber`** (`string`): The provider's facility network identification number. Only include when required by a payer.
- **`provider.firstName`** (`string`): The provider's first name. This property is required if the provider is an individual.
- **`provider.informationReceiverAdditionalIdentifierState`** (`string`): The two-character state ID of the state that assigned the `stateLicenseNumber`. Only include when required by a payer.
- **`provider.lastName`** (`string`): The provider's last name. This property is required if the provider is an individual.
- **`provider.medicaidProviderNumber`** (`string`): The provider's Medicaid provider number. Only include when required by a payer.
- **`provider.medicareProviderNumber`** (`string`): The provider's Medicare provider number. Only include when required by a payer.
- **`provider.npi`** (`string`): The provider's [National Provider Identifier (NPI)](https://www.stedi.com/docs/healthcare/national-provider-identifier). This identifier is required for all healthcare providers who are eligible to receive an NPI. Some non-traditional providers such as transportation services, durable medical equipment (DME) suppliers, or alternative medicine practitioners are not eligible to receive an NPI. If the provider doesn't have an NPI, requests with alternate IDs are virtually never supported. In the rare circumstance that a payer has instructed you to use an alternate ID, the payer will typically require you to supply either their `taxId` or `ssn` instead.
- **`provider.organizationName`** (`string`): The provider's business name. This property is required if the provider is not an individual.
- **`provider.payorId`** (`string`): Only used for payer-to-payer transactions, which are not currently supported. Do not use.
- **`provider.pharmacyProcessorNumber`** (`string`): The provider's pharmacy processor number. Only include when specifically instructed by a payer - for example, when the provider doesn't have an [NPI](https://www.stedi.com/docs/healthcare/national-provider-identifier). This use case is very rarely supported, and is typically when the provider is a non-medical provider, such as a social worker, home health aide, or transportation service.
- **`provider.priorIdentifierNumber`** (`string`): The provider's prior identifier number. Only include when required by a payer.
- **`provider.providerCode`** (`string`)
  - Allowed values: `AD`, `AT`, `BI`, `CO`, `CV`, `H`, `HH`, `LA`, `OT`, `P1`, `P2`, `PC`, `PE`, `R`, `RF`, `SB`, `SK`, `SU`
- **`provider.providerPlanNetworkIdNumber`** (`string`): The provider's plan network identification number. Only include when required by a payer.
- **`provider.providerType`** (`string`): Identify the type of provider.
  - Allowed values: `payer`, `third-party administrator`, `employer`, `hospital`, `facility`, `gateway provider`, `plan sponsor`, `provider`
- **`provider.referenceIdentification`** (`string`): The provider's [Taxonomy Code](https://x12.org/codes/provider-taxonomy-codes). Only used when the provider's taxonomy code is relevant to the eligibility/benefit inquiry. For example, an institutional provider such as a hospital may need to use a taxonomy code to specify a specific unit or department.
- **`provider.serviceProviderNumber`** (`string`): The provider's service provider number. Only include when specifically instructed by a payer - for example, when the provider doesn't have an [NPI](https://www.stedi.com/docs/healthcare/national-provider-identifier). This use case is very rarely supported, and is typically when the provider is a non-medical provider, such as a social worker, home health aide, or transportation service.
- **`provider.servicesPlanID`** (`string`)
- **`provider.ssn`** (`string`): The provider's Social Security Number (SSN).
    - Only include when specifically instructed by a payer - for example, if the provider doesn't have an [NPI](https://www.stedi.com/docs/healthcare/national-provider-identifier). This use case is very rarely supported, and is typically when the provider is a non-medical provider, such as a social worker, home health aide, or transportation service.
    - If the payer has instructed you to send an EIN but the provider operates using their SSN, use provider.taxId instead of this field.
    - Don't use this for Federally-administered programs, such as Medicare.
- **`provider.stateLicenceNumber`** (`string`): The provider's state license number. If you include this information, you must also include the `informationReceiverAdditionalIdentifierState`. Only include when required by a payer.
- **`provider.submitterIdNumber`** (`string`): The provider's submitter identification number. Only include when required by a payer.
- **`provider.taxId`** (`string`): The provider's Federal Taxpayer Identification Number. This is typically the provider's EIN (Employer Identification Number), but the provider's SSN may be used if the provider does not have an EIN. Only include if required by the payer.
- **`submitterTransactionIdentifier`** (`string`): This property is only relevant for asynchronous batch eligibility checks.
- **`subscriber`** (`object`) (required): The primary policyholder for the insurance plan _or_ a dependent with a unique member ID. If a dependent has a unique member ID, include their information here and leave `dependents` empty.
- At a minimum, our API requires that you supply at least one of these fields in the request: `memberId`, `dateOfBirth`, or `lastName`. However, each payer has different requirements, so you should supply the fields necessary for each payer to identify the subscriber in their system.
- When you provide all four of `memberId`, `dateOfBirth`, `firstName`, and `lastName`, payers are required to return a response if the member is in their database. Some payers may be able to search with less information, but this varies by payer.
- We recommend always including the patient's member ID when possible.
- Enter the patient's name exactly as written on their insurance card, if available, including any special or punctuation characters such as apostrophes, hyphens (dashes), or spaces. Visit [patient names](https://www.stedi.com/docs/healthcare/send-eligibility-checks#patient-names) for all best practices to avoid unnecessary failures.
- **`subscriber.additionalIdentification`** (`object`): Use this object when you need to provide an identification number other than or in addition to the subscriber's member ID. For example, you may provide the patient account number.

Don't include the health insurance claim number or the medicaid recipient ID number here unless they are different from the member ID.
- **`subscriber.additionalIdentification.agencyClaimNumber`** (`string`): The Property and Casualty Claim Number associated with the patient. You should only submit this value when when you are submitting an eligibility request to a property and casualty payer.
- **`subscriber.additionalIdentification.contractNumber`** (`string`): The contract number for an existing contract between the payer and the provider requesting the eligibility check.
- **`subscriber.additionalIdentification.healthInsuranceClaimNumber`** (`string`): The health insurance claim number.
- **`subscriber.additionalIdentification.identificationCardSerialNumber`** (`string`): The identification card serial number. You can include this when the ID card has a number in addition to the member ID number. The Identification Card Serial Number uniquely identifies the card when multiple cards have been or will be issued to a member, such as a replacement card.
- **`subscriber.additionalIdentification.insurancePolicyNumber`** (`string`): The insurance policy number.
- **`subscriber.additionalIdentification.medicalRecordIdentificationNumber`** (`string`): The medical record identification number.
- **`subscriber.additionalIdentification.memberIdentificationNumber`** (`string`): This property is never used in practice. Supply the subscriber's member ID in `subscriber.memberId`.
- **`subscriber.additionalIdentification.patientAccountNumber`** (`string`): The patient account number.
- **`subscriber.additionalIdentification.planNetworkIdentificationNumber`** (`string`): The plan network identification number.
- **`subscriber.additionalIdentification.planNumber`** (`string`): The insurance plan number.
- **`subscriber.additionalIdentification.policyNumber`** (`string`): The insurance group or policy number.
- **`subscriber.address`** (`object`): Address information for the subscriber. When providing address information:
  - The `address1` and `city` properties are **required** for standard eligibility checks and MBI lookups with SSN. We also recommend including `state` for member identification.
  - When performing an [MBI lookup without SSN](https://www.stedi.com/docs/healthcare/mbi-lookup) (Payer ID: `MBILUNOSSN`), only `state` is required. You can omit `address1` and `city`.
- **`subscriber.address.address1`** (`string`): The first line of the address. Required for all payers except payer ID `MBILUNOSSN`.
- **`subscriber.address.address2`** (`string`): The second line of the address.
- **`subscriber.address.city`** (`string`): The city. Required for all payers except payer ID `MBILUNOSSN`.
- **`subscriber.address.countryCode`** (`string`): The two-letter country code from [Part 1 of ISO 3166](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2).
- **`subscriber.address.countrySubDivisionCode`** (`string`): The country subdivision code from [Part 2 of ISO 3166](https://en.wikipedia.org/wiki/ISO_3166-2).
- **`subscriber.address.postalCode`** (`string`): The United States or Canadian postal code, excluding punctuation and blanks.
- **`subscriber.address.state`** (`string`): The US state or Canadian province code. For example, `TN` for Tennessee or `NB` for New Brunswick.
  - Allowed values: `NL`, `PE`, `NS`, `NB`, `QC`, `ON`, `MB`, `SK`, `AB`, `BC`, `YT`, `NT`, `NU`, `DC`, `AS`, `GU`, `MP`, `PR`, `UM`, `VI`, `AA`, `AE`, `AP`, `AK`, `AL`, `AR`, `AZ`, `CA`, `CO`, `CT`, `DE`, `FL`, `GA`, `HI`, `IA`, `ID`, `IL`, `IN`, `KS`, `KY`, `LA`, `MA`, `MD`, `ME`, `MI`, `MN`, `MO`, `MS`, `MT`, `NC`, `ND`, `NE`, `NH`, `NJ`, `NM`, `NV`, `NY`, `OH`, `OK`, `OR`, `PA`, `RI`, `SC`, `SD`, `TN`, `TX`, `UT`, `VA`, `VT`, `WA`, `WI`, `WV`, `WY`
- **`subscriber.beginningCardIssueDate`** (`string`): The date the subscriber's insurance card was issued. Use when you need to specify a date range. Provide the end of the range in the `endCardIssueDate` property.
- **`subscriber.beginningPlanIssueDate`** (`string`): The date the subscriber's insurance plan begins. Use when you need to specify a date range. Provide the end of the range in the `endPlanIssueDate` property.
- **`subscriber.birthSequenceNumber`** (`string`): The number assigned to each family member born with the same birth date, such as twins or triplets. Use to indicate the birth order when there are multiple births associated with the provided birth date.
- **`subscriber.caseNumber`** (`string`): The case number associated with the subscriber.
- **`subscriber.coverageLevelCode`** (`string`): This property is no longer used.
- **`subscriber.dateOfBirth`** (`string`): The subscriber's date of birth.
- **`subscriber.endCardIssueDate`** (`string`): The date the subscriber's insurance card expires. Use when you need to specify a date range. Provide the start of the range in the `beginningCardIssueDate` property.
- **`subscriber.endPlanIssueDate`** (`string`): The date the subscriber's insurance plan ends. Use when you need to specify a date range. Provide the start of the range in the `beginningPlanIssueDate` property.
- **`subscriber.firstName`** (`string`): The patient's first name.
- **`subscriber.gender`** (`string`)
  - Allowed values: `M`, `F`
- **`subscriber.groupNumber`** (`string`): The group number associated with the subscriber's insurance policy.
- **`subscriber.healthCareCodeInformation`** (`array of HealthCareInformation objects`): Information about the subscriber's health care diagnosis. You can include up to eight entries in this array. 

The first array entry must have `diagnosisTypeCode` set to `ABK`. All subsequent entries must have `diagnosisTypeCode` set to `ABF`.
- **`subscriber.healthCareCodeInformation[].diagnosisCode`** (`string`) (required): The diagnosis code. Omit the decimal points in diagnosis codes - the decimal point is assumed.
- **`subscriber.healthCareCodeInformation[].diagnosisTypeCode`** (`string`) (required): The type of diagnosis code you are providing. You can set to `BK` - International Classification of Diseases Clinical Modification (ICD-9-CM) Principal Diagnosis, `ABK` - International Classification of Diseases Clinical Modification (ICD-10-CM) Principal Diagnosis, `BF`- International Classification of Diseases Clinical Modification (ICD-9-CM) Diagnosis, or `ABF`- International Classification of Diseases Clinical Modification (ICD-10-CM) Diagnosis. 

 Note that ICD-9 codes are **deprecated** and should no longer be used in eligibility checks.
  - Allowed values: `BK`, `ABK`, `BF`, `ABF`
- **`subscriber.idCard`** (`string`): The subscriber's identification card number. Include this property when this number is different than the subscriber's member ID. This is common in Medicaid.
- **`subscriber.idCardIssueDate`** (`string`): The date the subscriber's insurance card was issued. Use to specify a single date.
- **`subscriber.lastName`** (`string`): The subscriber's last name. **Don't** include the subscriber's name suffix, such as Jr. or III. Use the designated `suffix` property instead.
- **`subscriber.medicaidRecipientIdentificationNumber`** (`string`): The Medicaid Recipient Identification Number. You can provide this number to identify the subscriber when it is the primary number the payer knows a member by (such as for Medicare or Medicaid). Do not supply this value unless it is different from the `memberId`.
- **`subscriber.memberId`** (`string`): The member ID for the subscriber's insurance policy.
- **`subscriber.middleName`** (`string`): The patient's middle name or middle initial.
- **`subscriber.planIssueDate`** (`string`): The date the subscriber's insurance plan begins. Use to specify a single date.
- **`subscriber.providerCode`** (`string`): Use this for providers that are not requesting the eligibility check - the requestor is specified in the `provider` object. For example, if you are a hospital making an eligibility request, this is where you would specify information about a referring provider's role. 

 This property is **required** when the `providerIdentifier` and `referenceIdentificationQualifier` properties are populated. 

 You can use one of the following: `AD` - Admitting, `AT` - Attending, `BI` - Billing, `CO` - Consulting, `CV` - Covering, `H` - Hospital, `HH` - Home Health Care, `LA` - Laboratory, `OT` - Other Physician, `P1` - Pharmacist, `P2` - Pharmacy, `PC` - Primary Care Physician, `PE` - Performing, `R` - Rural Health Clinic, `RF` - Referring, `SB` - Submitting, `SK` - Skilled Nursing Facility, `SU` - Supervising
  - Allowed values: `AD`, `AT`, `BI`, `CO`, `CV`, `H`, `HH`, `LA`, `OT`, `P1`, `P2`, `PC`, `PE`, `R`, `RF`, `SK`, `SU`
- **`subscriber.providerIdentifier`** (`string`): The provider identifier you specified in the `referenceIdentificationQualifier` property. It is **required** if you set the `referenceIdentificationQualifier`. For example, this property could contain the provider's National Provider ID or Federal Taxpayer Identification number.

 If you set the `referenceIdentificationQualifier` to `PXC`, then this property should contain the provider's taxonomy code.
- **`subscriber.referenceIdentificationQualifier`** (`string`): Use this for providers that are not requesting the eligibility check. This is the type of `providerIdentifier` you are providing.
- Set to `HPI` when the National Provider ID is mandated for use.
- Set to `PXC` if you're identifying a type of specialty associated with services provided to the subscriber. 
 
 Otherwise, you can set to the following: `9K` - Servicer, `D3` - National Council for Prescription Drug Programs Pharmacy Number, `EI` - Employer's Identification Number, `HPI` - Centers for Medicare and Medicaid Services National Provider Identifier, `PXC` - Health Care Provider Taxonomy Code, `SY - Social Security Number, `TJ` - Federal Taxpayer's Identification Number
  - Allowed values: `9K`, `D3`, `EI`, `HPI`, `PXC`, `SY`, `TJ`
- **`subscriber.spendDownAmount`** (`string`): Identify the dollar amount the subscriber will apply toward their spend down amount, if required. For some Medicaid programs, individuals must pay a certain amount towards their healthcare cost (spend down) before coverage starts.
- **`subscriber.spendDownTotalBilledAmount`** (`string`): The subscriber's spend down total billed amount.
- **`subscriber.ssn`** (`string`): The subscriber's Social Security Number (SSN). Many commercial and government payers ignore this property due to concerns about member privacy. However, some Medicaid programs support alternative searches using the patient's Social Security Number, instead of the member ID.
- **`subscriber.suffix`** (`string`): The name suffix, such as Jr., Sr., or III. Only include the subscriber's personal name suffix - **don't** include professional or academic titles, such as M.D. or MBA.
- **`tradingPartnerName`** (`string`): The payer's name, such as Cigna or Aetna.
- **`tradingPartnerServiceId`** (`string`) (required): The payer ID. Visit the [Payer Network](https://www.stedi.com/healthcare/network) for a complete list.
 - You can send requests using the primary payer ID, the Stedi payer ID, or any alias listed in the payer record.
 - You must include leading `0` characters - payer IDs are alphanumeric strings and must be treated as complete strings, not integers. For example, use `00540` for SISCO, not `540`.

**Example:**

```json
{
  "dependents": [
    {
      "dateOfBirth": "19521121",
      "firstName": "Jane",
      "lastName": "Doe"
    }
  ],
  "encounter": {
    "serviceTypeCodes": [
      "30"
    ]
  },
  "provider": {
    "npi": "1999999984",
    "organizationName": "Provider Name"
  },
  "subscriber": {
    "firstName": "John",
    "lastName": "Doe",
    "memberId": "UHC202649"
  },
  "tradingPartnerServiceId": "87726"
}
```

### Responses

#### 200

EligibilityCheck 200 response

**Schema:** `EligibilityCheckResponseContent`

**Properties:**

- **`benefitsInformation`** (`array of BenefitsInformation objects`): Information about the patient's healthcare benefits, such as coverage level (individual vs. family), coverage type (deductibles, co-pays, etc.), out of pocket maximums, and more. 
 
 Payers typically return at least the following properties: `code`, `coverageLevelCode`, `serviceTypeCodes`, and either `benefitAmount` or `benefitPercent`. However, the exact properties returned in this object are up to the payer's discretion.

The payer may send benefits information for service type codes (STCs) you didn't request - this is expected. The STC you send in the request tells the payer the types of benefits information you want, but they aren't required to respond with exactly the same STC(s) in the response. Receiving different STCs than you requested can also mean that the payer is ignoring the STC you sent, which is why we recommend [testing payers](https://www.stedi.com/docs/healthcare/eligibility-stc-procedure-codes#test-payer-stc-support) to determine their support for specific STCs.

Visit [Determine patient benefits](https://www.stedi.com/docs/healthcare/eligibility-active-coverage-benefits) for more information about benefit types, details about how to interpret the `benefitsInformation` array, and additional examples.
- **`benefitsInformation[].additionalInformation`** (`array of AdditionalInformation objects`): A free-form message containing additional information about the benefits in the response.
- **`benefitsInformation[].additionalInformation[].description`** (`string`): A free-form message containing additional information about the benefits in the response.
- **`benefitsInformation[].authOrCertIndicator`** (`string`): Code indicating whether the benefit is subject to prior authorization or certification.

Payers may sometimes return other non-compliant values.
  - Allowed values: `N`, `U`, `Y`
- **`benefitsInformation[].benefitAmount`** (`string`): The monetary benefit amount, such as a patient's co-pay or deductible. This value is expressed as a decimal, such as 100.00. 
 
 The payer will always send a value in this property when the `benefitsInformation[].code` = `B` - Co-Payment, `C` - Deductible, `G` - Out of Pocket (Stop Loss), `J` - Cost Containment, or `Y` - Spend Down. For those codes, this value represents the patient's portion of responsibility. 
 
 The payer will **never** send this value when `benefitsInformation[].code` = `A` - Co-Insurance. This property can contain zero when the patient has no responsibility. 
 
 Learn more about [patient costs](https://www.stedi.com/docs/healthcare/eligibility-patient-responsibility-benefits).
- **`benefitsInformation[].benefitPercent`** (`string`): The percentage of the benefit, such as co-insurance. This property can contain zero when the patient has no responsibility. 
 
 The payer will always send a value in this property when `benefitsInformation[].code` = `A` - Co-Insurance. For this code, this value represents the patient's portion of the responsibility. The percentage is expressed as a decimal, such as `0.80` represents 80%. 
 
 The payer will **never** send a value in this property when `benefitsInformation[].code` = `B` - Co-Payment, `C` - Deductible, `G` - Out of Pocket (Stop Loss), `J` - Cost Containment, or `Y` - Spend Down. 
 
 Learn more about [patient costs](https://www.stedi.com/docs/healthcare/eligibility-patient-responsibility-benefits).
- **`benefitsInformation[].benefitQuantity`** (`string`): The quantity of the benefit, qualified by the type specified in `quantityQualifier`. For example, `10` when the `quantityQualifier` is `Visits`.
- **`benefitsInformation[].benefitsAdditionalInformation`** (`object`): Identifying information specific to this type of benefit.
- **`benefitsInformation[].benefitsAdditionalInformation.alternativeListId`** (`string`): The alternative list ID. This identifier allows the payer to specify a list of drugs and its alternative drugs with the associated formulary status for the patient.
- **`benefitsInformation[].benefitsAdditionalInformation.coverageListId`** (`string`): The coverage list ID. This identifier allows the payer to specify the identifier of a list of drugs that have coverage limitations for the associated patient.
- **`benefitsInformation[].benefitsAdditionalInformation.drugFormularyNumber`** (`string`): The drug formulary number.
- **`benefitsInformation[].benefitsAdditionalInformation.familyUnitNumber`** (`string`): The family unit number. This is returned when the payer is a pharmacy benefits manager (PBM) and the patient has a suffix to their member ID number that is used in the NCPDP Telecom Standard Insurance Segment, in field `303-C3` (Person Code). For all other uses, the family unit number (suffix) is considered part of the patient's member ID number.
- **`benefitsInformation[].benefitsAdditionalInformation.groupDescription`** (`string`): Group name
- **`benefitsInformation[].benefitsAdditionalInformation.groupNumber`** (`string`): The group number for the patient's health insurance plan.
- **`benefitsInformation[].benefitsAdditionalInformation.hicNumber`** (`string`): The health insurance claim number (HICN). Note that CMS previously used the HICN to uniquely identify Medicare beneficiaries. However, they have since transitioned to a new, randomized Medicare Beneficiary Identifier (MBI) format. The HICN is no longer used for Medicare transactions but this property is now used by some payers to return MBI. If you receive a value in this property that matches the format specified in the [Medicare Beneficiary Identifier documentation](https://www.cms.gov/training-education/partner-outreach-resources/new-medicare-card/medical-beneficiary-identifiers-mbis), the number is likely an MBI and we recommend sending a follow-up eligibility check to CMS for additional benefits data. This most commonly occurs with patients who are covered by both Medicare and Medicaid.
- **`benefitsInformation[].benefitsAdditionalInformation.insurancePolicyNumber`** (`string`): The insurance policy number.
- **`benefitsInformation[].benefitsAdditionalInformation.medicaidRecepientIdNumber`** (`string`): Deprecated (misspelled): use medicaidRecipientIdNumber. The Medicaid Recipient Identification number.
This shape is deprecated: Misspelled. Use medicaidRecipientIdNumber instead. Still populated for backward compatibility.
- **`benefitsInformation[].benefitsAdditionalInformation.medicaidRecipientIdNumber`** (`string`): The Medicaid Recipient Identification number.
- **`benefitsInformation[].benefitsAdditionalInformation.medicalAssistanceCategory`** (`string`): The medical assistance category.
- **`benefitsInformation[].benefitsAdditionalInformation.memberId`** (`string`): The patient's member ID.
- **`benefitsInformation[].benefitsAdditionalInformation.planDescription`** (`string`): Plan name
- **`benefitsInformation[].benefitsAdditionalInformation.planNetworkDescription`** (`string`): Plan network name
- **`benefitsInformation[].benefitsAdditionalInformation.planNetworkIdNumber`** (`string`): The plan network identification number.
- **`benefitsInformation[].benefitsAdditionalInformation.planNumber`** (`string`): The insurance plan number.
- **`benefitsInformation[].benefitsAdditionalInformation.policyNumber`** (`string`): The patient's policy number.
- **`benefitsInformation[].benefitsAdditionalInformation.priorAuthorizationNumber`** (`string`): The prior authorization number.
- **`benefitsInformation[].benefitsAdditionalInformation.referralNumber`** (`string`): The referral number.
- **`benefitsInformation[].benefitsDateInformation`** (`object`): Dates associated with the benefits.
  - This is where you can find benefit-specific eligibility dates, if provided. These dates override dates provided in `planDateInformation` for this benefit type.
  - This is where the payer may specify the last time the service was rendered (`latestVisitOrConsultation`), which you can use to determine whether the patient has already reached the allowed frequency, if applicable. For example, this object could contain the date when the patient received their last dental cleaning.
  - These dates only apply to the `benefitsInformation` object in which this `benefitsDateInformation` is provided.
- **`benefitsInformation[].benefitsDateInformation.added`** (`string`): Added date. Payers may return this information in the case of retroactive eligibility.
- **`benefitsInformation[].benefitsDateInformation.admission`** (`string`): The admission date or dates.
- **`benefitsInformation[].benefitsDateInformation.admissions`** (`array of DtpDate objects`): The date(s) for admission.
- **`benefitsInformation[].benefitsDateInformation.admissions[].date`** (`string`): A single date.
- **`benefitsInformation[].benefitsDateInformation.admissions[].endDate`** (`string`): The end date of a range.
- **`benefitsInformation[].benefitsDateInformation.admissions[].startDate`** (`string`): The beginning date of a range.
- **`benefitsInformation[].benefitsDateInformation.benefit`** (`string`): The benefit date.
- **`benefitsInformation[].benefitsDateInformation.benefitBegin`** (`string`): The date when the benefit begins.
- **`benefitsInformation[].benefitsDateInformation.benefitEnd`** (`string`): The date when the benefit ends.
- **`benefitsInformation[].benefitsDateInformation.certification`** (`string`): The certification date.
- **`benefitsInformation[].benefitsDateInformation.cobraBegin`** (`string`): The date when COBRA coverage begins.
- **`benefitsInformation[].benefitsDateInformation.cobraEnd`** (`string`): The date when COBRA coverage ends.
- **`benefitsInformation[].benefitsDateInformation.completion`** (`string`): The completion date.
- **`benefitsInformation[].benefitsDateInformation.coordinationOfBenefits`** (`string`): The coordination of benefits date.
- **`benefitsInformation[].benefitsDateInformation.dateOfDeath`** (`string`): The date of death.
- **`benefitsInformation[].benefitsDateInformation.dateOfLastUpdate`** (`string`): The date when the plan information was last updated.
- **`benefitsInformation[].benefitsDateInformation.discharge`** (`string`): The discharge date.
- **`benefitsInformation[].benefitsDateInformation.discharges`** (`array of DtpDate objects`): The date(s) when the patient was discharged.
- **`benefitsInformation[].benefitsDateInformation.discharges[].date`** (`string`): A single date.
- **`benefitsInformation[].benefitsDateInformation.discharges[].endDate`** (`string`): The end date of a range.
- **`benefitsInformation[].benefitsDateInformation.discharges[].startDate`** (`string`): The beginning date of a range.
- **`benefitsInformation[].benefitsDateInformation.effectiveDateOfChange`** (`string`): The effective date of change.
- **`benefitsInformation[].benefitsDateInformation.eligibility`** (`string`): Plan eligibility dates.
- **`benefitsInformation[].benefitsDateInformation.eligibilityBegin`** (`string`): The date when the patient is first eligible for benefits under the plan.
- **`benefitsInformation[].benefitsDateInformation.eligibilityEnd`** (`string`): The date when the patient is no longer eligible for benefits under the plan.
- **`benefitsInformation[].benefitsDateInformation.enrollment`** (`string`): The date when the patient is enrolled in the plan.
- **`benefitsInformation[].benefitsDateInformation.issue`** (`string`): The issue date.
- **`benefitsInformation[].benefitsDateInformation.latestVisitOrConsultation`** (`string`): The latest visit or consultation date. This date may be used to determine whether the patient has already reached the allowed frequency for a specific benefit.
- **`benefitsInformation[].benefitsDateInformation.periodEnd`** (`string`): The end of a period.
- **`benefitsInformation[].benefitsDateInformation.periodStart`** (`string`): The start of a period.
- **`benefitsInformation[].benefitsDateInformation.plan`** (`string`): Only included when multiple plans apply to the patient or multiple plan periods apply.
- **`benefitsInformation[].benefitsDateInformation.planBegin`** (`string`): Only included when multiple plans apply to the patient or multiple plan periods apply.
- **`benefitsInformation[].benefitsDateInformation.planEnd`** (`string`): The date coverage from the plan ends.
- **`benefitsInformation[].benefitsDateInformation.policyEffective`** (`string`): The date when the policy becomes effective.
- **`benefitsInformation[].benefitsDateInformation.policyExpiration`** (`string`): The date when the policy expires.
- **`benefitsInformation[].benefitsDateInformation.premiumPaidToDateEnd`** (`string`): The end of period when the plan premium payments are up-to-date.
- **`benefitsInformation[].benefitsDateInformation.premiumPaidtoDateBegin`** (`string`): The start of the period when the plan premium was paid in full.
- **`benefitsInformation[].benefitsDateInformation.primaryCareProvider`** (`string`): The primary care provider date.
- **`benefitsInformation[].benefitsDateInformation.service`** (`string`): The service date or dates.
- **`benefitsInformation[].benefitsDateInformation.status`** (`string`): The status date.
- **`benefitsInformation[].benefitsRelatedEntities`** (`array of BenefitsRelatedEntity objects`): Other entities associated with the eligibility or benefits. This could be a provider, an individual, an organization, or another payer. When present, this array typically contains information about the patient's primary care provider (PCP), another organization that handles a specific benefit type (such as telehealth mental health services), or another health plan for the patient (coordination of benefits scenarios).
- This is where information for a crossover carrier such as Medicaid or Medicare is provided, if it's applicable to the patient and the payer supports it.
- For Blue Cross Blue Shield (BCBS) payers, Stedi returns an entry containing information about the patient's home plan - the plan that actually verified the coverage. In this object, the `entityIdentifier` property is set to `Party Performing Verification`. [Learn more](https://www.stedi.com/docs/healthcare/eligibility-active-coverage-benefits#bcbs-home-plan)
- **`benefitsInformation[].benefitsRelatedEntities[].address`** (`object`)
- **`benefitsInformation[].benefitsRelatedEntities[].address.address1`** (`string`): The first line of the address.
- **`benefitsInformation[].benefitsRelatedEntities[].address.address2`** (`string`): The second line of the address.
- **`benefitsInformation[].benefitsRelatedEntities[].address.city`** (`string`): The city.
- **`benefitsInformation[].benefitsRelatedEntities[].address.countryCode`** (`string`): The two-letter country code from [Part 1 of ISO 3166](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2).
- **`benefitsInformation[].benefitsRelatedEntities[].address.countrySubDivisionCode`** (`string`): The country subdivision code from [Part 2 of ISO 3166](https://en.wikipedia.org/wiki/ISO_3166-2).
- **`benefitsInformation[].benefitsRelatedEntities[].address.postalCode`** (`string`): The United States or Canadian postal code, excluding punctuation and blanks.
- **`benefitsInformation[].benefitsRelatedEntities[].address.state`** (`string`): The US state or Canadian province code with unknown option. For example, `TN` for Tennessee or `NB` for New Brunswick.

Payers may sometimes return other non-compliant values.
  - Allowed values: `NL`, `PE`, `NS`, `NB`, `QC`, `ON`, `MB`, `SK`, `AB`, `BC`, `YT`, `NT`, `NU`, `DC`, `AS`, `GU`, `MP`, `PR`, `UM`, `VI`, `AA`, `AE`, `AP`, `AK`, `AL`, `AR`, `AZ`, `CA`, `CO`, `CT`, `DE`, `FL`, `GA`, `HI`, `IA`, `ID`, `IL`, `IN`, `KS`, `KY`, `LA`, `MA`, `MD`, `ME`, `MI`, `MN`, `MO`, `MS`, `MT`, `NC`, `ND`, `NE`, `NH`, `NJ`, `NM`, `NV`, `NY`, `OH`, `OK`, `OR`, `PA`, `RI`, `SC`, `SD`, `TN`, `TX`, `UT`, `VA`, `VT`, `WA`, `WI`, `WV`, `WY`
- **`benefitsInformation[].benefitsRelatedEntities[].contactInformation`** (`object`)
- **`benefitsInformation[].benefitsRelatedEntities[].contactInformation.contacts`** (`array of Contacts objects`): The contact information.
- **`benefitsInformation[].benefitsRelatedEntities[].contactInformation.contacts[].communicationMode`** (`string`): Payers may sometimes return other non-compliant values.
  - Allowed values: `Electronic Data Interchange Access Number`, `Electronic Mail`, `Facsimile`, `Telephone`, `Uniform Resource Locator (URL)`, `Telephone Extension`, `Work Phone Number`
- **`benefitsInformation[].benefitsRelatedEntities[].contactInformation.contacts[].communicationNumber`** (`string`): The communication number referenced in `communicationMode`. It includes the country or area code when applicable. 
 
 Note that phone numbers are formatted as AAABBBCCCC, where AAA represents the area code, BBB represents the telephone number prefix, and CCCC represents the telephone number. Phone numbers are provided without separators, such as dashes or parentheses. For example, `5551123345` for `555-112-3345`.
- **`benefitsInformation[].benefitsRelatedEntities[].contactInformation.name`** (`string`): The name of the contact person.
- **`benefitsInformation[].benefitsRelatedEntities[].entityFirstname`** (`string`): The first name of the entity, if the entity is a person.
- **`benefitsInformation[].benefitsRelatedEntities[].entityIdentification`** (`string`): Code identifying the type of value provided in `entityIdentificationValue`. For example, `FI` - Federal Taxpayer's Identification Number.

Payers may sometimes return other non-compliant values.
  - Allowed values: `24`, `34`, `46`, `FA`, `FI`, `II`, `MI`, `NI`, `PI`, `PP`, `SV`, `XV`, `XX`
- **`benefitsInformation[].benefitsRelatedEntities[].entityIdentificationValue`** (`string`): The identification number for the entity, qualified by the code in `entityIdentification`.
- **`benefitsInformation[].benefitsRelatedEntities[].entityIdentifier`** (`string`): Code identifying an organizational entity, a physical location, property or an individual. 
  - `PPO` is used to identify a PPO by name or identification number, and also may also be used if identifying the Network that benefits are restricted to for In-Network benefits.

Payers may sometimes return other non-compliant values.
  - Allowed values: `Contracted Service Provider`, `Preferred Provider Organization (PPO)`, `Provider`, `Third-Party Administrator`, `Employer`, `Other Physician`, `Facility`, `Gateway Provider`, `Group`, `Independent Physicians Association (IPA)`, `Insured or Subscriber`, `Legal Representative`, `Origin Carrier`, `Primary Care Provider`, `Prior Insurance Carrier`, `Plan Sponsor`, `Payer`, `Primary Payer`, `Secondary Payer`, `Tertiary Payer`, `Party Performing Verification`, `Vendor`, `Organization Completing Configuration Change`, `Utilization Management Organization`, `Managed Care Organization`
- **`benefitsInformation[].benefitsRelatedEntities[].entityMiddlename`** (`string`): The middle name or initial of the entity, if the entity is a person.
- **`benefitsInformation[].benefitsRelatedEntities[].entityName`** (`string`): The last name (if the entity is a person) or the business name (if the entity is an organization).
- **`benefitsInformation[].benefitsRelatedEntities[].entityRelationship`** (`string`): Code specifying the relationship between the entity and the patient.

Payers may sometimes return other non-compliant values.
  - Allowed values: `01`, `02`, `27`, `41`, `48`, `65`, `72`
- **`benefitsInformation[].benefitsRelatedEntities[].entitySuffix`** (`string`): The name suffix, such as Sr. Jr. or III.
- **`benefitsInformation[].benefitsRelatedEntities[].entityType`** (`string`): The type of entity.

Payers may sometimes return other non-compliant values.
  - Allowed values: `Person`, `Non-Person Entity`
- **`benefitsInformation[].benefitsRelatedEntities[].providerInformation`** (`object`)
- **`benefitsInformation[].benefitsRelatedEntities[].providerInformation.providerCode`** (`string`): A code indicating the type of provider. Visit [Eligibility code lists](https://www.stedi.com/docs/healthcare/eligibility-code-lists#provider-codes) for a complete list.

Payers may sometimes return other non-compliant values.
  - Allowed values: `AD`, `AT`, `BI`, `CO`, `CV`, `H`, `HH`, `LA`, `OT`, `P1`, `P2`, `PC`, `PE`, `R`, `RF`, `SB`, `SK`, `SU`
- **`benefitsInformation[].benefitsRelatedEntities[].providerInformation.referenceIdentification`** (`string`): The provider's taxonomy code.
- **`benefitsInformation[].benefitsRelatedEntity`** (`object`): Identify another entity associated with the eligibility or benefits. This could be a provider, an individual, an organization, or another payer.

This array is commonly used to designate the patient's primary care provider (PCP), another organization that handles a specific carveout benefit type, or another health plan for the patient (coordination of benefits scenarios).

This is where information for a crossover carrier such as Medicaid or Medicare is provided, if it's applicable to the patient and the payer supports it.
- **`benefitsInformation[].benefitsRelatedEntity.address`** (`object`)
- **`benefitsInformation[].benefitsRelatedEntity.address.address1`** (`string`): The first line of the address.
- **`benefitsInformation[].benefitsRelatedEntity.address.address2`** (`string`): The second line of the address.
- **`benefitsInformation[].benefitsRelatedEntity.address.city`** (`string`): The city.
- **`benefitsInformation[].benefitsRelatedEntity.address.countryCode`** (`string`): The two-letter country code from [Part 1 of ISO 3166](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2).
- **`benefitsInformation[].benefitsRelatedEntity.address.countrySubDivisionCode`** (`string`): The country subdivision code from [Part 2 of ISO 3166](https://en.wikipedia.org/wiki/ISO_3166-2).
- **`benefitsInformation[].benefitsRelatedEntity.address.postalCode`** (`string`): The United States or Canadian postal code, excluding punctuation and blanks.
- **`benefitsInformation[].benefitsRelatedEntity.address.state`** (`string`): The US state or Canadian province code with unknown option. For example, `TN` for Tennessee or `NB` for New Brunswick.

Payers may sometimes return other non-compliant values.
  - Allowed values: `NL`, `PE`, `NS`, `NB`, `QC`, `ON`, `MB`, `SK`, `AB`, `BC`, `YT`, `NT`, `NU`, `DC`, `AS`, `GU`, `MP`, `PR`, `UM`, `VI`, `AA`, `AE`, `AP`, `AK`, `AL`, `AR`, `AZ`, `CA`, `CO`, `CT`, `DE`, `FL`, `GA`, `HI`, `IA`, `ID`, `IL`, `IN`, `KS`, `KY`, `LA`, `MA`, `MD`, `ME`, `MI`, `MN`, `MO`, `MS`, `MT`, `NC`, `ND`, `NE`, `NH`, `NJ`, `NM`, `NV`, `NY`, `OH`, `OK`, `OR`, `PA`, `RI`, `SC`, `SD`, `TN`, `TX`, `UT`, `VA`, `VT`, `WA`, `WI`, `WV`, `WY`
- **`benefitsInformation[].benefitsRelatedEntity.contactInformation`** (`object`)
- **`benefitsInformation[].benefitsRelatedEntity.contactInformation.contacts`** (`array of Contacts objects`): The contact information.
- **`benefitsInformation[].benefitsRelatedEntity.contactInformation.contacts[].communicationMode`** (`string`): Payers may sometimes return other non-compliant values.
  - Allowed values: `Electronic Data Interchange Access Number`, `Electronic Mail`, `Facsimile`, `Telephone`, `Uniform Resource Locator (URL)`, `Telephone Extension`, `Work Phone Number`
- **`benefitsInformation[].benefitsRelatedEntity.contactInformation.contacts[].communicationNumber`** (`string`): The communication number referenced in `communicationMode`. It includes the country or area code when applicable. 
 
 Note that phone numbers are formatted as AAABBBCCCC, where AAA represents the area code, BBB represents the telephone number prefix, and CCCC represents the telephone number. Phone numbers are provided without separators, such as dashes or parentheses. For example, `5551123345` for `555-112-3345`.
- **`benefitsInformation[].benefitsRelatedEntity.contactInformation.name`** (`string`): The name of the contact person.
- **`benefitsInformation[].benefitsRelatedEntity.entityFirstname`** (`string`): The first name of the entity, if the entity is a person.
- **`benefitsInformation[].benefitsRelatedEntity.entityIdentification`** (`string`): Code identifying the type of value provided in `entityIdentificationValue`. For example, `FI` - Federal Taxpayer's Identification Number.

Payers may sometimes return other non-compliant values.
  - Allowed values: `24`, `34`, `46`, `FA`, `FI`, `II`, `MI`, `NI`, `PI`, `PP`, `SV`, `XV`, `XX`
- **`benefitsInformation[].benefitsRelatedEntity.entityIdentificationValue`** (`string`): The identification number for the entity, qualified by the code in `entityIdentification`.
- **`benefitsInformation[].benefitsRelatedEntity.entityIdentifier`** (`string`): Code identifying an organizational entity, a physical location, property or an individual. 
  - `PPO` is used to identify a PPO by name or identification number, and also may also be used if identifying the Network that benefits are restricted to for In-Network benefits.

Payers may sometimes return other non-compliant values.
  - Allowed values: `Contracted Service Provider`, `Preferred Provider Organization (PPO)`, `Provider`, `Third-Party Administrator`, `Employer`, `Other Physician`, `Facility`, `Gateway Provider`, `Group`, `Independent Physicians Association (IPA)`, `Insured or Subscriber`, `Legal Representative`, `Origin Carrier`, `Primary Care Provider`, `Prior Insurance Carrier`, `Plan Sponsor`, `Payer`, `Primary Payer`, `Secondary Payer`, `Tertiary Payer`, `Party Performing Verification`, `Vendor`, `Organization Completing Configuration Change`, `Utilization Management Organization`, `Managed Care Organization`
- **`benefitsInformation[].benefitsRelatedEntity.entityMiddlename`** (`string`): The middle name or initial of the entity, if the entity is a person.
- **`benefitsInformation[].benefitsRelatedEntity.entityName`** (`string`): The last name (if the entity is a person) or the business name (if the entity is an organization).
- **`benefitsInformation[].benefitsRelatedEntity.entityRelationship`** (`string`): Code specifying the relationship between the entity and the patient.

Payers may sometimes return other non-compliant values.
  - Allowed values: `01`, `02`, `27`, `41`, `48`, `65`, `72`
- **`benefitsInformation[].benefitsRelatedEntity.entitySuffix`** (`string`): The name suffix, such as Sr. Jr. or III.
- **`benefitsInformation[].benefitsRelatedEntity.entityType`** (`string`): The type of entity.

Payers may sometimes return other non-compliant values.
  - Allowed values: `Person`, `Non-Person Entity`
- **`benefitsInformation[].benefitsRelatedEntity.providerInformation`** (`object`)
- **`benefitsInformation[].benefitsRelatedEntity.providerInformation.providerCode`** (`string`): A code indicating the type of provider. Visit [Eligibility code lists](https://www.stedi.com/docs/healthcare/eligibility-code-lists#provider-codes) for a complete list.

Payers may sometimes return other non-compliant values.
  - Allowed values: `AD`, `AT`, `BI`, `CO`, `CV`, `H`, `HH`, `LA`, `OT`, `P1`, `P2`, `PC`, `PE`, `R`, `RF`, `SB`, `SK`, `SU`
- **`benefitsInformation[].benefitsRelatedEntity.providerInformation.referenceIdentification`** (`string`): The provider's taxonomy code.
- **`benefitsInformation[].benefitsServiceDelivery`** (`array of BenefitsServiceDelivery objects`)
- **`benefitsInformation[].benefitsServiceDelivery[].deliveryOrCalendarPatternCode`** (`string`): The name of the `deliveryOrCalendarPatternCode`. For example, `Last Working Day of Period`.

Payers may sometimes return other non-compliant values.
  - Allowed values: `1st Week of the Month`, `2nd Week of the Month`, `3rd Week of the Month`, `4th Week of the Month`, `5th Week of the Month`, `1st & 3rd Week of the Month`, `2nd & 4th Week of the Month`, `1st Working Day of Period`, `Last Working Day of Period`, `Monday through Friday`, `Monday through Saturday`, `Monday through Sunday`, `Monday`, `Tuesday`, `Wednesday`, `Thursday`, `Friday`, `Saturday`, `Sunday`, `Monday through Thursday`, `Immediately`, `As Directed`, `Daily Mon. Through Fri.`, `1/2 Mon. & 1/2 Tues.`, `1/2 Tues. & 1/2 Thurs.`, `1/2 Wed. & 1/2 Fri.`, `Once Anytime Mon. through Fri.`, `Tuesday through Friday`, `Monday, Tuesday and Thursday`, `Monday, Tuesday and Friday`, `Wednesday and Thursday`, `Monday, Wednesday and Thursday`, `Tuesday, Thursday and Friday`, `1/2 Tues. & 1/2 Fri.`, `1/2 Mon. & 1/2 Wed.`, `1/3 Mon., 1/3 Wed., 1/3 Fri.`, `Whenever Necessary`, `1/2 By Wed. Bal. By Fri.`, `None (Also Used to Cancel or Override a Previous Pattern)`
- **`benefitsInformation[].benefitsServiceDelivery[].deliveryOrCalendarPatternQualifier`** (`string`): The name of the `deliveryOrCalendarPatternCode`. For example, `Last Working Day of Period`.

Payers may sometimes return other non-compliant values.
  - Allowed values: `1st Week of the Month`, `2nd Week of the Month`, `3rd Week of the Month`, `4th Week of the Month`, `5th Week of the Month`, `1st & 3rd Week of the Month`, `2nd & 4th Week of the Month`, `1st Working Day of Period`, `Last Working Day of Period`, `Monday through Friday`, `Monday through Saturday`, `Monday through Sunday`, `Monday`, `Tuesday`, `Wednesday`, `Thursday`, `Friday`, `Saturday`, `Sunday`, `Monday through Thursday`, `Immediately`, `As Directed`, `Daily Mon. Through Fri.`, `1/2 Mon. & 1/2 Tues.`, `1/2 Tues. & 1/2 Thurs.`, `1/2 Wed. & 1/2 Fri.`, `Once Anytime Mon. through Fri.`, `Tuesday through Friday`, `Monday, Tuesday and Thursday`, `Monday, Tuesday and Friday`, `Wednesday and Thursday`, `Monday, Wednesday and Thursday`, `Tuesday, Thursday and Friday`, `1/2 Tues. & 1/2 Fri.`, `1/2 Mon. & 1/2 Wed.`, `1/3 Mon., 1/3 Wed., 1/3 Fri.`, `Whenever Necessary`, `1/2 By Wed. Bal. By Fri.`, `None (Also Used to Cancel or Override a Previous Pattern)`
- **`benefitsInformation[].benefitsServiceDelivery[].deliveryOrCalendarPatternQualifierCode`** (`string`): Code that specifies the routine shipments, deliveries, or calendar pattern. For example `9` - Last Working Day of Period. Visit [Eligibility code lists](https://www.stedi.com/docs/healthcare/eligibility-code-lists#delivery-frequency-codes) for a complete list.

Payers may sometimes return other non-compliant values.
  - Allowed values: `1`, `2`, `3`, `4`, `5`, `6`, `7`, `8`, `9`, `A`, `B`, `C`, `D`, `E`, `F`, `G`, `H`, `J`, `K`, `L`, `M`, `N`, `O`, `P`, `Q`, `R`, `S`, `SG`, `SL`, `SP`, `SX`, `SY`, `SZ`, `T`, `U`, `V`, `W`, `X`, `Y`
- **`benefitsInformation[].benefitsServiceDelivery[].deliveryPatternTimeCode`** (`string`): The name of the `deliveryPatternTimeCode`.

Payers may sometimes return other non-compliant values.
  - Allowed values: `1st Shift (Normal Working Hours)`, `2nd Shift`, `3rd Shift`, `A.M.`, `P.M.`, `As Directed`, `Any Shift`, `None (Also Used to Cancel or Override a Previous Pattern)`
- **`benefitsInformation[].benefitsServiceDelivery[].deliveryPatternTimeQualifier`** (`string`): The name of the `deliveryPatternTimeCode`.

Payers may sometimes return other non-compliant values.
  - Allowed values: `1st Shift (Normal Working Hours)`, `2nd Shift`, `3rd Shift`, `A.M.`, `P.M.`, `As Directed`, `Any Shift`, `None (Also Used to Cancel or Override a Previous Pattern)`
- **`benefitsInformation[].benefitsServiceDelivery[].deliveryPatternTimeQualifierCode`** (`string`): A code specifying the time for routine shipments or deliveries.

Payers may sometimes return other non-compliant values.
  - Allowed values: `A`, `B`, `C`, `D`, `E`, `F`, `G`, `Y`
- **`benefitsInformation[].benefitsServiceDelivery[].numOfPeriods`** (`string`): The number of periods in the time period. For example, `12` when the `timePeriodQualifier` is `Hour`.
- **`benefitsInformation[].benefitsServiceDelivery[].quantity`** (`string`): The quantity of the benefit. For example, `10` when the `quantityQualifier` is `Visits`.
- **`benefitsInformation[].benefitsServiceDelivery[].quantityQualifier`** (`string`): The name of the `quantityQualifierCode`. For example, `Days`.

Payers may sometimes return other non-compliant values.
  - Allowed values: `Days`, `Units`, `Hours`, `Month`, `Visits`
- **`benefitsInformation[].benefitsServiceDelivery[].quantityQualifierCode`** (`string`): Code specifying the type of quantity.

Payers may sometimes return other non-compliant values.
  - Allowed values: `DY`, `FL`, `HS`, `MN`, `VS`
- **`benefitsInformation[].benefitsServiceDelivery[].sampleSelectionModulus`** (`string`): Specifies the sampling frequency, based on the unit of measure. For example `every 2 months` or `once per calendar year`.
- **`benefitsInformation[].benefitsServiceDelivery[].timePeriodQualifier`** (`string`): The name of the `timePeriodQualifierCode`. For example, `Calendar Year`.

Payers may sometimes return other non-compliant values.
  - Allowed values: `Hour`, `Day`, `Years`, `Service Year`, `Calendar Year`, `Year to Date`, `Contract`, `Episode`, `Visit`, `Outlier`, `Remaining`, `Exceeded`, `Not Exceeded`, `Lifetime`, `Lifetime Remaining`, `Month`, `Week`
- **`benefitsInformation[].benefitsServiceDelivery[].timePeriodQualifierCode`** (`string`): Code specifying the time period for the benefit information.

Payers may sometimes return other non-compliant values.
  - Allowed values: `6`, `7`, `21`, `22`, `23`, `24`, `25`, `26`, `27`, `28`, `29`, `30`, `31`, `32`, `33`, `34`, `35`
- **`benefitsInformation[].benefitsServiceDelivery[].unitForMeasurementCode`** (`string`): The name of the `unitForMeasurementQualifierCode`. For example, `Days`.

Payers may sometimes return other non-compliant values.
  - Allowed values: `Days`, `Months`, `Visits`, `Week`, `Years`
- **`benefitsInformation[].benefitsServiceDelivery[].unitForMeasurementQualifier`** (`string`): The name of the `unitForMeasurementQualifierCode`. For example, `Days`.

Payers may sometimes return other non-compliant values.
  - Allowed values: `Days`, `Months`, `Visits`, `Week`, `Years`
- **`benefitsInformation[].benefitsServiceDelivery[].unitForMeasurementQualifierCode`** (`string`): Code specifying the unit of measurement for the quantity.

Payers may sometimes return other non-compliant values.
  - Allowed values: `DA`, `MO`, `VS`, `WK`, `YR`
- **`benefitsInformation[].code`** (`string`): The code indicating the type of benefits information. Visit [Eligibility and benefit codes](https://www.stedi.com/docs/healthcare/eligibility-active-coverage-benefits#benefit-type-codes) for more information.

Payers may sometimes return other non-compliant values.
  - Allowed values: `1`, `2`, `3`, `4`, `5`, `6`, `7`, `8`, `A`, `B`, `C`, `CB`, `D`, `E`, `F`, `G`, `H`, `I`, `J`, `K`, `L`, `M`, `MC`, `N`, `O`, `P`, `Q`, `R`, `S`, `T`, `U`, `V`, `W`, `X`, `Y`
- **`benefitsInformation[].compositeMedicalProcedureIdentifier`** (`object`): Identifies relevant medical procedures by their standard codes and modifiers (if applicable).
- **`benefitsInformation[].compositeMedicalProcedureIdentifier.diagnosisCodePointer`** (`array of strings`): The diagnosis code pointer.
- **`benefitsInformation[].compositeMedicalProcedureIdentifier.procedureCode`** (`string`): The procedure code. Many payers do not support eligibility checks for specific procedure codes. If the payer does not support procedure codes, they return a generic benefits response for the service type code `30`.
- **`benefitsInformation[].compositeMedicalProcedureIdentifier.procedureModifiers`** (`array of strings`): Procedure modifiers that provides additional information related to the performance of the service.
- **`benefitsInformation[].compositeMedicalProcedureIdentifier.productOrServiceID`** (`string`): The product or service ID. This value represents the end of the range of applicable procedure codes. The beginning of the range is listed in `procedureCode`.
- **`benefitsInformation[].compositeMedicalProcedureIdentifier.productOrServiceIDQualifier`** (`string`): The name of the `productOrServiceIDQualifierCode`. For example, `American Dental Association`.
- **`benefitsInformation[].compositeMedicalProcedureIdentifier.productOrServiceIDQualifierCode`** (`string`): Identifies the external code list used to provide the specified procedure or service codes. Can be `AD` - American Dental Association, `CJ` - Current Procedural Terminology (CPT) codes, `HC` - Health Care Financing Administration Common Procedural Coding System (HCPCS) Codes, `ID` - International Classification of Diseases 9th Revision, Clinical Modification (ICD-9-CM) - Procedure, `IV` - Home Infusion EDI Coalition (HIEC) Product/Service Code, `N4` - National Drug Code in 5-4-2 Format, or `ZZ` - Mutually Defined
- **`benefitsInformation[].coverageLevel`** (`string`): The full name of the coverage level code.

Payers may sometimes return other non-compliant values.
  - Allowed values: `Children Only`, `Dependents Only`, `Employee and Children`, `Employee Only`, `Employee and Spouse`, `Family`, `Individual`, `Spouse and Children`, `Spouse Only`
- **`benefitsInformation[].coverageLevelCode`** (`string`): Code indicating the level of coverage for the patient. 

This will either be `CHD` - Children Only, `DEP` - Dependents Only, `ECH` - Employee and Children, `EMP` - Employee Only, `ESP` - Employee and Spouse, `FAM` - Family, `IND` - Individual, `SPC` - Spouse and Children, `SPO` - Spouse Only, or `Unknown`.

Payers may sometimes return other non-compliant values.
  - Allowed values: `CHD`, `DEP`, `ECH`, `EMP`, `ESP`, `FAM`, `IND`, `SPC`, `SPO`
- **`benefitsInformation[].eligibilityAdditionalInformation`** (`object`)
- **`benefitsInformation[].eligibilityAdditionalInformation.codeCategory`** (`string`): Payers may sometimes return other non-compliant values.
  - Allowed values: `44`
- **`benefitsInformation[].eligibilityAdditionalInformation.codeListQualifier`** (`string`): The name of the `codeListQualifierCode`. For example `Mutually Defined` when the code is set to `ZZ`.
- **`benefitsInformation[].eligibilityAdditionalInformation.codeListQualifierCode`** (`string`): Payers may sometimes return other non-compliant values.
  - Allowed values: `GR`, `NI`, `ZZ`
- **`benefitsInformation[].eligibilityAdditionalInformation.industry`** (`string`): The name of the `industryCode`. For example `Pharmacy` when the code is `01`.
- **`benefitsInformation[].eligibilityAdditionalInformation.industryCode`** (`string`): The specific industry code. When `codeListQualifierCode` is set to `ZZ` - Mutually Defined, this property will be set to a place of service code. Visit the [Place of Service Code Set](https://www.cms.gov/medicare/coding-billing/place-of-service-codes/code-sets) for a complete list of these codes and their descriptions.
- **`benefitsInformation[].eligibilityAdditionalInformation.injuredBodyPartName`** (`string`): Description of injured body parts.
- **`benefitsInformation[].eligibilityAdditionalInformationList`** (`array of EligibilityAdditionalInformation objects`): Used when there are multiple Nature of Injury Codes or a Facility Type Codes included in the response.
- **`benefitsInformation[].eligibilityAdditionalInformationList[].codeCategory`** (`string`): Payers may sometimes return other non-compliant values.
  - Allowed values: `44`
- **`benefitsInformation[].eligibilityAdditionalInformationList[].codeListQualifier`** (`string`): The name of the `codeListQualifierCode`. For example `Mutually Defined` when the code is set to `ZZ`.
- **`benefitsInformation[].eligibilityAdditionalInformationList[].codeListQualifierCode`** (`string`): Payers may sometimes return other non-compliant values.
  - Allowed values: `GR`, `NI`, `ZZ`
- **`benefitsInformation[].eligibilityAdditionalInformationList[].industry`** (`string`): The name of the `industryCode`. For example `Pharmacy` when the code is `01`.
- **`benefitsInformation[].eligibilityAdditionalInformationList[].industryCode`** (`string`): The specific industry code. When `codeListQualifierCode` is set to `ZZ` - Mutually Defined, this property will be set to a place of service code. Visit the [Place of Service Code Set](https://www.cms.gov/medicare/coding-billing/place-of-service-codes/code-sets) for a complete list of these codes and their descriptions.
- **`benefitsInformation[].eligibilityAdditionalInformationList[].injuredBodyPartName`** (`string`): Description of injured body parts.
- **`benefitsInformation[].headerLoopIdentifierCode`** (`string`): The loop header identifier number in the `LS` segment of the original X12 EDI transaction.
- **`benefitsInformation[].inPlanNetworkIndicator`** (`string`): The name of the in-plan network indicator code.

Payers may sometimes return other non-compliant values.
  - Allowed values: `Yes`, `No`, `Unknown`, `Not Applicable`
- **`benefitsInformation[].inPlanNetworkIndicatorCode`** (`string`): Code indicating whether the benefit is in-network or out-of-network. Can be `Y` - Yes, `N` - No, `U` - Unknown, or `W` - Not Applicable

 Code `U` indicates that it is unknown whether the benefits are in or out-of-network. Code `W` indicates that the benefit applies to both in and out-of-network providers. 
 
 Note that this property **doesn't indicate** whether the provider is in or out-of-network for the patient. To determine that, you must check with the payer directly.

Payers may sometimes return other non-compliant values.
  - Allowed values: `Y`, `N`, `U`, `W`
- **`benefitsInformation[].insuranceType`** (`string`): The full name of the insurance type code.

Payers may sometimes return other non-compliant values.
  - Allowed values: `Medicare Secondary Working Aged Beneficiary or Spouse with Employer Group Health Plan`, `Medicare Secondary End-Stage Renal Disease Beneficiary in the Mandated Coordination Period with an Employer's Group Health Plan`, `Medicare Secondary, No-fault Insurance including Auto is Primary`, `Medicare Secondary Worker's Compensation`, `Medicare Secondary Public Health Service (PHS)or Other Federal Agency`, `Medicare Secondary Black Lung`, `Medicare Secondary Veteran's Administration`, `Medicare Secondary Disabled Beneficiary Under Age 65 with Large Group Health Plan (LGHP)`, `Medicare Secondary, Other Liability Insurance is Primary`, `Auto Insurance Policy`, `Commercial`, `Consolidated Omnibus Budget Reconciliation Act (COBRA)`, `Medicare Conditionally Primary`, `Disability`, `Disability Benefits`, `Exclusive Provider Organization`, `Family or Friends`, `Group Policy`, `Health Maintenance Organization (HMO)`, `Health Maintenance Organization (HMO) - Medicare Risk`, `Special Low Income Medicare Beneficiary`, `Indemnity`, `Individual Policy`, `Long Term Care`, `Long Term Policy`, `Life Insurance`, `Litigation`, `Medicare Part A`, `Medicare Part B`, `Medicaid`, `Medigap Part A`, `Medigap Part B`, `Medicare Primary`, `Other`, `Property Insurance - Personal`, `Personal`, `Personal Payment (Cash - No Insurance)`, `Preferred Provider Organization (PPO)`, `Point of Service (POS)`, `Qualified Medicare Beneficiary`, `Property Insurance - Real`, `Supplemental Policy`, `Tax Equity Fiscal Responsibility Act (TEFRA)`, `Workers Compensation`, `Wrap Up Policy`
- **`benefitsInformation[].insuranceTypeCode`** (`string`): Code identifying the type of insurance policy.

Payers may sometimes return other non-compliant values.
  - Allowed values: `12`, `13`, `14`, `15`, `16`, `41`, `42`, `43`, `47`, `AP`, `C1`, `CO`, `CP`, `D`, `DB`, `EP`, `FF`, `GP`, `HM`, `HN`, `HS`, `IN`, `IP`, `LC`, `LD`, `LI`, `LT`, `MA`, `MB`, `MC`, `MH`, `MI`, `MP`, `OT`, `PE`, `PL`, `PP`, `PR`, `PS`, `QM`, `RP`, `SP`, `TF`, `WC`, `WU`
- **`benefitsInformation[].name`** (`string`): The full name of the benefits information code.

Payers may sometimes return other non-compliant values.
  - Allowed values: `Active Coverage`, `Active - Full Risk Capitation`, `Active - Services Capitated`, `Active - Services Capitated to Primary Care Physician`, `Active - Pending Investigation`, `Inactive`, `Inactive - Pending Eligibility Update`, `Inactive - Pending Investigation`, `Co-Insurance`, `Co-Payment`, `Deductible`, `Coverage Basis`, `Benefit Description`, `Exclusions`, `Limitations`, `Out of Pocket (Stop Loss)`, `Unlimited`, `Non-Covered`, `Cost Containment`, `Reserve`, `Primary Care Provider`, `Pre-existing Condition`, `Managed Care Coordinator`, `Services Restricted to Following Provider`, `Not Deemed a Medical Necessity`, `Benefit Disclaimer`, `Second Surgical Opinion Required`, `Other or Additional Payor`, `Prior Year(s) History`, `Card(s) Reported Lost/Stolen`, `Contact Following Entity for Eligibility or Benefit Information`, `Cannot Process`, `Other Source of Data`, `Health Care Facility`, `Spend Down`
- **`benefitsInformation[].planCoverage`** (`string`): The specific product name or special program name for an insurance plan. For example `Gold 1-2-3`.

Payers are normally required to send the plan name when `benefitsInformation[].code` is set to values `1` - `8` and the `benefitsInformation[].serviceTypeCodes` contains `30` (Health Benefit Plan Coverage). However, behavior may vary by payer, so don't rely on this information being present in the response. Note that the plan name returned in this property may not exactly match the name the payer uses in official plan documents or marketing literature.

Visit [What's the plan name?](https://www.stedi.com/docs/healthcare/eligibility-active-coverage-benefits#what’s-the-plan-name%3F) in the benefits response documentation for more details.
- **`benefitsInformation[].quantityQualifier`** (`string`): The name of the quantity qualifier code.

Payers may sometimes return other non-compliant values.
  - Allowed values: `Minimum`, `Quantity Used`, `Covered - Actual`, `Covered - Estimated`, `Number of Co-insurance Days`, `Deductible Blood Units`, `Days`, `Hours`, `Life-time Reserve - Actual`, `Life-time Reserve - Estimated`, `Maximum`, `Month`, `Number of Services or Procedures`, `Quantity Approved`, `Age, High Value`, `Age, Low Value`, `Visits`, `Years`
- **`benefitsInformation[].quantityQualifierCode`** (`string`): Code indicating the type of quantity for the benefit.

Payers may sometimes return other non-compliant values.
  - Allowed values: `8H`, `99`, `CA`, `CE`, `D3`, `DB`, `DY`, `HS`, `LA`, `LE`, `M2`, `MN`, `P6`, `QA`, `S7`, `S8`, `VS`, `YY`
- **`benefitsInformation[].serviceTypeCodes`** (`array of strings`): Service Type Codes (STCs) related to the benefit type. For example, `7` - Anesthesia. Visit [Service Type Codes](https://www.stedi.com/docs/healthcare/send-eligibility-checks#service-type-codes) for a complete list.

This list is specific to X12 version 005010, which is the mandated version for eligibility checks. It differs from the current [X12 Service Type Codes](https://x12.org/codes/service-type-codes) list, which applies to X12 versions later than 005010.

Payers may sometimes return other non-compliant values.
- **`benefitsInformation[].serviceTypes`** (`array of strings`): The names of the Service Type Codes listed in the `serviceTypeCodes` array. Visit [Service Type Codes](https://www.stedi.com/docs/healthcare/send-eligibility-checks#service-type-codes) for a complete list of codes and their names.

The word physician in service type codes refers to any healthcare provider, including physician assistants, nurse practitioners, and other types of healthcare professionals.

Payers may sometimes return other non-compliant values.
- **`benefitsInformation[].timeQualifier`** (`string`): The name of the time period qualifier code. 
 
 Note that for the patient's deductible, `Calendar Year` indicates the patient's total deductible amount for the year, while `Remaining` indicates the amount left to meet the deductible. Visit [Payer benefit response](https://www.stedi.com/docs/healthcare/eligibility-patient-responsibility-benefits#deductible) to learn more about deductibles.

Payers may sometimes return other non-compliant values.
  - Allowed values: `Hour`, `Day`, `24 Hours`, `Years`, `Service Year`, `Calendar Year`, `Year to Date`, `Contract`, `Episode`, `Visit`, `Outlier`, `Remaining`, `Exceeded`, `Not Exceeded`, `Lifetime`, `Lifetime Remaining`, `Month`, `Week`, `Admission`
- **`benefitsInformation[].timeQualifierCode`** (`string`): Code indicating the time period for the benefit information.

Payers may sometimes return other non-compliant values.
  - Allowed values: `6`, `7`, `13`, `21`, `22`, `23`, `24`, `25`, `26`, `27`, `28`, `29`, `30`, `31`, `32`, `33`, `34`, `35`, `36`
- **`benefitsInformation[].trailerLoopIdentifierCode`** (`string`): The loop trailer identifier number in the `LE` segment of the original X12 EDI transaction.
- **`controlNumber`** (`string`): An identifier for the payer's response.
- **`dependents`** (`array of ResponseDependent objects`): Information about the patient when they are a dependent. When the patient is a dependent, this array will contain a single object with the patient's information. When the patient is a subscriber, or considered to be a subscriber because they have a unique member ID, their information is returned in the `subscriber` object, and this array will be empty.

 When present, this object will always include the dependent's name for identification, but many payers will also return the date of birth and other identifying information.
- **`dependents[].aaaErrors`** (`array of EligibilityCheckDependentError objects`)
- **`dependents[].aaaErrors[].code`** (`string`): Payers may sometimes return other non-compliant values.
  - Allowed values: `15`, `33`, `35`, `42`, `43`, `45`, `47`, `48`, `49`, `51`, `52`, `53`, `54`, `55`, `56`, `57`, `58`, `60`, `61`, `62`, `63`, `64`, `65`, `66`, `67`, `68`, `69`, `70`, `71`, `77`, `98`, `AA`, `AE`, `AF`, `AG`, `AO`, `CI`, `E8`, `IA`, `MA`
- **`dependents[].aaaErrors[].description`** (`string`): The error description.
- **`dependents[].aaaErrors[].field`** (`string`): The error type, `AAA`.
- **`dependents[].aaaErrors[].followupAction`** (`string`): Payers may sometimes return other non-compliant values.
  - Allowed values: `Please Correct and Resubmit`, `Resubmission Not Allowed`, `Resubmission Allowed`, `Do Not Resubmit; Inquiry Initiated to a Third Party`, `Please Wait 30 Days and Resubmit`, `Please Wait 10 Days and Resubmit`, `Do Not Resubmit; We Will Hold Your Request and Respond Again Shortly`
- **`dependents[].aaaErrors[].location`** (`string`): The location of the error within the original X12 EDI response.
- **`dependents[].aaaErrors[].possibleResolutions`** (`string`): Information to help you correct the error.

We periodically update this guidance, so these strings may change at any time and may differ between eligibility responses. **Don't build programmatic logic that depends on matching these strings exactly.**
- **`dependents[].address`** (`object`)
- **`dependents[].address.address1`** (`string`): The first line of the address.
- **`dependents[].address.address2`** (`string`): The second line of the address.
- **`dependents[].address.city`** (`string`): The city.
- **`dependents[].address.countryCode`** (`string`): The two-letter country code from [Part 1 of ISO 3166](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2).
- **`dependents[].address.countrySubDivisionCode`** (`string`): The country subdivision code from [Part 2 of ISO 3166](https://en.wikipedia.org/wiki/ISO_3166-2).
- **`dependents[].address.postalCode`** (`string`): The United States or Canadian postal code, excluding punctuation and blanks.
- **`dependents[].address.state`** (`string`): The US state or Canadian province code with unknown option. For example, `TN` for Tennessee or `NB` for New Brunswick.

Payers may sometimes return other non-compliant values.
  - Allowed values: `NL`, `PE`, `NS`, `NB`, `QC`, `ON`, `MB`, `SK`, `AB`, `BC`, `YT`, `NT`, `NU`, `DC`, `AS`, `GU`, `MP`, `PR`, `UM`, `VI`, `AA`, `AE`, `AP`, `AK`, `AL`, `AR`, `AZ`, `CA`, `CO`, `CT`, `DE`, `FL`, `GA`, `HI`, `IA`, `ID`, `IL`, `IN`, `KS`, `KY`, `LA`, `MA`, `MD`, `ME`, `MI`, `MN`, `MO`, `MS`, `MT`, `NC`, `ND`, `NE`, `NH`, `NJ`, `NM`, `NV`, `NY`, `OH`, `OK`, `OR`, `PA`, `RI`, `SC`, `SD`, `TN`, `TX`, `UT`, `VA`, `VT`, `WA`, `WI`, `WV`, `WY`
- **`dependents[].birthSequenceNumber`** (`string`): The number assigned to each family member born with the same birth date, such as twins or triplets. Indicates the birth order when there are multiple births associated with the provided birth date.
- **`dependents[].dateOfBirth`** (`string`): The member's date of birth.
- **`dependents[].dateTimePeriod`** (`string`): The military service date.
- **`dependents[].dateTimePeriodFormatQualifier`** (`string`): Payers may sometimes return other non-compliant values.
  - Allowed values: `D8`, `RD8`
- **`dependents[].description`** (`string`): Context that identifies the exact military unit. Used to report military service data.
- **`dependents[].employmentStatusCode`** (`string`): Payers may sometimes return other non-compliant values.
  - Allowed values: `AE`, `AO`, `AS`, `AT`, `AU`, `CC`, `DD`, `HD`, `IR`, `LX`, `PE`, `RE`, `RM`, `RR`, `RU`
- **`dependents[].endDateTimePeriod`** (`string`): The military service end date.
- **`dependents[].entityIdentifier`** (`string`): The entity identifier for the dependent.
  - Allowed values: `Dependent`
- **`dependents[].entityType`** (`string`): The type of entity.

Payers may sometimes return other non-compliant values.
  - Allowed values: `Person`, `Non-Person Entity`
- **`dependents[].firstName`** (`string`): The member's first name.
- **`dependents[].gender`** (`string`)
  - Allowed values: `M`, `F`, `U`
- **`dependents[].governmentServiceAffiliationCode`** (`string`): Payers may sometimes return other non-compliant values.
  - Allowed values: `A`, `B`, `C`, `D`, `E`, `F`, `G`, `H`, `I`, `J`, `K`, `L`, `M`, `N`, `O`, `Q`, `R`, `S`, `U`, `W`
- **`dependents[].groupDescription`** (`string`): Group name
- **`dependents[].groupNumber`** (`string`): The group number associated with the insurance policy.
- **`dependents[].healthCareDiagnosisCodes`** (`array of HealthCareDiagnosisCode objects`)
- **`dependents[].healthCareDiagnosisCodes[].diagnosisCode`** (`string`): The diagnosis code. The decimal points are omitted in diagnosis codes - the decimal point is assumed.
- **`dependents[].healthCareDiagnosisCodes[].diagnosisTypeCode`** (`string`): The type of diagnosis code provided. It can be `ABK` - International Classification of Diseases Clinical Modification (ICD-10-CM) Principal Diagnosis or `BK` - International Classification of Diseases Clinical Modification (ICD-9-CM) Principal Diagnosis.
- **`dependents[].informationStatusCode`** (`string`): Payers may sometimes return other non-compliant values.
  - Allowed values: `A`, `C`, `L`, `O`, `P`, `S`, `T`
- **`dependents[].insuredIndicator`** (`string`): Indicates the status of the insured. For the dependent, this is always `N`.
  - Allowed values: `N`
- **`dependents[].lastName`** (`string`): The member's last name.
- **`dependents[].maintenanceReasonCode`** (`string`): Code identifying the reason for the changes to subscriber identifying information, such as name, date of birth, or address. This is always `25`

Payers may sometimes return other non-compliant values.
  - Allowed values: `25`
- **`dependents[].maintenanceTypeCode`** (`string`): The maintenance type code. Used to acknowledge a change in the identifying elements for the subscriber from those submitted in the original eligibility check request. It can also be included when the payer used the birth sequence number from the original request to locate the subscriber in their system. This is always `001`

Payers may sometimes return other non-compliant values.
  - Allowed values: `001`
- **`dependents[].memberId`** (`string`): This property will never be populated. Please use `subscriber.memberId` instead.
- **`dependents[].middleName`** (`string`): The member's middle name or initial.
- **`dependents[].militaryServiceRankCode`** (`string`): Payers may sometimes return other non-compliant values.
  - Allowed values: `A1`, `A2`, `A3`, `B1`, `B2`, `C1`, `C2`, `C3`, `C4`, `C5`, `C6`, `C7`, `C8`, `C9`, `E1`, `F1`, `F2`, `F3`, `F4`, `G1`, `G4`, `L1`, `L2`, `L3`, `L4`, `L5`, `L6`, `M1`, `M2`, `M3`, `M4`, `M5`, `M6`, `P1`, `P2`, `P3`, `P4`, `P5`, `R1`, `R2`, `S1`, `S2`, `S3`, `S4`, `S5`, `S6`, `S7`, `S8`, `S9`, `SA`, `SB`, `SC`, `T1`, `V1`, `W1`
- **`dependents[].planDescription`** (`string`): Plan name
- **`dependents[].planNetworkDescription`** (`string`): Plan network name
- **`dependents[].planNetworkIdNumber`** (`string`): The network identification number associated with the insurance policy.
- **`dependents[].planNumber`** (`string`): The plan number associated with the insurance policy.
- **`dependents[].relationToSubscriber`** (`string`): The name of the `relationToSubscriberCode`. For example, `Child` when the code is `19`.
  - Allowed values: `Spouse`, `Child`, `Employee`, `Unknown`, `Organ Donor`, `Cadaver Donor`, `Life Partner`, `Other Relationship`
- **`dependents[].relationToSubscriberCode`** (`string`): For the dependent, this can be `01` - Spouse, `19` - Child, `20` Employee, `21` - Unknown, `39` - Organ Donor, `40` - Cadaver Donor, `53` - Life Partner, or `G8` - Other Relationship.
  - Allowed values: `01`, `19`, `20`, `21`, `39`, `40`, `53`, `G8`, `Unknown`
- **`dependents[].responseProvider`** (`object`): Information about the entity that submitted the original eligibility check request. This may be an individual practitioner, a medical group, a hospital, or another type of healthcare provider. This object will always include at least one identifier, such as the provider's [NPI](https://www.stedi.com/docs/healthcare/national-provider-identifier), tax ID, or EIN.
- **`dependents[].responseProvider.aaaErrors`** (`array of EligibilityCheckProviderError objects`)
- **`dependents[].responseProvider.aaaErrors[].code`** (`string`): Payers may sometimes return other non-compliant values.
  - Allowed values: `15`, `41`, `43`, `44`, `45`, `46`, `47`, `48`, `50`, `51`, `79`, `97`, `T4`
- **`dependents[].responseProvider.aaaErrors[].description`** (`string`): The error description.
- **`dependents[].responseProvider.aaaErrors[].field`** (`string`): The error type, `AAA`.
- **`dependents[].responseProvider.aaaErrors[].followupAction`** (`string`): Payers may sometimes return other non-compliant values.
  - Allowed values: `Please Correct and Resubmit`, `Resubmission Not Allowed`, `Resubmission Allowed`, `Do Not Resubmit; Inquiry Initiated to a Third Party`, `Please Wait 30 Days and Resubmit`, `Please Wait 10 Days and Resubmit`, `Do Not Resubmit; We Will Hold Your Request and Respond Again Shortly`
- **`dependents[].responseProvider.aaaErrors[].location`** (`string`): The location of the error within the original X12 EDI response.
- **`dependents[].responseProvider.aaaErrors[].possibleResolutions`** (`string`): Information to help you correct the error.

We periodically update this guidance, so these strings may change at any time and may differ between eligibility responses. **Don't build programmatic logic that depends on matching these strings exactly.**
- **`dependents[].responseProvider.address`** (`object`)
- **`dependents[].responseProvider.address.address1`** (`string`): The first line of the address.
- **`dependents[].responseProvider.address.address2`** (`string`): The second line of the address.
- **`dependents[].responseProvider.address.city`** (`string`): The city.
- **`dependents[].responseProvider.address.countryCode`** (`string`): The two-letter country code from [Part 1 of ISO 3166](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2).
- **`dependents[].responseProvider.address.countrySubDivisionCode`** (`string`): The country subdivision code from [Part 2 of ISO 3166](https://en.wikipedia.org/wiki/ISO_3166-2).
- **`dependents[].responseProvider.address.postalCode`** (`string`): The United States or Canadian postal code, excluding punctuation and blanks.
- **`dependents[].responseProvider.address.state`** (`string`): The US state or Canadian province code with unknown option. For example, `TN` for Tennessee or `NB` for New Brunswick.

Payers may sometimes return other non-compliant values.
  - Allowed values: `NL`, `PE`, `NS`, `NB`, `QC`, `ON`, `MB`, `SK`, `AB`, `BC`, `YT`, `NT`, `NU`, `DC`, `AS`, `GU`, `MP`, `PR`, `UM`, `VI`, `AA`, `AE`, `AP`, `AK`, `AL`, `AR`, `AZ`, `CA`, `CO`, `CT`, `DE`, `FL`, `GA`, `HI`, `IA`, `ID`, `IL`, `IN`, `KS`, `KY`, `LA`, `MA`, `MD`, `ME`, `MI`, `MN`, `MO`, `MS`, `MT`, `NC`, `ND`, `NE`, `NH`, `NJ`, `NM`, `NV`, `NY`, `OH`, `OK`, `OR`, `PA`, `RI`, `SC`, `SD`, `TN`, `TX`, `UT`, `VA`, `VT`, `WA`, `WI`, `WV`, `WY`
- **`dependents[].responseProvider.employersId`** (`string`): Deprecated; The provider's identification number for the entity receiving the benefits information.
This shape is deprecated: This property is no longer used.
- **`dependents[].responseProvider.entityIdentifier`** (`string`): A code identifying the type of provider.

Payers may sometimes return other non-compliant values.
  - Allowed values: `Provider`, `Third-Party Administrator`, `Employer`, `Hospital`, `Facility`, `Gateway Provider`, `Plan Sponsor`, `Payer`
- **`dependents[].responseProvider.entityType`** (`string`): The type of entity.

Payers may sometimes return other non-compliant values.
  - Allowed values: `Person`, `Non-Person Entity`
- **`dependents[].responseProvider.federalTaxpayersIdNumber`** (`string`): The Federal Taxpayer Identification Number (also known as an EIN).
- **`dependents[].responseProvider.middleName`** (`string`): The provider's middle name. This applies to providers that are an individual.
- **`dependents[].responseProvider.npi`** (`string`): The provider's [National Provider Identifier (NPI)](https://www.stedi.com/docs/healthcare/national-provider-identifier).
- **`dependents[].responseProvider.payorIdentification`** (`string`): The payer identification.
- **`dependents[].responseProvider.pharmacyProcessorNumber`** (`string`): The pharmacy processor number.
- **`dependents[].responseProvider.providerCode`** (`string`): A code indicating the type of provider. Visit [Eligibility code lists](https://www.stedi.com/docs/healthcare/eligibility-code-lists#provider-codes) for a complete list.

Payers may sometimes return other non-compliant values.
  - Allowed values: `AD`, `AT`, `BI`, `CO`, `CV`, `H`, `HH`, `LA`, `OT`, `P1`, `P2`, `PC`, `PE`, `R`, `RF`, `SB`, `SK`, `SU`
- **`dependents[].responseProvider.providerFirstName`** (`string`): The provider's first name. This applies to providers that are an individual.
- **`dependents[].responseProvider.providerName`** (`string`): The provider's last name. This applies to providers that are an individual.
- **`dependents[].responseProvider.providerOrgName`** (`string`): The provider's organization name.
- **`dependents[].responseProvider.referenceIdentification`** (`string`): The Health Care Provider Taxonomy Code.
- **`dependents[].responseProvider.serviceProviderNumber`** (`string`): The service provider number. This is an identification number assigned by the payer.
- **`dependents[].responseProvider.servicesPlanID`** (`string`): The Centers for Medicare and Medicaid Services (CMS) Plan ID.
- **`dependents[].responseProvider.ssn`** (`string`): The Social Security Number (SSN).
- **`dependents[].responseProvider.suffix`** (`string`): The provider's name suffix, such as Jr., Sr., or III.
- **`dependents[].ssn`** (`string`): The member's Social Security Number (SSN).
- **`dependents[].startDateTimePeriod`** (`string`): The military service start date.
- **`dependents[].suffix`** (`string`): The name suffix, such as Jr., Sr., or III.
- **`dependents[].uniqueHealthIdentifier`** (`string`): The member's unique health identifier.
- **`eligibilitySearchId`** (`string`): An identifier that allows Stedi to group eligibility checks for the same patient into a unified record in the Stedi portal called an [eligibility search](https://www.stedi.com/docs/healthcare/eligibility-searches-view).

This property is for use by Stedi tools only, such as Stedi's MCP server.
- **`errors`** (`array of EligibilityCheckError objects`): When a payer rejects your eligibility check, the response contains one or more [`AAA` errors](https://www.stedi.com/docs/healthcare/eligibility-troubleshooting#payer-aaa-errors) that specify the reasons for the rejection and any recommended follow-up actions.

Any errors that occur at the `payer`, `provider`, `subscriber`, or `dependents` levels are also included in this array, allowing you to review all errors in a central location. If there are no `AAA` errors, this array will be empty.
- **`errors[].code`** (`string`): This is a superset of all the possible codes in the sub-loops, as all errors are bubbled up to the top level of the response

Payers may sometimes return other non-compliant values.
  - Allowed values: `04`, `15`, `33`, `35`, `41`, `42`, `43`, `44`, `45`, `46`, `47`, `48`, `49`, `50`, `51`, `52`, `53`, `54`, `55`, `56`, `57`, `58`, `60`, `61`, `62`, `63`, `64`, `65`, `66`, `67`, `68`, `69`, `70`, `71`, `72`, `73`, `74`, `75`, `76`, `77`, `78`, `79`, `80`, `97`, `98`, `AA`, `AE`, `AF`, `AG`, `AO`, `CI`, `E8`, `IA`, `MA`, `T4`
- **`errors[].description`** (`string`): The error description.
- **`errors[].field`** (`string`): The error type, `AAA`.
- **`errors[].followupAction`** (`string`): Payers may sometimes return other non-compliant values.
  - Allowed values: `Please Correct and Resubmit`, `Resubmission Not Allowed`, `Please Resubmit Original Transaction`, `Resubmission Allowed`, `Do Not Resubmit; Inquiry Initiated to a Third Party`, `Please Wait 30 Days and Resubmit`, `Please Wait 10 Days and Resubmit`, `Do Not Resubmit; We Will Hold Your Request and Respond Again Shortly`
- **`errors[].location`** (`string`): The location of the error within the original X12 EDI response.
- **`errors[].possibleResolutions`** (`string`): Information to help you correct the error.

We periodically update this guidance, so these strings may change at any time and may differ between eligibility responses. **Don't build programmatic logic that depends on matching these strings exactly.**
- **`id`** (`string`): A globally unique identifier for this eligibility check across all Stedi accounts. It's formatted as `ec_<uuid>`. For example: `ec_550e8400-e29b-41d4-a716-446655440000`. You can use this ID to track this eligibility check and to construct deep links to eligibility checks in the Stedi portal.
- **`implementationTransactionSetSyntaxError`** (`string`): The implementation transaction set error code provided in `IK502` of the 999 transaction.
- **`meta`** (`object`): Metadata about the response. Stedi uses this data for tracking and troubleshooting.
- **`meta.applicationMode`** (`string`): The type of data in the request. This is either `production` when you send a request with a standard API key or `test` when you send a request in test mode with a [test API key](https://www.stedi.com/docs/api-reference/index#api-key-types). The `information` value is not currently used.

Payers may sometimes return other non-compliant values.
  - Allowed values: `production`, `test`, `information`
- **`meta.billerId`** (`string`): The biller ID Stedi assigns to this request.
- **`meta.outboundTraceId`** (`string`): A unique identifier Stedi assigns to this check.

Instead of this property, we recommend using `id` to identify and track eligibility checks. An eligibility check's `id` is guaranteed to be globally unique, and you can use it to deep link to the eligibility check's results within the Stedi portal.
- **`meta.senderId`** (`string`): The sender ID Stedi assigns to this request.
- **`meta.submitterId`** (`string`): The submitter ID Stedi assigns to this request.
- **`meta.traceId`** (`string`): The transaction identifier the payer sends in the response. This should be the same as the `outboundTraceId`.
- **`payer`** (`object`): Information about the payer providing the benefits information. The response will always include the payer's business name and an identifier, such as the payer's tax ID. Most payers also include contact information.
- **`payer.aaaErrors`** (`array of EligibilityCheckPayerError objects`)
- **`payer.aaaErrors[].code`** (`string`): Payers may sometimes return other non-compliant values.
  - Allowed values: `04`, `41`, `42`, `79`, `80`, `T4`
- **`payer.aaaErrors[].description`** (`string`): The error description.
- **`payer.aaaErrors[].field`** (`string`): The error type, `AAA`.
- **`payer.aaaErrors[].followupAction`** (`string`): Payers may sometimes return other non-compliant values.
  - Allowed values: `Please Correct and Resubmit`, `Resubmission Not Allowed`, `Please Resubmit Original Transaction`, `Resubmission Allowed`, `Do Not Resubmit; Inquiry Initiated to a Third Party`, `Please Wait 30 Days and Resubmit`, `Please Wait 10 Days and Resubmit`, `Do Not Resubmit; We Will Hold Your Request and Respond Again Shortly`
- **`payer.aaaErrors[].location`** (`string`): The location of the error within the original X12 EDI response.
- **`payer.aaaErrors[].possibleResolutions`** (`string`): Information to help you correct the error.

We periodically update this guidance, so these strings may change at any time and may differ between eligibility responses. **Don't build programmatic logic that depends on matching these strings exactly.**
- **`payer.centersForMedicareAndMedicaidPlanId`** (`string`): The payer's Centers for Medicare and Medicaid Services PlanID.
- **`payer.contactInformation`** (`object`)
- **`payer.contactInformation.contacts`** (`array of Contacts objects`): The contact information.
- **`payer.contactInformation.contacts[].communicationMode`** (`string`): Payers may sometimes return other non-compliant values.
  - Allowed values: `Electronic Data Interchange Access Number`, `Electronic Mail`, `Facsimile`, `Telephone`, `Uniform Resource Locator (URL)`, `Telephone Extension`, `Work Phone Number`
- **`payer.contactInformation.contacts[].communicationNumber`** (`string`): The communication number referenced in `communicationMode`. It includes the country or area code when applicable. 
 
 Note that phone numbers are formatted as AAABBBCCCC, where AAA represents the area code, BBB represents the telephone number prefix, and CCCC represents the telephone number. Phone numbers are provided without separators, such as dashes or parentheses. For example, `5551123345` for `555-112-3345`.
- **`payer.contactInformation.name`** (`string`): The name of the contact person.
- **`payer.employersId`** (`string`): Deprecated; The payer's identification number for the entity receiving the benefits information.
This shape is deprecated: This property is no longer used.
- **`payer.entityIdentifier`** (`string`): The entity identifier code for the payer.

Payers may sometimes return other non-compliant values.
  - Allowed values: `Third-Party Administrator`, `Employer`, `Gateway Provider`, `Plan Sponsor`, `Payer`
- **`payer.entityType`** (`string`): The type of entity.

Payers may sometimes return other non-compliant values.
  - Allowed values: `Person`, `Non-Person Entity`
- **`payer.etin`** (`string`): The payer's Electronic Transmitter Identification Number (ETIN).
- **`payer.federalTaxpayersIdNumber`** (`string`): The payer's federal taxpayer's identification number.
- **`payer.firstName`** (`string`): The payer's first name, when the payer is an individual (not commonly used).
- **`payer.lastName`** (`string`): The payer's last name. Used when the payer is an individual (not commonly used).
- **`payer.middleName`** (`string`): The payer's middle name or initial, when the payer is an individual (not commonly used).
- **`payer.naic`** (`string`): The payer's National Association of Insurance Commissioners (NAIC) identification number.
- **`payer.name`** (`string`): The payer's business name, when the payer is not a person.
- **`payer.npi`** (`string`): The payer's [National Provider Identifier (NPI)](https://www.stedi.com/docs/healthcare/national-provider-identifier).
- **`payer.payorIdentification`** (`string`): The payer identification.
- **`payer.suffix`** (`string`): The payer's name suffix, such as Jr. or III. Used when the payer is an individual (not commonly used).
- **`planDateInformation`** (`object`): Contains the dates associated with the subscriber and dependents' (if applicable) insurance plan. This information is used to determine their eligibility for benefits.
- Most fields contain a single date, but some can contain either a single date or a date range. Each field's documentation specifies its format.
- Fields that can contain either a single date or date range include: `plan`, `eligibility`, `planBegin`, `admission`, and `service`.
- The provided dates apply to every benefit within the patient's health plan unless specifically noted within a `benefitsInformation[].benefitsDateInformation` object.
- If the payer sends back date(s) that are different for the subscriber and dependents, Stedi includes only the dates for the dependent in this object and omits the subscriber's date(s). Dependents can have different coverage dates than the subscriber due to qualifying life events, such as starting a new job or passing the age limit for coverage through their parent's plan.
- Most payers return either `plan` or `planBegin` and `planEnd`, but the exact dates returned depend on the payer's discretion and the patient's insurance plan.
- If the date of service is after the earliest ending `plan`, `eligibility`, `planEnd`, `eligibilityEnd`, `policyEffective`, or `policyExpiration` value, the patient likely doesn't have active coverage.
- **`planDateInformation.added`** (`string`): Added date. Payers may return this information in the case of retroactive eligibility.
- **`planDateInformation.admission`** (`string`): The admission date or dates.
- **`planDateInformation.benefit`** (`string`): The benefit date.
- **`planDateInformation.benefitBegin`** (`string`): The benefit begin date.
- **`planDateInformation.benefitEnd`** (`string`): The benefit end date.
- **`planDateInformation.certification`** (`string`): The certification date.
- **`planDateInformation.cobraBegin`** (`string`): The date when COBRA coverage begins.
- **`planDateInformation.cobraEnd`** (`string`): The date when COBRA coverage ends.
- **`planDateInformation.completion`** (`string`): The completion date.
- **`planDateInformation.coordinationOfBenefits`** (`string`): The coordination of benefits date.
- **`planDateInformation.dateOfDeath`** (`string`): The date of death. Payers may return this information in the case of a deceased subscriber or dependent.
- **`planDateInformation.dateOfLastUpdate`** (`string`): The date when the plan information was last updated.
- **`planDateInformation.discharge`** (`string`): The discharge date.
- **`planDateInformation.effectiveDateOfChange`** (`string`): The effective date of change.
- **`planDateInformation.eligibility`** (`string`): Plan eligibility dates.
- **`planDateInformation.eligibilityBegin`** (`string`): The date when the patient is first eligible for benefits under the plan.
- **`planDateInformation.eligibilityEnd`** (`string`): The date when the patient is no longer eligible for benefits under the plan.
- **`planDateInformation.enrollment`** (`string`): The date when the patient is enrolled in the plan.
- **`planDateInformation.issue`** (`string`): The issue date.
- **`planDateInformation.latestVisitOrConsultation`** (`string`): The latest visit or consultation date.
- **`planDateInformation.periodEnd`** (`string`): The end of a period.
- **`planDateInformation.periodStart`** (`string`): The start of a period.
- **`planDateInformation.plan`** (`string`): Plan effective dates.
- **`planDateInformation.planBegin`** (`string`): The date coverage from the plan begins.
- **`planDateInformation.planEnd`** (`string`): The date coverage from the plan ends.
- **`planDateInformation.policyEffective`** (`string`): The date when the policy becomes effective.
- **`planDateInformation.policyExpiration`** (`string`): The date when the policy expires.
- **`planDateInformation.premiumPaidToDateBegin`** (`string`): The start of the period when the plan premium was paid in full.
- **`planDateInformation.premiumPaidToDateEnd`** (`string`): The end of period when the plan premium payments are up-to-date.
- **`planDateInformation.primaryCareProvider`** (`string`): The primary care provider date.
- **`planDateInformation.service`** (`string`): The service date or dates.
- **`planDateInformation.status`** (`string`): The status date.
- **`planInformation`** (`object`): Additional identification for the subscriber's healthcare plan.
- **`planInformation.agencyClaimNumber`** (`string`): The agency claim number, only used when the information source is a Property and Casualty payer.
- **`planInformation.alternativeListId`** (`string`): The alternative list ID - identifies a list of alternative drugs with the associated formulary status for the patient.
- **`planInformation.caseNumber`** (`string`): The case number
- **`planInformation.centersForMedicareAndMedicaidServicesNPI`** (`string`): The [National Provider Identifier (NPI)](https://www.stedi.com/docs/healthcare/national-provider-identifier) assigned by the Centers for Medicare and Medicaid Services
- **`planInformation.classOfContractCode`** (`string`): The class of contract code - used to identify the applicable class of contract for claims processing.
- **`planInformation.contractNumber`** (`string`): The contract number of a contract between the payer and the provider that requested the eligibility check.
- **`planInformation.coverageListId`** (`string`): The coverage list ID - identifies a list of drugs that have coverage limitations for the patient.
- **`planInformation.drugFormularyNumber`** (`string`): The drug formulary number
- **`planInformation.electronicDevicePin`** (`string`): The electronic device pin number
- **`planInformation.eligibilityCategory`** (`string`): The eligibility category
- **`planInformation.facilityIdNumber`** (`string`): The facility ID number
- **`planInformation.facilityNetworkIdentificationNumber`** (`string`): The facility network identification number
- **`planInformation.familyUnitNumber`** (`string`): The family unit number
- **`planInformation.federalTaxpayersIdentificationNumber`** (`string`): The federal taxpayer's identification number
- **`planInformation.groupDescription`** (`string`): The group description
- **`planInformation.groupNumber`** (`string`): The group number
- **`planInformation.hicNumber`** (`string`): The health insurance claim number (HICN). Note that CMS previously used the HICN to uniquely identify Medicare beneficiaries. However, they have since transitioned to a new, randomized Medicare Beneficiary Identifier (MBI) format. The HICN is no longer used for Medicare transactions but this property is now used by some payers to return MBI. If you receive a value in this property that matches the format specified in the [Medicare Beneficiary Identifier documentation](https://www.cms.gov/training-education/partner-outreach-resources/new-medicare-card/medical-beneficiary-identifiers-mbis), the number is likely an MBI and we recommend sending a follow-up eligibility check to CMS for additional benefits data. This most commonly occurs with patients who are covered by both Medicare and Medicaid.
- **`planInformation.idCardNumber`** (`string`): The identity card number, used when the Identity Card Number is different than the Member Identification Number.
- **`planInformation.idCardSerialNumber`** (`string`): The identification card serial number. The Identification Card Serial Number uniquely identifies the identification card when multiple cards have been or will be issued to a member, such as a replacement card.
- **`planInformation.insurancePolicyNumber`** (`string`): The insurance policy number
- **`planInformation.issueNumber`** (`string`): The issue number
- **`planInformation.medicaidProviderNumber`** (`string`): The Medicaid provider number
- **`planInformation.medicaidRecipientIdNumber`** (`string`): The Medicaid recipient identification number
- **`planInformation.medicalAssistanceCategory`** (`string`): The medical assistance category
- **`planInformation.medicalRecordIdentificationNumber`** (`string`): The medical record identification number
- **`planInformation.medicareProviderNumber`** (`string`): The Medicare provider number
- **`planInformation.memberId`** (`string`): The member identification number - only used when checking eligibility with a Workers' Compensation or Property and Casualty insurer.
- **`planInformation.patientAccountNumber`** (`string`): The patient account number. If you included this value in the original eligibility request, the payer will return the same value here in the response.
- **`planInformation.personalIdentificationNumber`** (`string`): The personal identification number (PIN)
- **`planInformation.planDescription`** (`string`): The plan description
- **`planInformation.planNetworkIdDescription`** (`string`): The plan, group, or plan network name
- **`planInformation.planNetworkIdNumber`** (`string`): The plan network identification number
- **`planInformation.planNumber`** (`string`): The plan number
- **`planInformation.policyNumber`** (`string`): The group or policy number
- **`planInformation.priorAuthorizationNumber`** (`string`): The prior authorization number
- **`planInformation.priorIdNumber`** (`string`): The prior identifier number
- **`planInformation.referralNumber`** (`string`): The referral number
- **`planInformation.socialSecurityNumber`** (`string`): The social security number
- **`planInformation.stateLicenseNumber`** (`string`): The state license number
- **`planInformation.submitterIdentificationNumber`** (`string`): The submitter identification number
- **`planInformation.userIdentification`** (`string`): The user identification
- **`planStatus`** (`array of PlanStatus objects`): Please use `benefitsInformation` instead.
- **`planStatus[].planDetails`** (`string`)
- **`planStatus[].serviceTypeCodes`** (`array of strings`): Service Type Codes (STCs) related to the benefit type. For example, `7` - Anesthesia. Visit [Service Type Codes](https://www.stedi.com/docs/healthcare/send-eligibility-checks#service-type-codes) for a complete list.

This list is specific to X12 version 005010, which is the mandated version for eligibility checks. It differs from the current [X12 Service Type Codes](https://x12.org/codes/service-type-codes) list, which applies to X12 versions later than 005010.

Payers may sometimes return other non-compliant values.
- **`planStatus[].status`** (`string`)
- **`planStatus[].statusCode`** (`string`)
- **`provider`** (`object`): Information about the entity that submitted the original eligibility check request. This may be an individual practitioner, a medical group, a hospital, or another type of healthcare provider. This object will always include at least one identifier, such as the provider's [NPI](https://www.stedi.com/docs/healthcare/national-provider-identifier), tax ID, or EIN.
- **`provider.aaaErrors`** (`array of EligibilityCheckProviderError objects`)
- **`provider.aaaErrors[].code`** (`string`): Payers may sometimes return other non-compliant values.
  - Allowed values: `15`, `41`, `43`, `44`, `45`, `46`, `47`, `48`, `50`, `51`, `79`, `97`, `T4`
- **`provider.aaaErrors[].description`** (`string`): The error description.
- **`provider.aaaErrors[].field`** (`string`): The error type, `AAA`.
- **`provider.aaaErrors[].followupAction`** (`string`): Payers may sometimes return other non-compliant values.
  - Allowed values: `Please Correct and Resubmit`, `Resubmission Not Allowed`, `Resubmission Allowed`, `Do Not Resubmit; Inquiry Initiated to a Third Party`, `Please Wait 30 Days and Resubmit`, `Please Wait 10 Days and Resubmit`, `Do Not Resubmit; We Will Hold Your Request and Respond Again Shortly`
- **`provider.aaaErrors[].location`** (`string`): The location of the error within the original X12 EDI response.
- **`provider.aaaErrors[].possibleResolutions`** (`string`): Information to help you correct the error.

We periodically update this guidance, so these strings may change at any time and may differ between eligibility responses. **Don't build programmatic logic that depends on matching these strings exactly.**
- **`provider.address`** (`object`)
- **`provider.address.address1`** (`string`): The first line of the address.
- **`provider.address.address2`** (`string`): The second line of the address.
- **`provider.address.city`** (`string`): The city.
- **`provider.address.countryCode`** (`string`): The two-letter country code from [Part 1 of ISO 3166](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2).
- **`provider.address.countrySubDivisionCode`** (`string`): The country subdivision code from [Part 2 of ISO 3166](https://en.wikipedia.org/wiki/ISO_3166-2).
- **`provider.address.postalCode`** (`string`): The United States or Canadian postal code, excluding punctuation and blanks.
- **`provider.address.state`** (`string`): The US state or Canadian province code with unknown option. For example, `TN` for Tennessee or `NB` for New Brunswick.

Payers may sometimes return other non-compliant values.
  - Allowed values: `NL`, `PE`, `NS`, `NB`, `QC`, `ON`, `MB`, `SK`, `AB`, `BC`, `YT`, `NT`, `NU`, `DC`, `AS`, `GU`, `MP`, `PR`, `UM`, `VI`, `AA`, `AE`, `AP`, `AK`, `AL`, `AR`, `AZ`, `CA`, `CO`, `CT`, `DE`, `FL`, `GA`, `HI`, `IA`, `ID`, `IL`, `IN`, `KS`, `KY`, `LA`, `MA`, `MD`, `ME`, `MI`, `MN`, `MO`, `MS`, `MT`, `NC`, `ND`, `NE`, `NH`, `NJ`, `NM`, `NV`, `NY`, `OH`, `OK`, `OR`, `PA`, `RI`, `SC`, `SD`, `TN`, `TX`, `UT`, `VA`, `VT`, `WA`, `WI`, `WV`, `WY`
- **`provider.employersId`** (`string`): Deprecated; The provider's identification number for the entity receiving the benefits information.
This shape is deprecated: This property is no longer used.
- **`provider.entityIdentifier`** (`string`): A code identifying the type of provider.

Payers may sometimes return other non-compliant values.
  - Allowed values: `Provider`, `Third-Party Administrator`, `Employer`, `Hospital`, `Facility`, `Gateway Provider`, `Plan Sponsor`, `Payer`
- **`provider.entityType`** (`string`): The type of entity.

Payers may sometimes return other non-compliant values.
  - Allowed values: `Person`, `Non-Person Entity`
- **`provider.federalTaxpayersIdNumber`** (`string`): The Federal Taxpayer Identification Number (also known as an EIN).
- **`provider.middleName`** (`string`): The provider's middle name. This applies to providers that are an individual.
- **`provider.npi`** (`string`): The provider's [National Provider Identifier (NPI)](https://www.stedi.com/docs/healthcare/national-provider-identifier).
- **`provider.payorIdentification`** (`string`): The payer identification.
- **`provider.pharmacyProcessorNumber`** (`string`): The pharmacy processor number.
- **`provider.providerCode`** (`string`): A code indicating the type of provider. Visit [Eligibility code lists](https://www.stedi.com/docs/healthcare/eligibility-code-lists#provider-codes) for a complete list.

Payers may sometimes return other non-compliant values.
  - Allowed values: `AD`, `AT`, `BI`, `CO`, `CV`, `H`, `HH`, `LA`, `OT`, `P1`, `P2`, `PC`, `PE`, `R`, `RF`, `SB`, `SK`, `SU`
- **`provider.providerFirstName`** (`string`): The provider's first name. This applies to providers that are an individual.
- **`provider.providerName`** (`string`): The provider's last name. This applies to providers that are an individual.
- **`provider.providerOrgName`** (`string`): The provider's organization name.
- **`provider.referenceIdentification`** (`string`): The Health Care Provider Taxonomy Code.
- **`provider.serviceProviderNumber`** (`string`): The service provider number. This is an identification number assigned by the payer.
- **`provider.servicesPlanID`** (`string`): The Centers for Medicare and Medicaid Services (CMS) Plan ID.
- **`provider.ssn`** (`string`): The Social Security Number (SSN).
- **`provider.suffix`** (`string`): The provider's name suffix, such as Jr., Sr., or III.
- **`reassociationKey`** (`string`)
- **`status`** (`string`): Errors Stedi encountered when generating or sending the final X12 EDI transaction to the payer. These can include validation errors and payer unavailable errors that prevent delivery.
- **`subscriber`** (`object`): Information about the primary policyholder for the insurance plan listed in the original eligibility check request. The response will always include either the subscriber's name or member ID for identification, but most payers will also return the subscriber's date of birth and other identifying information.
- **`subscriber.aaaErrors`** (`array of EligibilityCheckSubscriberError objects`)
- **`subscriber.aaaErrors[].code`** (`string`): Payers may sometimes return other non-compliant values.
  - Allowed values: `15`, `33`, `35`, `42`, `43`, `45`, `47`, `48`, `49`, `51`, `52`, `53`, `54`, `55`, `56`, `57`, `58`, `60`, `61`, `62`, `63`, `69`, `70`, `71`, `72`, `73`, `74`, `75`, `76`, `78`, `98`, `AA`, `AE`, `AF`, `AG`, `AO`, `CI`, `E8`, `IA`, `MA`
- **`subscriber.aaaErrors[].description`** (`string`): The error description.
- **`subscriber.aaaErrors[].field`** (`string`): The error type, `AAA`.
- **`subscriber.aaaErrors[].followupAction`** (`string`): Payers may sometimes return other non-compliant values.
  - Allowed values: `Please Correct and Resubmit`, `Resubmission Not Allowed`, `Resubmission Allowed`, `Do Not Resubmit; Inquiry Initiated to a Third Party`, `Please Wait 30 Days and Resubmit`, `Please Wait 10 Days and Resubmit`, `Do Not Resubmit; We Will Hold Your Request and Respond Again Shortly`
- **`subscriber.aaaErrors[].location`** (`string`): The location of the error within the original X12 EDI response.
- **`subscriber.aaaErrors[].possibleResolutions`** (`string`): Information to help you correct the error.

We periodically update this guidance, so these strings may change at any time and may differ between eligibility responses. **Don't build programmatic logic that depends on matching these strings exactly.**
- **`subscriber.address`** (`object`)
- **`subscriber.address.address1`** (`string`): The first line of the address.
- **`subscriber.address.address2`** (`string`): The second line of the address.
- **`subscriber.address.city`** (`string`): The city.
- **`subscriber.address.countryCode`** (`string`): The two-letter country code from [Part 1 of ISO 3166](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2).
- **`subscriber.address.countrySubDivisionCode`** (`string`): The country subdivision code from [Part 2 of ISO 3166](https://en.wikipedia.org/wiki/ISO_3166-2).
- **`subscriber.address.postalCode`** (`string`): The United States or Canadian postal code, excluding punctuation and blanks.
- **`subscriber.address.state`** (`string`): The US state or Canadian province code with unknown option. For example, `TN` for Tennessee or `NB` for New Brunswick.

Payers may sometimes return other non-compliant values.
  - Allowed values: `NL`, `PE`, `NS`, `NB`, `QC`, `ON`, `MB`, `SK`, `AB`, `BC`, `YT`, `NT`, `NU`, `DC`, `AS`, `GU`, `MP`, `PR`, `UM`, `VI`, `AA`, `AE`, `AP`, `AK`, `AL`, `AR`, `AZ`, `CA`, `CO`, `CT`, `DE`, `FL`, `GA`, `HI`, `IA`, `ID`, `IL`, `IN`, `KS`, `KY`, `LA`, `MA`, `MD`, `ME`, `MI`, `MN`, `MO`, `MS`, `MT`, `NC`, `ND`, `NE`, `NH`, `NJ`, `NM`, `NV`, `NY`, `OH`, `OK`, `OR`, `PA`, `RI`, `SC`, `SD`, `TN`, `TX`, `UT`, `VA`, `VT`, `WA`, `WI`, `WV`, `WY`
- **`subscriber.birthSequenceNumber`** (`string`): The number assigned to each family member born with the same birth date, such as twins or triplets. Indicates the birth order when there are multiple births associated with the provided birth date.
- **`subscriber.dateOfBirth`** (`string`): The member's date of birth.
- **`subscriber.dateTimePeriod`** (`string`): The military service date.
- **`subscriber.dateTimePeriodFormatQualifier`** (`string`): Payers may sometimes return other non-compliant values.
  - Allowed values: `D8`, `RD8`
- **`subscriber.description`** (`string`): Context that identifies the exact military unit. Used to report military service data.
- **`subscriber.employmentStatusCode`** (`string`): Payers may sometimes return other non-compliant values.
  - Allowed values: `AE`, `AO`, `AS`, `AT`, `AU`, `CC`, `DD`, `HD`, `IR`, `LX`, `PE`, `RE`, `RM`, `RR`, `RU`
- **`subscriber.endDateTimePeriod`** (`string`): The military service end date.
- **`subscriber.entityIdentifier`** (`string`): The entity identifier for the subscriber.
  - Allowed values: `Insured or Subscriber`
- **`subscriber.entityType`** (`string`): The type of entity.

Payers may sometimes return other non-compliant values.
  - Allowed values: `Person`, `Non-Person Entity`
- **`subscriber.firstName`** (`string`): The member's first name.
- **`subscriber.gender`** (`string`)
  - Allowed values: `M`, `F`, `U`
- **`subscriber.governmentServiceAffiliationCode`** (`string`): Payers may sometimes return other non-compliant values.
  - Allowed values: `A`, `B`, `C`, `D`, `E`, `F`, `G`, `H`, `I`, `J`, `K`, `L`, `M`, `N`, `O`, `Q`, `R`, `S`, `U`, `W`
- **`subscriber.groupDescription`** (`string`): Group name
- **`subscriber.groupNumber`** (`string`): The group number associated with the insurance policy.
- **`subscriber.healthCareDiagnosisCodes`** (`array of HealthCareDiagnosisCode objects`)
- **`subscriber.healthCareDiagnosisCodes[].diagnosisCode`** (`string`): The diagnosis code. The decimal points are omitted in diagnosis codes - the decimal point is assumed.
- **`subscriber.healthCareDiagnosisCodes[].diagnosisTypeCode`** (`string`): The type of diagnosis code provided. It can be `ABK` - International Classification of Diseases Clinical Modification (ICD-10-CM) Principal Diagnosis or `BK` - International Classification of Diseases Clinical Modification (ICD-9-CM) Principal Diagnosis.
- **`subscriber.informationStatusCode`** (`string`): Payers may sometimes return other non-compliant values.
  - Allowed values: `A`, `C`, `L`, `O`, `P`, `S`, `T`
- **`subscriber.insuredIndicator`** (`string`): Indicates the status of the insured. For the subscriber, this is always `Y`.
  - Allowed values: `Y`
- **`subscriber.lastName`** (`string`): The member's last name.
- **`subscriber.maintenanceReasonCode`** (`string`): Code identifying the reason for the changes to subscriber identifying information, such as name, date of birth, or address. This is always `25`

Payers may sometimes return other non-compliant values.
  - Allowed values: `25`
- **`subscriber.maintenanceTypeCode`** (`string`): The maintenance type code. Used to acknowledge a change in the identifying elements for the subscriber from those submitted in the original eligibility check request. It can also be included when the payer used the birth sequence number from the original request to locate the subscriber in their system. This is always `001`

Payers may sometimes return other non-compliant values.
  - Allowed values: `001`
- **`subscriber.memberId`** (`string`): The member ID for the insurance policy.
- **`subscriber.middleName`** (`string`): The member's middle name or initial.
- **`subscriber.militaryServiceRankCode`** (`string`): Payers may sometimes return other non-compliant values.
  - Allowed values: `A1`, `A2`, `A3`, `B1`, `B2`, `C1`, `C2`, `C3`, `C4`, `C5`, `C6`, `C7`, `C8`, `C9`, `E1`, `F1`, `F2`, `F3`, `F4`, `G1`, `G4`, `L1`, `L2`, `L3`, `L4`, `L5`, `L6`, `M1`, `M2`, `M3`, `M4`, `M5`, `M6`, `P1`, `P2`, `P3`, `P4`, `P5`, `R1`, `R2`, `S1`, `S2`, `S3`, `S4`, `S5`, `S6`, `S7`, `S8`, `S9`, `SA`, `SB`, `SC`, `T1`, `V1`, `W1`
- **`subscriber.planDescription`** (`string`): Plan name
- **`subscriber.planNetworkDescription`** (`string`): Plan network name
- **`subscriber.planNetworkIdNumber`** (`string`): The network identification number associated with the insurance policy.
- **`subscriber.planNumber`** (`string`): The plan number associated with the insurance policy.
- **`subscriber.relationToSubscriber`** (`string`): The name of the `relationToSubscriberCode`. For the subscriber, this is always `Self`.
  - Allowed values: `Self`
- **`subscriber.relationToSubscriberCode`** (`string`): For the subscriber, this is always `18` for Self.
  - Allowed values: `18`
- **`subscriber.responseProvider`** (`object`): Information about the entity that submitted the original eligibility check request. This may be an individual practitioner, a medical group, a hospital, or another type of healthcare provider. This object will always include at least one identifier, such as the provider's [NPI](https://www.stedi.com/docs/healthcare/national-provider-identifier), tax ID, or EIN.
- **`subscriber.responseProvider.aaaErrors`** (`array of EligibilityCheckProviderError objects`)
- **`subscriber.responseProvider.aaaErrors[].code`** (`string`): Payers may sometimes return other non-compliant values.
  - Allowed values: `15`, `41`, `43`, `44`, `45`, `46`, `47`, `48`, `50`, `51`, `79`, `97`, `T4`
- **`subscriber.responseProvider.aaaErrors[].description`** (`string`): The error description.
- **`subscriber.responseProvider.aaaErrors[].field`** (`string`): The error type, `AAA`.
- **`subscriber.responseProvider.aaaErrors[].followupAction`** (`string`): Payers may sometimes return other non-compliant values.
  - Allowed values: `Please Correct and Resubmit`, `Resubmission Not Allowed`, `Resubmission Allowed`, `Do Not Resubmit; Inquiry Initiated to a Third Party`, `Please Wait 30 Days and Resubmit`, `Please Wait 10 Days and Resubmit`, `Do Not Resubmit; We Will Hold Your Request and Respond Again Shortly`
- **`subscriber.responseProvider.aaaErrors[].location`** (`string`): The location of the error within the original X12 EDI response.
- **`subscriber.responseProvider.aaaErrors[].possibleResolutions`** (`string`): Information to help you correct the error.

We periodically update this guidance, so these strings may change at any time and may differ between eligibility responses. **Don't build programmatic logic that depends on matching these strings exactly.**
- **`subscriber.responseProvider.address`** (`object`)
- **`subscriber.responseProvider.address.address1`** (`string`): The first line of the address.
- **`subscriber.responseProvider.address.address2`** (`string`): The second line of the address.
- **`subscriber.responseProvider.address.city`** (`string`): The city.
- **`subscriber.responseProvider.address.countryCode`** (`string`): The two-letter country code from [Part 1 of ISO 3166](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2).
- **`subscriber.responseProvider.address.countrySubDivisionCode`** (`string`): The country subdivision code from [Part 2 of ISO 3166](https://en.wikipedia.org/wiki/ISO_3166-2).
- **`subscriber.responseProvider.address.postalCode`** (`string`): The United States or Canadian postal code, excluding punctuation and blanks.
- **`subscriber.responseProvider.address.state`** (`string`): The US state or Canadian province code with unknown option. For example, `TN` for Tennessee or `NB` for New Brunswick.

Payers may sometimes return other non-compliant values.
  - Allowed values: `NL`, `PE`, `NS`, `NB`, `QC`, `ON`, `MB`, `SK`, `AB`, `BC`, `YT`, `NT`, `NU`, `DC`, `AS`, `GU`, `MP`, `PR`, `UM`, `VI`, `AA`, `AE`, `AP`, `AK`, `AL`, `AR`, `AZ`, `CA`, `CO`, `CT`, `DE`, `FL`, `GA`, `HI`, `IA`, `ID`, `IL`, `IN`, `KS`, `KY`, `LA`, `MA`, `MD`, `ME`, `MI`, `MN`, `MO`, `MS`, `MT`, `NC`, `ND`, `NE`, `NH`, `NJ`, `NM`, `NV`, `NY`, `OH`, `OK`, `OR`, `PA`, `RI`, `SC`, `SD`, `TN`, `TX`, `UT`, `VA`, `VT`, `WA`, `WI`, `WV`, `WY`
- **`subscriber.responseProvider.employersId`** (`string`): Deprecated; The provider's identification number for the entity receiving the benefits information.
This shape is deprecated: This property is no longer used.
- **`subscriber.responseProvider.entityIdentifier`** (`string`): A code identifying the type of provider.

Payers may sometimes return other non-compliant values.
  - Allowed values: `Provider`, `Third-Party Administrator`, `Employer`, `Hospital`, `Facility`, `Gateway Provider`, `Plan Sponsor`, `Payer`
- **`subscriber.responseProvider.entityType`** (`string`): The type of entity.

Payers may sometimes return other non-compliant values.
  - Allowed values: `Person`, `Non-Person Entity`
- **`subscriber.responseProvider.federalTaxpayersIdNumber`** (`string`): The Federal Taxpayer Identification Number (also known as an EIN).
- **`subscriber.responseProvider.middleName`** (`string`): The provider's middle name. This applies to providers that are an individual.
- **`subscriber.responseProvider.npi`** (`string`): The provider's [National Provider Identifier (NPI)](https://www.stedi.com/docs/healthcare/national-provider-identifier).
- **`subscriber.responseProvider.payorIdentification`** (`string`): The payer identification.
- **`subscriber.responseProvider.pharmacyProcessorNumber`** (`string`): The pharmacy processor number.
- **`subscriber.responseProvider.providerCode`** (`string`): A code indicating the type of provider. Visit [Eligibility code lists](https://www.stedi.com/docs/healthcare/eligibility-code-lists#provider-codes) for a complete list.

Payers may sometimes return other non-compliant values.
  - Allowed values: `AD`, `AT`, `BI`, `CO`, `CV`, `H`, `HH`, `LA`, `OT`, `P1`, `P2`, `PC`, `PE`, `R`, `RF`, `SB`, `SK`, `SU`
- **`subscriber.responseProvider.providerFirstName`** (`string`): The provider's first name. This applies to providers that are an individual.
- **`subscriber.responseProvider.providerName`** (`string`): The provider's last name. This applies to providers that are an individual.
- **`subscriber.responseProvider.providerOrgName`** (`string`): The provider's organization name.
- **`subscriber.responseProvider.referenceIdentification`** (`string`): The Health Care Provider Taxonomy Code.
- **`subscriber.responseProvider.serviceProviderNumber`** (`string`): The service provider number. This is an identification number assigned by the payer.
- **`subscriber.responseProvider.servicesPlanID`** (`string`): The Centers for Medicare and Medicaid Services (CMS) Plan ID.
- **`subscriber.responseProvider.ssn`** (`string`): The Social Security Number (SSN).
- **`subscriber.responseProvider.suffix`** (`string`): The provider's name suffix, such as Jr., Sr., or III.
- **`subscriber.ssn`** (`string`): The member's Social Security Number (SSN).
- **`subscriber.startDateTimePeriod`** (`string`): The military service start date.
- **`subscriber.suffix`** (`string`): The name suffix, such as Jr., Sr., or III.
- **`subscriber.uniqueHealthIdentifier`** (`string`): The member's unique health identifier.
- **`subscriberTraceNumbers`** (`array of SubscriberTraceNumber objects`): A unique identifier for the eligibility request. It's used to trace the transaction. Stedi always generates a trace number for internal tracking, and the payer may generate one as well. Stedi returns both its internal trace number and the payer's trace number (if present) in this array.

You can't set your own trace number when submitting eligibility checks through this endpoint.
- **`subscriberTraceNumbers[].originatingCompanyIdentifier`** (`string`): The identifier of the organization that assigned the trace number.
- **`subscriberTraceNumbers[].referenceIdentification`** (`string`): The unique trace number assigned to the transaction.
- **`subscriberTraceNumbers[].secondaryReferenceIdentification`** (`string`): Identifies a subdivision within the organization that assigned the trace number.
- **`subscriberTraceNumbers[].traceType`** (`string`): The full name of the `traceTypeCode`. For example `Current Transaction Trace Numbers`.
- **`subscriberTraceNumbers[].traceTypeCode`** (`string`): The code that identifies the type of trace number. Can be `1` - Current Transaction Trace Numbers (refers to trace numbers assigned by the payer) or `2` - Referenced Trace Numbers (refers to numbers sent in the original eligibility check request).
- **`tradingPartnerServiceId`** (`string`): An ID for the payer you identified in the original eligibility check request. This value may differ from the `tradingPartnerServiceId` you submitted in the original request because it reflects the payer's internal concept of their ID, not necessarily the ID Stedi uses to route requests to this payer.
- **`transactionSetAcknowledgement`** (`string`): The transaction set acknowledgment code provided in in the [X12 EDI 999 response](https://portal.stedi.com/app/guides/view/hipaa/implementation-acknowledgment-x231/01HRF41ES1DVGCA6X1EHSRPFXZ#properties.heading.properties.transaction_set_response_header_AK2_loop.items.properties.transaction_set_response_trailer_IK5).
- **`warnings`** (`array of Warning objects`): Issues with your eligibility request that could affect the results, or information about the response. For example, warnings can help explain why the request was rejected.
- **`warnings[].code`** (`string`): The warning code.
- **`warnings[].description`** (`string`): The warning description.
- **`x12`** (`string`): Typically this property contains the raw X12 EDI [271 Eligibility Benefit Response](https://portal.stedi.com/app/guides/view/hipaa/health-care-eligibility-benefit-response-x279a1/01GS66YHZPB37ABF34DBPSR213) from the payer.

In some circumstances, this property may contain a [999 Implementation Acknowledgment](https://portal.stedi.com/app/guides/view/hipaa/implementation-acknowledgment-x231a1/01HMRQV0N8SPHG58M4ZG1CRHH0) instead of a 271. A 999 indicates validation errors in the X12 EDI transaction, such as improper formatting or missing or invalid values.

If the 999 is returned in this property, many of the other response properties will be empty, as they are mapped to information in the 271.

**Example:**

```json
{
  "benefitsInformation": [
    {
      "additionalInformation": [
        {
          "description": "PROVIDER IS OUT NETWORK FOR MEMBER"
        },
        {
          "description": "FUNDING TYPE = SELF INSURED - LARGE GROUP"
        }
      ],
      "benefitsDateInformation": {
        "dateOfLastUpdate": "20240731"
      },
      "benefitsRelatedEntities": [
        {
          "address": {
            "address1": "P.O. BOX 30555",
            "city": "SALT LAKE CITY",
            "postalCode": "841300555",
            "state": "UT"
          },
          "contactInformation": {
            "contacts": [
              {
                "communicationMode": "Uniform Resource Locator (URL)",
                "communicationNumber": "WWW.UHCPROVIDER.COM"
              }
            ]
          },
          "entityIdentification": "PI",
          "entityIdentificationValue": "87726",
          "entityIdentifier": "Payer",
          "entityName": "UNITEDHEALTHCARE",
          "entityType": "Non-Person Entity"
        }
      ],
      "benefitsRelatedEntity": {
        "address": {
          "address1": "P.O. BOX 30555",
          "city": "SALT LAKE CITY",
          "postalCode": "841300555",
          "state": "UT"
        },
        "contactInformation": {
          "contacts": [
            {
              "communicationMode": "Uniform Resource Locator (URL)",
              "communicationNumber": "WWW.UHCPROVIDER.COM"
            }
          ]
        },
        "entityIdentification": "PI",
        "entityIdentificationValue": "87726",
        "entityIdentifier": "Payer",
        "entityName": "UNITEDHEALTHCARE",
        "entityType": "Non-Person Entity"
      },
      "code": "1",
      "inPlanNetworkIndicator": "Not Applicable",
      "inPlanNetworkIndicatorCode": "W",
      "insuranceType": "Commercial",
      "insuranceTypeCode": "C1",
      "name": "Active Coverage",
      "planCoverage": "CHOICE PLUS",
      "serviceTypeCodes": [
        "30"
      ],
      "serviceTypes": [
        "Health Benefit Plan Coverage"
      ]
    },
    {
      "additionalInformation": [
        {
          "description": "HIGHEST BENEFIT"
        },
        {
          "description": "DEDUCTIBLE IS MET WHEN FAMILY AMOUNT IS SATISFIED"
        }
      ],
      "benefitAmount": "0",
      "code": "C",
      "coverageLevel": "Family",
      "coverageLevelCode": "FAM",
      "inPlanNetworkIndicator": "Yes",
      "inPlanNetworkIndicatorCode": "Y",
      "name": "Deductible",
      "serviceTypeCodes": [
        "30"
      ],
      "serviceTypes": [
        "Health Benefit Plan Coverage"
      ],
      "timeQualifier": "Calendar Year",
      "timeQualifierCode": "23"
    },
    {
      "additionalInformation": [
        {
          "description": "HIGHEST BENEFIT"
        },
        {
          "description": "OOP MAXIMUM IS MET WHEN FAMILY AMOUNT IS SATISFIED"
        }
      ],
      "benefitAmount": "0",
      "code": "G",
      "coverageLevel": "Family",
      "coverageLevelCode": "FAM",
      "inPlanNetworkIndicator": "Yes",
      "inPlanNetworkIndicatorCode": "Y",
      "insuranceType": "Commercial",
      "insuranceTypeCode": "C1",
      "name": "Out of Pocket (Stop Loss)",
      "serviceTypeCodes": [
        "30"
      ],
      "serviceTypes": [
        "Health Benefit Plan Coverage"
      ],
      "timeQualifier": "Calendar Year",
      "timeQualifierCode": "23"
    },
    {
      "additionalInformation": [
        {
          "description": "HIGHEST BENEFIT"
        },
        {
          "description": "DEDUCTIBLE IS MET WHEN FAMILY AMOUNT IS SATISFIED"
        }
      ],
      "benefitAmount": "0",
      "code": "C",
      "coverageLevel": "Family",
      "coverageLevelCode": "FAM",
      "inPlanNetworkIndicator": "Yes",
      "inPlanNetworkIndicatorCode": "Y",
      "name": "Deductible",
      "serviceTypeCodes": [
        "30"
      ],
      "serviceTypes": [
        "Health Benefit Plan Coverage"
      ],
      "timeQualifier": "Year to Date",
      "timeQualifierCode": "24"
    },
    {
      "additionalInformation": [
        {
          "description": "HIGHEST BENEFIT"
        },
        {
          "description": "DEDUCTIBLE IS MET WHEN FAMILY AMOUNT IS SATISFIED"
        }
      ],
      "benefitAmount": "0",
      "code": "C",
      "coverageLevel": "Family",
      "coverageLevelCode": "FAM",
      "inPlanNetworkIndicator": "Yes",
      "inPlanNetworkIndicatorCode": "Y",
      "name": "Deductible",
      "serviceTypeCodes": [
        "30"
      ],
      "serviceTypes": [
        "Health Benefit Plan Coverage"
      ],
      "timeQualifier": "Remaining",
      "timeQualifierCode": "29"
    },
    {
      "additionalInformation": [
        {
          "description": "HIGHEST BENEFIT"
        },
        {
          "description": "OOP MAXIMUM IS MET WHEN FAMILY AMOUNT IS SATISFIED"
        }
      ],
      "benefitAmount": "0",
      "code": "G",
      "coverageLevel": "Family",
      "coverageLevelCode": "FAM",
      "inPlanNetworkIndicator": "Yes",
      "inPlanNetworkIndicatorCode": "Y",
      "insuranceType": "Commercial",
      "insuranceTypeCode": "C1",
      "name": "Out of Pocket (Stop Loss)",
      "serviceTypeCodes": [
        "30"
      ],
      "serviceTypes": [
        "Health Benefit Plan Coverage"
      ],
      "timeQualifier": "Year to Date",
      "timeQualifierCode": "24"
    },
    {
      "additionalInformation": [
        {
          "description": "HIGHEST BENEFIT"
        },
        {
          "description": "OOP MAXIMUM IS MET WHEN FAMILY AMOUNT IS SATISFIED"
        }
      ],
      "benefitAmount": "0",
      "code": "G",
      "coverageLevel": "Family",
      "coverageLevelCode": "FAM",
      "inPlanNetworkIndicator": "Yes",
      "inPlanNetworkIndicatorCode": "Y",
      "insuranceType": "Commercial",
      "insuranceTypeCode": "C1",
      "name": "Out of Pocket (Stop Loss)",
      "serviceTypeCodes": [
        "30"
      ],
      "serviceTypes": [
        "Health Benefit Plan Coverage"
      ],
      "timeQualifier": "Remaining",
      "timeQualifierCode": "29"
    },
    {
      "additionalInformation": [
        {
          "description": "DEDUCTIBLE IS MET WHEN FAMILY AMOUNT IS SATISFIED"
        }
      ],
      "benefitAmount": "3200",
      "code": "C",
      "coverageLevel": "Family",
      "coverageLevelCode": "FAM",
      "inPlanNetworkIndicator": "Not Applicable",
      "inPlanNetworkIndicatorCode": "W",
      "name": "Deductible",
      "serviceTypeCodes": [
        "30"
      ],
      "serviceTypes": [
        "Health Benefit Plan Coverage"
      ],
      "timeQualifier": "Year to Date",
      "timeQualifierCode": "24"
    },
    {
      "additionalInformation": [
        {
          "description": "OOP MAXIMUM IS MET WHEN FAMILY AMOUNT IS SATISFIED"
        }
      ],
      "benefitAmount": "5555.16",
      "code": "G",
      "coverageLevel": "Family",
      "coverageLevelCode": "FAM",
      "inPlanNetworkIndicator": "Not Applicable",
      "inPlanNetworkIndicatorCode": "W",
      "insuranceType": "Commercial",
      "insuranceTypeCode": "C1",
      "name": "Out of Pocket (Stop Loss)",
      "serviceTypeCodes": [
        "30"
      ],
      "serviceTypes": [
        "Health Benefit Plan Coverage"
      ],
      "timeQualifier": "Year to Date",
      "timeQualifierCode": "24"
    },
    {
      "additionalInformation": [
        {
          "description": "OOP MAXIMUM IS MET WHEN FAMILY AMOUNT IS SATISFIED"
        }
      ],
      "benefitAmount": "15500",
      "code": "G",
      "coverageLevel": "Family",
      "coverageLevelCode": "FAM",
      "inPlanNetworkIndicator": "No",
      "inPlanNetworkIndicatorCode": "N",
      "insuranceType": "Commercial",
      "insuranceTypeCode": "C1",
      "name": "Out of Pocket (Stop Loss)",
      "serviceTypeCodes": [
        "30"
      ],
      "serviceTypes": [
        "Health Benefit Plan Coverage"
      ],
      "timeQualifier": "Calendar Year",
      "timeQualifierCode": "23"
    },
    {
      "additionalInformation": [
        {
          "description": "OOP MAXIMUM IS MET WHEN FAMILY AMOUNT IS SATISFIED"
        }
      ],
      "benefitAmount": "6850",
      "code": "G",
      "coverageLevel": "Family",
      "coverageLevelCode": "FAM",
      "inPlanNetworkIndicator": "Yes",
      "inPlanNetworkIndicatorCode": "Y",
      "insuranceType": "Commercial",
      "insuranceTypeCode": "C1",
      "name": "Out of Pocket (Stop Loss)",
      "serviceTypeCodes": [
        "30"
      ],
      "serviceTypes": [
        "Health Benefit Plan Coverage"
      ],
      "timeQualifier": "Calendar Year",
      "timeQualifierCode": "23"
    },
    {
      "additionalInformation": [
        {
          "description": "DEDUCTIBLE IS MET WHEN FAMILY AMOUNT IS SATISFIED"
        }
      ],
      "benefitAmount": "3200",
      "code": "C",
      "coverageLevel": "Family",
      "coverageLevelCode": "FAM",
      "inPlanNetworkIndicator": "Yes",
      "inPlanNetworkIndicatorCode": "Y",
      "name": "Deductible",
      "serviceTypeCodes": [
        "30"
      ],
      "serviceTypes": [
        "Health Benefit Plan Coverage"
      ],
      "timeQualifier": "Calendar Year",
      "timeQualifierCode": "23"
    },
    {
      "additionalInformation": [
        {
          "description": "DEDUCTIBLE IS MET WHEN FAMILY AMOUNT IS SATISFIED"
        }
      ],
      "benefitAmount": "0",
      "code": "C",
      "coverageLevel": "Family",
      "coverageLevelCode": "FAM",
      "inPlanNetworkIndicator": "Yes",
      "inPlanNetworkIndicatorCode": "Y",
      "name": "Deductible",
      "serviceTypeCodes": [
        "30"
      ],
      "serviceTypes": [
        "Health Benefit Plan Coverage"
      ],
      "timeQualifier": "Remaining",
      "timeQualifierCode": "29"
    },
    {
      "additionalInformation": [
        {
          "description": "DEDUCTIBLE IS MET WHEN FAMILY AMOUNT IS SATISFIED"
        }
      ],
      "benefitAmount": "5000",
      "code": "C",
      "coverageLevel": "Family",
      "coverageLevelCode": "FAM",
      "inPlanNetworkIndicator": "No",
      "inPlanNetworkIndicatorCode": "N",
      "name": "Deductible",
      "serviceTypeCodes": [
        "30"
      ],
      "serviceTypes": [
        "Health Benefit Plan Coverage"
      ],
      "timeQualifier": "Calendar Year",
      "timeQualifierCode": "23"
    },
    {
      "additionalInformation": [
        {
          "description": "OOP MAXIMUM IS MET WHEN FAMILY AMOUNT IS SATISFIED"
        }
      ],
      "benefitAmount": "1294.84",
      "code": "G",
      "coverageLevel": "Family",
      "coverageLevelCode": "FAM",
      "inPlanNetworkIndicator": "Yes",
      "inPlanNetworkIndicatorCode": "Y",
      "insuranceType": "Commercial",
      "insuranceTypeCode": "C1",
      "name": "Out of Pocket (Stop Loss)",
      "serviceTypeCodes": [
        "30"
      ],
      "serviceTypes": [
        "Health Benefit Plan Coverage"
      ],
      "timeQualifier": "Remaining",
      "timeQualifierCode": "29"
    },
    {
      "additionalInformation": [
        {
          "description": "OOP MAXIMUM IS MET WHEN FAMILY AMOUNT IS SATISFIED"
        }
      ],
      "benefitAmount": "9944.84",
      "code": "G",
      "coverageLevel": "Family",
      "coverageLevelCode": "FAM",
      "inPlanNetworkIndicator": "No",
      "inPlanNetworkIndicatorCode": "N",
      "insuranceType": "Commercial",
      "insuranceTypeCode": "C1",
      "name": "Out of Pocket (Stop Loss)",
      "serviceTypeCodes": [
        "30"
      ],
      "serviceTypes": [
        "Health Benefit Plan Coverage"
      ],
      "timeQualifier": "Remaining",
      "timeQualifierCode": "29"
    },
    {
      "additionalInformation": [
        {
          "description": "DEDUCTIBLE IS MET WHEN FAMILY AMOUNT IS SATISFIED"
        }
      ],
      "benefitAmount": "1800",
      "code": "C",
      "coverageLevel": "Family",
      "coverageLevelCode": "FAM",
      "inPlanNetworkIndicator": "No",
      "inPlanNetworkIndicatorCode": "N",
      "name": "Deductible",
      "serviceTypeCodes": [
        "30"
      ],
      "serviceTypes": [
        "Health Benefit Plan Coverage"
      ],
      "timeQualifier": "Remaining",
      "timeQualifierCode": "29"
    },
    {
      "additionalInformation": [
        {
          "description": "HIGHEST BENEFIT"
        }
      ],
      "code": "1",
      "inPlanNetworkIndicator": "Yes",
      "inPlanNetworkIndicatorCode": "Y",
      "name": "Active Coverage",
      "serviceTypeCodes": [
        "A6"
      ],
      "serviceTypes": [
        "Psychotherapy"
      ]
    },
    {
      "additionalInformation": [
        {
          "description": "ABLETO FULLY FUNDED"
        }
      ],
      "code": "1",
      "inPlanNetworkIndicator": "Yes",
      "inPlanNetworkIndicatorCode": "Y",
      "name": "Active Coverage",
      "serviceTypeCodes": [
        "A6"
      ],
      "serviceTypes": [
        "Psychotherapy"
      ]
    },
    {
      "additionalInformation": [
        {
          "description": "ABLETO PARTIALLY FUNDED"
        }
      ],
      "code": "1",
      "inPlanNetworkIndicator": "Yes",
      "inPlanNetworkIndicatorCode": "Y",
      "name": "Active Coverage",
      "serviceTypeCodes": [
        "A6"
      ],
      "serviceTypes": [
        "Psychotherapy"
      ]
    },
    {
      "code": "1",
      "inPlanNetworkIndicator": "Not Applicable",
      "inPlanNetworkIndicatorCode": "W",
      "name": "Active Coverage",
      "serviceTypeCodes": [
        "A6"
      ],
      "serviceTypes": [
        "Psychotherapy"
      ]
    },
    {
      "benefitPercent": "0.4",
      "code": "A",
      "coverageLevel": "Individual",
      "coverageLevelCode": "IND",
      "eligibilityAdditionalInformation": {
        "codeListQualifier": "Mutually Defined",
        "codeListQualifierCode": "ZZ",
        "industry": "Office",
        "industryCode": "11"
      },
      "eligibilityAdditionalInformationList": [
        {
          "codeListQualifier": "Mutually Defined",
          "codeListQualifierCode": "ZZ",
          "industry": "Office",
          "industryCode": "11"
        }
      ],
      "inPlanNetworkIndicator": "No",
      "inPlanNetworkIndicatorCode": "N",
      "name": "Co-Insurance",
      "serviceTypeCodes": [
        "A6"
      ],
      "serviceTypes": [
        "Psychotherapy"
      ],
      "timeQualifier": "Visit",
      "timeQualifierCode": "27"
    },
    {
      "benefitPercent": "0.2",
      "code": "A",
      "coverageLevel": "Individual",
      "coverageLevelCode": "IND",
      "eligibilityAdditionalInformation": {
        "codeListQualifier": "Mutually Defined",
        "codeListQualifierCode": "ZZ",
        "industry": "Office",
        "industryCode": "11"
      },
      "eligibilityAdditionalInformationList": [
        {
          "codeListQualifier": "Mutually Defined",
          "codeListQualifierCode": "ZZ",
          "industry": "Office",
          "industryCode": "11"
        }
      ],
      "inPlanNetworkIndicator": "Yes",
      "inPlanNetworkIndicatorCode": "Y",
      "name": "Co-Insurance",
      "serviceTypeCodes": [
        "A6"
      ],
      "serviceTypes": [
        "Psychotherapy"
      ],
      "timeQualifier": "Visit",
      "timeQualifierCode": "27"
    },
    {
      "additionalInformation": [
        {
          "description": "HIGHEST BENEFIT"
        }
      ],
      "benefitPercent": "0.2",
      "code": "A",
      "coverageLevel": "Individual",
      "coverageLevelCode": "IND",
      "eligibilityAdditionalInformation": {
        "codeListQualifier": "Mutually Defined",
        "codeListQualifierCode": "ZZ",
        "industry": "Office",
        "industryCode": "11"
      },
      "eligibilityAdditionalInformationList": [
        {
          "codeListQualifier": "Mutually Defined",
          "codeListQualifierCode": "ZZ",
          "industry": "Office",
          "industryCode": "11"
        }
      ],
      "inPlanNetworkIndicator": "Yes",
      "inPlanNetworkIndicatorCode": "Y",
      "name": "Co-Insurance",
      "serviceTypeCodes": [
        "A6"
      ],
      "serviceTypes": [
        "Psychotherapy"
      ],
      "timeQualifier": "Visit",
      "timeQualifierCode": "27"
    },
    {
      "additionalInformation": [
        {
          "description": "ABLETO PARTIALLY FUNDED"
        }
      ],
      "benefitPercent": "0.2",
      "code": "A",
      "coverageLevel": "Individual",
      "coverageLevelCode": "IND",
      "eligibilityAdditionalInformation": {
        "codeListQualifier": "Mutually Defined",
        "codeListQualifierCode": "ZZ",
        "industry": "Office",
        "industryCode": "11"
      },
      "eligibilityAdditionalInformationList": [
        {
          "codeListQualifier": "Mutually Defined",
          "codeListQualifierCode": "ZZ",
          "industry": "Office",
          "industryCode": "11"
        }
      ],
      "inPlanNetworkIndicator": "Yes",
      "inPlanNetworkIndicatorCode": "Y",
      "name": "Co-Insurance",
      "serviceTypeCodes": [
        "A6"
      ],
      "serviceTypes": [
        "Psychotherapy"
      ],
      "timeQualifier": "Visit",
      "timeQualifierCode": "27"
    },
    {
      "additionalInformation": [
        {
          "description": "ABLETO FULLY FUNDED"
        }
      ],
      "benefitPercent": "0",
      "code": "A",
      "coverageLevel": "Individual",
      "coverageLevelCode": "IND",
      "eligibilityAdditionalInformation": {
        "codeListQualifier": "Mutually Defined",
        "codeListQualifierCode": "ZZ",
        "industry": "Office",
        "industryCode": "11"
      },
      "eligibilityAdditionalInformationList": [
        {
          "codeListQualifier": "Mutually Defined",
          "codeListQualifierCode": "ZZ",
          "industry": "Office",
          "industryCode": "11"
        }
      ],
      "inPlanNetworkIndicator": "Yes",
      "inPlanNetworkIndicatorCode": "Y",
      "name": "Co-Insurance",
      "serviceTypeCodes": [
        "A6"
      ],
      "serviceTypes": [
        "Psychotherapy"
      ],
      "timeQualifier": "Visit",
      "timeQualifierCode": "27"
    },
    {
      "additionalInformation": [
        {
          "description": "HIGHEST BENEFIT"
        }
      ],
      "benefitAmount": "0",
      "code": "B",
      "coverageLevel": "Individual",
      "coverageLevelCode": "IND",
      "eligibilityAdditionalInformation": {
        "codeListQualifier": "Mutually Defined",
        "codeListQualifierCode": "ZZ",
        "industry": "Office",
        "industryCode": "11"
      },
      "eligibilityAdditionalInformationList": [
        {
          "codeListQualifier": "Mutually Defined",
          "codeListQualifierCode": "ZZ",
          "industry": "Office",
          "industryCode": "11"
        }
      ],
      "inPlanNetworkIndicator": "Yes",
      "inPlanNetworkIndicatorCode": "Y",
      "name": "Co-Payment",
      "serviceTypeCodes": [
        "A6"
      ],
      "serviceTypes": [
        "Psychotherapy"
      ],
      "timeQualifier": "Visit",
      "timeQualifierCode": "27"
    },
    {
      "additionalInformation": [
        {
          "description": "ABLETO PARTIALLY FUNDED"
        }
      ],
      "benefitAmount": "0",
      "code": "B",
      "coverageLevel": "Individual",
      "coverageLevelCode": "IND",
      "eligibilityAdditionalInformation": {
        "codeListQualifier": "Mutually Defined",
        "codeListQualifierCode": "ZZ",
        "industry": "Office",
        "industryCode": "11"
      },
      "eligibilityAdditionalInformationList": [
        {
          "codeListQualifier": "Mutually Defined",
          "codeListQualifierCode": "ZZ",
          "industry": "Office",
          "industryCode": "11"
        }
      ],
      "inPlanNetworkIndicator": "Yes",
      "inPlanNetworkIndicatorCode": "Y",
      "name": "Co-Payment",
      "serviceTypeCodes": [
        "A6"
      ],
      "serviceTypes": [
        "Psychotherapy"
      ],
      "timeQualifier": "Visit",
      "timeQualifierCode": "27"
    },
    {
      "benefitAmount": "0",
      "code": "B",
      "coverageLevel": "Individual",
      "coverageLevelCode": "IND",
      "eligibilityAdditionalInformation": {
        "codeListQualifier": "Mutually Defined",
        "codeListQualifierCode": "ZZ",
        "industry": "Office",
        "industryCode": "11"
      },
      "eligibilityAdditionalInformationList": [
        {
          "codeListQualifier": "Mutually Defined",
          "codeListQualifierCode": "ZZ",
          "industry": "Office",
          "industryCode": "11"
        }
      ],
      "inPlanNetworkIndicator": "Not Applicable",
      "inPlanNetworkIndicatorCode": "W",
      "name": "Co-Payment",
      "serviceTypeCodes": [
        "A6"
      ],
      "serviceTypes": [
        "Psychotherapy"
      ],
      "timeQualifier": "Visit",
      "timeQualifierCode": "27"
    },
    {
      "additionalInformation": [
        {
          "description": "ABLETO FULLY FUNDED"
        }
      ],
      "benefitAmount": "0",
      "code": "B",
      "coverageLevel": "Individual",
      "coverageLevelCode": "IND",
      "eligibilityAdditionalInformation": {
        "codeListQualifier": "Mutually Defined",
        "codeListQualifierCode": "ZZ",
        "industry": "Office",
        "industryCode": "11"
      },
      "eligibilityAdditionalInformationList": [
        {
          "codeListQualifier": "Mutually Defined",
          "codeListQualifierCode": "ZZ",
          "industry": "Office",
          "industryCode": "11"
        }
      ],
      "inPlanNetworkIndicator": "Yes",
      "inPlanNetworkIndicatorCode": "Y",
      "name": "Co-Payment",
      "serviceTypeCodes": [
        "A6"
      ],
      "serviceTypes": [
        "Psychotherapy"
      ],
      "timeQualifier": "Visit",
      "timeQualifierCode": "27"
    },
    {
      "benefitAmount": "0",
      "code": "C",
      "inPlanNetworkIndicator": "Yes",
      "inPlanNetworkIndicatorCode": "Y",
      "name": "Deductible",
      "serviceTypeCodes": [
        "A6"
      ],
      "serviceTypes": [
        "Psychotherapy"
      ],
      "timeQualifier": "Visit",
      "timeQualifierCode": "27"
    },
    {
      "additionalInformation": [
        {
          "description": "ABLETO FULLY FUNDED"
        }
      ],
      "benefitAmount": "0",
      "code": "C",
      "coverageLevel": "Family",
      "coverageLevelCode": "FAM",
      "inPlanNetworkIndicator": "Yes",
      "inPlanNetworkIndicatorCode": "Y",
      "name": "Deductible",
      "serviceTypeCodes": [
        "A6"
      ],
      "serviceTypes": [
        "Psychotherapy"
      ],
      "timeQualifier": "Calendar Year",
      "timeQualifierCode": "23"
    },
    {
      "additionalInformation": [
        {
          "description": "ABLETO PARTIALLY FUNDED"
        }
      ],
      "benefitAmount": "0",
      "code": "F",
      "coverageLevel": "Individual",
      "coverageLevelCode": "IND",
      "inPlanNetworkIndicator": "Yes",
      "inPlanNetworkIndicatorCode": "Y",
      "name": "Limitations",
      "serviceTypeCodes": [
        "A6"
      ],
      "serviceTypes": [
        "Psychotherapy"
      ],
      "timeQualifier": "Visit",
      "timeQualifierCode": "27"
    },
    {
      "additionalInformation": [
        {
          "description": "HIGHEST BENEFIT"
        }
      ],
      "benefitAmount": "0",
      "code": "F",
      "coverageLevel": "Individual",
      "coverageLevelCode": "IND",
      "inPlanNetworkIndicator": "Yes",
      "inPlanNetworkIndicatorCode": "Y",
      "name": "Limitations",
      "serviceTypeCodes": [
        "A6"
      ],
      "serviceTypes": [
        "Psychotherapy"
      ],
      "timeQualifier": "Visit",
      "timeQualifierCode": "27"
    },
    {
      "additionalInformation": [
        {
          "description": "ABLETO FULLY FUNDED"
        }
      ],
      "benefitAmount": "0",
      "code": "F",
      "coverageLevel": "Individual",
      "coverageLevelCode": "IND",
      "inPlanNetworkIndicator": "Yes",
      "inPlanNetworkIndicatorCode": "Y",
      "name": "Limitations",
      "serviceTypeCodes": [
        "A6"
      ],
      "serviceTypes": [
        "Psychotherapy"
      ],
      "timeQualifier": "Visit",
      "timeQualifierCode": "27"
    },
    {
      "benefitAmount": "0",
      "code": "F",
      "coverageLevel": "Individual",
      "coverageLevelCode": "IND",
      "inPlanNetworkIndicator": "Yes",
      "inPlanNetworkIndicatorCode": "Y",
      "name": "Limitations",
      "serviceTypeCodes": [
        "A6"
      ],
      "serviceTypes": [
        "Psychotherapy"
      ],
      "timeQualifier": "Visit",
      "timeQualifierCode": "27"
    },
    {
      "additionalInformation": [
        {
          "description": "ADDITIONAL COVERED PER OCCURRENCE"
        },
        {
          "description": "ABLETO PARTIALLY FUNDED"
        }
      ],
      "benefitAmount": "0",
      "code": "F",
      "coverageLevel": "Individual",
      "coverageLevelCode": "IND",
      "inPlanNetworkIndicator": "Yes",
      "inPlanNetworkIndicatorCode": "Y",
      "name": "Limitations",
      "serviceTypeCodes": [
        "A6"
      ],
      "serviceTypes": [
        "Psychotherapy"
      ],
      "timeQualifier": "Visit",
      "timeQualifierCode": "27"
    },
    {
      "additionalInformation": [
        {
          "description": "ADDITIONAL COVERED PER OCCURRENCE"
        }
      ],
      "benefitAmount": "0",
      "code": "F",
      "coverageLevel": "Individual",
      "coverageLevelCode": "IND",
      "inPlanNetworkIndicator": "Yes",
      "inPlanNetworkIndicatorCode": "Y",
      "name": "Limitations",
      "serviceTypeCodes": [
        "A6"
      ],
      "serviceTypes": [
        "Psychotherapy"
      ],
      "timeQualifier": "Visit",
      "timeQualifierCode": "27"
    },
    {
      "additionalInformation": [
        {
          "description": "ADDITIONAL COVERED PER OCCURRENCE"
        },
        {
          "description": "HIGHEST BENEFIT"
        }
      ],
      "benefitAmount": "0",
      "code": "F",
      "coverageLevel": "Individual",
      "coverageLevelCode": "IND",
      "inPlanNetworkIndicator": "Yes",
      "inPlanNetworkIndicatorCode": "Y",
      "name": "Limitations",
      "serviceTypeCodes": [
        "A6"
      ],
      "serviceTypes": [
        "Psychotherapy"
      ],
      "timeQualifier": "Visit",
      "timeQualifierCode": "27"
    },
    {
      "additionalInformation": [
        {
          "description": "ADDITIONAL COVERED PER OCCURRENCE"
        },
        {
          "description": "ABLETO FULLY FUNDED"
        }
      ],
      "benefitAmount": "0",
      "code": "F",
      "coverageLevel": "Individual",
      "coverageLevelCode": "IND",
      "inPlanNetworkIndicator": "Yes",
      "inPlanNetworkIndicatorCode": "Y",
      "name": "Limitations",
      "serviceTypeCodes": [
        "A6"
      ],
      "serviceTypes": [
        "Psychotherapy"
      ],
      "timeQualifier": "Visit",
      "timeQualifierCode": "27"
    },
    {
      "benefitsRelatedEntities": [
        {
          "entityIdentification": "XX",
          "entityIdentificationValue": "1235600834",
          "entityIdentifier": "Provider",
          "entityName": "NEW YORK MEDICAL BEHAVIORAL HEALTH SERVICES",
          "entityType": "Non-Person Entity"
        }
      ],
      "benefitsRelatedEntity": {
        "entityIdentification": "XX",
        "entityIdentificationValue": "1235600834",
        "entityIdentifier": "Provider",
        "entityName": "NEW YORK MEDICAL BEHAVIORAL HEALTH SERVICES",
        "entityType": "Non-Person Entity"
      },
      "code": "X",
      "inPlanNetworkIndicator": "Not Applicable",
      "inPlanNetworkIndicatorCode": "W",
      "name": "Health Care Facility"
    }
  ],
  "controlNumber": "345459952",
  "dependents": [
    {
      "dateOfBirth": "19521121",
      "entityType": "Person",
      "firstName": "Jane",
      "gender": "F",
      "insuredIndicator": "N",
      "lastName": "Doe",
      "maintenanceReasonCode": "25",
      "maintenanceTypeCode": "001",
      "middleName": "Alex",
      "planNumber": "UVdQAC5j6f",
      "relationToSubscriber": "Spouse",
      "relationToSubscriberCode": "01"
    }
  ],
  "eligibilitySearchId": "019f4829-fecb-7b60-86a9-6ca38f7d1db7",
  "errors": [],
  "id": "ec_019f4829-fecb-7b60-86a9-6c900ad94bfb",
  "meta": {
    "applicationMode": "test",
    "outboundTraceId": "01KX42KZPCP7W5HHVSEY1Z8TEW",
    "senderId": "STEDI",
    "submitterId": "117151744",
    "traceId": "01JDQV00485EPP4D6BD8GM1SWM"
  },
  "payer": {
    "contactInformation": {
      "contacts": [
        {
          "communicationMode": "Uniform Resource Locator (URL)",
          "communicationNumber": "WWW.UHCPROVIDER.COM"
        }
      ]
    },
    "entityIdentifier": "Payer",
    "entityType": "Non-Person Entity",
    "name": "UNITEDHEALTHCARE",
    "payorIdentification": "87726"
  },
  "planDateInformation": {
    "plan": "20240101-20241231"
  },
  "planInformation": {
    "groupNumber": "186084",
    "planNumber": "UVdQAC5j6f"
  },
  "planStatus": [
    {
      "planDetails": "CHOICE PLUS",
      "serviceTypeCodes": [
        "30"
      ],
      "status": "Active Coverage",
      "statusCode": "1"
    },
    {
      "serviceTypeCodes": [
        "A6"
      ],
      "status": "Active Coverage",
      "statusCode": "1"
    },
    {
      "serviceTypeCodes": [
        "A6"
      ],
      "status": "Active Coverage",
      "statusCode": "1"
    },
    {
      "serviceTypeCodes": [
        "A6"
      ],
      "status": "Active Coverage",
      "statusCode": "1"
    },
    {
      "serviceTypeCodes": [
        "A6"
      ],
      "status": "Active Coverage",
      "statusCode": "1"
    }
  ],
  "provider": {
    "entityIdentifier": "Provider",
    "entityType": "Non-Person Entity",
    "npi": "1999999984",
    "providerName": "Jerde - Sauer"
  },
  "reassociationKey": "345459952",
  "subscriber": {
    "address": {
      "address1": "123 Sunnyvale Lane",
      "city": "Fosterburgh",
      "postalCode": "91016",
      "state": "TX"
    },
    "dateOfBirth": "19760214",
    "entityIdentifier": "Insured or Subscriber",
    "entityType": "Person",
    "firstName": "John",
    "gender": "M",
    "groupNumber": "186084",
    "lastName": "Doe",
    "memberId": "UHC202649",
    "middleName": "A",
    "planNumber": "UVdQAC5j6f"
  },
  "tradingPartnerServiceId": "87726",
  "x12": "ISA*00*          *00*          *ZZ*STEDI          *01*117151744      *260709*1835*^*00501*345459952*0*T*`~GS*HB*STEDI*117151744*20260709*183539*1*X*005010X279A1~ST*271*0001*005010X279A1~BHT*0022*11*01JDQV00485EPP4D6BD8GM1SWM*20260325*0901~HL*1**20*1~NM1*PR*2*UNITEDHEALTHCARE*****PI*87726~PER*IC**UR*WWW.UHCPROVIDER.COM~HL*2*1*21*1~NM1*1P*2*Jerde - Sauer*****XX*1999999984~HL*3*2*22*1~NM1*IL*1*Doe*John*A***MI*UHC202649~REF*6P*186084~REF*18*UVdQAC5j6f~N3*123 Sunnyvale Lane~N4*Fosterburgh*TX*91016~DMG*D8*19760214*M~DTP*291*RD8*20240101-20241231~HL*4*3*23*0~NM1*03*1*Doe*Jane*Alex~REF*18*UVdQAC5j6f~DMG*D8*19521121*F~INS*N*01*001*25~EB*1**30*C1*CHOICE PLUS*******W~DTP*636*D8*20240731~MSG*PROVIDER IS OUT NETWORK FOR MEMBER~MSG*FUNDING TYPE = SELF INSURED - LARGE GROUP~LS*2120~NM1*PR*2*UNITEDHEALTHCARE*****PI*87726~N3*P.O. BOX 30555~N4*SALT LAKE CITY*UT*841300555~PER*IC**UR*WWW.UHCPROVIDER.COM~LE*2120~EB*C*FAM*30***23*0*****Y~MSG*HIGHEST BENEFIT~MSG*DEDUCTIBLE IS MET WHEN FAMILY AMOUNT IS SATISFIED~EB*G*FAM*30*C1**23*0*****Y~MSG*HIGHEST BENEFIT~MSG*OOP MAXIMUM IS MET WHEN FAMILY AMOUNT IS SATISFIED~EB*C*FAM*30***24*0*****Y~MSG*HIGHEST BENEFIT~MSG*DEDUCTIBLE IS MET WHEN FAMILY AMOUNT IS SATISFIED~EB*C*FAM*30***29*0*****Y~MSG*HIGHEST BENEFIT~MSG*DEDUCTIBLE IS MET WHEN FAMILY AMOUNT IS SATISFIED~EB*G*FAM*30*C1**24*0*****Y~MSG*HIGHEST BENEFIT~MSG*OOP MAXIMUM IS MET WHEN FAMILY AMOUNT IS SATISFIED~EB*G*FAM*30*C1**29*0*****Y~MSG*HIGHEST BENEFIT~MSG*OOP MAXIMUM IS MET WHEN FAMILY AMOUNT IS SATISFIED~EB*C*FAM*30***24*3200*****W~MSG*DEDUCTIBLE IS MET WHEN FAMILY AMOUNT IS SATISFIED~EB*G*FAM*30*C1**24*5555.16*****W~MSG*OOP MAXIMUM IS MET WHEN FAMILY AMOUNT IS SATISFIED~EB*G*FAM*30*C1**23*15500*****N~MSG*OOP MAXIMUM IS MET WHEN FAMILY AMOUNT IS SATISFIED~EB*G*FAM*30*C1**23*6850*****Y~MSG*OOP MAXIMUM IS MET WHEN FAMILY AMOUNT IS SATISFIED~EB*C*FAM*30***23*3200*****Y~MSG*DEDUCTIBLE IS MET WHEN FAMILY AMOUNT IS SATISFIED~EB*C*FAM*30***29*0*****Y~MSG*DEDUCTIBLE IS MET WHEN FAMILY AMOUNT IS SATISFIED~EB*C*FAM*30***23*5000*****N~MSG*DEDUCTIBLE IS MET WHEN FAMILY AMOUNT IS SATISFIED~EB*G*FAM*30*C1**29*1294.84*****Y~MSG*OOP MAXIMUM IS MET WHEN FAMILY AMOUNT IS SATISFIED~EB*G*FAM*30*C1**29*9944.84*****N~MSG*OOP MAXIMUM IS MET WHEN FAMILY AMOUNT IS SATISFIED~EB*C*FAM*30***29*1800*****N~MSG*DEDUCTIBLE IS MET WHEN FAMILY AMOUNT IS SATISFIED~EB*1**A6*********Y~MSG*HIGHEST BENEFIT~EB*1**A6*********Y~MSG*ABLETO FULLY FUNDED~EB*1**A6*********Y~MSG*ABLETO PARTIALLY FUNDED~EB*1**A6*********W~EB*A*IND*A6***27**.4****N~III*ZZ*11~EB*A*IND*A6***27**.2****Y~III*ZZ*11~EB*A*IND*A6***27**.2****Y~MSG*HIGHEST BENEFIT~III*ZZ*11~EB*A*IND*A6***27**.2****Y~MSG*ABLETO PARTIALLY FUNDED~III*ZZ*11~EB*A*IND*A6***27**0****Y~MSG*ABLETO FULLY FUNDED~III*ZZ*11~EB*B*IND*A6***27*0*****Y~MSG*HIGHEST BENEFIT~III*ZZ*11~EB*B*IND*A6***27*0*****Y~MSG*ABLETO PARTIALLY FUNDED~III*ZZ*11~EB*B*IND*A6***27*0*****W~III*ZZ*11~EB*B*IND*A6***27*0*****Y~MSG*ABLETO FULLY FUNDED~III*ZZ*11~EB*C**A6***27*0*****Y~EB*C*FAM*A6***23*0*****Y~MSG*ABLETO FULLY FUNDED~EB*F*IND*A6***27*0*****Y~MSG*ABLETO PARTIALLY FUNDED~EB*F*IND*A6***27*0*****Y~MSG*HIGHEST BENEFIT~EB*F*IND*A6***27*0*****Y~MSG*ABLETO FULLY FUNDED~EB*F*IND*A6***27*0*****Y~EB*F*IND*A6***27*0*****Y~MSG*ADDITIONAL COVERED PER OCCURRENCE~MSG*ABLETO PARTIALLY FUNDED~EB*F*IND*A6***27*0*****Y~MSG*ADDITIONAL COVERED PER OCCURRENCE~EB*F*IND*A6***27*0*****Y~MSG*ADDITIONAL COVERED PER OCCURRENCE~MSG*HIGHEST BENEFIT~EB*F*IND*A6***27*0*****Y~MSG*ADDITIONAL COVERED PER OCCURRENCE~MSG*ABLETO FULLY FUNDED~EB*X***********W~LS*2120~NM1*1P*2*NEW YORK MEDICAL BEHAVIORAL HEALTH SERVICES*****XX*1235600834~LE*2120~SE*125*0001~GE*1*1~IEA*1*345459952~"
}
```

#### 400

EligibilityCheck400Error 400 response

**Schema:** `EligibilityCheck400ErrorResponseContent`


**Example:**

```json
{
  "controlNumber": "000647813",
  "eligibilitySearchId": "0198afa8-1610-7602-a436-911cb4bf2a9f",
  "errors": [
    {
      "code": "44",
      "description": "Invalid/Missing Provider Name",
      "field": "AAA",
      "followupAction": "Please Correct and Resubmit",
      "location": "Loop 2100B",
      "possibleResolutions": "Provider's NPI is registered with incorrect name at the payer. Contact the payer directly using the information in the `payer.contactInformation` object (if available) to resolve the issue."
    }
  ],
  "id": "ec_650e8400-e29b-41d4-a716-446655440001",
  "meta": {
    "applicationMode": "test",
    "outboundTraceId": "01K2QTG5GGN7SSM34JMHS7QBDZ",
    "senderId": "STEDI",
    "submitterId": "117151744",
    "traceId": "01K2QTG5GGN7SSM34JMHS7QBDZ"
  },
  "payer": {
    "entityIdentifier": "Payer",
    "entityType": "Non-Person Entity",
    "name": "100935",
    "payorIdentification": "100935"
  },
  "planDateInformation": {
    "plan": "20240726"
  },
  "provider": {
    "aaaErrors": [
      {
        "code": "44",
        "description": "Invalid/Missing Provider Name",
        "field": "AAA",
        "followupAction": "Please Correct and Resubmit",
        "location": "Loop 2100B",
        "possibleResolutions": "Provider's NPI is registered with incorrect name at the payer. Contact the payer directly using the information in the `payer.contactInformation` object (if available) to resolve the issue."
      }
    ],
    "entityIdentifier": "Provider",
    "entityType": "Person",
    "npi": "1447848577",
    "providerName": "SIMPSON"
  },
  "reassociationKey": "000647813",
  "subscriber": {
    "dateOfBirth": "20240606",
    "entityIdentifier": "Insured or Subscriber",
    "entityType": "Person",
    "firstName": "ABE",
    "lastName": "STEDI"
  },
  "subscriberTraceNumbers": [
    {
      "originatingCompanyIdentifier": "3117151744",
      "referenceIdentification": "01K2QTG5GJ8K030SK9QDWF5HD9",
      "traceType": "Current Transaction Trace Numbers",
      "traceTypeCode": "1"
    }
  ],
  "tradingPartnerServiceId": "BS001",
  "warnings": [
    {
      "code": "response::271::invalid_subscriber_insured_id",
      "description": "[Subscriber/dependent] ID must use one of these formats: a three character alpha-numeric prefix (no zeros or ones) followed by a maximum of 14 alpha-numeric characters, an `R` followed by exactly 8 numbers, or an `H` followed by exactly 8 or 10 numbers."
    }
  ],
  "x12": "ISA*00*          *00*          *ZZ*STEDI          *01*117151744      *250815*1734*^*00501*000647813*0*T*:~GS*HB*STEDI*117151744*20250815*173448*1*X*005010X279A1~ST*271*1001*005010X279A1~BHT*0022*11*01K2QTG5GGN7SSM34JMHS7QBDZ*20250815*1734~HL*1**20*1~NM1*PR*2*100935*****PI*100935~HL*2*1*21*1~NM1*1P*1*SIMPSON*****XX*1447848577~AAA*N**44*C~HL*3*2*22*0~TRN*1*01K2QTG5GJ8K030SK9QDWF5HD9*3117151744~NM1*IL*1*STEDI*ABE~DMG*D8*20240606~DTP*291*D8*20240726~SE*13*1001~GE*1*1~IEA*1*000647813~"
}
```

#### 403

AccessDeniedException 403 response

**Schema:** `AccessDeniedExceptionResponseContent`

**Properties:**

- **`code`** (`string`): Error classification code
- **`message`** (`string`) (required): Human-readable error message
#### 404

ResourceNotFoundException 404 response

**Schema:** `ResourceNotFoundExceptionResponseContent`

**Properties:**

- **`code`** (`string`): Error classification code
- **`message`** (`string`) (required): Human-readable error message
#### 429

ThrottlingException 429 response

**Schema:** `ThrottlingExceptionResponseContent`

**Properties:**

- **`code`** (`string`): Error classification code
- **`message`** (`string`) (required): Human-readable error message
#### 500

InternalFailureException 500 response

**Schema:** `InternalFailureExceptionResponseContent`

**Properties:**

- **`code`** (`string`): Error classification code
- **`message`** (`string`) (required): Human-readable error message
#### 503

ServiceUnavailableException 503 response

**Schema:** `ServiceUnavailableExceptionResponseContent`

**Properties:**

- **`code`** (`string`)
- **`message`** (`string`) (required)
#### 504

GatewayTimeoutException 504 response

**Schema:** `GatewayTimeoutExceptionResponseContent`

**Properties:**

- **`code`** (`string`)
- **`message`** (`string`) (required)


# Institutional Claims (837I) Raw X12
Source: https://www.stedi.com/docs/healthcare/api-reference/post-healthcare-institutional-claims-raw-x12


This endpoint is ideal if you have an existing system that generates X12 EDI files and you want to send them through Stedi.

1. Call this endpoint with a payload in [837 X12 EDI format](https://portal.stedi.com/app/guides/view/hipaa/health-care-claim-institutional-x223a2/01JBHW2YXMN2F9KXK2PS0BFP9F).
2. Stedi validates the EDI and sends the claim to the payer.
3. The endpoint returns a response from Stedi in JSON format containing information about the claim you submitted and whether the submission was successful.

## Claim identifier [#claim-identifier]

`Loop 2300 REF02` (Claim Identifier for Transmission Intermediaries) has different usage rules depending on your role:

* **Providers:** Don't include `Loop 2300 REF02` when `REF01` = `D9` in your claim submission. It's reserved for clearinghouses and intermediaries. You can use `Loop 2300 CLM01` (Patient Control Number) to correlate claims with responses instead.
* **Clearinghouses and intermediaries:** You can optionally include `REF*D9` in your 837 submissions. Stedi always returns this value in `Loop 2200D REF*D9` of 277CA claim acknowledgments, allowing you to match these responses to the claim.

## API Specification

Submit an 837I institutional claim in raw X12 EDI format

**Endpoint:** `POST /change/medicalnetwork/institutionalclaims/v1/raw-x12-submission`

**Base URL:** `https://healthcare.us.stedi.com/2024-04-01`

### Parameters

- **`Idempotency-Key`** (header): A unique string to identify this request to the server. The key can be up to 255 characters. You can safely retry requests with the same idempotency key within 24 hours of making the first request. This prevents you from sending duplicate claims due to network errors or other intermittent failures. [Learn more](https://www.stedi.com/docs/api-reference/index#idempotency-keys).
  - Type: `string`

### Request Body

**Schema:** `InstitutionalClaimsRawX12SubmissionRequestContent`

**Properties:**

- **`x12`** (`string`) (required)

**Example:**

```json
{
  "x12": "ISA*00*          *00*          *ZZ*574183004559   *ZZ*STEDITEST      *260213*2004*^*00501*000000035*0*T*>~GS*HC*574183004559*STEDITEST*20260213*200422*35*X*005010X223A2~ST*837*0001*005010X223A2~BHT*0019*00*01KHC9KCMYMA7YSW4K1ZM774ZA*20260213*2003*CH~NM1*41*2*Test Facility*****46*123456789~PER*IC**TE*2225551234~NM1*40*2*UnitedHealthcare*****46*87726~HL*1**20*1~NM1*85*2*Test Facility*****XX*1999999976~N3*123 Mulberry Street~N4*Seattle*WA*111135272~REF*EI*123456789~HL*2*1*22*0~SBR*P*18*******ZZ~NM1*IL*1*DOE*JANE****MI*98765~N3*1234 Some St~N4*Buckeye*AZ*85326~DMG*D8*19000101*F~NM1*PR*2*UnitedHealthcare*****PI*87726~CLM*55556666777888*500***11>A>0**C*Y*Y~DTP*434*RD8*20241015-20241015~DTP*435*DT*202409091000~CL1*3*9*30~HI*ABK>R45851~NM1*71*1*Provider*Doctor****XX*1999999976~LX*1~SV2*0800*HC>H0001*500*UN*1~DTP*472*RD8*20241015-20241015~REF*6R*111222333~SE*28*0001~GE*1*35~IEA*1*000000035~"
}
```

### Responses

#### 200

InstitutionalClaimsRawX12Submission 200 response

**Schema:** `InstitutionalClaimsRawX12SubmissionResponseContent`

**Properties:**

- **`claimReference`** (`object`): Information about the claim.
- **`claimReference.claimType`** (`string`): The type of claim, always `INST`.
- **`claimReference.correlationId`** (`string`): An identifier Stedi assigns to the claim.
- **`claimReference.customerClaimNumber`** (`string`): A tracking number that Stedi assigns to the claim.
- **`claimReference.formatVersion`** (`string`): The X12 EDI version Stedi used to generate the claim for the payer. This is always `5010`.
- **`claimReference.patientControlNumber`** (`string`): The `patientControlNumber` from the original request, if supplied. This is a unique identifier that you assign to the claim so you can track the claim and correlate it with responses from the payer.
- **`claimReference.payerId`** (`string`): The payer's ID. This is the same as the `tradingPartnerServiceId`.
- **`claimReference.rhClaimNumber`** (`string`): A tracking number Stedi assigns to the claim. This is the same as the `correlationId`.
- **`claimReference.serviceLines`** (`array of ServiceLineResponseIdentifier objects`): Contains a unique identifier for each service line, listed in the order the service lines were included in the claim. You can use these identifiers to correlate payer responses to specific service lines.
- **`claimReference.serviceLines[].lineItemControlNumber`** (`string`): A unique identifier for the service line, matching the value provided for the `claimInformation.serviceLines[].providerControlNumber` property in the claim submission. If you didn't provide a value for `providerControlNumber`, this property contains a randomly generated a ULID for the service line.
- **`claimReference.submitterId`** (`string`): Stedi's ID for the entity that submitted the claim.
- **`claimReference.timeOfResponse`** (`string`): A timestamp for Stedi's response to the claim submission.
- **`controlNumber`** (`string`): An identifier for the transaction.
- **`editResponses`** (`array of EditResponse objects`): Currently not used.
- **`editResponses[].allowOverride`** (`string`)
- **`editResponses[].badData`** (`string`)
- **`editResponses[].claimCorePath`** (`string`)
- **`editResponses[].editActivity`** (`string`)
- **`editResponses[].editName`** (`string`)
- **`editResponses[].element`** (`string`)
- **`editResponses[].errorDescription`** (`string`)
- **`editResponses[].fieldIndex`** (`string`)
- **`editResponses[].loop`** (`string`)
- **`editResponses[].phaseID`** (`string`)
- **`editResponses[].qualifierCode`** (`string`)
- **`editResponses[].referenceID`** (`string`)
- **`editResponses[].segment`** (`string`)
- **`editStatus`** (`string`): This shape is deprecated: Currently not used.
- **`errors`** (`array of InstitutionalError objects`): Errors resulting from claim edits. You must review and fix these errors before resubmitting.
- **`errors[].code`** (`string`): The error code.
- **`errors[].description`** (`string`): The description of the error code.
- **`errors[].followupAction`** (`string`): Recommended followup actions to correct the error.
- **`errors[].location`** (`string`): Where the error is located in the original request.
- **`errors[].value`** (`string`): The value for the data causing the error.
- **`failure`** (`object`): Currently not used.
- **`failure.code`** (`string`)
- **`failure.description`** (`string`)
- **`httpStatusCode`** (`string`): Stedi can return the following status codes:
  - `200`: Stedi successfully generated the X12 EDI claim format required by the payer. It does not indicate whether the payer has accepted the claim - the payer will respond later with a 277CA containing this information. [Learn more about 277CAs](https://www.stedi.com/docs/healthcare/receive-claim-responses#response-types).
  - `400`: The request contains one or more problems with the claim data. Examples include missing required fields, invalid values, or incorrect data types. The response includes a message describing the problem.
  - `403`: The request is not permitted, such as using a test API key to submit a production transaction.
  - Allowed values: `200 OK`, `400 BAD_REQUEST`, `403 FORBIDDEN`
- **`meta`** (`object`): Metadata from Stedi about the request.
- **`meta.applicationMode`** (`string`): Indicates where this request can be found for support.
- **`meta.billerId`** (`string`): The biller ID assigned to this request.
- **`meta.senderId`** (`string`): The sender ID assigned to this request.
- **`meta.submitterId`** (`string`): The submitter ID assigned to this request.
- **`meta.traceId`** (`string`): The file execution ID, a unique identifier assigned to the processed file within the Stedi platform.
- **`payer`** (`object`): Information about the payer for the submitted claim.
- **`payer.payerID`** (`string`): The payer's ID. This is the same as the `tradingPartnerServiceId`.
- **`payer.payerName`** (`string`): The payer's business name, such as Aetna or Cigna.
- **`status`** (`string`): The status of the claim submission.
- **`tradingPartnerServiceId`** (`string`): An ID for the payer you identified in the original claim. This value may differ from the `tradingPartnerServiceId` you submitted in the original request because it reflects the payer's internal concept of their ID, not necessarily the ID Stedi uses to route requests to this payer.
- **`warnings`** (`array of ClaimsWarning objects`): A list of warnings. Currently not used.
- **`warnings[].code`** (`string`): A machine-readable code indicating the type of problem.
- **`warnings[].description`** (`string`): A human-readable description of the problem.
- **`x12`** (`string`): A [277CA claim acknowledgment](https://www.stedi.com/docs/healthcare/claim-responses-overview#277ca-claim-acknowledgment) acceptance or rejection from Stedi in X12 EDI format. It indicates whether the claim has passed Stedi's claim edits.

When the claim fails one or more edits, the 277CA contains `STC` segments with information about each error. These are the same error codes that appear in the `errors` array.

Note that this 277CA only indicates whether Stedi has accepted or rejected the claim submission. You may receive additional 277CA acceptances or rejections as the claim is routed to the payer.

**Example:**

```json
{
  "claimReference": {
    "correlationId": "01J1M588QT2TAV2N093GNJ998T",
    "formatVersion": "5010",
    "patientControlNumber": "26403774",
    "payerId": "AETNA",
    "rhClaimNumber": "01J1M588QT2TAV2N093GNJ998T",
    "serviceLines": [
      {
        "lineItemControlNumber": "1"
      }
    ],
    "timeOfResponse": "2024-07-10T22:05:32.203Z"
  },
  "controlNumber": "000000001",
  "httpStatusCode": "200 OK",
  "meta": {
    "traceId": "b727b8e7-1f00-4011-bc6e-e41444d406d8"
  },
  "payer": {
    "payerID": "AETNA",
    "payerName": "Aetna"
  },
  "status": "SUCCESS",
  "tradingPartnerServiceId": "AETNA",
  "x12": "ISA*00*          *00*          *ZZ*STEDITEST      *ZZ*574183004559   *260213*2001*^*00501*929135779*0*T*>~GS*HN*STEDITEST*574183004559*20260213*200134*1*X*005010X214~ST*277*0001*005010X214~BHT*0085*08*01KHC9GC66KDRVHEJC42Q103EQ*20260213*200134*TH~HL*1**20*1~NM1*AY*2*STEDI INC*****46*117151744~TRN*1*01KHC9GC66KDRVHEJC42Q103EQ~DTP*050*D8*20260213~DTP*009*D8*20260213~HL*2*1*21*1~NM1*41*2*Test Facility*****46*123456789~TRN*2*01KHC9G8FMGZ6CA9TQT704RAMB~STC*A0>17>AY*20260213*WQ*500.0~QTY*90*1~AMT*YU*500.0~HL*3*2*19*1~NM1*85*2*Test Facility*****XX*1999999976~TRN*1*0~REF*TJ*123456789~QTY*QA*1~AMT*YU*500.0~HL*4*3*PT*0~NM1*QC*1*DOE*JANE****MI*98765~TRN*2*12345~STC*A1>20*20260213*WQ*500.0~DTP*472*RD8*20241015-20241015~SE*25*0001~GE*1*1~IEA*1*929135779~"
}
```

#### 400

ValidationException 400 response

**Schema:** `ValidationExceptionResponseContent`

**Properties:**

- **`code`** (`string`): A code describing the type of validation failure.
- **`message`** (`string`) (required): A message describing the causes of the validation failure. There may be more than one.
#### 403

AccessDeniedException 403 response

**Schema:** `AccessDeniedExceptionResponseContent`

**Properties:**

- **`code`** (`string`): Error classification code
- **`message`** (`string`) (required): Human-readable error message
#### 404

ResourceNotFoundException 404 response

**Schema:** `ResourceNotFoundExceptionResponseContent`

**Properties:**

- **`code`** (`string`): Error classification code
- **`message`** (`string`) (required): Human-readable error message
#### 409

ConflictException 409 response

**Schema:** `ConflictExceptionResponseContent`

**Properties:**

- **`message`** (`string`) (required): Why the request failed. The wording can change, so branch on the exception type, not this text.
#### 422

RequestChangedException 422 response

**Schema:** `RequestChangedExceptionResponseContent`

**Properties:**

- **`code`** (`string`): Unique error code identifying the specific type of error.
- **`message`** (`string`) (required): Human readable error message explaining why the request was rejected.
#### 429

ThrottlingException 429 response

**Schema:** `ThrottlingExceptionResponseContent`

**Properties:**

- **`code`** (`string`): Error classification code
- **`message`** (`string`) (required): Human-readable error message
#### 500

InternalFailureException 500 response

**Schema:** `InternalFailureExceptionResponseContent`

**Properties:**

- **`code`** (`string`): Error classification code
- **`message`** (`string`) (required): Human-readable error message
#### 503

ServiceUnavailableException 503 response

**Schema:** `ServiceUnavailableExceptionResponseContent`

**Properties:**

- **`code`** (`string`)
- **`message`** (`string`) (required)
#### 504

GatewayTimeoutException 504 response

**Schema:** `GatewayTimeoutExceptionResponseContent`

**Properties:**

- **`code`** (`string`)
- **`message`** (`string`) (required)


# Institutional Claims (837I) JSON
Source: https://www.stedi.com/docs/healthcare/api-reference/post-healthcare-institutional-claims


This endpoint sends 837I institutional claims to payers.

1. Call this endpoint with a JSON payload.
2. Stedi translates your request to the X12 837 EDI format and sends it to the payer.
3. The endpoint returns a response from Stedi in JSON format containing information about the claim you submitted and whether the submission was successful.

## API Specification

Submit an 837I institutional claim in JSON format

**Endpoint:** `POST /change/medicalnetwork/institutionalclaims/v1/submission`

**Base URL:** `https://healthcare.us.stedi.com/2024-04-01`

### Parameters

- **`Idempotency-Key`** (header): A unique string to identify this request to the server. The key can be up to 255 characters. You can safely retry requests with the same idempotency key within 24 hours of making the first request. This prevents you from sending duplicate claims due to network errors or other intermittent failures. [Learn more](https://www.stedi.com/docs/api-reference/index#idempotency-keys).
  - Type: `string`

### Request Body

**Schema:** `InstitutionalClaimsSubmissionRequestContent`

**Properties:**

- **`attending`** (`object`): Information about the individual who has overall responsibility for the patient's medical care and treatment reported in the claim. This information is required when the claim contains any services other than non-scheduled transportation claims.

This provider should be an individual, not an organization, and you should supply at least the provider's `lastName` and an identifier, which is typically the `npi`.
- **`attending.address`** (`object`)
- **`attending.address.address1`** (`string`) (required): The first line of the street address. This typically contains the building number and street name.
- **`attending.address.address2`** (`string`): The second line of the street address. This typically contains the apartment or suite number.
- **`attending.address.city`** (`string`) (required): The city name.
- **`attending.address.countryCode`** (`string`): Use the alpha-2 country codes from Part 1 of ISO 3166.
- **`attending.address.countrySubDivisionCode`** (`string`): Use the country subdivision codes from Part 2 of ISO 3166.
- **`attending.address.postalCode`** (`string`): The postal zone or zip code. For United States addresses, you must include the full nine-digit zip code with no separators, such as `100031502`. If you don't know the full zip code, you can find it using the [USPS ZIP Code Lookup](https://tools.usps.com/zip-code-lookup.htm) tool. Exclude punctuation and spaces.
- **`attending.address.state`** (`string`): The state or province code. Only required when the city is in the United States and Canada.
- **`attending.contactInformation`** (`object`)
- **`attending.contactInformation.email`** (`string`): The email address.
- **`attending.contactInformation.faxNumber`** (`string`): The fax number.
- **`attending.contactInformation.name`** (`string`) (required): The full name of the person or office.
- **`attending.contactInformation.phoneNumber`** (`string`): The phone number, formatted as AAABBBCCCC, where AAA represents the area code, BBB is the telephone number prefix, and CCCC is the telephone number. The phone number should only include the digits 0 to 9. Don't include separators, such as dashes, and don't include long distance access numbers, such as 1. For example, you would format the phone number 123-456-7890 as 1234567890.
- **`attending.contactInformation.validContact`** (`boolean`)
- **`attending.employerId`** (`string`)
- **`attending.firstName`** (`string`): The provider's first name.
- **`attending.lastName`** (`string`): The provider's last name. This is **required**.
- **`attending.middleName`** (`string`): The provider's middle name or initial.
- **`attending.npi`** (`string`): The individual [National Provider Identifier (NPI)](https://www.stedi.com/docs/healthcare/national-provider-identifier) assigned to the provider.
- **`attending.organizationName`** (`string`): The provider's business name.
- **`attending.providerType`** (`string`): This field is now automatically populated and it only remains for backwards compatibility.
- **`attending.secondaryIdentificationQualifierCode`** (`string`): The type of identifier used in `secondaryIdentifier`. Can be set to `0B` - State License Number, `1G` - Provider UPIN Number, `G2` - Provider Commercial Number, or `LU` - Location Number. Note that UPIN is deprecated and should not be used.
  - Allowed values: `0B`, `1G`, `G2`, `LU`
- **`attending.secondaryIdentifier`** (`string`): The identifier referenced by `secondaryIdentificationQualifierCode`. For example, if `secondaryIdentificationQualifierCode` is set to `0B`, this property should be the provider's state license number.

You can only include one secondary identifier for the provider.
- **`attending.suffix`** (`string`): The provider's name suffix, such as Jr. or III.
- **`attending.taxonomyCode`** (`string`): The provider's [taxnonomy code](https://www.cms.gov/medicare/enrollment-renewal/providers-suppliers/health-care-taxonomy), a unique 10-character code that designates their classification and specialization. Only applies to the attending provider.
- **`billing`** (`object`): Information about the billing provider. The following information is required:
- An `address` that is a physical location such as the office where care is delivered or an administrative facility.
- The provider's Employer Identification Number (EIN) in `employerId`.
- The provider's business name in `organizationName`.
- The provider's [National Provider Identifier (NPI)](https://www.stedi.com/docs/healthcare/national-provider-identifier) in `npi`, if one is assigned. When the billing provider is not assigned an NPI, supply `secondaryIdentifier` with `secondaryIdentificationQualifierCode` set to `G2` (commercial number).
- **`billing.address`** (`object`) (required)
- **`billing.address.address1`** (`string`) (required): The first line of the street address. This typically contains the building number and street name.
- **`billing.address.address2`** (`string`): The second line of the street address. This typically contains the apartment or suite number.
- **`billing.address.city`** (`string`) (required): The city name.
- **`billing.address.countryCode`** (`string`): Use the alpha-2 country codes from Part 1 of ISO 3166.
- **`billing.address.countrySubDivisionCode`** (`string`): Use the country subdivision codes from Part 2 of ISO 3166.
- **`billing.address.postalCode`** (`string`): The postal zone or zip code. For United States addresses, you must include the full nine-digit zip code with no separators, such as `100031502`. If you don't know the full zip code, you can find it using the [USPS ZIP Code Lookup](https://tools.usps.com/zip-code-lookup.htm) tool. Exclude punctuation and spaces.
- **`billing.address.state`** (`string`): The state or province code. Only required when the city is in the United States and Canada.
- **`billing.commercialNumber`** (`string`)
- **`billing.contactInformation`** (`object`)
- **`billing.contactInformation.email`** (`string`): The email address.
- **`billing.contactInformation.faxNumber`** (`string`): The fax number.
- **`billing.contactInformation.name`** (`string`) (required): The full name of the person or office.
- **`billing.contactInformation.phoneNumber`** (`string`): The phone number, formatted as AAABBBCCCC, where AAA represents the area code, BBB is the telephone number prefix, and CCCC is the telephone number. The phone number should only include the digits 0 to 9. Don't include separators, such as dashes, and don't include long distance access numbers, such as 1. For example, you would format the phone number 123-456-7890 as 1234567890.
- **`billing.contactInformation.validContact`** (`boolean`)
- **`billing.employerId`** (`string`) (required): The provider's employer ID, also known as an EIN or TIN. Must be a string of exactly nine numbers with no separators.
- **`billing.firstName`** (`string`): The provider's first name.
- **`billing.lastName`** (`string`): The provider's last name.
- **`billing.locationNumber`** (`string`)
- **`billing.middleName`** (`string`): The provider's middle name or initial.
- **`billing.npi`** (`string`): The organization [National Provider Identifier (NPI)](https://www.stedi.com/docs/healthcare/national-provider-identifier). Optional. When the billing provider is not assigned an NPI, supply `secondaryIdentifier` with `secondaryIdentificationQualifierCode` set to `G2` instead.
- **`billing.organizationName`** (`string`): The provider's business name.
- **`billing.providerType`** (`string`): Defines the billing provider type.
  - Allowed values: `BillingProvider`
- **`billing.providerUpinNumber`** (`string`)
- **`billing.secondaryIdentificationQualifierCode`** (`string`): The type of identifier used in `secondaryIdentifier`. Can be set to `0B` - State License Number, `1G` - Provider UPIN Number, `G2` - Provider Commercial Number, or `LU` - Location Number. Note that UPIN is deprecated and should not be used.
  - Allowed values: `0B`, `1G`, `G2`, `LU`
- **`billing.secondaryIdentifier`** (`string`): The identifier specified in `secondaryIdentifierQualifierCode`.

You can only include one secondary identifier for the provider.
- **`billing.stateLicenseNumber`** (`string`)
- **`billing.suffix`** (`string`): The provider's suffix, such as Jr. or Sr.
- **`billing.taxonomyCode`** (`string`): The provider's [taxnonomy code](https://www.cms.gov/medicare/enrollment-renewal/providers-suppliers/health-care-taxonomy), a unique 10-character code that designates their classification and specialization.
- **`billingPayToAddressName`** (`object`): Use to specify an address for payment that is different from the billing provider's physical address. This is relevant when the provider expects to receive paper checks at a different location, such as a PO Box, lockbox, or other mailing address.
- **`billingPayToAddressName.address`** (`object`) (required)
- **`billingPayToAddressName.address.address1`** (`string`) (required): The first line of the street address. This typically contains the building number and street name.
- **`billingPayToAddressName.address.address2`** (`string`): The second line of the street address. This typically contains the apartment or suite number.
- **`billingPayToAddressName.address.city`** (`string`) (required): The city name.
- **`billingPayToAddressName.address.countryCode`** (`string`): Use the alpha-2 country codes from Part 1 of ISO 3166.
- **`billingPayToAddressName.address.countrySubDivisionCode`** (`string`): Use the country subdivision codes from Part 2 of ISO 3166.
- **`billingPayToAddressName.address.postalCode`** (`string`): The postal zone or zip code. For United States addresses, you must include the full nine-digit zip code with no separators, such as `100031502`. If you don't know the full zip code, you can find it using the [USPS ZIP Code Lookup](https://tools.usps.com/zip-code-lookup.htm) tool. Exclude punctuation and spaces.
- **`billingPayToAddressName.address.state`** (`string`): The state or province code. Only required when the city is in the United States and Canada.
- **`billingPayToAddressName.entityTypeQualifier`** (`string`) (required): Code identifying the type of entity. Can be set to `2` - Non-Person Entity.
  - Allowed values: `2`
- **`billingPayToPlanName`** (`object`): Use for subrogation payment requests. If you include this information, you must also set the `claimInformation.otherSubscriberInformation.payerPaidAmount` to the amount the payer (for example, Medicaid) actually paid.
- **`billingPayToPlanName.address`** (`object`)
- **`billingPayToPlanName.address.address1`** (`string`) (required): The first line of the street address. This typically contains the building number and street name.
- **`billingPayToPlanName.address.address2`** (`string`): The second line of the street address. This typically contains the apartment or suite number.
- **`billingPayToPlanName.address.city`** (`string`) (required): The city name.
- **`billingPayToPlanName.address.countryCode`** (`string`): Use the alpha-2 country codes from Part 1 of ISO 3166.
- **`billingPayToPlanName.address.countrySubDivisionCode`** (`string`): Use the country subdivision codes from Part 2 of ISO 3166.
- **`billingPayToPlanName.address.postalCode`** (`string`): The postal zone or zip code. For United States addresses, you must include the full nine-digit zip code with no separators, such as `100031502`. If you don't know the full zip code, you can find it using the [USPS ZIP Code Lookup](https://tools.usps.com/zip-code-lookup.htm) tool. Exclude punctuation and spaces.
- **`billingPayToPlanName.address.state`** (`string`): The state or province code. Only required when the city is in the United States and Canada.
- **`billingPayToPlanName.claimOfficeNumber`** (`string`): The Claim Office Number.
- **`billingPayToPlanName.identificationCode`** (`string`) (required): The identification code specified by the `identificationCodeQualifier`.
- **`billingPayToPlanName.identificationCodeQualifier`** (`string`) (required): The type of identification code used to identify the organization. Can be set to `PI` - Payer Identification or `XV` - Centers for Medicare and Medicaid Services PlanID. Use `XV` when reporting the Health Plan ID (HPID) or Other Entity Identifier (OEID).
  - Allowed values: `PI`, `XV`
- **`billingPayToPlanName.naic`** (`string`): The National Association of Insurance Commisioners (NAIC) code. This is the five-digit identifier assigned to each insurance company.
- **`billingPayToPlanName.organizationName`** (`string`) (required): The business name of the organization to which the payment should be made.
- **`billingPayToPlanName.payerIdentificationNumber`** (`string`): The payer identification number. Only include this information when the `identificationCodeQualifier` is set to `XV` - Centers for Medicare and Medicaid Services PlanID.
- **`billingPayToPlanName.taxId`** (`string`) (required): The payer tax identification number (TIN). This is a unique number assigned to the payer by the IRS.
- **`claimIdentifier`** (`string`): A code specifying the type of transaction. Defaults to `CH` if not provided.
  - `31`: Only for use by state Medicaid agencies performing post payment recovery.
  - `CH`: Use when the transaction contains only fee for service claims or claims with at least one chargeable line item. Also use when it's not clear whether a transaction contains claims or capitated encounters, or if the transaction contains a mix of claims and capitated encounters.
  - `RP`: Use for capitated encounters. Also use when the transaction is being sent to an entity for purposes other than adjudication of a claim. For example, when you're sending the claim to a state health agency that is using the claim for health data reporting purposes.
  - Allowed values: `31`, `CH`, `RP`
- **`claimInformation`** (`object`) (required): Information about the healthcare claim. Note that the objects and properties marked as required are required for all claims, while others are conditionally required, depending on type of claim and claim circumstances. For example, you must always provide the `claimChargeAmount`, but you only need to provide the `otherSubscriberInformation` object in coordination of benefits scenarios. When you include a conditionally required object, you must provide all of its required properties.
- **`claimInformation.admittingDiagnosis`** (`object`)
- **`claimInformation.admittingDiagnosis.admittingDiagnosisCode`** (`string`) (required): The admitting diagnosis code for the patient.
  - You must submit a valid, billable code at the highest level of specificity. Include the 4th - 7th characters as applicable.
  - **Don't** submit the decimal point for ICD codes. The decimal point is implied.
  - **Don't** submit ICD-10 header codes. Header codes exist to group related codes and aren't valid for billing. These header codes can change with each new version of ICD-10, so we recommend reviewing your diagnosis codes every year to ensure that they aren't classified as header codes in the most recent version. To determine whether a code is a header code, you can also search the [Value Set Authority Center](https://vsac.nlm.nih.gov/context/cs). If the 'Header' property is set, the code is a header code and you shouldn't use it in claim submissions.
- **`claimInformation.admittingDiagnosis.qualifierCode`** (`string`) (required): Code identifying the type of admitting diagnosis code used. Can be set to `ABJ` - International Classification of Diseases Clinical Modification (ICD-10-CM) Admitting Diagnosis or `BJ` - International Classification of Diseases Clinical Modification (ICD-9-CM) Admitting Diagnosis. Note that ICD-9 is deprecated and cannot be used in new claims.
  - Allowed values: `ABJ`, `BJ`
- **`claimInformation.benefitsAssignmentCertificationIndicator`** (`string`) (required)
  - Allowed values: `N`, `W`, `Y`
- **`claimInformation.billingNote`** (`string`): To communicate special instructions regarding claim billing. Required when the provider judges the information is needed to substantiate the medical treatment and cannot be provided elsewhere in the request.
- **`claimInformation.claimChargeAmount`** (`string`) (required): The total dollar amount charged for the services on this claim, expressed as a decimal. For example, `100.50`. This is the total amount before any adjustments or payments. The amount must balance to the sum of the service line charges.
- **`claimInformation.claimCodeInformation`** (`object`) (required): Supply information specific to hospital claims, such as the priority of the admission.
- **`claimInformation.claimCodeInformation.admissionSourceCode`** (`string`): Code indicating the source of the admission, such as the emergency room (ER), a doctor’s referral, or another facility.

This code is **required** for all institutional claims except when the `claimInformation.placeOfServiceCode` is set to `14` (Non-Patient Laboratory). Stedi rejects claims that don't meet this requirement [Full code list](https://med.noridianmedicare.com/web/jea/topics/claim-submission/point-of-origin-codes).
- **`claimInformation.claimCodeInformation.admissionTypeCode`** (`string`) (required): The code indicating the priority of the admission.
- **`claimInformation.claimCodeInformation.patientStatusCode`** (`string`) (required): Code indicating patient status as of the end of the claim's billed period. It tells the payer whether the patient was discharged, transferred, or still admitted.

This code must be compatible with the `claimInformation.claimFrequencyCode`. For example, claim frequency code `1` (Admit thru Discharge Claim) means the patient's stay is finished. In this case, the patient status code shouldn't be `30` (Still a Patient), which indicates the patient is still in the facility. [Full code list](https://med.noridianmedicare.com/web/jea/topics/claim-submission/patient-discharge-status-codes)
- **`claimInformation.claimContractInformation`** (`object`): Required when the submitter is contractually obligated to supply this information on post-adjudicated claims.
- **`claimInformation.claimContractInformation.contractAmount`** (`string`): The total dollar amount of the contract, expressed as a decimal. For example, `100.50`.
- **`claimInformation.claimContractInformation.contractCode`** (`string`): The contract code. This is a unique identifier for the contract.
- **`claimInformation.claimContractInformation.contractPercentage`** (`string`): The allowance or charge percent, expressed as a decimal. For example, `0.80`.
- **`claimInformation.claimContractInformation.contractTypeCode`** (`string`) (required): A code identifying the type of contract. Can be set to `01` - Diagnosis Related Group (DRG), `02` - Per Diem, `03` - Variable Per Diem, `04` - Flat, `05` - Capitated, `06` - Percent, or `09` - Other.
  - Allowed values: `01`, `02`, `03`, `04`, `05`, `06`, `09`
- **`claimInformation.claimContractInformation.contractVersionIdentifier`** (`string`): An additional identifer for the contract. Identifies the revision level of a particular format, program, technique or algorithm.
- **`claimInformation.claimContractInformation.termsDiscountPercentage`** (`string`): Terms discount percentage, expressed as a percent, available to the purchaser if an invoice is paid on or before the Terms Discount Due Date.
- **`claimInformation.claimDateInformation`** (`object`) (required): Dates and times related to the claim. For example, when the patient was discharged from the hospital.
- **`claimInformation.claimDateInformation.admissionDateAndHour`** (`string`): When the patient was admitted to the hospital or facility. This property is **required** on inpatient claims. Can be expressed as a date and time (YYYYMMDDHHMM) or a single date (YYYYMMDD).
- **`claimInformation.claimDateInformation.dischargeHour`** (`string`): The time the patient was discharged from the hospital or facility. This property is **required** on final inpatient claims. Can be expressed as a time in format HHMM.
- **`claimInformation.claimDateInformation.repricerReceivedDate`** (`string`): The date the repricer received the claim. Required when a repricer is passing the claim onto the payer.
- **`claimInformation.claimDateInformation.statementBeginDate`** (`string`) (required): The beginning date of the statement.
- **`claimInformation.claimDateInformation.statementEndDate`** (`string`) (required): The ending date of the statement.
- **`claimInformation.claimFilingCode`** (`string`) (required): A code identifying the type of claim. For example `DS` - Disability.
- Use `OF` when submitting Medicare Part D claims.
- Use `ZZ` when you don't know the type of insurance.
- Some payers reject claims with invalid codes. If you're not sure which code to use, we recommend running a [real-time eligibility check](https://www.stedi.com/docs/healthcare/api-reference/post-healthcare-eligibility) and using the value returned in the most relevant `benefitsInformation.insuranceTypeCode` property. Note that the eligibility response uses a different code list than claims, so you may need to map that code value to the appropriate claim filing code.


Visit [Claims code lists](https://www.stedi.com/docs/healthcare/claims-code-lists#claim-filing-indicator-codes) for a complete list.
  - Allowed values: `11`, `12`, `13`, `14`, `15`, `16`, `17`, `AM`, `BL`, `CH`, `CI`, `DS`, `FI`, `HM`, `LM`, `MA`, `MB`, `MC`, `OF`, `TV`, `VA`, `WC`, `ZZ`
- **`claimInformation.claimFrequencyCode`** (`string`) (required): Code specifying the frequency of the claim. Not all payers allow all codes. Can be set to `1` - Admit thru Discharge Claim, `2` - Interim – First Claim, `3` - Interim – Continuing Claim, `4` - Interim – Last Claim, `7` - Replacement, `8` - Void, and `9` - Final Claim for a Home Health PPS Episode.
  - The claim frequency code and patient status code (`claimInformation.claimCodeInformation.patientStatusCode`) must be compatible. For example, claim frequency code `1` (Admit thru Discharge Claim) means the patient’s stay is finished. In this case, the patient status code shouldn't be `30` (Still a Patient), which indicates the patient is still in the facility.
  - Set this to `7` when you need to resubmit a corrected claim that the payer has already processed. These are claims that the payer has already adjudicated or claims that the payer has rejected with a 277CA containing the Payer Claim Control Number (PCCN), indicating it has entered the payer's system. Note that Original Medicare doesn't accept code `7` for resubmissions, so you'll need to resubmit with the same code as the original claim.
  - When resubmitting with code `7` or voiding with code `8`, you must also include the Payer Claim Control Number (sometimes called the ICN) in the `claimInformation.claimSupplementalInformation.claimControlNumber` property. An exception is Original Medicare, which requires that you omit the Payer Claim Control Number from resubmissions.
  - For resubmissions and cancellations, we strongly recommend including a unique Patient Control Number in the `claimInformation.patientControlNumber` for tracking purposes.

Visit [Resubmit or cancel claims](https://www.stedi.com/docs/healthcare/resubmit-cancel-claims) for complete details.
- **`claimInformation.claimNotes`** (`object`): Free-form information to substantiate the medical treatment that isn't provided elsewhere in the claim submission. Also used to provide narrative information from the forms Home Health Certification and Plan of Treatment or Medical Update and Patient Information, as needed to substantiate home health services. You can provide up to 10 strings in this array.
- **`claimInformation.claimNotes.additionalInformation`** (`array of strings`)
- **`claimInformation.claimNotes.allergies`** (`array of strings`): Allergies
- **`claimInformation.claimNotes.diagnosisDescription`** (`array of strings`): Diagnosis Description
- **`claimInformation.claimNotes.dme`** (`array of strings`): Durable Medical Equipment (DME) and Supplies
- **`claimInformation.claimNotes.functionalLimitsOrReasonHomebound`** (`array of strings`): Functional Limitations, Reason Homebound, or Both
- **`claimInformation.claimNotes.goalRehabOrDischargePlans`** (`array of strings`): Goals, Rehabilitation Potential, or Discharge Plans
- **`claimInformation.claimNotes.medications`** (`array of strings`): Medications
- **`claimInformation.claimNotes.nutritionalRequirments`** (`array of strings`): Nutritional Requirements
- **`claimInformation.claimNotes.ordersForDiscipLinesAndTreatments`** (`array of strings`): Orders for Disciplines and Treatments
- **`claimInformation.claimNotes.reasonsPatientLeavesHome`** (`array of strings`): Reasons Patient Leaves Home
- **`claimInformation.claimNotes.safetyMeasures`** (`array of strings`): Safety Measures
- **`claimInformation.claimNotes.supplementalPlanOfTreatment`** (`array of strings`): Supplementary Plan of Treatment
- **`claimInformation.claimNotes.timesAndReasonsPatientNotAtHome`** (`array of strings`): Times and Reasons Patient Not at Home
- **`claimInformation.claimNotes.unusualHomeOrSocialEnv`** (`array of strings`): Unusual Home, Social Environment, or Both
- **`claimInformation.claimNotes.updatedInformation`** (`array of strings`): Updated Information
- **`claimInformation.claimPricingInformation`** (`object`)
- **`claimInformation.claimPricingInformation.exceptionCode`** (`string`): Code specifying the exception reason for consideration of out-of-network health care services. Can be set to `1` - Non-Network Professional Provider in Network Hospital, `2` - Emergency Care, `3` - Services or Specialist not in Network, `4` - Out-of-Service Area, `5` - State Mandates, or `6` - Other.
  - Allowed values: `1`, `2`, `3`, `4`, `5`, `6`
- **`claimInformation.claimPricingInformation.policyComplianceCode`** (`string`)
  - Allowed values: `1`, `2`, `3`, `4`, `5`
- **`claimInformation.claimPricingInformation.pricingMethodologyCode`** (`string`) (required): Code indicating the pricing or repricing methodology. Visit [Claims code lists](https://www.stedi.com/docs/healthcare/claims-code-lists#pricing-methodology-codes-2) for a complete list.
  - Allowed values: `00`, `01`, `02`, `03`, `04`, `05`, `06`, `07`, `08`, `09`, `10`, `11`, `12`, `13`, `14`
- **`claimInformation.claimPricingInformation.productOrServiceIDQualifier`** (`string`): Code identifying the type of product or service ID used. Can be set to `ER` - Jurisdiction Specific Procedure and Supply Codes, `HC` - Health Care Financing Administration Common Procedural Coding System (HCPCS) Codes, `HP` - Health Insurance Prospective Payment System (HIPPS) Skilled Nursing Facility Rate Code, `IV` - Home Infusion EDI Coalition (HIEC) Product/Service Code, or `WK` - Advanced Billing Concepts (ABC) Codes. Note that ABC codes are deprecated and should not be used in new claims. If you provide this property, you must also provide `repricedApprovedHCPCSCode` Visit [Claims code lists](https://www.stedi.com/docs/healthcare/claims-code-lists#product-or-service-id-qualifier-codes) for a complete list and additional usage notes.
  - Allowed values: `ER`, `HC`, `HP`, `IV`, `WK`
- **`claimInformation.claimPricingInformation.rejectReasonCode`** (`string`)
  - Allowed values: `T1`, `T2`, `T3`, `T4`, `T5`, `T6`
- **`claimInformation.claimPricingInformation.repricedAllowedAmount`** (`string`) (required): The allowed amount, expressed as a decimal.
- **`claimInformation.claimPricingInformation.repricedApprovedAmount`** (`string`): The approved DRG amount, expressed as a decimal.
- **`claimInformation.claimPricingInformation.repricedApprovedDRGCode`** (`string`): The approved DRG code.
- **`claimInformation.claimPricingInformation.repricedApprovedHCPCSCode`** (`string`): The approved procedure code. If you provide this property, you must also include `productOrServiceIDQualifier`.
- **`claimInformation.claimPricingInformation.repricedApprovedRevenueCode`** (`string`): The approved revenue code.
- **`claimInformation.claimPricingInformation.repricedApprovedServiceUnitCode`** (`string`): The approved service units or inpatient days. Can be set to `DA` - Days or `UN` - Unit.
  - Allowed values: `DA`, `UN`
- **`claimInformation.claimPricingInformation.repricedApprovedServiceUnitCount`** (`string`): The approved service units or inpatient days. The maximum length for this field is 8 digits excluding the decimal. When a decimal is used, the maximum number of digits allowed to the right of the decimal is three.
- **`claimInformation.claimPricingInformation.repricedOrgIdentifier`** (`string`): The organization identification number.
- **`claimInformation.claimPricingInformation.repricedPerDiem`** (`string`): The pricing rate associated with per diem or flat rate pricing, expressed as a decimal.
- **`claimInformation.claimPricingInformation.repricedSavingAmount`** (`string`): The savings amount, expressed as a decimal.
- **`claimInformation.claimSupplementalInformation`** (`object`): Additional information or documentation required for the claim. This is where you can include information about [attachments](https://www.stedi.com/docs/healthcare/submit-claim-attachments), if applicable.
- **`claimInformation.claimSupplementalInformation.adjustedRepricedClaimRefNumber`** (`string`): The adjusted repriced claim reference number. Required when the repricer believes this information is necessary. Providers should not complete this property.
- **`claimInformation.claimSupplementalInformation.autoAccidentState`** (`string`): Required when the services reported on this claim are related to an auto accident and the accident occurred in a country or location that has a state, province, or sub-country code.
- **`claimInformation.claimSupplementalInformation.claimControlNumber`** (`string`): This is the Payer Claim Control Number (PCCN) for an existing claim that this claim is meant to replace or cancel. This property is generally **required** when the `claimInformation.claimFrequencyCode` is set to `7` or `8`. One exception to this guidance is Original Medicare, which specifies that you omit the PCCN from resubmissions.

Visit [Resubmit or cancel claims](https://www.stedi.com/docs/healthcare/resubmit-cancel-claims) for complete details and information about where to find the PCCN for an existing claim.
- **`claimInformation.claimSupplementalInformation.claimNumber`** (`string`): The identifier assigned by clearinghouse, van, etc. when they need to assign their own unique claim number.

Stedi overwrites this value when it sends the claim to the payer, so you shouldn't include this property in your request. We strongly recommend using the `claimInformation.patientControlNumber` property as your claim tracking ID.
- **`claimInformation.claimSupplementalInformation.demoProjectIdentifier`** (`string`): Required when it is necessary to identify claims that are atypical in ways such as content, purpose, and/or payment. For example, claims made as the result of a demonstration or a clinical trial.
- **`claimInformation.claimSupplementalInformation.investigationalDeviceExemptionNumber`** (`string`): Required when claim involves a Food and Drug Administration (FDA) assigned investigational device exemption (IDE) number. When more than one IDE applies, you must split into separate claims.
- **`claimInformation.claimSupplementalInformation.medicalRecordNumber`** (`string`): Required when the provider needs to identify the actual medical record of the patient for this episode of care.
- **`claimInformation.claimSupplementalInformation.peerReviewAuthorizationNumber`** (`string`): Required when an external Peer Review Organization assigns an Approval Number to services deemed medically necessary by that organization.
- **`claimInformation.claimSupplementalInformation.priorAuthorizationNumber`** (`string`): Required when an authorization number is assigned by the payer or UMO _and_ the services on this claim were preauthorized. The UMO (Utilization Management Organization) is generally the entity empowered to decide the outcome of a health services review or the owner of the information.

You can only send one prior authorization (preauthorization) number per claim. If different numbers apply to specific service lines, you must split those service lines into separate claims.
- **`claimInformation.claimSupplementalInformation.referralNumber`** (`string`): Required when a referral number is assigned by the payer or Utilization Management Organization (UMO) and a referral is involved. This value applies to the entire claim unless overridden within a specific service line.
- **`claimInformation.claimSupplementalInformation.reportInformation`** (`object`)
- **`claimInformation.claimSupplementalInformation.reportInformation.attachmentControlNumber`** (`string`): A control number assigned to the attachment. The payer uses this identifier to match the attachment to the claim.
  - You must include either this property or `attachmentId` in the request, but not both. Including both properties will result in an error.
  - We recommend using a ULID or UUID of up to 50 characters.
  - Stedi autogenerates a control number if you don't provide one.
- **`claimInformation.claimSupplementalInformation.reportInformation.attachmentId`** (`string`): The unique identifier for the attachment file you previously uploaded to Stedi. This value is returned in the `attachmentId` property of the [Create Claim Attachment (275) JSON](https://www.stedi.com/docs/healthcare/api-reference/post-healthcare-submit-claim-attachment) response. Stedi uses it to generate and submit the 275 claim attachment transaction to the payer.
  - This property is **required** when you're submitting attachment files through Stedi.
  - You must include either this property or `attachmentControlNumber` in the request, but not both. Including both properties will result in an error.
- **`claimInformation.claimSupplementalInformation.reportInformation.attachmentReportTypeCode`** (`string`) (required): Code indicating the title or contents of a document, report or supporting item. For example, `08` - Plan of Treatment or `CT` - Certification. Visit [Claims code lists](https://www.stedi.com/docs/healthcare/claims-code-lists#attachment-report-type-codes) for a complete list.
  - Allowed values: `03`, `04`, `05`, `06`, `07`, `08`, `09`, `10`, `11`, `13`, `15`, `21`, `A3`, `A4`, `AM`, `AS`, `B2`, `B3`, `B4`, `BR`, `BS`, `BT`, `CB`, `CK`, `CT`, `D2`, `DA`, `DB`, `DG`, `DJ`, `DS`, `EB`, `HC`, `HR`, `I5`, `IR`, `LA`, `M1`, `MT`, `NN`, `OB`, `OC`, `OD`, `OE`, `OX`, `OZ`, `P4`, `P5`, `PE`, `PN`, `PO`, `PQ`, `PY`, `PZ`, `RB`, `RR`, `RT`, `RX`, `SG`, `V5`, `XP`
- **`claimInformation.claimSupplementalInformation.reportInformation.attachmentTransmissionCode`** (`string`) (required): Code identifying the method by which the provider's report is attached. Can be set to `AA` - Available on Request at Provider Site, `BM` - By Mail, `EL` - Electronically Only, `EM` - E-Mail, `FT` - File Transfer, or `FX` - By Fax.
  - Allowed values: `AA`, `BM`, `EL`, `EM`, `FT`, `FX`
- **`claimInformation.claimSupplementalInformation.reportInformations`** (`array of InstitutionalReportInformation objects`): An array of report information for the claim. Use this when you need to submit multiple report information records. You can submit up to 10 objects in this array.

Required when you plan to submit [attachments](https://www.stedi.com/docs/healthcare/submit-claim-attachments) for the claim electronically through Stedi APIs or SFTP, when there is a paper attachment following this claim, or when the provider deems it necessary to identify that they have additional information at their office that is available upon request.
- **`claimInformation.claimSupplementalInformation.reportInformations[].attachmentControlNumber`** (`string`): A control number assigned to the attachment. The payer uses this identifier to match the attachment to the claim.
  - You must include either this property or `attachmentId` in the request, but not both. Including both properties will result in an error.
  - We recommend using a ULID or UUID of up to 50 characters.
  - Stedi autogenerates a control number if you don't provide one.
- **`claimInformation.claimSupplementalInformation.reportInformations[].attachmentId`** (`string`): The unique identifier for the attachment file you previously uploaded to Stedi. This value is returned in the `attachmentId` property of the [Create Claim Attachment (275) JSON](https://www.stedi.com/docs/healthcare/api-reference/post-healthcare-submit-claim-attachment) response. Stedi uses it to generate and submit the 275 claim attachment transaction to the payer.
  - This property is **required** when you're submitting attachment files through Stedi.
  - You must include either this property or `attachmentControlNumber` in the request, but not both. Including both properties will result in an error.
- **`claimInformation.claimSupplementalInformation.reportInformations[].attachmentReportTypeCode`** (`string`) (required): Code indicating the title or contents of a document, report or supporting item. For example, `08` - Plan of Treatment or `CT` - Certification. Visit [Claims code lists](https://www.stedi.com/docs/healthcare/claims-code-lists#attachment-report-type-codes) for a complete list.
  - Allowed values: `03`, `04`, `05`, `06`, `07`, `08`, `09`, `10`, `11`, `13`, `15`, `21`, `A3`, `A4`, `AM`, `AS`, `B2`, `B3`, `B4`, `BR`, `BS`, `BT`, `CB`, `CK`, `CT`, `D2`, `DA`, `DB`, `DG`, `DJ`, `DS`, `EB`, `HC`, `HR`, `I5`, `IR`, `LA`, `M1`, `MT`, `NN`, `OB`, `OC`, `OD`, `OE`, `OX`, `OZ`, `P4`, `P5`, `PE`, `PN`, `PO`, `PQ`, `PY`, `PZ`, `RB`, `RR`, `RT`, `RX`, `SG`, `V5`, `XP`
- **`claimInformation.claimSupplementalInformation.reportInformations[].attachmentTransmissionCode`** (`string`) (required): Code identifying the method by which the provider's report is attached. Can be set to `AA` - Available on Request at Provider Site, `BM` - By Mail, `EL` - Electronically Only, `EM` - E-Mail, `FT` - File Transfer, or `FX` - By Fax.
  - Allowed values: `AA`, `BM`, `EL`, `EM`, `FT`, `FX`
- **`claimInformation.claimSupplementalInformation.repricedClaimNumber`** (`string`): Required when the repricer believes this information is necessary. Providers should not complete this property.
- **`claimInformation.claimSupplementalInformation.serviceAuthorizationExceptionCode`** (`string`): Code indicating the type of service authorization exception. Visit [Claims code lists](https://www.stedi.com/docs/healthcare/claims-code-lists#service-authorization-exception-codes) for a complete list.
  - Allowed values: `1`, `2`, `3`, `4`, `5`, `6`, `7`
- **`claimInformation.conditionCodes`** (`array of strings`): Indicates the condition of the patient for EPSDT referral situations. Can be set to `AV` - Available-Not Used, `NU` - Not Used, `S2` - Under Treatment, `ST` - New Services Requested.
  - Use `AV` when the patient refused a referral.
  - Use `S2` when the patient is currently under treatment for the referred diagnostic or corrective health problem.
  - Use `ST` when the patient is referred to another provider for diagnostic or corrective treatment for at least one health problem identified during an initial or periodic screening service (not including dental referrals) OR the patient is scheduled for another appointment with the screening provider for diagnostic or corrective treatment for at least one health problem identified during an initial or periodic screening service (not including dental referrals).
- **`claimInformation.conditionCodesList`** (`array of arrays`): Required when there is a Condition Code that applies to this claim. 

 This is an array of arrays of objects. You can provide up to two object arrays, and each array can contain up to 12 objects.
- **`claimInformation.delayReasonCode`** (`string`): Code indicating the reason for the delay in claim submission. Visit [Claims code lists](https://www.stedi.com/docs/healthcare/claims-code-lists#delay-reason-codes) for a complete list.
  - Allowed values: `1`, `2`, `3`, `4`, `5`, `6`, `7`, `8`, `9`, `10`, `11`, `15`
- **`claimInformation.diagnosisRelatedGroupInformation`** (`object`)
- **`claimInformation.diagnosisRelatedGroupInformation.drugRelatedGroupCode`** (`string`) (required): The diagnosis related group code.
- **`claimInformation.epsdtReferral`** (`object`): Required on Early & Periodic Screening, Diagnosis, and Treatment (EPSDT) claims when the screening service is being billed in this claim.
- **`claimInformation.epsdtReferral.certificationConditionCodeAppliesIndicator`** (`string`) (required): Code indicating whether an EPSDT referral was given to the patient. Can be set to `N` - No or `Y` - Yes.
  - Allowed values: `N`, `Y`
- **`claimInformation.epsdtReferral.conditionCodes`** (`array of strings`) (required): Code indicating the patient's status. Set to `AV` when the patient refused the referral. Set to `NU` when you set `certificationConditionCodeAppliesIndicator` to `N`. Set to `S2` when the patient is currently under treatment for the referred diagnostic or corrective health problem. Set to `ST` when _either_ the patient is referred to another provider for diagnostic or corrective treatment for at least one health problem identified during an initial or periodic screening service (not including dental referrals) _or_ the patient is scheduled for another appointment with the screening provider for diagnostic or corrective treatment for at least one health problem identified during an initial or periodic screening service (not including dental referrals).
- **`claimInformation.externalCauseOfInjuries`** (`array of ExternalCauseOfInjury objects`): Diagnosis codes to describe the patient's condition. Required when an external Cause of Injury is needed to describe an injury, poisoning, or adverse effect. 

Note that to fully describe an injury using ICD-10-CM, it will be necessary to report a series of 3 external cause of injury codes. Refer to the [ICD-10-CM Official Guidelines for Coding and Reporting](https://stacks.cdc.gov/view/cdc/158747).

You can provide up to 12 objects in this array.
- **`claimInformation.externalCauseOfInjuries[].externalCauseOfInjury`** (`string`) (required): The external cause of injury code(s) for the patient.
  - You must submit a valid, billable code at the highest level of specificity. Include the 4th - 7th characters as applicable.
  - **Don't** submit the decimal point for ICD codes. The decimal point is implied.
  - **Don't** submit ICD-10 header codes. Header codes exist to group related codes and aren't valid for billing. These header codes can change with each new version of ICD-10, so we recommend reviewing your diagnosis codes every year to ensure that they aren't classified as header codes in the most recent version. To determine whether a code is a header code, you can also search the [Value Set Authority Center](https://vsac.nlm.nih.gov/context/cs). If the 'Header' property is set, the code is a header code and you shouldn't use it in claim submissions.
- **`claimInformation.externalCauseOfInjuries[].presentOnAdmissionIndicator`** (`string`): Indicates whether the external cause of injury was present on admission. Can be set to `N` - No (onset did NOT occur prior to admission to the hospital), `Y` - Yes (onset occurred prior to admission to the hospital), `U` - Unknown, or `W` - Not Applicable.
  - Allowed values: `N`, `U`, `Y`, `W`
- **`claimInformation.externalCauseOfInjuries[].qualifierCode`** (`string`) (required): Code identifying the type of external cause of injury code used. Can be set to `ABN` - International Classification of Diseases Clinical Modification External Cause of Injury Code or `BN` - International Classification of Diseases Clinical Modification External Cause of Injury Code. Note that ICD-9 is deprecated and cannot be used in new claims.
  - Allowed values: `ABN`, `BN`
- **`claimInformation.fileInformation`** (`array of strings`): Used to send additional data specifically requested by the payer. Not commonly used.
- **`claimInformation.occurrenceInformationList`** (`array of arrays`): Required when there is a Occurrence Code that applies to this claim. This is an array of arrays of objects. You can provide up to two object arrays, and each array can contain up to 12 objects.
- **`claimInformation.occurrenceSpanInformations`** (`array of arrays`): Required when there is an Occurrence Span Code that applies to this claim. This is an array or arrays of objects. You can provide up to two object arrays and each array can contain up to 12 objects.
- **`claimInformation.otherDiagnosisInformationList`** (`array of arrays`): Additional diagnosis codes relevant to the claim. Required when other condition(s) coexist or develop(s) subsequently during the patient's treatment. This is an array of arrays of objects. You can provide up to two object arrays, and each object array can contain up to 12 objects.
- **`claimInformation.otherProcedureInformationList`** (`array of arrays`): Required on inpatient claims when additional procedures must be reported. This is an array of arrays of objects. You can provide up to two object arrays, and each array can contain up to 12 objects.
- **`claimInformation.otherSubscriberInformation`** (`object`): Required when other payers are known to potentially be involved in paying on this claim. This object contains information about other health plans under which the patient has coverage. It's used for coordination of benefits scenarios.
- **`claimInformation.otherSubscriberInformation.benefitsAssignmentCertificationIndicator`** (`string`) (required)
  - Allowed values: `N`, `Y`, `W`
- **`claimInformation.otherSubscriberInformation.claimFilingIndicatorCode`** (`string`) (required)
  - Allowed values: `11`, `12`, `13`, `14`, `15`, `16`, `17`, `AM`, `BL`, `CH`, `DS`, `FI`, `HM`, `LM`, `MA`, `MB`, `MC`, `OF`, `TV`, `VA`, `WC`, `ZZ`
- **`claimInformation.otherSubscriberInformation.claimLevelAdjustments`** (`array of InstitutionalClaimAdjustment objects`): Supply adjustment reason codes and amounts as needed. Required when the claim has been adjudicated by the payer identified in this loop, and the claim has claim level adjustment information. Submitters must use this object to report prior payers' claim level adjustments that cause the amount paid to differ from the amount originally charged. Codes and associated amounts must come from either paper remittance advice or 835s (Electronic Remittance Advice) received on the claim. When the information originates from a paper remittance advice that does not use the standard Claim Adjustment Reason Codes, the paper values must be converted to standard Claim Adjustment Reason Codes. You can include up to five `claimLevelAdjustments` objects in this array.
- **`claimInformation.otherSubscriberInformation.claimLevelAdjustments[].adjustmentGroupCode`** (`string`) (required): Code identifying the general category of payment adjustment. Can be set to `CO` - Contractual Obligations, `CR` - Correction and Reversals, `OA` - Other adjustments, `PI` - Payor Initiated Reductions, or `PR` - Patient Responsibility.
  - Allowed values: `CO`, `CR`, `OA`, `PI`, `PR`
- **`claimInformation.otherSubscriberInformation.claimLevelAdjustments[].claimAdjustmentDetails`** (`array of InstitutionalClaimAdjustmentDetails objects`): The adjustment reason, amount, and quantity. You can include up to six of these objects to describe a single `adjustmentGroupCode`.
- **`claimInformation.otherSubscriberInformation.claimLevelAdjustments[].claimAdjustmentDetails[].adjustmentAmount`** (`string`) (required): The dollar amount of the adjustment, expressed as a decimal.
- **`claimInformation.otherSubscriberInformation.claimLevelAdjustments[].claimAdjustmentDetails[].adjustmentQuantity`** (`string`): The units of service being adjusted, expressed as a decimal.
- **`claimInformation.otherSubscriberInformation.claimLevelAdjustments[].claimAdjustmentDetails[].adjustmentReasonCode`** (`string`) (required): Code identifying the detailed reason the adjustment was made. Visit the X12 [Claim Adjustment Reason Codes](https://x12.org/codes/claim-adjustment-reason-codes) for a complete list.
- **`claimInformation.otherSubscriberInformation.groupNumber`** (`string`): The group number for the subscriber's health plan.

Provide this property OR the `otherInsuredGroupName`, not both. If this property is set, Stedi ignores the `otherInsuredGroupName` property.
- **`claimInformation.otherSubscriberInformation.individualRelationshipCode`** (`string`) (required)
  - Allowed values: `01`, `18`, `19`, `20`, `21`, `39`, `40`, `53`, `G8`
- **`claimInformation.otherSubscriberInformation.medicareInpatientAdjudication`** (`object`)
- **`claimInformation.otherSubscriberInformation.medicareInpatientAdjudication.capitalExceptionAmount`** (`string`): The capital exception amount, expressed as a decimal.
- **`claimInformation.otherSubscriberInformation.medicareInpatientAdjudication.capitalHSPDRGAmount`** (`string`): The Prospective Payment System (PPS) capital, hospital specific portion, Diagnosis Related Group (DRG) amount. Expressed as a decimal.
- **`claimInformation.otherSubscriberInformation.medicareInpatientAdjudication.claimDRGAmount`** (`string`): The Diagnosis Related Group (DRG) amount, expressed as a decimal.
- **`claimInformation.otherSubscriberInformation.medicareInpatientAdjudication.claimDisproportionateShareAmount`** (`string`): The disproportionate share amount, expressed as a decimal.
- **`claimInformation.otherSubscriberInformation.medicareInpatientAdjudication.claimIndirectTeachingAmount`** (`string`): The indirect teaching amount, expressed as a decimal.
- **`claimInformation.otherSubscriberInformation.medicareInpatientAdjudication.claimMspPassThroughAmount`** (`string`): The Medicare Secondary Payer (MSP) pass-through amount, expressed as a decimal.
- **`claimInformation.otherSubscriberInformation.medicareInpatientAdjudication.claimPaymentRemarkCode`** (`array of strings`): The claim payment remark code. Refer to the X12 [Remittance Advice Remark Codes](https://x12.org/codes/remittance-advice-remark-codes) for a complete list. You can include up to four codes in this array.
- **`claimInformation.otherSubscriberInformation.medicareInpatientAdjudication.claimPpsCapitalAmount`** (`string`): The Prospective Payment System (PPS) capital amount, expressed as a decimal.
- **`claimInformation.otherSubscriberInformation.medicareInpatientAdjudication.claimPpsCapitalOutlierAmmount`** (`string`): The Prospective Payment System (PPS) capital outlier amount, expressed as a decimal.
- **`claimInformation.otherSubscriberInformation.medicareInpatientAdjudication.costReportDayCount`** (`string`): The number of cost report days, expressed as a decimal.
- **`claimInformation.otherSubscriberInformation.medicareInpatientAdjudication.coveredDaysOrVisitsCount`** (`string`) (required): The number of covered days, expressed as a decimal.
- **`claimInformation.otherSubscriberInformation.medicareInpatientAdjudication.lifetimePsychiatricDaysCount`** (`string`): The number of lifetime psychiatric days, expressed as a decimal.
- **`claimInformation.otherSubscriberInformation.medicareInpatientAdjudication.nonPayableProfessionalComponentBilledAmount`** (`string`): The professional component amount billed but not payable, expressed as a decimal.
- **`claimInformation.otherSubscriberInformation.medicareInpatientAdjudication.oldCapitalAmount`** (`string`): The old capital amount, expressed as a decimal.
- **`claimInformation.otherSubscriberInformation.medicareInpatientAdjudication.ppsCapitalDshDrgAmount`** (`string`): The prospective Payment System (PPS) capital, disproportionate share, hospital Diagnosis Related Group (DRG) amount. Expressed as a decimal.
- **`claimInformation.otherSubscriberInformation.medicareInpatientAdjudication.ppsCapitalHspDrgAmount`** (`string`): The Prospective Payment System (PPS) capital, disproportionate share, hospital Diagnosis Related Group (DRG) amount. Expressed as a decimal.
- **`claimInformation.otherSubscriberInformation.medicareInpatientAdjudication.ppsCapitalImeAmount`** (`string`): The Prospective Payment System (PPS) capital Indirect Medical Education (IME) claim amount, expressed as a decimal.
- **`claimInformation.otherSubscriberInformation.medicareInpatientAdjudication.ppsOperatingFederalSpecificDrgAmount`** (`string`): The federal specific Diagnosis Related Group (DRG) amount, expressed as a decimal.
- **`claimInformation.otherSubscriberInformation.medicareInpatientAdjudication.ppsOperatingHospitalSpecificDrgAmount`** (`string`): The hospital specific Diagnosis Related Group (DRG) amount, expressed as a decimal.
- **`claimInformation.otherSubscriberInformation.medicareOutpatientAdjudication`** (`object`): Claim-level data related to the adjudication of Medicare claims not related to an inpatient setting. Required when outpatient adjudication information is reported in the remittance advice _or_ when you need to report remark codes.
- **`claimInformation.otherSubscriberInformation.medicareOutpatientAdjudication.claimPaymentRemarkCode`** (`array of strings`): The remark code. Visit the X12 [Remittance Advice Remark Codes](https://x12.org/codes/remittance-advice-remark-codes) for a complete list. You can include up to five codes in this array.
- **`claimInformation.otherSubscriberInformation.medicareOutpatientAdjudication.endStageRenalDiseasePaymentAmount`** (`string`): The End-Stage Renal Disease (ESRD) payment amount, expressed as a decimal.
- **`claimInformation.otherSubscriberInformation.medicareOutpatientAdjudication.hcpcsPayableAmount`** (`string`): The claim Health Care Financing Administration Common Procedural Coding System (HCPCS) payable amount, expressed as a decimal.
- **`claimInformation.otherSubscriberInformation.medicareOutpatientAdjudication.nonPayableProfessionalComponentBilledAmount`** (`string`): The professional component amount billed but not payable, expressed as a decimal.
- **`claimInformation.otherSubscriberInformation.medicareOutpatientAdjudication.reimbursementRate`** (`string`): The reimbursement percentage, expressed as a decimal.
- **`claimInformation.otherSubscriberInformation.nonCoveredChargeAmount`** (`string`): Required when the destination payer's cost avoidance policy allows providers to bypass claim submission to the otherwise prior payer identified in `otherPayerName`. The amount must equal the total claim charge amount you reported in `claimInformation.claimChargeAmount`.
- **`claimInformation.otherSubscriberInformation.otherInsuredGroupName`** (`string`): The name of the subscriber's health plan.

Provide either this property OR the `groupNumber`, not both. If `groupNumber` is set, Stedi ignores this value and uses the value in `groupNumber`.
- **`claimInformation.otherSubscriberInformation.otherPayerAttendingProvider`** (`object`): Information regarding the other payer's attending provider. The attending provider is the provider who is primarily responsible for the care of the patient.
- **`claimInformation.otherSubscriberInformation.otherPayerAttendingProvider.otherPayerAttendingProviderIdentifier`** (`array of InstitutionalReferenceIdentification objects`) (required): The provider's identifier. The `qualifier` can be set to `OB` - State License Number, `1G` - Provider UPIN Number, `G2` - Provider Commercial Number, or `LU` - Location Number. Note that UPIN numbers are deprecated and should not be used in new claims.
- **`claimInformation.otherSubscriberInformation.otherPayerAttendingProvider.otherPayerAttendingProviderIdentifier[].identifier`** (`string`) (required): The identifier specified in `qualifier`.
- **`claimInformation.otherSubscriberInformation.otherPayerAttendingProvider.otherPayerAttendingProviderIdentifier[].qualifier`** (`string`) (required): The code qualifying the type of `identifier`.
- **`claimInformation.otherSubscriberInformation.otherPayerBillingProvider`** (`object`): Information regarding the other payer's billing provider.
- **`claimInformation.otherSubscriberInformation.otherPayerBillingProvider.otherPayerBillingProviderIdentifier`** (`array of InstitutionalReferenceIdentification objects`) (required): The provider's identifier. The `qualifier` can be set to `G2` - Provider Commercial Number or `LU` - Location Number. Note that UPIN numbers are deprecated and should not be used in new claims.
- **`claimInformation.otherSubscriberInformation.otherPayerBillingProvider.otherPayerBillingProviderIdentifier[].identifier`** (`string`) (required): The identifier specified in `qualifier`.
- **`claimInformation.otherSubscriberInformation.otherPayerBillingProvider.otherPayerBillingProviderIdentifier[].qualifier`** (`string`) (required): The code qualifying the type of `identifier`.
- **`claimInformation.otherSubscriberInformation.otherPayerName`** (`object`) (required)
- **`claimInformation.otherSubscriberInformation.otherPayerName.otherInsuredAdditionalIdentifier`** (`string`)
- **`claimInformation.otherSubscriberInformation.otherPayerName.otherPayerAddress`** (`object`)
- **`claimInformation.otherSubscriberInformation.otherPayerName.otherPayerAddress.address1`** (`string`) (required): The first line of the street address. This typically contains the building number and street name.
- **`claimInformation.otherSubscriberInformation.otherPayerName.otherPayerAddress.address2`** (`string`): The second line of the street address. This typically contains the apartment or suite number.
- **`claimInformation.otherSubscriberInformation.otherPayerName.otherPayerAddress.city`** (`string`) (required): The city name.
- **`claimInformation.otherSubscriberInformation.otherPayerName.otherPayerAddress.countryCode`** (`string`): Use the alpha-2 country codes from Part 1 of ISO 3166.
- **`claimInformation.otherSubscriberInformation.otherPayerName.otherPayerAddress.countrySubDivisionCode`** (`string`): Use the country subdivision codes from Part 2 of ISO 3166.
- **`claimInformation.otherSubscriberInformation.otherPayerName.otherPayerAddress.postalCode`** (`string`): The postal zone or zip code. For United States addresses, you must include the full nine-digit zip code with no separators, such as `100031502`. If you don't know the full zip code, you can find it using the [USPS ZIP Code Lookup](https://tools.usps.com/zip-code-lookup.htm) tool. Exclude punctuation and spaces.
- **`claimInformation.otherSubscriberInformation.otherPayerName.otherPayerAddress.state`** (`string`): The state or province code. Only required when the city is in the United States and Canada.
- **`claimInformation.otherSubscriberInformation.otherPayerName.otherPayerAdjudicationOrPaymentDate`** (`string`)
- **`claimInformation.otherSubscriberInformation.otherPayerName.otherPayerClaimAdjustmentIndicator`** (`boolean`): Required when the claim is being sent in the payer-to-payer COB model, AND the destination payer is secondary to the payer identified in this object, AND the payer identified in this object re-adjudicated the claim. Can be set to `Y` - Yes.
- **`claimInformation.otherSubscriberInformation.otherPayerName.otherPayerClaimControlNumber`** (`string`): The other payer's claim control number for this claim.
- **`claimInformation.otherSubscriberInformation.otherPayerName.otherPayerIdentifier`** (`string`) (required): The identifier specified in `otherPayerIdentifierTypeCode`.
- **`claimInformation.otherSubscriberInformation.otherPayerName.otherPayerIdentifierTypeCode`** (`string`) (required): Code specifying the type of identifier used for the other payer. Can be set to `PI` - Payor Identification or `XV` - Centers for Medicare and Medicaid Services PlanID. Use `XV` when reporting Health Plan ID (HPID) or Other Entity Identifier (OEID).
  - Allowed values: `PI`, `XV`
- **`claimInformation.otherSubscriberInformation.otherPayerName.otherPayerOrganizationName`** (`string`) (required): The business name of the other payer.
- **`claimInformation.otherSubscriberInformation.otherPayerName.otherPayerPriorAuthorizationNumber`** (`string`): The other payer's prior authorization number. Required when this payer has assigned a prior authorization number to this claim.
- **`claimInformation.otherSubscriberInformation.otherPayerName.otherPayerPriorAuthorizationOrReferralNumber`** (`string`): The other payer's referral number. Required when this payer has assigned a referral number to this claim.
- **`claimInformation.otherSubscriberInformation.otherPayerName.otherPayerSecondaryIdentifier`** (`array of InstitutionalReferenceIdentification objects`): Additional identification number for the other payer. The `qualifier` property can be set to `2U` - Payer Identification Number, `EI` - Employer's Identification Number, `FY` - Claim Office Number, or `NF` - National Association of Insurance Commissioners (NAIC) Code.
- **`claimInformation.otherSubscriberInformation.otherPayerName.otherPayerSecondaryIdentifier[].identifier`** (`string`) (required): The identifier specified in `qualifier`.
- **`claimInformation.otherSubscriberInformation.otherPayerName.otherPayerSecondaryIdentifier[].qualifier`** (`string`) (required): The code qualifying the type of `identifier`.
- **`claimInformation.otherSubscriberInformation.otherPayerOperatingPhysician`** (`object`): Information regarding the other payer's operating physician. The operating physician is the provider who performed the procedure.
- **`claimInformation.otherSubscriberInformation.otherPayerOperatingPhysician.otherPayerOperatingPhysicianIdentifier`** (`array of InstitutionalReferenceIdentification objects`) (required): The `qualifier` can be set to `OB` - State License Number, `1G` - Provider UPIN Number, `G2` - Provider Commercial Number, or `LU` - Location Number. Note that UPIN numbers are deprecated and should not be used in new claims.
- **`claimInformation.otherSubscriberInformation.otherPayerOperatingPhysician.otherPayerOperatingPhysicianIdentifier[].identifier`** (`string`) (required): The identifier specified in `qualifier`.
- **`claimInformation.otherSubscriberInformation.otherPayerOperatingPhysician.otherPayerOperatingPhysicianIdentifier[].qualifier`** (`string`) (required): The code qualifying the type of `identifier`.
- **`claimInformation.otherSubscriberInformation.otherPayerOtherOperatingPhysician`** (`object`): Information regarding the other payer's other operating physician. The other operating physician is the provider who performed a secondary surgical procedure or assisted the `otherPayerOperatingPhysician`.
- **`claimInformation.otherSubscriberInformation.otherPayerOtherOperatingPhysician.otherPayerOtherOperatingPhysicianIdentifier`** (`array of InstitutionalReferenceIdentification objects`) (required): The physician's identifier. The `qualifier` can be set to `OB` - State License Number, `1G` - Provider UPIN Number, `G2` - Provider Commercial Number, or `LU` - Location Number. Note that UPIN numbers are deprecated and should not be used in new claims.
- **`claimInformation.otherSubscriberInformation.otherPayerOtherOperatingPhysician.otherPayerOtherOperatingPhysicianIdentifier[].identifier`** (`string`) (required): The identifier specified in `qualifier`.
- **`claimInformation.otherSubscriberInformation.otherPayerOtherOperatingPhysician.otherPayerOtherOperatingPhysicianIdentifier[].qualifier`** (`string`) (required): The code qualifying the type of `identifier`.
- **`claimInformation.otherSubscriberInformation.otherPayerReferringProvider`** (`object`): Information regarding the other payer's referring provider. This is the provider who sent the patient to another provider for services.
- **`claimInformation.otherSubscriberInformation.otherPayerReferringProvider.otherPayerReferringProviderIdentifier`** (`array of InstitutionalReferenceIdentification objects`) (required): The provider's identifier. The `qualifier` can be set to `OB` - State License Number, `1G` - Provider UPIN Number, or `G2` - Provider Commercial Number. Note that UPIN numbers are deprecated and should not be used in new claims.
- **`claimInformation.otherSubscriberInformation.otherPayerReferringProvider.otherPayerReferringProviderIdentifier[].identifier`** (`string`) (required): The identifier specified in `qualifier`.
- **`claimInformation.otherSubscriberInformation.otherPayerReferringProvider.otherPayerReferringProviderIdentifier[].qualifier`** (`string`) (required): The code qualifying the type of `identifier`.
- **`claimInformation.otherSubscriberInformation.otherPayerRenderingProvider`** (`object`): Information regarding the other payer's rendering provider. The rendering provider is the provider who performed the service or non-surgical procedure.
- **`claimInformation.otherSubscriberInformation.otherPayerRenderingProvider.otherPayerRenderingProviderIdentifier`** (`array of InstitutionalReferenceIdentification objects`) (required): The provider's identifier. The `qualifier` can be set to `OB` - State License Number, `1G` - Provider UPIN Number, `G2` - Provider Commercial Number, or `LU` - Location Number. Note that UPIN numbers are deprecated and should not be used in new claims.
- **`claimInformation.otherSubscriberInformation.otherPayerRenderingProvider.otherPayerRenderingProviderIdentifier[].identifier`** (`string`) (required): The identifier specified in `qualifier`.
- **`claimInformation.otherSubscriberInformation.otherPayerRenderingProvider.otherPayerRenderingProviderIdentifier[].qualifier`** (`string`) (required): The code qualifying the type of `identifier`.
- **`claimInformation.otherSubscriberInformation.otherPayerServiceFacilityLocation`** (`object`): Information regarding the other payer's service facility location. This is where the service was performed.
- **`claimInformation.otherSubscriberInformation.otherPayerServiceFacilityLocation.otherPayerServiceFacilityLocationIdentifier`** (`array of InstitutionalReferenceIdentification objects`) (required): The facility's identifier. The `qualifier` can be set to `OB` - State License Number, `G2` - Provider Commercial Number, or `LU` - Location Number.
- **`claimInformation.otherSubscriberInformation.otherPayerServiceFacilityLocation.otherPayerServiceFacilityLocationIdentifier[].identifier`** (`string`) (required): The identifier specified in `qualifier`.
- **`claimInformation.otherSubscriberInformation.otherPayerServiceFacilityLocation.otherPayerServiceFacilityLocationIdentifier[].qualifier`** (`string`) (required): The code qualifying the type of `identifier`.
- **`claimInformation.otherSubscriberInformation.otherSubscriberName`** (`object`) (required)
- **`claimInformation.otherSubscriberInformation.otherSubscriberName.address`** (`object`)
- **`claimInformation.otherSubscriberInformation.otherSubscriberName.address.address1`** (`string`) (required): The first line of the street address. This typically contains the building number and street name.
- **`claimInformation.otherSubscriberInformation.otherSubscriberName.address.address2`** (`string`): The second line of the street address. This typically contains the apartment or suite number.
- **`claimInformation.otherSubscriberInformation.otherSubscriberName.address.city`** (`string`) (required): The city name.
- **`claimInformation.otherSubscriberInformation.otherSubscriberName.address.countryCode`** (`string`): Use the alpha-2 country codes from Part 1 of ISO 3166.
- **`claimInformation.otherSubscriberInformation.otherSubscriberName.address.countrySubDivisionCode`** (`string`): Use the country subdivision codes from Part 2 of ISO 3166.
- **`claimInformation.otherSubscriberInformation.otherSubscriberName.address.postalCode`** (`string`): The postal zone or zip code. For United States addresses, you must include the full nine-digit zip code with no separators, such as `100031502`. If you don't know the full zip code, you can find it using the [USPS ZIP Code Lookup](https://tools.usps.com/zip-code-lookup.htm) tool. Exclude punctuation and spaces.
- **`claimInformation.otherSubscriberInformation.otherSubscriberName.address.state`** (`string`): The state or province code. Only required when the city is in the United States and Canada.
- **`claimInformation.otherSubscriberInformation.otherSubscriberName.firstName`** (`string`)
- **`claimInformation.otherSubscriberInformation.otherSubscriberName.otherInsuredAdditionalIdentifier`** (`array of strings`): The subscriber's social security number (SSN). This must be a string of exactly nine numbers with no separators.
- **`claimInformation.otherSubscriberInformation.otherSubscriberName.otherInsuredFirstName`** (`string`): The subscriber's first name.
- **`claimInformation.otherSubscriberInformation.otherSubscriberName.otherInsuredIdentifier`** (`string`) (required): The identifier specified in `otherInsuredIdentifierTypeCode`.
- **`claimInformation.otherSubscriberInformation.otherSubscriberName.otherInsuredIdentifierTypeCode`** (`string`) (required): Code identifying the type of identifier used for the other insured. Can be set to `II` - Standard Unique Health Identifier for each Individual in the United States or `MI` - Member Identification Number. Note that `II` is deprecated and should not be used in new claims.
  - Allowed values: `II`, `MI`
- **`claimInformation.otherSubscriberInformation.otherSubscriberName.otherInsuredLastName`** (`string`) (required): The last name (when the subscriber is an individual) or the name of the organization (when the subscriber is an organization). **Don't** include the subscriber's name suffix, such as Jr. or III. Use the designated `otherInsuredSuffix` property instead.
- **`claimInformation.otherSubscriberInformation.otherSubscriberName.otherInsuredMiddleName`** (`string`): The subscriber's middle name or initial.
- **`claimInformation.otherSubscriberInformation.otherSubscriberName.otherInsuredQualifier`** (`string`) (required): Code identifying the type of entity. Can be set to `1` - Person or `2` - Non-Person Entity.
  - Allowed values: `1`, `2`
- **`claimInformation.otherSubscriberInformation.otherSubscriberName.otherInsuredSuffix`** (`string`): The subscriber's name suffix, such as Jr or III. Only include the subscriber's personal name suffix - **don't** include professional or academic titles, such as M.D. or MBA.
- **`claimInformation.otherSubscriberInformation.payerPaidAmount`** (`string`): The total amount in dollars the payer has paid on this claim. It is acceptable to set this to `0` (Zero). This is required when you include the `payToPlan` object, and you should set it to the amount the Medicaid agency actually paid.
- **`claimInformation.otherSubscriberInformation.paymentResponsibilityLevelCode`** (`string`) (required)
  - Allowed values: `A`, `B`, `C`, `D`, `E`, `F`, `G`, `H`, `P`, `S`, `T`, `U`
- **`claimInformation.otherSubscriberInformation.policyNumber`** (`string`): The policy number for the subscriber's health plan.
- **`claimInformation.otherSubscriberInformation.releaseOfInformationCode`** (`string`) (required): Code indicating whether the provider has on file a signed statement by the patient authorizing the release of medical data to other organizations. Can be set to `I` - Informed Consent to Release Medical Information or `Y` - Yes. Code `I` is required when the provider has not collected a signature AND state or federal laws do not require a signature be collected. Code `Y` is required when the provider has collected a signature OR when state or federal laws require a signature be collected.
  - Allowed values: `I`, `Y`
- **`claimInformation.otherSubscriberInformation.remainingPatientLiability`** (`string`): This is the remaining amount (as determined by the provider) to be paid after the other payer identified in the `otherPayerName` object has adjudicated the claim. Required when the other payer adjudicated the claim and provided claim level information only _or_ when the other payer adjudicated the claim, and the provider received a paper remittance advice, and the provider does not have the ability to report line item information. Don't include this property if you're specifying remaining patient liability at the service line level.
- **`claimInformation.patientAmountPaid`** (`string`)
- **`claimInformation.patientControlNumber`** (`string`) (required): An identifier you assign to the claim. We **strongly recommend** submitting a unique value for this property so that you can use it to correlate this claim with responses, such as the [277CA claim acknowledgment](https://www.stedi.com/docs/healthcare/receive-claim-responses#correlate-277ca) and the [835 ERA](https://www.stedi.com/docs/healthcare/receive-claim-responses#correlate-835-era).
  - Use random strings. The identifier should be more complex than a simple sequential number and should be hard to guess. Formats with patient initials or the date of service in them can create duplicates. We recommend using [nanoid](https://www.npmjs.com/package/nanoid) or a similar library configured with the characters from the [basic character set](https://www.stedi.com/docs/healthcare/submit-institutional-claims#character-restrictions) to generate unique IDs.
  - Keep it to 17 characters max. Some payers cut off values longer than 17 characters in 277CAs and ERAs, which makes it hard to match them with the original claim.
  - Use only characters available in the [basic character set](https://www.stedi.com/docs/healthcare/submit-institutional-claims#character-restrictions), and avoid special characters that are only available in the extended character set. Using other characters may result in data loss or mismatches when correlating claims with responses.
- **`claimInformation.patientEstimatedAmountDue`** (`string`): The total estimated amount the patient must pay for the services listed in this claim. Expressed as a decimal, such as `20.50`. This includes any co-payments, co-insurance, or other costs.
- **`claimInformation.patientReasonForVisits`** (`array of PatientReasonForVisit objects`): The diagnosis for which the patient visited an outpatient provider. Required when the claim involves outpatient visits. This may be different from the principal diagnosis. This is an array of objects and you can provide up to three objects.
- **`claimInformation.patientReasonForVisits[].patientReasonForVisitCode`** (`string`) (required): The patient's reason for visit code.
  - You must submit a valid, billable code at the highest level of specificity. Include the 4th - 7th characters as applicable.
  - **Don't** submit the decimal point for ICD codes. The decimal point is implied.
  - **Don't** submit ICD-10 header codes. Header codes exist to group related codes and aren't valid for billing. These header codes can change with each new version of ICD-10, so we recommend reviewing your diagnosis codes every year to ensure that they aren't classified as header codes in the most recent version. To determine whether a code is a header code, you can also search the [Value Set Authority Center](https://vsac.nlm.nih.gov/context/cs). If the 'Header' property is set, the code is a header code and you shouldn't use it in claim submissions.
- **`claimInformation.patientReasonForVisits[].qualifierCode`** (`string`) (required): Code identifying the type of reason for visit code used. Can be set to `APR` - International Classification of Diseases Clinical Modification Patient's Reason for Visit or `PR` - International Classification of Diseases Clinical Modification Patient's Reason for Visit. Note that ICD-9 is deprecated and cannot be used in new claims.
  - Allowed values: `APR`, `PR`
- **`claimInformation.patientWeight`** (`string`)
- **`claimInformation.placeOfServiceCode`** (`string`) (required): Code identifying the type of facility where the services were or may be performed. This must be the two-digit facility type code from the National Uniform Billing Committee [Official UB-04 Data File](https://www.nubc.org/license) (FL 04 - Type of Bill Facility Codes).
- **`claimInformation.planParticipationCode`** (`string`) (required): Code indicating whether the provider accepts assignment. This refers to whether the provider accepts assignment and/or has a participation agreement with the destination payer. It does not indicate whether the patient has assigned benefits to the provider. Can be set to `A` - Assigned, `B` - Assignment Accepted on Clinical Lab Services Only, or `C` - Not Assigned. Choose `A` when the provider accepts assignment and/or has a participation agreement with the destination payer, OR the provider does not accept assignment and/or have a participation agreement, but is advising the payer to adjudicate this specific claim under the participating provider benefits allowed under certain plans.
  - Allowed values: `A`, `B`, `C`
- **`claimInformation.principalDiagnosis`** (`object`) (required)
- **`claimInformation.principalDiagnosis.presentOnAdmissionIndicator`** (`string`): Indicates whether the principal diagnosis was present on admission. Can be set to `N` - No (onset did NOT occur prior to admission to the hospital), `Y` - Yes (onset occurred prior to admission to the hospital), `U` - Unknown, or `W` - Not Applicable.
  - Allowed values: `N`, `Y`, `U`, `W`
- **`claimInformation.principalDiagnosis.principalDiagnosisCode`** (`string`) (required): The principal diagnosis code for the patient.
  - You must submit a valid, billable code at the highest level of specificity. Include the 4th - 7th characters as applicable.
  - **Don't** submit the decimal point for ICD codes. The decimal point is implied.
  - **Don't** submit ICD-10 header codes. Header codes exist to group related codes and aren't valid for billing. These header codes can change with each new version of ICD-10, so we recommend reviewing your diagnosis codes every year to ensure that they aren't classified as header codes in the most recent version. To determine whether a code is a header code, you can also search the [Value Set Authority Center](https://vsac.nlm.nih.gov/context/cs). If the 'Header' property is set, the code is a header code and you shouldn't use it in claim submissions.
- **`claimInformation.principalDiagnosis.qualifierCode`** (`string`) (required): Code identifying the type of diagnosis code used. Can be set to `ABK` - International Classification of Diseases Clinical Modification Principal Diagnosis or `BK` - International Classification of Diseases Clinical Modification (ICD-9-CM) Principal Diagnosis. Note that ICD-9 is deprecated and cannot be used in new claims.
  - Allowed values: `ABK`, `BK`
- **`claimInformation.principalProcedureInformation`** (`object`)
- **`claimInformation.principalProcedureInformation.principalProcedureCode`** (`string`) (required): The principal procedure code for the patient. It must be a valid code from the appropriate coding system. **Don't** submit the decimal for ICD codes; the decimal is implied.
- **`claimInformation.principalProcedureInformation.principalProcedureDate`** (`string`): The date when the procedure was performed.
- **`claimInformation.principalProcedureInformation.qualifierCode`** (`string`) (required): Code identifying the type of procedure code used. Can be set to `BBR` - International Classification of Diseases Clinical Modification (ICD-10-PCS) Principal Procedure Codes, `BR` - International Classification of Diseases Clinical Modification (ICD-9-CM) Principal Procedure Codes, or `CAH` - Advanced Billing Concepts (ABC) Codes. Note that ICD-9 and ABC codes are deprecated and cannot be used in new claims.
  - Allowed values: `BBR`, `BR`, `CAH`
- **`claimInformation.propertyCasualtyClaimNumber`** (`string`): The agency claim number for this transaction. Used when services included in this claim are part of a property and casualty claim. This property is typically not used by Stedi customers.
- **`claimInformation.releaseInformationCode`** (`string`) (required): Indicates whether the provider has on file a signed statement by the patient authorizing the release of medical data to other organizations. Can be set to `Y` - Yes, or `I` - Informed Consent to Release Medical Information for Conditions or Diagnoses Regulated by Federal Statues. Use `I` when the provider has not collected a signature AND state or federal laws do not require a signature be collected.
  - Allowed values: `I`, `Y`
- **`claimInformation.serviceFacilityLocation`** (`object`): The service facility location. Required when the location of healthcare services is different from the billing provider's address.
- When an organization's healthcare provider's [NPI](https://www.stedi.com/docs/healthcare/national-provider-identifier) is provided to identify the service location, the organization healthcare provider must be external to the entity identified as the billing provider (for example, a reference lab).
- The service location can't be a component or subpart of the billing provider entity. Only include this object when the service location is **different** from the billing provider's address. If you include this object when the address is the same, Stedi omits all of the service facility location information from the claim submission, including the name and any identifiers.
- Sometimes the billing provider is an actual physician group that is located at the same address as a hospital, but is in fact a separate entity. In this case, you can differentiate the service facility location by including the specific suite or building number of the physician group. This ensures that the service facility location is different from the billing provider's address and is reported accurately.
- **`claimInformation.serviceFacilityLocation.address`** (`object`) (required)
- **`claimInformation.serviceFacilityLocation.address.address1`** (`string`) (required): The first line of the street address. This typically contains the building number and street name.
- **`claimInformation.serviceFacilityLocation.address.address2`** (`string`): The second line of the street address. This typically contains the apartment or suite number.
- **`claimInformation.serviceFacilityLocation.address.city`** (`string`) (required): The city name.
- **`claimInformation.serviceFacilityLocation.address.countryCode`** (`string`): Use the alpha-2 country codes from Part 1 of ISO 3166.
- **`claimInformation.serviceFacilityLocation.address.countrySubDivisionCode`** (`string`): Use the country subdivision codes from Part 2 of ISO 3166.
- **`claimInformation.serviceFacilityLocation.address.postalCode`** (`string`): The postal zone or zip code. For United States addresses, you must include the full nine-digit zip code with no separators, such as `100031502`. If you don't know the full zip code, you can find it using the [USPS ZIP Code Lookup](https://tools.usps.com/zip-code-lookup.htm) tool. Exclude punctuation and spaces.
- **`claimInformation.serviceFacilityLocation.address.state`** (`string`): The state or province code. Only required when the city is in the United States and Canada.
- **`claimInformation.serviceFacilityLocation.identificationCode`** (`string`): The organization [National Provider Identifier (NPI)](https://www.stedi.com/docs/healthcare/national-provider-identifier) assigned to the service facility location. Required when the service location to be identified has an NPI and is not a component or subpart of the billing provider.
- **`claimInformation.serviceFacilityLocation.organizationName`** (`string`) (required): The business name of the laboratory or facility.
- **`claimInformation.serviceFacilityLocation.secondaryIdentificationQualifierCode`** (`string`): Code identifying the type of secondary identification. Can be set to `0B` - State License Number, `G2` - Provider Commercial Number, or `LU` - Location Number.
  - Allowed values: `0B`, `G2`, `LU`
- **`claimInformation.serviceFacilityLocation.secondaryIdentifier`** (`string`): The identifier specified in `secondaryIdentifierQualifierCode`.

You can only include one secondary identifier for the service facility.
- **`claimInformation.serviceLines`** (`array of InstitutionalServiceLine objects`) (required): Information about one or more services rendered to the patient.
      - Each service line must be a unique service event as defined by the payer's billing policies. This means that you can use the same procedure code on multiple service lines as long as they are distinct events.
      - Some procedure codes are date-specific. In these cases, you may need to create a separate service line with that code for each applicable date of service, even if the episode of care extended over multiple days.
      - Service lines can share the same dates of service if the patient received multiple services on the same day.
- **`claimInformation.serviceLines[].adjustedRepricedLineItemReferenceNumber`** (`string`): Required when a repricing (pricing) organization needs to have an identifying number on an adjusted service line in their submission to their payer organization. Providers shouldn't complete this property.
- **`claimInformation.serviceLines[].assignedNumber`** (`string`): Stedi assigns this value automatically. It's a unique number identifying the service line within the claim.
- **`claimInformation.serviceLines[].description`** (`string`): A free-form description to clarify information about the service line. You can use this to further describe the service/product/supply reported in the service line or for non-specific procedure codes. Non-specific procedure codes may include descriptors such as 'Not Otherwise Classified (NOC)', 'Unlisted', 'Unspecified', 'Other', 'Prescription Drug: Generic', 'Prescription Drug, Brand Name', or 'Miscellaneous'.
- **`claimInformation.serviceLines[].drugIdentification`** (`object`)
- **`claimInformation.serviceLines[].drugIdentification.linkSequenceNumber`** (`string`): The sequence number assigned to the drug or biologic. Required when the provided medication involves the compounding of two or more drugs being reported and there is no prescription number. The link sequence number is a provider-assigned number unique to this claim. Its purpose is to enable the receiver to piece together the components of the compound. Note that you can set either this property _or_ `pharmacyPrescriptionNumber`, but not both.
- **`claimInformation.serviceLines[].drugIdentification.measurementUnitCode`** (`string`) (required): Code identifying the unit of measure for the drug or biologic. Can be set to `F2` - International Unit, `GR` - Gram, `ME` - Milligram, `ML` - Milliliter, or `UN` - Unit.
  - Allowed values: `F2`, `GR`, `ME`, `ML`, `UN`
- **`claimInformation.serviceLines[].drugIdentification.nationalDrugCode`** (`string`) (required): The National Drug Code (NDC) number for the drug or biologic. This is a unique number that identifies the drug or biologic, including the labeler code, product code, and package code. The NDC number must be formatted as 5-4-2, with hyphens separating the three parts. For example, 12345-6789-01.
- **`claimInformation.serviceLines[].drugIdentification.nationalDrugUnitCount`** (`string`) (required): The number of units of the drug or biologic, formtted as a decimal.
- **`claimInformation.serviceLines[].drugIdentification.pharmacyPrescriptionNumber`** (`string`): The prescription number assigned by the pharmacy. Required when dispensing of the drug has been done with an assigned prescription number. In cases where a compound drug is being billed, the components of the compound will all have the same prescription number. Payers receiving the claim can relate all the components by matching the prescription number. Note that you can set either this property _or_ `linkSequenceNumber`, but not both.
- **`claimInformation.serviceLines[].facilityTaxAmount`** (`string`): The amount of the facility tax or surcharge, formatted as a decimal. Required when a facility tax applies to the service being reported. The `claimInformation.serviceLines[].institutionalService.lineItemChargeAmount` must include the amount you report here.
- **`claimInformation.serviceLines[].institutionalService`** (`object`) (required)
- **`claimInformation.serviceLines[].institutionalService.description`** (`string`): The description of the procedure identified in `procedureCode`.
- **`claimInformation.serviceLines[].institutionalService.lineItemChargeAmount`** (`string`) (required): The amount charged for the service line, expressed as a decimal. This should include the provider's base charge and any applicable tax amounts reported within the service line.
- **`claimInformation.serviceLines[].institutionalService.measurementUnit`** (`string`) (required): The unit of measurement for the service. Can be set to `DA` - Days or `UN` - Unit.
  - Allowed values: `DA`, `UN`
- **`claimInformation.serviceLines[].institutionalService.nonCoveredChargeAmount`** (`string`): The non-covered service amount, expressed as a decimal. This property isn't intended for sending claims to secondary insurance after receiving a remittance from the original payer. It's used when a provider wants to report that they performed an uncovered service for a patient, but they aren't asking for payment. For example, a cosmetic procedure that isn't covered by the patient's health plan.
- **`claimInformation.serviceLines[].institutionalService.procedureCode`** (`string`): The procedure code. If you set this property, you must also set the `procedureIdentifier`.
- **`claimInformation.serviceLines[].institutionalService.procedureIdentifier`** (`string`): Code identifying the type of `procedureCode`. If you set this property, you must also set `procedureCode`.

Can be set to `ER` - Jurisdiction Specific Procedure and Supply Codes, `HC` - Health Care Financing Administration Common Procedural Coding System (HCPCS) Codes, `HP` -  Health Insurance Prospective Payment System (HIPPS) Skilled Nursing Facility Rate Code, `IV` - Home Infusion EDI Coalition (HIEC) Product/Service Code, or `WK` - Advanced Billing Concepts (ABC) Codes. Note that ABC codes are deprecated and shouldn't be used in new claims. 

Visit [Claims code lists](https://www.stedi.com/docs/healthcare/claims-code-lists#product-or-service-id-qualifier-codes) for more information and usage instructions.
  - Allowed values: `ER`, `HC`, `HP`, `IV`, `WK`
- **`claimInformation.serviceLines[].institutionalService.procedureModifiers`** (`array of strings`): A modifier that conveys special circumstances related to the performance of the service.
- **`claimInformation.serviceLines[].institutionalService.serviceLineRevenueCode`** (`string`) (required): The identifying number for the product or service. Visit the [National Uniform Billing Committee (NUBC) Codes](https://www.nubc.org/license) documentation for a complete list.
- **`claimInformation.serviceLines[].institutionalService.serviceUnitCount`** (`string`) (required): The number of units of service provided. The maximum length for this property is 8 digits, excluding the decimal. When a decimal is used, the maximum number of digits allowed to the right of the decimal is 3.

The units depend on the procedure code being billed and the nature of the service. For example, they may correspond to days (1 unit = 1 inpatient day), individual treatments or encounters (3 units = 3 dialysis sessions), or medication doses (2 units = 2 doses or vials).
- **`claimInformation.serviceLines[].lineAdjudicationInformation`** (`array of InstitutionalLineAdjudicationInformation objects`): Includes service line adjudication information for coordination of benefits between the initial payers of a health care claim and all subsequent payers.
- **`claimInformation.serviceLines[].lineAdjudicationInformation[].adjudicationOrPaymentDate`** (`string`) (required): The date the claim was paid.
- **`claimInformation.serviceLines[].lineAdjudicationInformation[].bundledLineNumber`** (`string`): The LX assigned number of the service line into which this service line is bundled. It's only used to bundle service lines.
- **`claimInformation.serviceLines[].lineAdjudicationInformation[].lineAdjustment`** (`array of InstitutionalClaimAdjustment objects`): Adjustment reason codes and amounts as needed for the service line. You can include up to five of these objects within `claimInformation.serviceLines[].lineAdjudicationInformation[].claimAdjustmentInformation`.
- **`claimInformation.serviceLines[].lineAdjudicationInformation[].lineAdjustment[].adjustmentGroupCode`** (`string`) (required): Code identifying the general category of payment adjustment. Can be set to `CO` - Contractual Obligations, `CR` - Correction and Reversals, `OA` - Other adjustments, `PI` - Payor Initiated Reductions, or `PR` - Patient Responsibility.
  - Allowed values: `CO`, `CR`, `OA`, `PI`, `PR`
- **`claimInformation.serviceLines[].lineAdjudicationInformation[].lineAdjustment[].claimAdjustmentDetails`** (`array of InstitutionalClaimAdjustmentDetails objects`): The adjustment reason, amount, and quantity. You can include up to six of these objects to describe a single `adjustmentGroupCode`.
- **`claimInformation.serviceLines[].lineAdjudicationInformation[].lineAdjustment[].claimAdjustmentDetails[].adjustmentAmount`** (`string`) (required): The dollar amount of the adjustment, expressed as a decimal.
- **`claimInformation.serviceLines[].lineAdjudicationInformation[].lineAdjustment[].claimAdjustmentDetails[].adjustmentQuantity`** (`string`): The units of service being adjusted, expressed as a decimal.
- **`claimInformation.serviceLines[].lineAdjudicationInformation[].lineAdjustment[].claimAdjustmentDetails[].adjustmentReasonCode`** (`string`) (required): Code identifying the detailed reason the adjustment was made. Visit the X12 [Claim Adjustment Reason Codes](https://x12.org/codes/claim-adjustment-reason-codes) for a complete list.
- **`claimInformation.serviceLines[].lineAdjudicationInformation[].otherPayerPrimaryIdentifier`** (`string`) (required): The payer ID for the payer responsible for reimbursement.
- **`claimInformation.serviceLines[].lineAdjudicationInformation[].paidServiceUnitCount`** (`string`) (required): The number of paid units from the remittance advice. When paid units are not present on the remittance advice, use the original billed units. The maximum length for this property is 8 digits excluding the decimal. When a decimal is used, the maximum number of digits allowed to the right of the decimal is three.
- **`claimInformation.serviceLines[].lineAdjudicationInformation[].procedureCode`** (`string`): The procedure code.
- **`claimInformation.serviceLines[].lineAdjudicationInformation[].procedureCodeDescription`** (`string`): A description of the procedure identified in `procedureCode`.
- **`claimInformation.serviceLines[].lineAdjudicationInformation[].procedureModifier`** (`array of strings`): A modifier that conveys special circumstances related to the performance of the service.
- **`claimInformation.serviceLines[].lineAdjudicationInformation[].productOrServiceIDQualifier`** (`string`): Code identifying the type of `procedureCode`. Can be set to `ER` - Jurisdiction Specific Procedure and Supply Codes, `HC` - Health Care Financing Administration Common Procedural Coding System (HCPCS) Codes, `HP` -  Health Insurance Prospective Payment System (HIPPS) Skilled Nursing Facility Rate Code, `IV` - Home Infusion EDI Coalition (HIEC) Product/Service Code, or `WK` - Advanced Billing Concepts (ABC) Codes. Note that ABC codes are deprecated and shouldn't be used in new claims. Visit [Claims code lists](https://www.stedi.com/docs/healthcare/claims-code-lists#product-or-service-id-qualifier-codes) for a complete list and usage guidelines.
  - Allowed values: `ER`, `HC`, `HP`, `IV`, `WK`
- **`claimInformation.serviceLines[].lineAdjudicationInformation[].remainingPatientLiability`** (`string`): The remaining amount (as determined by the provider) to be paid after the other payer identified in the `otherPayerPrimaryIdentifier` property has adjudicated the claim. Expressed as a decimal. Only used in claims submitted by providers - not in payer-to-payer coordination of benefits (COB). Don't include this if you already provided `claimInformation.otherSubscriberInformation.remainingPatientLiability` for the claim.
- **`claimInformation.serviceLines[].lineAdjudicationInformation[].serviceLinePaidAmount`** (`string`) (required): The amount paid for this service line, expressed as a decimal. Zero (0) is an acceptable value.
- **`claimInformation.serviceLines[].lineAdjudicationInformation[].serviceLineRevenueCode`** (`string`) (required): The revenue code for the service line.
- **`claimInformation.serviceLines[].lineAdjustmentInformation`** (`object`)
- **`claimInformation.serviceLines[].lineAdjustmentInformation.bundledOrUnbundledLineNumber`** (`string`)
- **`claimInformation.serviceLines[].lineAdjustmentInformation.claimAdjustment`** (`object`)
- **`claimInformation.serviceLines[].lineAdjustmentInformation.claimAdjustment.adjustmentGroupCode`** (`string`) (required): Code identifying the general category of payment adjustment. Can be set to `CO` - Contractual Obligations, `CR` - Correction and Reversals, `OA` - Other adjustments, `PI` - Payor Initiated Reductions, or `PR` - Patient Responsibility.
  - Allowed values: `CO`, `CR`, `OA`, `PI`, `PR`
- **`claimInformation.serviceLines[].lineAdjustmentInformation.claimAdjustment.claimAdjustmentDetails`** (`array of InstitutionalClaimAdjustmentDetails objects`): The adjustment reason, amount, and quantity. You can include up to six of these objects to describe a single `adjustmentGroupCode`.
- **`claimInformation.serviceLines[].lineAdjustmentInformation.claimAdjustment.claimAdjustmentDetails[].adjustmentAmount`** (`string`) (required): The dollar amount of the adjustment, expressed as a decimal.
- **`claimInformation.serviceLines[].lineAdjustmentInformation.claimAdjustment.claimAdjustmentDetails[].adjustmentQuantity`** (`string`): The units of service being adjusted, expressed as a decimal.
- **`claimInformation.serviceLines[].lineAdjustmentInformation.claimAdjustment.claimAdjustmentDetails[].adjustmentReasonCode`** (`string`) (required): Code identifying the detailed reason the adjustment was made. Visit the X12 [Claim Adjustment Reason Codes](https://x12.org/codes/claim-adjustment-reason-codes) for a complete list.
- **`claimInformation.serviceLines[].lineAdjustmentInformation.claimPaidDate`** (`string`) (required)
- **`claimInformation.serviceLines[].lineAdjustmentInformation.otherPayerPrimaryIdentifier`** (`string`) (required)
- **`claimInformation.serviceLines[].lineAdjustmentInformation.paidServiceUnitCount`** (`string`) (required)
- **`claimInformation.serviceLines[].lineAdjustmentInformation.procedureCode`** (`string`) (required)
- **`claimInformation.serviceLines[].lineAdjustmentInformation.procedureCodeDescription`** (`string`)
- **`claimInformation.serviceLines[].lineAdjustmentInformation.procedureModifiers`** (`array of strings`)
- **`claimInformation.serviceLines[].lineAdjustmentInformation.remainingPatientLiability`** (`string`) (required)
- **`claimInformation.serviceLines[].lineAdjustmentInformation.serviceIdQualifier`** (`string`) (required): Code identifying the type of `procedureCode`. Can be set to `ER` - Jurisdiction Specific Procedure and Supply Codes, `HC` - Health Care Financing Administration Common Procedural Coding System (HCPCS) Codes, `HP` -  Health Insurance Prospective Payment System (HIPPS) Skilled Nursing Facility Rate Code, `IV` - Home Infusion EDI Coalition (HIEC) Product/Service Code, or `WK` - Advanced Billing Concepts (ABC) Codes. Note that ABC codes are deprecated and shouldn't be used in new claims. Visit [Claims code lists](https://www.stedi.com/docs/healthcare/claims-code-lists#product-or-service-id-qualifier-codes) for a complete list and usage guidelines.
  - Allowed values: `ER`, `HC`, `HP`, `IV`, `WK`
- **`claimInformation.serviceLines[].lineAdjustmentInformation.serviceLinePaidAmount`** (`string`) (required)
- **`claimInformation.serviceLines[].lineItemControlNumber`** (`string`): A unique identifier for this service line within the claim. It appears in the 835 (ERA) response as `lineItemControlNumber`, allowing you to correlate ERAs to the specific service lines from the original claim. If you don't set this property, Stedi uses a random ULID. Stedi returns service line identifiers in the `claimReference.serviceLines[].lineItemControlNumber` object of the synchronous API response.
- **`claimInformation.serviceLines[].lineNoteText`** (`string`): Another way to provide additional information for comment or special instruction - same as `thirdPartyOrganizationNotes`. Required when the TPO/repricer needs to forward additional information to the payer.
- **`claimInformation.serviceLines[].linePricingInformation`** (`object`)
- **`claimInformation.serviceLines[].linePricingInformation.apgAmount`** (`string`)
- **`claimInformation.serviceLines[].linePricingInformation.apgCode`** (`string`)
- **`claimInformation.serviceLines[].linePricingInformation.exceptionCode`** (`string`): Code specifying the exception reason for consideration of out-of-network health care services. Can be set to `1` - Non-Network Professional Provider in Network Hospital, `2` - Emergency Care, `3` - Services or Specialist not in Network, `4` - Out-of-Service Area, `5` - State Mandates, or `6` - Other.
  - Allowed values: `1`, `2`, `3`, `4`, `5`, `6`
- **`claimInformation.serviceLines[].linePricingInformation.flatRateAmount`** (`string`)
- **`claimInformation.serviceLines[].linePricingInformation.measurementUnitCode`** (`string`): The unit of measurement for the service. Can be set to `DA` - Days or `UN` - Unit.
  - Allowed values: `DA`, `UN`
- **`claimInformation.serviceLines[].linePricingInformation.policyComplianceCode`** (`string`)
  - Allowed values: `1`, `2`, `3`, `4`, `5`
- **`claimInformation.serviceLines[].linePricingInformation.pricingMethodologyCode`** (`string`) (required): Code indicating the pricing or repricing methodology. Visit [Claims code lists](https://www.stedi.com/docs/healthcare/claims-code-lists#pricing-methodology-codes-2) for a complete list.
  - Allowed values: `00`, `01`, `02`, `03`, `04`, `05`, `06`, `07`, `08`, `09`, `10`, `11`, `12`, `13`, `14`
- **`claimInformation.serviceLines[].linePricingInformation.rejectReasonCode`** (`string`)
  - Allowed values: `T1`, `T2`, `T3`, `T4`, `T5`, `T6`
- **`claimInformation.serviceLines[].linePricingInformation.repricedAllowedAmount`** (`string`) (required)
- **`claimInformation.serviceLines[].linePricingInformation.repricedApprovedHCPCSCode`** (`string`)
- **`claimInformation.serviceLines[].linePricingInformation.repricedApprovedServiceUnitCount`** (`string`)
- **`claimInformation.serviceLines[].linePricingInformation.repricedOrganizationIdentifier`** (`string`)
- **`claimInformation.serviceLines[].linePricingInformation.repricedSavingAmount`** (`string`)
- **`claimInformation.serviceLines[].linePricingInformation.serviceIdQualifier`** (`string`): Code identifying the type of `procedureCode`. If you set this property, you must also set `procedureCode`.

Can be set to `ER` - Jurisdiction Specific Procedure and Supply Codes, `HC` - Health Care Financing Administration Common Procedural Coding System (HCPCS) Codes, `HP` -  Health Insurance Prospective Payment System (HIPPS) Skilled Nursing Facility Rate Code, `IV` - Home Infusion EDI Coalition (HIEC) Product/Service Code, or `WK` - Advanced Billing Concepts (ABC) Codes. Note that ABC codes are deprecated and shouldn't be used in new claims. 

Visit [Claims code lists](https://www.stedi.com/docs/healthcare/claims-code-lists#product-or-service-id-qualifier-codes) for more information and usage instructions.
  - Allowed values: `ER`, `HC`, `HP`, `IV`, `WK`
- **`claimInformation.serviceLines[].lineRepricingInformation`** (`object`)
- **`claimInformation.serviceLines[].lineRepricingInformation.exceptionCode`** (`string`): Code specifying the exception reason for consideration of out-of-network health care services. Can be set to `1` - Non-Network Professional Provider in Network Hospital, `2` - Emergency Care, `3` - Services or Specialist not in Network, `4` - Out-of-Service Area, `5` - State Mandates, or `6` - Other.
  - Allowed values: `1`, `2`, `3`, `4`, `5`, `6`
- **`claimInformation.serviceLines[].lineRepricingInformation.policyComplianceCode`** (`string`)
  - Allowed values: `1`, `2`, `3`, `4`, `5`
- **`claimInformation.serviceLines[].lineRepricingInformation.pricingMethodologyCode`** (`string`) (required): Code indicating the pricing or repricing methodology. Visit [Claims code lists](https://www.stedi.com/docs/healthcare/claims-code-lists#pricing-methodology-codes-2) for a complete list.
  - Allowed values: `00`, `01`, `02`, `03`, `04`, `05`, `06`, `07`, `08`, `09`, `10`, `11`, `12`, `13`, `14`
- **`claimInformation.serviceLines[].lineRepricingInformation.productOrServiceIDQualifier`** (`string`): Code identifying the type of product or service ID used. Can be set to `ER` - Jurisdiction Specific Procedure and Supply Codes, `HC` - Health Care Financing Administration Common Procedural Coding System (HCPCS) Codes, `HP` - Health Insurance Prospective Payment System (HIPPS) Skilled Nursing Facility Rate Code, `IV` - Home Infusion EDI Coalition (HIEC) Product/Service Code, or `WK` - Advanced Billing Concepts (ABC) Codes. Note that ABC codes are deprecated and should not be used in new claims. If you provide this property, you must also provide `repricedApprovedHCPCSCode` Visit [Claims code lists](https://www.stedi.com/docs/healthcare/claims-code-lists#product-or-service-id-qualifier-codes) for a complete list and additional usage notes.
  - Allowed values: `ER`, `HC`, `HP`, `IV`, `WK`
- **`claimInformation.serviceLines[].lineRepricingInformation.rejectReasonCode`** (`string`)
  - Allowed values: `T1`, `T2`, `T3`, `T4`, `T5`, `T6`
- **`claimInformation.serviceLines[].lineRepricingInformation.repricedAllowedAmount`** (`string`) (required): The allowed amount, expressed as a decimal.
- **`claimInformation.serviceLines[].lineRepricingInformation.repricedApprovedAmount`** (`string`): The approved DRG amount, expressed as a decimal.
- **`claimInformation.serviceLines[].lineRepricingInformation.repricedApprovedDRGCode`** (`string`): The approved DRG code.
- **`claimInformation.serviceLines[].lineRepricingInformation.repricedApprovedHCPCSCode`** (`string`): The approved procedure code. If you provide this property, you must also include `productOrServiceIDQualifier`.
- **`claimInformation.serviceLines[].lineRepricingInformation.repricedApprovedRevenueCode`** (`string`): The approved revenue code.
- **`claimInformation.serviceLines[].lineRepricingInformation.repricedApprovedServiceUnitCode`** (`string`): The approved service units or inpatient days. Can be set to `DA` - Days or `UN` - Unit.
  - Allowed values: `DA`, `UN`
- **`claimInformation.serviceLines[].lineRepricingInformation.repricedApprovedServiceUnitCount`** (`string`): The approved service units or inpatient days. The maximum length for this field is 8 digits excluding the decimal. When a decimal is used, the maximum number of digits allowed to the right of the decimal is three.
- **`claimInformation.serviceLines[].lineRepricingInformation.repricedOrgIdentifier`** (`string`): The organization identification number.
- **`claimInformation.serviceLines[].lineRepricingInformation.repricedPerDiem`** (`string`): The pricing rate associated with per diem or flat rate pricing, expressed as a decimal.
- **`claimInformation.serviceLines[].lineRepricingInformation.repricedSavingAmount`** (`string`): The savings amount, expressed as a decimal.
- **`claimInformation.serviceLines[].lineSupplementInformation`** (`object`): Additional information or documentation required for the claim. This is where you can include information about [attachments](https://www.stedi.com/docs/healthcare/submit-claim-attachments), if applicable.
- **`claimInformation.serviceLines[].lineSupplementInformation.adjustedRepricedClaimRefNumber`** (`string`)
- **`claimInformation.serviceLines[].lineSupplementInformation.autoAccidentState`** (`string`)
- **`claimInformation.serviceLines[].lineSupplementInformation.claimControlNumber`** (`string`)
- **`claimInformation.serviceLines[].lineSupplementInformation.claimNumber`** (`string`)
- **`claimInformation.serviceLines[].lineSupplementInformation.demoProjectIdentifier`** (`string`)
- **`claimInformation.serviceLines[].lineSupplementInformation.investigationalDeviceExemptionNumber`** (`string`)
- **`claimInformation.serviceLines[].lineSupplementInformation.medicalRecordNumber`** (`string`)
- **`claimInformation.serviceLines[].lineSupplementInformation.peerReviewAuthorizationNumber`** (`string`)
- **`claimInformation.serviceLines[].lineSupplementInformation.priorAuthorizationNumber`** (`string`)
- **`claimInformation.serviceLines[].lineSupplementInformation.referralNumber`** (`string`)
- **`claimInformation.serviceLines[].lineSupplementInformation.reportInformation`** (`object`)
- **`claimInformation.serviceLines[].lineSupplementInformation.reportInformation.attachmentControlNumber`** (`string`): A control number assigned to the attachment. The payer uses this identifier to match the attachment to the claim.
  - You must include either this property or `attachmentId` in the request, but not both. Including both properties will result in an error.
  - We recommend using a ULID or UUID of up to 50 characters.
  - Stedi autogenerates a control number if you don't provide one.
- **`claimInformation.serviceLines[].lineSupplementInformation.reportInformation.attachmentId`** (`string`): The unique identifier for the attachment file you previously uploaded to Stedi. This value is returned in the `attachmentId` property of the [Create Claim Attachment (275) JSON](https://www.stedi.com/docs/healthcare/api-reference/post-healthcare-submit-claim-attachment) response. Stedi uses it to generate and submit the 275 claim attachment transaction to the payer.
  - This property is **required** when you're submitting attachment files through Stedi.
  - You must include either this property or `attachmentControlNumber` in the request, but not both. Including both properties will result in an error.
- **`claimInformation.serviceLines[].lineSupplementInformation.reportInformation.attachmentReportTypeCode`** (`string`) (required): Code indicating the title or contents of a document, report or supporting item. For example, `08` - Plan of Treatment or `CT` - Certification. Visit [Claims code lists](https://www.stedi.com/docs/healthcare/claims-code-lists#attachment-report-type-codes) for a complete list.
  - Allowed values: `03`, `04`, `05`, `06`, `07`, `08`, `09`, `10`, `11`, `13`, `15`, `21`, `A3`, `A4`, `AM`, `AS`, `B2`, `B3`, `B4`, `BR`, `BS`, `BT`, `CB`, `CK`, `CT`, `D2`, `DA`, `DB`, `DG`, `DJ`, `DS`, `EB`, `HC`, `HR`, `I5`, `IR`, `LA`, `M1`, `MT`, `NN`, `OB`, `OC`, `OD`, `OE`, `OX`, `OZ`, `P4`, `P5`, `PE`, `PN`, `PO`, `PQ`, `PY`, `PZ`, `RB`, `RR`, `RT`, `RX`, `SG`, `V5`, `XP`
- **`claimInformation.serviceLines[].lineSupplementInformation.reportInformation.attachmentTransmissionCode`** (`string`) (required): Code identifying the method by which the provider's report is attached. Can be set to `AA` - Available on Request at Provider Site, `BM` - By Mail, `EL` - Electronically Only, `EM` - E-Mail, `FT` - File Transfer, or `FX` - By Fax.
  - Allowed values: `AA`, `BM`, `EL`, `EM`, `FT`, `FX`
- **`claimInformation.serviceLines[].lineSupplementInformation.reportInformations`** (`array of InstitutionalReportInformation objects`): An array of report information for the claim. Use this when you need to submit multiple report information records. You can submit up to 10 objects in this array.

Required when you plan to submit [attachments](https://www.stedi.com/docs/healthcare/submit-claim-attachments) for the claim electronically through Stedi APIs or SFTP, when there is a paper attachment following this claim, or when the provider deems it necessary to identify that they have additional information at their office that is available upon request.
- **`claimInformation.serviceLines[].lineSupplementInformation.reportInformations[].attachmentControlNumber`** (`string`): A control number assigned to the attachment. The payer uses this identifier to match the attachment to the claim.
  - You must include either this property or `attachmentId` in the request, but not both. Including both properties will result in an error.
  - We recommend using a ULID or UUID of up to 50 characters.
  - Stedi autogenerates a control number if you don't provide one.
- **`claimInformation.serviceLines[].lineSupplementInformation.reportInformations[].attachmentId`** (`string`): The unique identifier for the attachment file you previously uploaded to Stedi. This value is returned in the `attachmentId` property of the [Create Claim Attachment (275) JSON](https://www.stedi.com/docs/healthcare/api-reference/post-healthcare-submit-claim-attachment) response. Stedi uses it to generate and submit the 275 claim attachment transaction to the payer.
  - This property is **required** when you're submitting attachment files through Stedi.
  - You must include either this property or `attachmentControlNumber` in the request, but not both. Including both properties will result in an error.
- **`claimInformation.serviceLines[].lineSupplementInformation.reportInformations[].attachmentReportTypeCode`** (`string`) (required): Code indicating the title or contents of a document, report or supporting item. For example, `08` - Plan of Treatment or `CT` - Certification. Visit [Claims code lists](https://www.stedi.com/docs/healthcare/claims-code-lists#attachment-report-type-codes) for a complete list.
  - Allowed values: `03`, `04`, `05`, `06`, `07`, `08`, `09`, `10`, `11`, `13`, `15`, `21`, `A3`, `A4`, `AM`, `AS`, `B2`, `B3`, `B4`, `BR`, `BS`, `BT`, `CB`, `CK`, `CT`, `D2`, `DA`, `DB`, `DG`, `DJ`, `DS`, `EB`, `HC`, `HR`, `I5`, `IR`, `LA`, `M1`, `MT`, `NN`, `OB`, `OC`, `OD`, `OE`, `OX`, `OZ`, `P4`, `P5`, `PE`, `PN`, `PO`, `PQ`, `PY`, `PZ`, `RB`, `RR`, `RT`, `RX`, `SG`, `V5`, `XP`
- **`claimInformation.serviceLines[].lineSupplementInformation.reportInformations[].attachmentTransmissionCode`** (`string`) (required): Code identifying the method by which the provider's report is attached. Can be set to `AA` - Available on Request at Provider Site, `BM` - By Mail, `EL` - Electronically Only, `EM` - E-Mail, `FT` - File Transfer, or `FX` - By Fax.
  - Allowed values: `AA`, `BM`, `EL`, `EM`, `FT`, `FX`
- **`claimInformation.serviceLines[].lineSupplementInformation.repricedClaimNumber`** (`string`)
- **`claimInformation.serviceLines[].lineSupplementInformation.serviceAuthorizationExceptionCode`** (`string`): Code indicating the type of service authorization exception. Visit [Claims code lists](https://www.stedi.com/docs/healthcare/claims-code-lists#service-authorization-exception-codes) for a complete list.
  - Allowed values: `1`, `2`, `3`, `4`, `5`, `6`, `7`
- **`claimInformation.serviceLines[].operatingPhysician`** (`object`)
- **`claimInformation.serviceLines[].operatingPhysician.firstName`** (`string`): The physician's first name.
- **`claimInformation.serviceLines[].operatingPhysician.identificationQualifierCode`** (`string`): The type of identifier used in `secondaryIdentifier`. Can be set to `0B` - State License Number, `1G` - Provider UPIN Number, `G2` - Provider Commercial Number, or `LU` - Location Number. Note that UPIN is deprecated and should not be used.
  - Allowed values: `0B`, `1G`, `G2`, `LU`
- **`claimInformation.serviceLines[].operatingPhysician.lastName`** (`string`) (required): The physician's last name.
- **`claimInformation.serviceLines[].operatingPhysician.middleName`** (`string`): The physician's middle name or initial.
- **`claimInformation.serviceLines[].operatingPhysician.npi`** (`string`): The individual [National Provider Identifier (NPI)](https://www.stedi.com/docs/healthcare/national-provider-identifier) assigned to the physician.
- **`claimInformation.serviceLines[].operatingPhysician.organizationName`** (`string`): The physician's business name.
- **`claimInformation.serviceLines[].operatingPhysician.secondaryIdentifier`** (`string`): The identifier specified in `identificationQualifierCode`.

You can only include one secondary identifier for the provider.
- **`claimInformation.serviceLines[].operatingPhysician.suffix`** (`string`): The physician's name suffix, such as Jr. or III.
- **`claimInformation.serviceLines[].otherOperatingPhysician`** (`object`)
- **`claimInformation.serviceLines[].otherOperatingPhysician.firstName`** (`string`): The physician's first name.
- **`claimInformation.serviceLines[].otherOperatingPhysician.identificationQualifierCode`** (`string`): The type of identifier used in `secondaryIdentifier`. Can be set to `0B` - State License Number, `1G` - Provider UPIN Number, `G2` - Provider Commercial Number, or `LU` - Location Number. Note that UPIN is deprecated and should not be used.
  - Allowed values: `0B`, `1G`, `G2`, `LU`
- **`claimInformation.serviceLines[].otherOperatingPhysician.lastName`** (`string`) (required): The physician's last name.
- **`claimInformation.serviceLines[].otherOperatingPhysician.middleName`** (`string`): The physician's middle name or initial.
- **`claimInformation.serviceLines[].otherOperatingPhysician.npi`** (`string`): The individual [National Provider Identifier (NPI)](https://www.stedi.com/docs/healthcare/national-provider-identifier) assigned to the physician.
- **`claimInformation.serviceLines[].otherOperatingPhysician.organizationName`** (`string`): The physician's business name.
- **`claimInformation.serviceLines[].otherOperatingPhysician.secondaryIdentifier`** (`string`): The identifier specified in `identificationQualifierCode`.

You can only include one secondary identifier for the provider.
- **`claimInformation.serviceLines[].otherOperatingPhysician.suffix`** (`string`): The physician's name suffix, such as Jr. or III.
- **`claimInformation.serviceLines[].referringProvider`** (`object`): Information about the provider who referred the patient for care.
- Include this object only when the referring provider is different than the provider listed in the `attending` object.
- This should be an individual, not an organization, and you should supply at least the provider's `lastName` and an identifier, which is typically the `npi`.
- **`claimInformation.serviceLines[].referringProvider.address`** (`object`)
- **`claimInformation.serviceLines[].referringProvider.address.address1`** (`string`) (required): The first line of the street address. This typically contains the building number and street name.
- **`claimInformation.serviceLines[].referringProvider.address.address2`** (`string`): The second line of the street address. This typically contains the apartment or suite number.
- **`claimInformation.serviceLines[].referringProvider.address.city`** (`string`) (required): The city name.
- **`claimInformation.serviceLines[].referringProvider.address.countryCode`** (`string`): Use the alpha-2 country codes from Part 1 of ISO 3166.
- **`claimInformation.serviceLines[].referringProvider.address.countrySubDivisionCode`** (`string`): Use the country subdivision codes from Part 2 of ISO 3166.
- **`claimInformation.serviceLines[].referringProvider.address.postalCode`** (`string`): The postal zone or zip code. For United States addresses, you must include the full nine-digit zip code with no separators, such as `100031502`. If you don't know the full zip code, you can find it using the [USPS ZIP Code Lookup](https://tools.usps.com/zip-code-lookup.htm) tool. Exclude punctuation and spaces.
- **`claimInformation.serviceLines[].referringProvider.address.state`** (`string`): The state or province code. Only required when the city is in the United States and Canada.
- **`claimInformation.serviceLines[].referringProvider.commercialNumber`** (`string`)
- **`claimInformation.serviceLines[].referringProvider.contactInformation`** (`object`)
- **`claimInformation.serviceLines[].referringProvider.contactInformation.email`** (`string`): The email address.
- **`claimInformation.serviceLines[].referringProvider.contactInformation.faxNumber`** (`string`): The fax number.
- **`claimInformation.serviceLines[].referringProvider.contactInformation.name`** (`string`) (required): The full name of the person or office.
- **`claimInformation.serviceLines[].referringProvider.contactInformation.phoneNumber`** (`string`): The phone number, formatted as AAABBBCCCC, where AAA represents the area code, BBB is the telephone number prefix, and CCCC is the telephone number. The phone number should only include the digits 0 to 9. Don't include separators, such as dashes, and don't include long distance access numbers, such as 1. For example, you would format the phone number 123-456-7890 as 1234567890.
- **`claimInformation.serviceLines[].referringProvider.contactInformation.validContact`** (`boolean`)
- **`claimInformation.serviceLines[].referringProvider.employerId`** (`string`)
- **`claimInformation.serviceLines[].referringProvider.firstName`** (`string`): The provider's first name.
- **`claimInformation.serviceLines[].referringProvider.lastName`** (`string`): The provider's last name.
- **`claimInformation.serviceLines[].referringProvider.locationNumber`** (`string`)
- **`claimInformation.serviceLines[].referringProvider.middleName`** (`string`): The provider's middle name or initial.
- **`claimInformation.serviceLines[].referringProvider.npi`** (`string`): The individual [National Provider Identifier (NPI)](https://www.stedi.com/docs/healthcare/national-provider-identifier) assigned to the provider.
- **`claimInformation.serviceLines[].referringProvider.organizationName`** (`string`): The provider's business name.
- **`claimInformation.serviceLines[].referringProvider.providerType`** (`string`): Defines the referring provider type.
  - Allowed values: `ReferringProvider`
- **`claimInformation.serviceLines[].referringProvider.providerUpinNumber`** (`string`)
- **`claimInformation.serviceLines[].referringProvider.referenceIdentification`** (`array of InstitutionalReferenceIdentification objects`): Additional identifiers for the provider. You can set `qualifier` to `2U` - Payer Identification Number.
- **`claimInformation.serviceLines[].referringProvider.referenceIdentification[].identifier`** (`string`) (required): The identifier specified in `qualifier`.
- **`claimInformation.serviceLines[].referringProvider.referenceIdentification[].qualifier`** (`string`) (required): The code qualifying the type of `identifier`.
- **`claimInformation.serviceLines[].referringProvider.secondaryIdentificationQualifierCode`** (`string`): The type of identifier used in `secondaryIdentifier`. Can be set to `0B` - State License Number, `1G` - Provider UPIN Number, or `G2` - Provider Commercial Number. Note that UPIN is deprecated and should not be used.
  - Allowed values: `0B`, `1G`, `G2`
- **`claimInformation.serviceLines[].referringProvider.secondaryIdentifier`** (`string`): The identifier specified in `secondaryIdentifierQualifierCode`.

You can only include one secondary identifier for the provider.
- **`claimInformation.serviceLines[].referringProvider.stateLicenseNumber`** (`string`)
- **`claimInformation.serviceLines[].referringProvider.suffix`** (`string`): The provider's suffix, such as Jr. or Sr.
- **`claimInformation.serviceLines[].referringProvider.taxonomyCode`** (`string`)
- **`claimInformation.serviceLines[].renderingProvider`** (`object`): Information about the provider who delivered the medical services or non-surgical procedures in this service line. This must be an individual, not an organization, and you must include the provider's `lastName` and an identifier, which is typically the `npi`. The provider's `firstName` is also required, if applicable.

Include this object when the following are both true:
    - The rendering provider for this service line is different than the provider listed in the `attending` and `rendering` objects for the entire claim.
    - State or federal regulatory requirements call for a combined claim. A combined claim includes both facility and professional components, such as a Medicaid clinic bill or a critical access hospital claim.
- **`claimInformation.serviceLines[].renderingProvider.address`** (`object`)
- **`claimInformation.serviceLines[].renderingProvider.address.address1`** (`string`) (required): The first line of the street address. This typically contains the building number and street name.
- **`claimInformation.serviceLines[].renderingProvider.address.address2`** (`string`): The second line of the street address. This typically contains the apartment or suite number.
- **`claimInformation.serviceLines[].renderingProvider.address.city`** (`string`) (required): The city name.
- **`claimInformation.serviceLines[].renderingProvider.address.countryCode`** (`string`): Use the alpha-2 country codes from Part 1 of ISO 3166.
- **`claimInformation.serviceLines[].renderingProvider.address.countrySubDivisionCode`** (`string`): Use the country subdivision codes from Part 2 of ISO 3166.
- **`claimInformation.serviceLines[].renderingProvider.address.postalCode`** (`string`): The postal zone or zip code. For United States addresses, you must include the full nine-digit zip code with no separators, such as `100031502`. If you don't know the full zip code, you can find it using the [USPS ZIP Code Lookup](https://tools.usps.com/zip-code-lookup.htm) tool. Exclude punctuation and spaces.
- **`claimInformation.serviceLines[].renderingProvider.address.state`** (`string`): The state or province code. Only required when the city is in the United States and Canada.
- **`claimInformation.serviceLines[].renderingProvider.commercialNumber`** (`string`)
- **`claimInformation.serviceLines[].renderingProvider.contactInformation`** (`object`)
- **`claimInformation.serviceLines[].renderingProvider.contactInformation.email`** (`string`): The email address.
- **`claimInformation.serviceLines[].renderingProvider.contactInformation.faxNumber`** (`string`): The fax number.
- **`claimInformation.serviceLines[].renderingProvider.contactInformation.name`** (`string`) (required): The full name of the person or office.
- **`claimInformation.serviceLines[].renderingProvider.contactInformation.phoneNumber`** (`string`): The phone number, formatted as AAABBBCCCC, where AAA represents the area code, BBB is the telephone number prefix, and CCCC is the telephone number. The phone number should only include the digits 0 to 9. Don't include separators, such as dashes, and don't include long distance access numbers, such as 1. For example, you would format the phone number 123-456-7890 as 1234567890.
- **`claimInformation.serviceLines[].renderingProvider.contactInformation.validContact`** (`boolean`)
- **`claimInformation.serviceLines[].renderingProvider.employerId`** (`string`)
- **`claimInformation.serviceLines[].renderingProvider.firstName`** (`string`): The provider's first name.
- **`claimInformation.serviceLines[].renderingProvider.lastName`** (`string`): The provider's last name.
- **`claimInformation.serviceLines[].renderingProvider.locationNumber`** (`string`)
- **`claimInformation.serviceLines[].renderingProvider.middleName`** (`string`): The provider's middle name or initial.
- **`claimInformation.serviceLines[].renderingProvider.npi`** (`string`): The individual [National Provider Identifier (NPI)](https://www.stedi.com/docs/healthcare/national-provider-identifier) assigned to the provider.
- **`claimInformation.serviceLines[].renderingProvider.organizationName`** (`string`): The provider's business name.
- **`claimInformation.serviceLines[].renderingProvider.providerType`** (`string`): Defines the rendering provider type.
  - Allowed values: `RenderingProvider`
- **`claimInformation.serviceLines[].renderingProvider.providerUpinNumber`** (`string`)
- **`claimInformation.serviceLines[].renderingProvider.referenceIdentification`** (`array of InstitutionalReferenceIdentification objects`): Additional identifiers for the provider. You can set `qualifier` to `2U` - Payer Identification Number.
- **`claimInformation.serviceLines[].renderingProvider.referenceIdentification[].identifier`** (`string`) (required): The identifier specified in `qualifier`.
- **`claimInformation.serviceLines[].renderingProvider.referenceIdentification[].qualifier`** (`string`) (required): The code qualifying the type of `identifier`.
- **`claimInformation.serviceLines[].renderingProvider.secondaryIdentificationQualifierCode`** (`string`): The type of identifier used in `secondaryIdentifier`. Can be set to `0B` - State License Number, `1G` - Provider UPIN Number, `G2` - Provider Commercial Number, or `LU` - Location Number. Note that UPIN is deprecated and should not be used.
  - Allowed values: `0B`, `1G`, `G2`, `LU`
- **`claimInformation.serviceLines[].renderingProvider.secondaryIdentifier`** (`string`): The identifier specified in `secondaryIdentifierQualifierCode`.

You can only include one secondary identifier for the provider.
- **`claimInformation.serviceLines[].renderingProvider.stateLicenseNumber`** (`string`)
- **`claimInformation.serviceLines[].renderingProvider.suffix`** (`string`): The provider's suffix, such as Jr. or Sr.
- **`claimInformation.serviceLines[].renderingProvider.taxonomyCode`** (`string`)
- **`claimInformation.serviceLines[].repricedLineItemReferenceNumber`** (`string`): Required when a repricing (pricing) organization needs to have an identifying number on the service line in their submission to their payer organization.
- **`claimInformation.serviceLines[].serviceDate`** (`string`): Either a single date of service or the beginning of a range of service dates. If a range is provided, the end date should be provided in `serviceDateEnd`. 

This property is required on outpatient service lines where a drug is not being billed and the Statement Covers Period is greater than one day. 

It's also required when a drug is being billed and the payer's adjudication is known to be impacted by the drug duration or the date the prescription was written. In cases where a drug is being billed on a service line, this property may be used to indicate the date the prescription was written (or otherwise communicated by the prescriber if not written). 

This property may also be used to indicate the beginning of the duration for which the drug supply will be used by the patient. The difference in dates, including both the begin and end dates, are the days supply of the drug. Example: 20000101-20000107 (1/1/00 to 1/7/00) is used for a 7 day supply where the first day of the drug used by the patient is 1/1/00. In the event a drug is administered on less than a daily basis (for example, every other day) the date range would include the entire period during which the drug was supplied, including the last day the drug was used. Example: 20000101-20000108 (1/1/00 to 1/8/00) is used for an 8 days supply where the prescription is written for Q48 (every 48 hours), four doses of the drug are dispensed and the first dose is used on 1/1/00.
- **`claimInformation.serviceLines[].serviceDateEnd`** (`string`): The end of a range of service dates. If you include this property, you must also include `serviceDate` to indicate the beginning of the range.
- **`claimInformation.serviceLines[].serviceLineDateInformation`** (`object`)
- **`claimInformation.serviceLines[].serviceLineDateInformation.beginServiceDate`** (`string`)
- **`claimInformation.serviceLines[].serviceLineDateInformation.endServiceDate`** (`string`)
- **`claimInformation.serviceLines[].serviceLineDateInformation.serviceDate`** (`string`)
- **`claimInformation.serviceLines[].serviceLineDateInformation.validDateInformation`** (`boolean`)
- **`claimInformation.serviceLines[].serviceLineReferenceInformation`** (`any`): Additional identifiers for the service line. We **strongly recommend** setting the `providerControlNumber` property for each service line within the claim.
- **`claimInformation.serviceLines[].serviceLineReferenceInformation (variant 1).providerControlNumber`** (`string`) (required): A unique identifier for this service line within the claim. It appears in the 835 (ERA) response as `lineItemControlNumber`, allowing you to correlate ERAs to the specific service lines from the original claim. We **strongly recommend** setting this property for every service line within the claim. We also recommend using a [ULID](https://github.com/ulid/spec) instead of a UUID because payers are only required to store up to 30 characters for this value.
- **`claimInformation.serviceLines[].serviceLineReferenceInformation (variant 2).repricedLineItemRefNumber`** (`string`) (required): Required when a repricing (pricing) organization needs to have an identifying number on the service line in their submission to their payer organization. Providers shouldn't complete this property.
- **`claimInformation.serviceLines[].serviceLineReferenceInformation (variant 3).adjustedRepricedLineItemRefNumber`** (`string`) (required): Required when a repricing (pricing) organization needs to have an identifying number on an adjusted service line in their submission to their payer organization. Providers shouldn't complete this property.
- **`claimInformation.serviceLines[].serviceLineSupplementalInformation`** (`object`)
- **`claimInformation.serviceLines[].serviceLineSupplementalInformation.attachmentControlNumber`** (`string`): A control number assigned to the attachment. The payer uses this identifier to match the attachment to the claim.
  - You must include either this property or `attachmentId` in the request, but not both. Including both properties will result in an error.
  - We recommend using a ULID or UUID of up to 50 characters.
  - Stedi autogenerates a control number if you don't provide one.
- **`claimInformation.serviceLines[].serviceLineSupplementalInformation.attachmentId`** (`string`): The unique identifier for the attachment file you previously uploaded to Stedi. This value is returned in the `attachmentId` property of the [Create Claim Attachment (275) JSON](https://www.stedi.com/docs/healthcare/api-reference/post-healthcare-submit-claim-attachment) response. Stedi uses it to generate and submit the 275 claim attachment transaction to the payer.
  - This property is **required** when you're submitting attachment files through Stedi.
  - You must include either this property or `attachmentControlNumber` in the request, but not both. Including both properties will result in an error.
- **`claimInformation.serviceLines[].serviceLineSupplementalInformation.attachmentReportTypeCode`** (`string`) (required): Code indicating the title or contents of a document, report or supporting item. For example, `08` - Plan of Treatment or `CT` - Certification. Visit [Claims code lists](https://www.stedi.com/docs/healthcare/claims-code-lists#attachment-report-type-codes) for a complete list.
  - Allowed values: `03`, `04`, `05`, `06`, `07`, `08`, `09`, `10`, `11`, `13`, `15`, `21`, `A3`, `A4`, `AM`, `AS`, `B2`, `B3`, `B4`, `BR`, `BS`, `BT`, `CB`, `CK`, `CT`, `D2`, `DA`, `DB`, `DG`, `DJ`, `DS`, `EB`, `HC`, `HR`, `I5`, `IR`, `LA`, `M1`, `MT`, `NN`, `OB`, `OC`, `OD`, `OE`, `OX`, `OZ`, `P4`, `P5`, `PE`, `PN`, `PO`, `PQ`, `PY`, `PZ`, `RB`, `RR`, `RT`, `RX`, `SG`, `V5`, `XP`
- **`claimInformation.serviceLines[].serviceLineSupplementalInformation.attachmentTransmissionCode`** (`string`) (required): Code indicating the method by which the attachment was transmitted. Can be set to `AA` - Available on Request at Provider Site, `BM` - By Mail, `EL` - Electronically Only, `EM` - E-Mail, `FT` - File Transfer, or `FX` - By Fax.
  - Allowed values: `AA`, `BM`, `EL`, `EM`, `FT`, `FX`
- **`claimInformation.serviceLines[].serviceLineSupplementalInformations`** (`array of InstitutionalServiceLineSupplementalInformation objects`): An array of supplemental information for the service line. This is the array version of the `serviceLineSupplementalInformation` property.

 This array is required when you plan to submit multiple [attachments](https://www.stedi.com/docs/healthcare/submit-claim-attachments) for the service line electronically through Stedi APIs or SFTP, when there is a paper attachment following this claim, or when the provider deems it necessary to identify additional information that is being held at the provider's office and is available upon request.

You can submit up to 10 objects in this array.
- **`claimInformation.serviceLines[].serviceLineSupplementalInformations[].attachmentControlNumber`** (`string`): A control number assigned to the attachment. The payer uses this identifier to match the attachment to the claim.
  - You must include either this property or `attachmentId` in the request, but not both. Including both properties will result in an error.
  - We recommend using a ULID or UUID of up to 50 characters.
  - Stedi autogenerates a control number if you don't provide one.
- **`claimInformation.serviceLines[].serviceLineSupplementalInformations[].attachmentId`** (`string`): The unique identifier for the attachment file you previously uploaded to Stedi. This value is returned in the `attachmentId` property of the [Create Claim Attachment (275) JSON](https://www.stedi.com/docs/healthcare/api-reference/post-healthcare-submit-claim-attachment) response. Stedi uses it to generate and submit the 275 claim attachment transaction to the payer.
  - This property is **required** when you're submitting attachment files through Stedi.
  - You must include either this property or `attachmentControlNumber` in the request, but not both. Including both properties will result in an error.
- **`claimInformation.serviceLines[].serviceLineSupplementalInformations[].attachmentReportTypeCode`** (`string`) (required): Code indicating the title or contents of a document, report or supporting item. For example, `08` - Plan of Treatment or `CT` - Certification. Visit [Claims code lists](https://www.stedi.com/docs/healthcare/claims-code-lists#attachment-report-type-codes) for a complete list.
  - Allowed values: `03`, `04`, `05`, `06`, `07`, `08`, `09`, `10`, `11`, `13`, `15`, `21`, `A3`, `A4`, `AM`, `AS`, `B2`, `B3`, `B4`, `BR`, `BS`, `BT`, `CB`, `CK`, `CT`, `D2`, `DA`, `DB`, `DG`, `DJ`, `DS`, `EB`, `HC`, `HR`, `I5`, `IR`, `LA`, `M1`, `MT`, `NN`, `OB`, `OC`, `OD`, `OE`, `OX`, `OZ`, `P4`, `P5`, `PE`, `PN`, `PO`, `PQ`, `PY`, `PZ`, `RB`, `RR`, `RT`, `RX`, `SG`, `V5`, `XP`
- **`claimInformation.serviceLines[].serviceLineSupplementalInformations[].attachmentTransmissionCode`** (`string`) (required): Code indicating the method by which the attachment was transmitted. Can be set to `AA` - Available on Request at Provider Site, `BM` - By Mail, `EL` - Electronically Only, `EM` - E-Mail, `FT` - File Transfer, or `FX` - By Fax.
  - Allowed values: `AA`, `BM`, `EL`, `EM`, `FT`, `FX`
- **`claimInformation.serviceLines[].serviceTaxAmount`** (`string`): The amount of the service tax or surcharge, formatted as a decimal. Required when a service tax or surcharge applies to the service being reported. The `claimInformation.serviceLines[].institutionalService.lineItemChargeAmount` must include the amount you report here.
- **`claimInformation.serviceLines[].thirdPartyOrganizationNotes`** (`string`): To provide additional information for comment or special instruction. Required when the TPO/repricer needs to forward additional information to the payer.
- **`claimInformation.signatureIndicator`** (`string`)
- **`claimInformation.treatmentCodeInformationList`** (`array of arrays`): Required when Home Health Agencies need to report Plan of Treatment information under various payer contracts. This is an array of arrays of strings. You can provide up to two string arrays, and each array can contain up to 12 strings. Each string represents one treatment code.
- **`claimInformation.valueInformationList`** (`array of arrays`): Required when there is a Value Code that applies to this claim. This is an array of arrays of objects. You can provide up to two object arrays, and each array can contain up to 12 objects.
- **`controlNumber`** (`string`): Not currently used.
- **`dependent`** (`object`)
- **`dependent.address`** (`object`)
- **`dependent.address.address1`** (`string`) (required): The first line of the street address. This typically contains the building number and street name.
- **`dependent.address.address2`** (`string`): The second line of the street address. This typically contains the apartment or suite number.
- **`dependent.address.city`** (`string`) (required): The city name.
- **`dependent.address.countryCode`** (`string`): Use the alpha-2 country codes from Part 1 of ISO 3166.
- **`dependent.address.countrySubDivisionCode`** (`string`): Use the country subdivision codes from Part 2 of ISO 3166.
- **`dependent.address.postalCode`** (`string`): The postal zone or zip code. For United States addresses, you must include the full nine-digit zip code with no separators, such as `100031502`. If you don't know the full zip code, you can find it using the [USPS ZIP Code Lookup](https://tools.usps.com/zip-code-lookup.htm) tool. Exclude punctuation and spaces.
- **`dependent.address.state`** (`string`): The state or province code. Only required when the city is in the United States and Canada.
- **`dependent.dateOfBirth`** (`string`) (required): The patient's date of birth.
- **`dependent.firstName`** (`string`) (required): The patient's first name.
- **`dependent.gender`** (`string`) (required)
  - Allowed values: `M`, `F`, `U`
- **`dependent.lastName`** (`string`) (required): The patient's last name. **Don't** include the patient's name suffix, such as Jr. or III. Use the designated `suffix` property instead.
- **`dependent.middleName`** (`string`): The patient's middle name or initial.
- **`dependent.relationshipToSubscriberCode`** (`string`) (required): Identifies the relationship of the patient to the subscriber. Can be set to `01` - Spouse, `19` - Child, `20` - Employee, `21` - Unknown, `39` - Organ Donor, `40` - Cadaver Donor, `53` - Life Partner, or `G8` - Other Relationship.
  - Allowed values: `01`, `19`, `20`, `21`, `39`, `40`, `53`, `G8`
- **`dependent.ssn`** (`string`): The patient's Social Security Number. Only used for Property and Casualty claims.
- **`dependent.suffix`** (`string`): The patient's name suffix, such as Jr. or III. Only include the patient's personal name suffix - **don't** include professional or academic titles, such as M.D. or MBA.
- **`operatingPhysician`** (`object`)
- **`operatingPhysician.firstName`** (`string`): The physician's first name.
- **`operatingPhysician.identificationQualifierCode`** (`string`): The type of identifier used in `secondaryIdentifier`. Can be set to `0B` - State License Number, `1G` - Provider UPIN Number, `G2` - Provider Commercial Number, or `LU` - Location Number. Note that UPIN is deprecated and should not be used.
  - Allowed values: `0B`, `1G`, `G2`, `LU`
- **`operatingPhysician.lastName`** (`string`) (required): The physician's last name.
- **`operatingPhysician.middleName`** (`string`): The physician's middle name or initial.
- **`operatingPhysician.npi`** (`string`): The individual [National Provider Identifier (NPI)](https://www.stedi.com/docs/healthcare/national-provider-identifier) assigned to the physician.
- **`operatingPhysician.organizationName`** (`string`): The physician's business name.
- **`operatingPhysician.secondaryIdentifier`** (`string`): The identifier specified in `identificationQualifierCode`.

You can only include one secondary identifier for the provider.
- **`operatingPhysician.suffix`** (`string`): The physician's name suffix, such as Jr. or III.
- **`otherOperatingPhysician`** (`object`)
- **`otherOperatingPhysician.firstName`** (`string`): The physician's first name.
- **`otherOperatingPhysician.identificationQualifierCode`** (`string`): The type of identifier used in `secondaryIdentifier`. Can be set to `0B` - State License Number, `1G` - Provider UPIN Number, `G2` - Provider Commercial Number, or `LU` - Location Number. Note that UPIN is deprecated and should not be used.
  - Allowed values: `0B`, `1G`, `G2`, `LU`
- **`otherOperatingPhysician.lastName`** (`string`) (required): The physician's last name.
- **`otherOperatingPhysician.middleName`** (`string`): The physician's middle name or initial.
- **`otherOperatingPhysician.npi`** (`string`): The individual [National Provider Identifier (NPI)](https://www.stedi.com/docs/healthcare/national-provider-identifier) assigned to the physician.
- **`otherOperatingPhysician.organizationName`** (`string`): The physician's business name.
- **`otherOperatingPhysician.secondaryIdentifier`** (`string`): The identifier specified in `identificationQualifierCode`.

You can only include one secondary identifier for the provider.
- **`otherOperatingPhysician.suffix`** (`string`): The physician's name suffix, such as Jr. or III.
- **`payerAddress`** (`object`)
- **`payerAddress.address1`** (`string`) (required): The first line of the street address. This typically contains the building number and street name.
- **`payerAddress.address2`** (`string`): The second line of the street address. This typically contains the apartment or suite number.
- **`payerAddress.city`** (`string`) (required): The city name.
- **`payerAddress.countryCode`** (`string`): Use the alpha-2 country codes from Part 1 of ISO 3166.
- **`payerAddress.countrySubDivisionCode`** (`string`): Use the country subdivision codes from Part 2 of ISO 3166.
- **`payerAddress.postalCode`** (`string`): The postal zone or zip code. For United States addresses, you must include the full nine-digit zip code with no separators, such as `100031502`. If you don't know the full zip code, you can find it using the [USPS ZIP Code Lookup](https://tools.usps.com/zip-code-lookup.htm) tool. Exclude punctuation and spaces.
- **`payerAddress.state`** (`string`): The state or province code. Only required when the city is in the United States and Canada.
- **`providers`** (`array of InstitutionalProvidersObject objects`): Another way to send information for each provider relevant to the claim. This object overwrites the information you send in the `billing`, `referring`, `rendering`, and `attending` objects. Note that your request **must** include information about the billing provider either here or within the `billing` object.
- **`providers[].address`** (`object`)
- **`providers[].address.address1`** (`string`) (required): The first line of the street address. This typically contains the building number and street name.
- **`providers[].address.address2`** (`string`): The second line of the street address. This typically contains the apartment or suite number.
- **`providers[].address.city`** (`string`) (required): The city name.
- **`providers[].address.countryCode`** (`string`): Use the alpha-2 country codes from Part 1 of ISO 3166.
- **`providers[].address.countrySubDivisionCode`** (`string`): Use the country subdivision codes from Part 2 of ISO 3166.
- **`providers[].address.postalCode`** (`string`): The postal zone or zip code. For United States addresses, you must include the full nine-digit zip code with no separators, such as `100031502`. If you don't know the full zip code, you can find it using the [USPS ZIP Code Lookup](https://tools.usps.com/zip-code-lookup.htm) tool. Exclude punctuation and spaces.
- **`providers[].address.state`** (`string`): The state or province code. Only required when the city is in the United States and Canada.
- **`providers[].contactInformation`** (`object`)
- **`providers[].contactInformation.email`** (`string`): The email address.
- **`providers[].contactInformation.faxNumber`** (`string`): The fax number.
- **`providers[].contactInformation.name`** (`string`) (required): The full name of the person or office.
- **`providers[].contactInformation.phoneNumber`** (`string`): The phone number, formatted as AAABBBCCCC, where AAA represents the area code, BBB is the telephone number prefix, and CCCC is the telephone number. The phone number should only include the digits 0 to 9. Don't include separators, such as dashes, and don't include long distance access numbers, such as 1. For example, you would format the phone number 123-456-7890 as 1234567890.
- **`providers[].contactInformation.validContact`** (`boolean`)
- **`providers[].employerId`** (`string`): The provider's employer ID, also known as an EIN or TIN. Must be a string of exactly nine numbers with no separators. This is **required** for the billing provider, and doesn’t apply to other provider types.
- **`providers[].firstName`** (`string`): The provider's first name.
- **`providers[].lastName`** (`string`): The provider's last name.
- **`providers[].middleName`** (`string`): The provider's middle name or initial.
- **`providers[].npi`** (`string`): The [National Provider Identifier (NPI)](https://www.stedi.com/docs/healthcare/national-provider-identifier) of the provider. Note that this is **required** for billing providers that have an NPI assigned.
- **`providers[].organizationName`** (`string`): The provider's business name, when the provider is not an individual.
- **`providers[].providerType`** (`string`) (required)
  - Allowed values: `BillingProvider`, `AttendingProvider`, `ReferringProvider`, `RenderingProvider`
- **`providers[].secondaryIdentificationQualifierCode`** (`string`): The type of identifier used in `secondaryIdentifier`. Can be set to `0B` - State License Number, `1G` - Provider UPIN Number, `G2` - Provider Commercial Number, or `LU` - Location Number. Note that UPIN is deprecated and should not be used.
  - Allowed values: `0B`, `1G`, `G2`, `LU`
- **`providers[].secondaryIdentifier`** (`string`): The identifier referenced by `secondaryIdentificationQualifierCode`. For example, if `secondaryIdentificationQualifierCode` is set to `0B`, this property should be the provider's state license number.

You can only include one secondary identifier for the provider.
- **`providers[].suffix`** (`string`): The provider's name suffix, such as Jr. or III.
- **`providers[].taxonomyCode`** (`string`): The provider's [taxnonomy code](https://www.cms.gov/medicare/enrollment-renewal/providers-suppliers/health-care-taxonomy), a unique 10-character code that designates their classification and specialization. Only applies to the attending provider.
- **`receiver`** (`object`) (required): The entity responsible for the payment of the claim, such as an insurance company or government agency.
- **`receiver.organizationName`** (`string`) (required): The business name of the payer receiving the claim, such as Aetna or Cigna.
- **`receiver.receiverId`** (`string`): Set to `PAPER` when you want Stedi to print this claim and mail it to the payer. Omit otherwise. Visit [Submit paper claims](https://www.stedi.com/docs/healthcare/submit-paper-claims) for details.
- **`receiver.taxId`** (`string`): The receiver's Electronic Transmitter Identification Number (ETIN), as assigned by the payer. This may be the same as the payer's TIN, but it can also be another unique identifier. We **strongly recommend** including this property in your request.
- **`referring`** (`object`): Information about the provider who referred the patient for care.
- Include this object only when the referring provider is different than the provider listed in the `attending` object.
- Use this object for providers that apply to the entire claim.
- This should be an individual, not an organization, and you should supply at least the provider's `lastName` and an identifier, which is typically the `npi`.
- **`referring.address`** (`object`)
- **`referring.address.address1`** (`string`) (required): The first line of the street address. This typically contains the building number and street name.
- **`referring.address.address2`** (`string`): The second line of the street address. This typically contains the apartment or suite number.
- **`referring.address.city`** (`string`) (required): The city name.
- **`referring.address.countryCode`** (`string`): Use the alpha-2 country codes from Part 1 of ISO 3166.
- **`referring.address.countrySubDivisionCode`** (`string`): Use the country subdivision codes from Part 2 of ISO 3166.
- **`referring.address.postalCode`** (`string`): The postal zone or zip code. For United States addresses, you must include the full nine-digit zip code with no separators, such as `100031502`. If you don't know the full zip code, you can find it using the [USPS ZIP Code Lookup](https://tools.usps.com/zip-code-lookup.htm) tool. Exclude punctuation and spaces.
- **`referring.address.state`** (`string`): The state or province code. Only required when the city is in the United States and Canada.
- **`referring.commercialNumber`** (`string`)
- **`referring.contactInformation`** (`object`)
- **`referring.contactInformation.email`** (`string`): The email address.
- **`referring.contactInformation.faxNumber`** (`string`): The fax number.
- **`referring.contactInformation.name`** (`string`) (required): The full name of the person or office.
- **`referring.contactInformation.phoneNumber`** (`string`): The phone number, formatted as AAABBBCCCC, where AAA represents the area code, BBB is the telephone number prefix, and CCCC is the telephone number. The phone number should only include the digits 0 to 9. Don't include separators, such as dashes, and don't include long distance access numbers, such as 1. For example, you would format the phone number 123-456-7890 as 1234567890.
- **`referring.contactInformation.validContact`** (`boolean`)
- **`referring.employerId`** (`string`)
- **`referring.firstName`** (`string`): The provider's first name.
- **`referring.lastName`** (`string`) (required): The provider's last name.
- **`referring.locationNumber`** (`string`)
- **`referring.middleName`** (`string`): The provider's middle name or initial.
- **`referring.npi`** (`string`): The individual [National Provider Identifier (NPI)](https://www.stedi.com/docs/healthcare/national-provider-identifier) assigned to the provider.
- **`referring.organizationName`** (`string`): The provider's business name.
- **`referring.providerType`** (`string`): Defines the referring provider type.
  - Allowed values: `ReferringProvider`
- **`referring.providerUpinNumber`** (`string`)
- **`referring.secondaryIdentificationQualifierCode`** (`string`): The type of identifier used in `secondaryIdentifier`. Can be set to `0B` - State License Number, `1G` - Provider UPIN Number, or `G2` - Provider Commercial Number. Note that UPIN is deprecated and should not be used.
  - Allowed values: `0B`, `1G`, `G2`
- **`referring.secondaryIdentifier`** (`string`): The identifier specified in `secondaryIdentifierQualifierCode`.

You can only include one secondary identifier for the provider.
- **`referring.stateLicenseNumber`** (`string`)
- **`referring.suffix`** (`string`): The provider's name suffix, such as Jr. or III.
- **`referring.taxonomyCode`** (`string`)
- **`rendering`** (`object`): Information about the provider who delivered the medical services or non-surgical procedures listed in the claim. This must be an individual, not an organization, and you must supply at least the provider's `lastName` and an identifier, which is typically the `npi`. The provider's `firstName` is also required, if applicable.

Include this object when all of the following are true:
- The rendering provider is different than the provider listed in the `attending` object.
- The provider applies to the entire claim or to at least one service line. For example, if a claim had two service lines with two different rendering providers, you would include the provider for the first service line here and leave the `claimInformation.serviceLines[].renderingProvider` object for that service line blank. Then, you would specify the second provider in the appropriate service line's `claimInformation.serviceLines[].renderingProvider` object.
- State or federal regulatory requirements call for a combined claim. A combined claim includes both facility and professional components, such as a Medicaid clinic bill or a critical access hospital claim.
- **`rendering.address`** (`object`)
- **`rendering.address.address1`** (`string`) (required): The first line of the street address. This typically contains the building number and street name.
- **`rendering.address.address2`** (`string`): The second line of the street address. This typically contains the apartment or suite number.
- **`rendering.address.city`** (`string`) (required): The city name.
- **`rendering.address.countryCode`** (`string`): Use the alpha-2 country codes from Part 1 of ISO 3166.
- **`rendering.address.countrySubDivisionCode`** (`string`): Use the country subdivision codes from Part 2 of ISO 3166.
- **`rendering.address.postalCode`** (`string`): The postal zone or zip code. For United States addresses, you must include the full nine-digit zip code with no separators, such as `100031502`. If you don't know the full zip code, you can find it using the [USPS ZIP Code Lookup](https://tools.usps.com/zip-code-lookup.htm) tool. Exclude punctuation and spaces.
- **`rendering.address.state`** (`string`): The state or province code. Only required when the city is in the United States and Canada.
- **`rendering.commercialNumber`** (`string`): The provider's commercial number.
- **`rendering.contactInformation`** (`object`)
- **`rendering.contactInformation.email`** (`string`): The email address.
- **`rendering.contactInformation.faxNumber`** (`string`): The fax number.
- **`rendering.contactInformation.name`** (`string`) (required): The full name of the person or office.
- **`rendering.contactInformation.phoneNumber`** (`string`): The phone number, formatted as AAABBBCCCC, where AAA represents the area code, BBB is the telephone number prefix, and CCCC is the telephone number. The phone number should only include the digits 0 to 9. Don't include separators, such as dashes, and don't include long distance access numbers, such as 1. For example, you would format the phone number 123-456-7890 as 1234567890.
- **`rendering.contactInformation.validContact`** (`boolean`)
- **`rendering.employerId`** (`string`)
- **`rendering.firstName`** (`string`): The provider's first name.
- **`rendering.lastName`** (`string`) (required): The provider's last name.
- **`rendering.locationNumber`** (`string`): The provider's location number.
- **`rendering.middleName`** (`string`): The provider's middle name or initial.
- **`rendering.npi`** (`string`): The individual [National Provider Identifier (NPI)](https://www.stedi.com/docs/healthcare/national-provider-identifier) assigned to the provider.
- **`rendering.organizationName`** (`string`): The provider's business name.
- **`rendering.providerType`** (`string`): This field is now automatically populated and it only remains for backwards compatibility.
- **`rendering.providerUpinNumber`** (`string`)
- **`rendering.secondaryIdentificationQualifierCode`** (`string`): The type of identifier used in `secondaryIdentifier`. Can be set to `0B` - State License Number, `1G` - Provider UPIN Number, `G2` - Provider Commercial Number, or `LU` - Location Number. Note that UPIN is deprecated and should not be used.
  - Allowed values: `0B`, `1G`, `G2`, `LU`
- **`rendering.secondaryIdentifier`** (`string`): The identifier specified in the `secondaryIdentificationQualifierCode`.

You can only include one secondary identifier for the provider.
- **`rendering.stateLicenseNumber`** (`string`): The provider's state license number. This is assigned directly by a payer in order to identify the provider in their system. This is not commonly used.
- **`rendering.suffix`** (`string`): The provider's name suffix, such as Jr. or III.
- **`rendering.taxonomyCode`** (`string`)
- **`submitter`** (`object`) (required): The entity submitting the healthcare claim. This is an organization, such as a hospital or other treatment center.
- **`submitter.contactInformation`** (`object`) (required)
- **`submitter.contactInformation.email`** (`string`): The email address.
- **`submitter.contactInformation.faxNumber`** (`string`): The fax number.
- **`submitter.contactInformation.name`** (`string`): The full name of the person or office.
- **`submitter.contactInformation.phoneNumber`** (`string`): The phone number, formatted as AAABBBCCCC, where AAA represents the area code, BBB is the telephone number prefix, and CCCC is the telephone number. The phone number should only include the digits 0 to 9. Don't include separators, such as dashes, and don't include long distance access numbers, such as 1. For example, you would format the phone number 123-456-7890 as 1234567890.
- **`submitter.contactInformation.validContact`** (`boolean`)
- **`submitter.organizationName`** (`string`) (required): The business name of the institution submitting the claim.
- **`submitter.taxId`** (`string`) (required): The submitter's Electronic Transmitter Identification Number (ETIN), **as assigned by the payer**. For some payers, this may be the same as the submitter's NPI, EIN/TIN, but it can also be another unique identifier. Payers can refer to this identifier as the Provider Number, Submitter ID, Submitter Identifier, Submitter Primary Number, Sender Code, Certified Contracted Provider ID, and other names.
- **`subscriber`** (`object`) (required): The person or entity who is the primary policyholder for the health plan _or_ a dependent with their own member ID.
- When a dependent has a unique, payer-assigned member ID, treat them as the subscriber for the claim submission - include their information here and omit the `dependent` object from the request.
- You must set the `dateOfBirth` and `gender` properties when the subscriber is the patient. Stedi determines that the subscriber is the patient when the `dependent` object is not included in the request.
- If either `dateOfBirth` or `gender` is set, you must include both properties. You can either include both properties or neither within a single request.
- You must include `address` in this object when the patient is the subscriber. If the patient is a dependent, include address information in the `dependent` object instead.
- **`subscriber.address`** (`object`)
- **`subscriber.address.address1`** (`string`) (required): The first line of the street address. This typically contains the building number and street name.
- **`subscriber.address.address2`** (`string`): The second line of the street address. This typically contains the apartment or suite number.
- **`subscriber.address.city`** (`string`) (required): The city name.
- **`subscriber.address.countryCode`** (`string`): Use the alpha-2 country codes from Part 1 of ISO 3166.
- **`subscriber.address.countrySubDivisionCode`** (`string`): Use the country subdivision codes from Part 2 of ISO 3166.
- **`subscriber.address.postalCode`** (`string`): The postal zone or zip code. For United States addresses, you must include the full nine-digit zip code with no separators, such as `100031502`. If you don't know the full zip code, you can find it using the [USPS ZIP Code Lookup](https://tools.usps.com/zip-code-lookup.htm) tool. Exclude punctuation and spaces.
- **`subscriber.address.state`** (`string`): The state or province code. Only required when the city is in the United States and Canada.
- **`subscriber.dateOfBirth`** (`string`): The subscriber's date of birth, formatted as `YYYYMMDD`.
- **`subscriber.firstName`** (`string`): The subscriber's first name. This property is **recommended** when the subscriber is an individual. Omit when the subscriber is an organization. Some payers reject requests without the `firstName` property.
- **`subscriber.gender`** (`string`)
  - Allowed values: `M`, `F`, `U`
- **`subscriber.groupNumber`** (`string`): The subscriber's health plan group number.
- **`subscriber.lastName`** (`string`): The subscriber's last name. This property is **required** if the subscriber is an individual. Omit when the subscriber is an organization.

 **Don't** include the subscriber's name suffix, such as Jr. or III. Use the designated `suffix` property instead.
- **`subscriber.memberId`** (`string`): The member ID for the subscriber's insurance policy.
- **`subscriber.middleName`** (`string`): The subscriber's middle name or initial.
- **`subscriber.organizationName`** (`string`): The business name of the entity submitting the claim. This is **required** when the subscriber is an organization.

 When the subscriber is an organization, you should identify the patient in the `dependent` object.
- **`subscriber.paymentResponsibilityLevelCode`** (`string`) (required): The payer's level of responsibility for paying this claim. Can be set to `A` - Payer Responsibility Four, `B` - Payer Responsibility Five, `C` - Payer Responsibility Six, `D` - Payer Responsibility Seven, `E` - Payer Responsibility Eight, `F` - Payer Responsibility Nine, `G` - Payer Responsibility Ten, `H` - Payer Responsibility Eleven, `P` - Primary, `S` - Secondary, `T` Tertiary, or `U` - Unknown (only use in payer-to-payer COB claims).
  - Allowed values: `A`, `B`, `C`, `D`, `E`, `F`, `G`, `H`, `P`, `S`, `T`, `U`
- **`subscriber.policyNumber`** (`string`): Deprecated.
- **`subscriber.ssn`** (`string`): The subscriber's Social Security Number. This must be a string of exactly nine numbers with no separators. For example, `123456789`.
- **`subscriber.standardHealthId`** (`string`): Deprecated. Use the `memberId` property instead.
- **`subscriber.suffix`** (`string`): The subscriber's name suffix, such as Jr. or III. Only include the subscriber's personal name suffix - **don't** include professional or academic titles, such as M.D. or MBA.
- **`tradingPartnerName`** (`string`): This is the payer's business name, like Cigna or Aetna.
- **`tradingPartnerSecondaryIdentifiers`** (`object`): Secondary identifiers for the payer. You can include up to three properties in this object.
- **`tradingPartnerSecondaryIdentifiers.claimOfficeNumber`** (`string`): Claim Office Number.
- **`tradingPartnerSecondaryIdentifiers.employerIdentificationNumber`** (`string`): Employer Identification Number. This must be a string of exactly nine numbers with no separators.
- **`tradingPartnerSecondaryIdentifiers.naic`** (`string`): National Association of Insurance Commissioners (NAIC) Code.
- **`tradingPartnerSecondaryIdentifiers.payerIdentificationNumber`** (`string`): Payer Identification Number.
This shape is deprecated since 1/9/25.
- **`tradingPartnerServiceId`** (`string`) (required): The payer ID. Visit the [Payer Network](https://www.stedi.com/healthcare/network) for a complete list.
 - You can send requests using the primary payer ID, the Stedi payer ID, or any alias listed in the payer record.
 - You must include leading `0` characters - payer IDs are alphanumeric strings and must be treated as complete strings, not integers. For example, use `00540` for SISCO, not `540`.
- **`usageIndicator`** (`string`): Whether you want to send a test or production claim. This property also allows you to filter claims in the Stedi portal by production or test data. By default, this property is set to `P` for production data. Use `T` to designate a claim as test data.

**Example:**

```json
{
  "claimInformation": {
    "benefitsAssignmentCertificationIndicator": "Y",
    "claimChargeAmount": "500.00",
    "claimCodeInformation": {
      "admissionSourceCode": "9",
      "admissionTypeCode": "3",
      "patientStatusCode": "30"
    },
    "claimDateInformation": {
      "admissionDateAndHour": "202409091000",
      "statementBeginDate": "20241015",
      "statementEndDate": "20241015"
    },
    "claimFilingCode": "ZZ",
    "claimFrequencyCode": "0",
    "patientControlNumber": "<YOUR-CLAIM-ID>",
    "placeOfServiceCode": "11",
    "planParticipationCode": "C",
    "principalDiagnosis": {
      "principalDiagnosisCode": "R45851",
      "qualifierCode": "ABK"
    },
    "releaseInformationCode": "Y",
    "serviceLines": [
      {
        "assignedNumber": "0",
        "institutionalService": {
          "lineItemChargeAmount": "500.00",
          "measurementUnit": "UN",
          "procedureCode": "H0001",
          "procedureIdentifier": "HC",
          "serviceLineRevenueCode": "0800",
          "serviceUnitCount": "1"
        },
        "lineItemControlNumber": "111222333",
        "serviceDate": "20241015",
        "serviceDateEnd": "20241015"
      }
    ]
  },
  "controlNumber": "123456789",
  "providers": [
    {
      "address": {
        "address1": "123 Mulberry Street",
        "city": "Seattle",
        "postalCode": "111135272",
        "state": "WA"
      },
      "contactInformation": {
        "name": "Test Facility",
        "phoneNumber": "2065551234"
      },
      "employerId": "123456789",
      "npi": "1999999976",
      "organizationName": "Test Facility",
      "providerType": "BillingProvider"
    },
    {
      "contactInformation": {
        "name": "name"
      },
      "firstName": "Doctor",
      "lastName": "Provider",
      "npi": "1999999976",
      "providerType": "AttendingProvider"
    }
  ],
  "receiver": {
    "organizationName": "UnitedHealthcare"
  },
  "submitter": {
    "contactInformation": {
      "name": "Test Facility",
      "phoneNumber": "2225551234"
    },
    "organizationName": "Test Facility",
    "taxId": "123456789"
  },
  "subscriber": {
    "address": {
      "address1": "1234 Some St",
      "city": "Buckeye",
      "postalCode": "85326",
      "state": "AZ"
    },
    "dateOfBirth": "19000101",
    "firstName": "JANE",
    "gender": "F",
    "lastName": "DOE",
    "memberId": "98765",
    "paymentResponsibilityLevelCode": "P"
  },
  "tradingPartnerName": "UnitedHealthcare",
  "tradingPartnerServiceId": "87726",
  "usageIndicator": "T"
}
```

### Responses

#### 200

InstitutionalClaimsSubmission 200 response

**Schema:** `InstitutionalClaimsSubmissionResponseContent`

**Properties:**

- **`claimReference`** (`object`): Information about the claim.
- **`claimReference.claimType`** (`string`): The type of claim, always `INST`.
- **`claimReference.correlationId`** (`string`): An identifier Stedi assigns to the claim.
- **`claimReference.customerClaimNumber`** (`string`): A tracking number that Stedi assigns to the claim.
- **`claimReference.formatVersion`** (`string`): The X12 EDI version Stedi used to generate the claim for the payer. This is always `5010`.
- **`claimReference.patientControlNumber`** (`string`): The `patientControlNumber` from the original request, if supplied. This is a unique identifier that you assign to the claim so you can track the claim and correlate it with responses from the payer.
- **`claimReference.payerId`** (`string`): The payer's ID. This is the same as the `tradingPartnerServiceId`.
- **`claimReference.rhClaimNumber`** (`string`): A tracking number Stedi assigns to the claim. This is the same as the `correlationId`.
- **`claimReference.serviceLines`** (`array of ServiceLineResponseIdentifier objects`): Contains a unique identifier for each service line, listed in the order the service lines were included in the claim. You can use these identifiers to correlate payer responses to specific service lines.
- **`claimReference.serviceLines[].lineItemControlNumber`** (`string`): A unique identifier for the service line, matching the value provided for the `claimInformation.serviceLines[].providerControlNumber` property in the claim submission. If you didn't provide a value for `providerControlNumber`, this property contains a randomly generated a ULID for the service line.
- **`claimReference.submitterId`** (`string`): Stedi's ID for the entity that submitted the claim.
- **`claimReference.timeOfResponse`** (`string`): A timestamp for Stedi's response to the claim submission.
- **`controlNumber`** (`string`): An identifier for the transaction.
- **`editResponses`** (`array of EditResponse objects`): Currently not used.
- **`editResponses[].allowOverride`** (`string`)
- **`editResponses[].badData`** (`string`)
- **`editResponses[].claimCorePath`** (`string`)
- **`editResponses[].editActivity`** (`string`)
- **`editResponses[].editName`** (`string`)
- **`editResponses[].element`** (`string`)
- **`editResponses[].errorDescription`** (`string`)
- **`editResponses[].fieldIndex`** (`string`)
- **`editResponses[].loop`** (`string`)
- **`editResponses[].phaseID`** (`string`)
- **`editResponses[].qualifierCode`** (`string`)
- **`editResponses[].referenceID`** (`string`)
- **`editResponses[].segment`** (`string`)
- **`editStatus`** (`string`): This shape is deprecated: Currently not used.
- **`errors`** (`array of InstitutionalError objects`): Errors resulting from claim edits. You must review and fix these errors before resubmitting.
- **`errors[].code`** (`string`): The error code.
- **`errors[].description`** (`string`): The description of the error code.
- **`errors[].followupAction`** (`string`): Recommended followup actions to correct the error.
- **`errors[].location`** (`string`): Where the error is located in the original request.
- **`errors[].value`** (`string`): The value for the data causing the error.
- **`failure`** (`object`): Currently not used.
- **`failure.code`** (`string`)
- **`failure.description`** (`string`)
- **`httpStatusCode`** (`string`): Stedi can return the following status codes:
  - `200`: Stedi successfully generated the X12 EDI claim format required by the payer. It does not indicate whether the payer has accepted the claim - the payer will respond later with a 277CA containing this information. [Learn more about 277CAs](https://www.stedi.com/docs/healthcare/receive-claim-responses#response-types).
  - `400`: The request contains one or more problems with the claim data. Examples include missing required fields, invalid values, or incorrect data types. The response includes a message describing the problem.
  - `403`: The request is not permitted, such as using a test API key to submit a production transaction.
  - Allowed values: `200 OK`, `400 BAD_REQUEST`, `403 FORBIDDEN`
- **`meta`** (`object`): Metadata from Stedi about the request.
- **`meta.applicationMode`** (`string`): Indicates where this request can be found for support.
- **`meta.billerId`** (`string`): The biller ID assigned to this request.
- **`meta.senderId`** (`string`): The sender ID assigned to this request.
- **`meta.submitterId`** (`string`): The submitter ID assigned to this request.
- **`meta.traceId`** (`string`): The file execution ID, a unique identifier assigned to the processed file within the Stedi platform.
- **`payer`** (`object`): Information about the payer for the submitted claim.
- **`payer.payerID`** (`string`): The payer's ID. This is the same as the `tradingPartnerServiceId`.
- **`payer.payerName`** (`string`): The payer's business name, such as Aetna or Cigna.
- **`status`** (`string`): The status of the claim submission.
- **`tradingPartnerServiceId`** (`string`): An ID for the payer you identified in the original claim. This value may differ from the `tradingPartnerServiceId` you submitted in the original request because it reflects the payer's internal concept of their ID, not necessarily the ID Stedi uses to route requests to this payer.
- **`warnings`** (`array of ClaimsWarning objects`): A list of warnings. Currently not used.
- **`warnings[].code`** (`string`): A machine-readable code indicating the type of problem.
- **`warnings[].description`** (`string`): A human-readable description of the problem.
- **`x12`** (`string`): A [277CA claim acknowledgment](https://www.stedi.com/docs/healthcare/claim-responses-overview#277ca-claim-acknowledgment) acceptance or rejection from Stedi in X12 EDI format. It indicates whether the claim has passed Stedi's claim edits.

When the claim fails one or more edits, the 277CA contains `STC` segments with information about each error. These are the same error codes that appear in the `errors` array.

Note that this 277CA only indicates whether Stedi has accepted or rejected the claim submission. You may receive additional 277CA acceptances or rejections as the claim is routed to the payer.

**Example:**

```json
{
  "claimReference": {
    "claimType": "INST",
    "correlationId": "01JABEX6DPF4FCT2J0Y0SGFCY8",
    "formatVersion": "5010",
    "patientControlNumber": "00001111222233334444",
    "payerId": "87726",
    "rhClaimNumber": "01JABEX6DPF4FCT2J0Y0SGFCY8",
    "serviceLines": [
      {
        "lineItemControlNumber": "111222333"
      }
    ],
    "timeOfResponse": "2024-10-16T20:04:32.962Z"
  },
  "controlNumber": "123456789",
  "httpStatusCode": "200 OK",
  "meta": {
    "traceId": "a742ab42-a6f3-4232-a88c-197d341afdbe"
  },
  "payer": {
    "payerID": "87726",
    "payerName": "UnitedHealthcare"
  },
  "status": "SUCCESS",
  "tradingPartnerServiceId": "87726",
  "x12": "ISA*00*          *00*          *ZZ*STEDITEST      *ZZ*574183004559   *260213*2001*^*00501*929135779*0*T*>~GS*HN*STEDITEST*574183004559*20260213*200134*1*X*005010X214~ST*277*0001*005010X214~BHT*0085*08*01KHC9GC66KDRVHEJC42Q103EQ*20260213*200134*TH~HL*1**20*1~NM1*AY*2*STEDI INC*****46*117151744~TRN*1*01KHC9GC66KDRVHEJC42Q103EQ~DTP*050*D8*20260213~DTP*009*D8*20260213~HL*2*1*21*1~NM1*41*2*Test Facility*****46*123456789~TRN*2*01KHC9G8FMGZ6CA9TQT704RAMB~STC*A0>17>AY*20260213*WQ*500.0~QTY*90*1~AMT*YU*500.0~HL*3*2*19*1~NM1*85*2*Test Facility*****XX*1999999976~TRN*1*0~REF*TJ*123456789~QTY*QA*1~AMT*YU*500.0~HL*4*3*PT*0~NM1*QC*1*DOE*JANE****MI*98765~TRN*2*12345~STC*A1>20*20260213*WQ*500.0~DTP*472*RD8*20241015-20241015~SE*25*0001~GE*1*1~IEA*1*929135779~"
}
```

#### 400

ValidationException 400 response

**Schema:** `ValidationExceptionResponseContent`

**Properties:**

- **`code`** (`string`): A code describing the type of validation failure.
- **`message`** (`string`) (required): A message describing the causes of the validation failure. There may be more than one.
#### 403

AccessDeniedException 403 response

**Schema:** `AccessDeniedExceptionResponseContent`

**Properties:**

- **`code`** (`string`): Error classification code
- **`message`** (`string`) (required): Human-readable error message
#### 404

ResourceNotFoundException 404 response

**Schema:** `ResourceNotFoundExceptionResponseContent`

**Properties:**

- **`code`** (`string`): Error classification code
- **`message`** (`string`) (required): Human-readable error message
#### 409

ConflictException 409 response

**Schema:** `ConflictExceptionResponseContent`

**Properties:**

- **`message`** (`string`) (required): Why the request failed. The wording can change, so branch on the exception type, not this text.
#### 422

RequestChangedException 422 response

**Schema:** `RequestChangedExceptionResponseContent`

**Properties:**

- **`code`** (`string`): Unique error code identifying the specific type of error.
- **`message`** (`string`) (required): Human readable error message explaining why the request was rejected.
#### 429

ThrottlingException 429 response

**Schema:** `ThrottlingExceptionResponseContent`

**Properties:**

- **`code`** (`string`): Error classification code
- **`message`** (`string`) (required): Human-readable error message
#### 500

InternalFailureException 500 response

**Schema:** `InternalFailureExceptionResponseContent`

**Properties:**

- **`code`** (`string`): Error classification code
- **`message`** (`string`) (required): Human-readable error message
#### 503

ServiceUnavailableException 503 response

**Schema:** `ServiceUnavailableExceptionResponseContent`

**Properties:**

- **`code`** (`string`)
- **`message`** (`string`) (required)
#### 504

GatewayTimeoutException 504 response

**Schema:** `GatewayTimeoutExceptionResponseContent`

**Properties:**

- **`code`** (`string`)
- **`message`** (`string`) (required)


# Submit Claim Attachment (275) Raw X12
Source: https://www.stedi.com/docs/healthcare/api-reference/post-healthcare-submit-claim-attachment-raw-x12


<Warning>
  This endpoint is in **beta** and is subject to change.
</Warning>

This endpoint is ideal if you have an existing system that generates X12 EDI files and you want to send them through Stedi's API.

1. Call this endpoint with a payload in [275 X12 EDI format](https://portal.stedi.com/app/guides/view/hipaa/patient-information-x210/01HQ4HZ8ZBY2CZGPCVVM8JTK22).
2. Stedi sends the attachment to the payer, so the payer can use it to adjudicate the referenced 837 professional, dental, or institutional claim.
3. The endpoint returns summary information about the attachment submission.

This endpoint only supports [unsolicited attachments](/healthcare/submit-claim-attachments#solicited-vs-unsolicited-attachments).

## Size limit [#size-limit]

The size limit for attachments submitted in a single request is 6MB. If you need to submit larger attachments, you must submit them through [Stedi SFTP](/healthcare/submit-claims-sftp-connection) or the [JSON endpoints](/healthcare/api-reference/post-healthcare-create-claim-attachment).

## API Specification

Submit a 275 claim attachment in X12 EDI format

**Endpoint:** `POST /claim-attachments/raw-x12-submission`

**Base URL:** `https://claims.us.stedi.com/2025-03-07`

### Request Body

**Schema:** `SubmitClaimAttachmentRawX12RequestContent`

**Properties:**

- **`x12`** (`string`) (required): The X12 EDI data for the claim attachment. This data must conform to the [275 X12 EDI specification](https://portal.stedi.com/app/guides/view/hipaa/patient-information-x210/01HQ4HZ8ZBY2CZGPCVVM8JTK22).

**Example:**

```json
{
  "x12": "ISA*00*          *00*          *ZZ*STEDI          *ZZ*CIGNA          *250227*2140*^*00501*000000001*0*T*>~GS*PI*STEDI*CIGNA*20250227*214016*1*X*005010X210~ST*275*1001*005010X210~BGN*11*0001*20060915~NM1*PR*2*CIGNA*****XV*62308~NM1*41*2*XYZ SERVICES*****46*1999999976~NM1*1P*2*THE HOSPITAL*****XX*3999000B01~NX1*1P~N3*123 Main~N4*Miami*FL*11111~NM1*QC*1*DOE*JOHN*J***MI*987654320~REF*EJ*DOE123~REF*EA*AAAAA12345~DTP*472*D8*20060812~LX*1~TRN*2*1822634840~STC*R4>18626-2>>LOI~DTP*368*D8*20060915~CAT*AE*TX~EFI*05~BIN*8*U3RlZGk=~SE*20*1001~GE*1*1~IEA*1*000000001~"
}
```

### Responses

#### 200

SubmitClaimAttachmentRawX12 200 response

**Schema:** `SubmitClaimAttachmentRawX12ResponseContent`

**Properties:**

- **`claimAttachmentReference`** (`object`): Information about the claim attachment.
- **`claimAttachmentReference.correlationId`** (`string`): An opaque string identifier Stedi assigns to the claim attachment. You can use it for tracking purposes and when contacting Stedi support.
- **`claimAttachmentReference.patientControlNumber`** (`string`): The `patientControlNumber` from the claim associated with this attachment, if supplied. This is a unique identifier that you assigned to the related claim so you can track the claim and correlate it with responses from the payer.
- **`claimAttachmentReference.timeOfResponse`** (`string`): A timestamp in [RFC 3339 format](https://datatracker.ietf.org/doc/html/rfc3339) for Stedi's response to the submission. For example: `2025-03-07T12:34:56Z`.
- **`meta`** (`object`): Metadata from Stedi about the request.
- **`meta.traceId`** (`string`): A unique identifier assigned to the processed file within the Stedi platform. This is also known as the file execution ID.
- **`tradingPartnerServiceId`** (`string`): An ID for the payer you identified in the related transaction. This value may differ from the `tradingPartnerServiceId` you submitted in the original claim request because it reflects the payer's internal concept of their ID, not necessarily the ID Stedi uses to route requests to this payer.

**Example:**

```json
{
  "claimAttachmentReference": {
    "correlationId": "att-123456",
    "patientControlNumber": "PCN123456",
    "timeOfResponse": "2025-03-07T12:34:56Z"
  },
  "meta": {
    "traceId": "4d2b3c4e-1111-4222-b333-5a6f7e8d9a00"
  },
  "tradingPartnerServiceId": "PAYER123"
}
```

#### 400

ValidationException 400 response

**Schema:** `ValidationExceptionResponseContent`

**Properties:**

- **`fieldList`** (`array of ValidationExceptionField objects`): A list of specific failures encountered while validating the input.
A member can appear in this list more than once if it failed to satisfy multiple constraints.
- **`fieldList[].message`** (`string`) (required): A detailed description of the validation failure.
- **`fieldList[].path`** (`string`) (required): A JSONPointer expression to the structure member whose value failed to satisfy the modeled constraints.
- **`message`** (`string`) (required): A summary of the validation failure.
#### 403

SubmitClaimAttachmentRawX12403Error 403 response

**Schema:** `SubmitClaimAttachmentRawX12403ErrorResponseContent`

#### 404

ResourceNotFoundException 404 response

**Schema:** `ResourceNotFoundExceptionResponseContent`

**Properties:**

- **`code`** (`string`): Unique error code identifying the specific type of resource not found error.
- **`message`** (`string`) (required): Human readable error message explaining why the resource could not be found.
#### 429

ThrottlingException 429 response

**Schema:** `ThrottlingExceptionResponseContent`

**Properties:**

- **`code`** (`string`): Error classification code
- **`message`** (`string`) (required): Human-readable error message
#### 500

InternalFailureException 500 response

**Schema:** `InternalFailureExceptionResponseContent`

**Properties:**

- **`code`** (`string`): Error classification code
- **`message`** (`string`) (required): Human-readable error message


# Insurance Discovery Check
Source: https://www.stedi.com/docs/healthcare/api-reference/post-insurance-discovery


Insurance discovery checks search for a patient's active coverage using only their demographic data.

1. Call this endpoint with as much [patient demographic information](/healthcare/insurance-discovery#required-patient-information) as possible.
2. Stedi searches for active coverage for the patient.
3. The endpoint returns an array of potential active coverages along with subscriber details and benefits information.

We recommend using insurance discovery checks as a backup when eligibility checks fail or aren't possible. Because of their limitations, you shouldn't rely on them as your primary method for verifying patient coverage.

## API Specification

Submit an insurance discovery check in JSON format

**Endpoint:** `POST /insurance-discovery/check/v1`

**Base URL:** `https://healthcare.us.stedi.com/2024-04-01`

### Request Body

**Schema:** `InsuranceDiscoveryCheckRequestContent`

**Properties:**

- **`dependent`** (`object`): Demographic information for the patient when they are a dependent on a health plan.
- We **strongly recommend** providing as much information as possible to improve the probability of finding matching coverage. We especially recommend providing the dependent's Social Security Number and their address - particularly their ZIP Code.
- You should provide information for both the subscriber and the dependent in the request when possible.
- If you only have the dependent's information, you should identify them in the `subscriber` object instead and leave this object empty. Note that some payers require information about both the dependent and the subscriber, so providing only the dependent's information limits Stedi's ability to return coverage matches for those payers.
- **`dependent.address`** (`object`)
- **`dependent.address.address1`** (`string`): The first line of the address.
- **`dependent.address.address2`** (`string`): The second line of the address.
- **`dependent.address.city`** (`string`): The city.
- **`dependent.address.countryCode`** (`string`): The two-letter country code from [Part 1 of ISO 3166](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2).
- **`dependent.address.countrySubDivisionCode`** (`string`): The country subdivision code from [Part 2 of ISO 3166](https://en.wikipedia.org/wiki/ISO_3166-2).
- **`dependent.address.postalCode`** (`string`): The United States or Canadian postal code, excluding punctuation and blanks.
- **`dependent.address.state`** (`string`): The US state or Canadian province code with unknown option. For example, `TN` for Tennessee or `NB` for New Brunswick.

Payers may sometimes return other non-compliant values.
  - Allowed values: `NL`, `PE`, `NS`, `NB`, `QC`, `ON`, `MB`, `SK`, `AB`, `BC`, `YT`, `NT`, `NU`, `DC`, `AS`, `GU`, `MP`, `PR`, `UM`, `VI`, `AA`, `AE`, `AP`, `AK`, `AL`, `AR`, `AZ`, `CA`, `CO`, `CT`, `DE`, `FL`, `GA`, `HI`, `IA`, `ID`, `IL`, `IN`, `KS`, `KY`, `LA`, `MA`, `MD`, `ME`, `MI`, `MN`, `MO`, `MS`, `MT`, `NC`, `ND`, `NE`, `NH`, `NJ`, `NM`, `NV`, `NY`, `OH`, `OK`, `OR`, `PA`, `RI`, `SC`, `SD`, `TN`, `TX`, `UT`, `VA`, `VT`, `WA`, `WI`, `WV`, `WY`
- **`dependent.dateOfBirth`** (`string`): The dependent's date of birth (DOB), formatted as YYYYMMDD.
- **`dependent.firstName`** (`string`) (required): The dependent's first name.
- **`dependent.gender`** (`string`)
  - Allowed values: `M`, `F`
- **`dependent.lastName`** (`string`) (required): The dependent's last name.
- **`dependent.middleName`** (`string`): The dependent's middle name or initial.
- **`dependent.ssn`** (`string`): The dependent's Social Security Number (SSN). We strongly recommend providing this information if possible to improve the probability of finding matching coverage.
- **`encounter`** (`object`): The date range for the service being requested. If you don't specify a service date (either a single day or a range of dates), Stedi defaults to the current date.

 You can specify either a single `dateOfService` or a `beginningDateOfService` and `endDateOfService`.
- **`encounter.beginningDateOfService`** (`string`): The beginning date, formatted as YYYYMMDD.
- **`encounter.dateOfService`** (`string`): The date of service, formatted as YYYYMMDD. You can use this value to specify a single occasion. If you don't specify a service date (either a single day or a range of dates), Stedi defaults to the current date.
- **`encounter.endDateOfService`** (`string`): The end date, formatted as YYYYMMDD. If you don't specify an end date, Stedi defaults to the same date as `beginningDateOfService`.
- **`provider`** (`object`) (required): Information about the provider requesting the insurance discovery check.
- **`provider.npi`** (`string`) (required): The provider's [National Provider Identifier (NPI)](https://www.stedi.com/docs/healthcare/national-provider-identifier).
- **`subscriber`** (`object`) (required): Demographic information for the patient when they are the health plan subscriber. We strongly recommend providing as much information as possible to improve the probability of finding matching coverage.

We especially recommend providing the subscriber's Social Security Number and their address - particularly their ZIP Code.
- **`subscriber.address`** (`object`)
- **`subscriber.address.address1`** (`string`): The first line of the address.
- **`subscriber.address.address2`** (`string`): The second line of the address.
- **`subscriber.address.city`** (`string`): The city.
- **`subscriber.address.countryCode`** (`string`): The two-letter country code from [Part 1 of ISO 3166](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2).
- **`subscriber.address.countrySubDivisionCode`** (`string`): The country subdivision code from [Part 2 of ISO 3166](https://en.wikipedia.org/wiki/ISO_3166-2).
- **`subscriber.address.postalCode`** (`string`): The United States or Canadian postal code, excluding punctuation and blanks.
- **`subscriber.address.state`** (`string`): The US state or Canadian province code with unknown option. For example, `TN` for Tennessee or `NB` for New Brunswick.

Payers may sometimes return other non-compliant values.
  - Allowed values: `NL`, `PE`, `NS`, `NB`, `QC`, `ON`, `MB`, `SK`, `AB`, `BC`, `YT`, `NT`, `NU`, `DC`, `AS`, `GU`, `MP`, `PR`, `UM`, `VI`, `AA`, `AE`, `AP`, `AK`, `AL`, `AR`, `AZ`, `CA`, `CO`, `CT`, `DE`, `FL`, `GA`, `HI`, `IA`, `ID`, `IL`, `IN`, `KS`, `KY`, `LA`, `MA`, `MD`, `ME`, `MI`, `MN`, `MO`, `MS`, `MT`, `NC`, `ND`, `NE`, `NH`, `NJ`, `NM`, `NV`, `NY`, `OH`, `OK`, `OR`, `PA`, `RI`, `SC`, `SD`, `TN`, `TX`, `UT`, `VA`, `VT`, `WA`, `WI`, `WV`, `WY`
- **`subscriber.dateOfBirth`** (`string`): The subscriber's date of birth (DOB), formatted as YYYYMMDD.
- **`subscriber.firstName`** (`string`) (required): The subscriber's first name.
- **`subscriber.gender`** (`string`)
  - Allowed values: `M`, `F`
- **`subscriber.lastName`** (`string`) (required): The subscriber's last name.
- **`subscriber.middleName`** (`string`): The subscriber's middle name or initial.
- **`subscriber.ssn`** (`string`): The subscriber's Social Security Number (SSN). We strongly recommend providing this information if possible to improve the probability of finding matching coverage. The patient's full SSN is preferred, but even the last 4 digits of the SSN can help narrow down matching coverage.

**Example:**

```json
{
  "encounter": {
    "beginningDateOfService": "20240326",
    "endDateOfService": "20240326"
  },
  "provider": {
    "npi": "1999999984"
  },
  "subscriber": {
    "address": {
      "address1": "123 Main St",
      "city": "Springfield",
      "postalCode": "62701",
      "state": "IL"
    },
    "dateOfBirth": "19800101",
    "firstName": "John",
    "gender": "M",
    "lastName": "Smith",
    "middleName": "Robert",
    "ssn": "123456789"
  }
}
```

### Responses

#### 200

InsuranceDiscoveryCheck 200 response

**Schema:** `InsuranceDiscoveryCheckResponseContent`

**Properties:**

- **`coveragesFound`** (`integer`): The number of potential coverage matches for the patient. This will be `0` if Stedi didn't find any matching coverage.
- **`discoveryId`** (`string`): A unique ID for this insurance discovery check. You can use it to retrieve the results asynchronously through the [Insurance Discovery Check Results](https://www.stedi.com/docs/healthcare/api-reference/get-insurance-discovery-results) endpoint.
- **`errors`** (`array of EligibilityCheckError objects`): When a payer rejects your eligibility check, the response contains one or more [`AAA` errors](https://www.stedi.com/docs/healthcare/eligibility-troubleshooting#payer-aaa-errors) that specify the reasons for the rejection and any recommended follow-up actions.

Any errors that occur at the `payer`, `provider`, `subscriber`, or `dependents` levels are also included in this array, allowing you to review all errors in a central location. If there are no `AAA` errors, this array will be empty.
- **`errors[].code`** (`string`): This is a superset of all the possible codes in the sub-loops, as all errors are bubbled up to the top level of the response

Payers may sometimes return other non-compliant values.
  - Allowed values: `04`, `15`, `33`, `35`, `41`, `42`, `43`, `44`, `45`, `46`, `47`, `48`, `49`, `50`, `51`, `52`, `53`, `54`, `55`, `56`, `57`, `58`, `60`, `61`, `62`, `63`, `64`, `65`, `66`, `67`, `68`, `69`, `70`, `71`, `72`, `73`, `74`, `75`, `76`, `77`, `78`, `79`, `80`, `97`, `98`, `AA`, `AE`, `AF`, `AG`, `AO`, `CI`, `E8`, `IA`, `MA`, `T4`
- **`errors[].description`** (`string`): The error description.
- **`errors[].field`** (`string`): The error type, `AAA`.
- **`errors[].followupAction`** (`string`): Payers may sometimes return other non-compliant values.
  - Allowed values: `Please Correct and Resubmit`, `Resubmission Not Allowed`, `Please Resubmit Original Transaction`, `Resubmission Allowed`, `Do Not Resubmit; Inquiry Initiated to a Third Party`, `Please Wait 30 Days and Resubmit`, `Please Wait 10 Days and Resubmit`, `Do Not Resubmit; We Will Hold Your Request and Respond Again Shortly`
- **`errors[].location`** (`string`): The location of the error within the original X12 EDI response.
- **`errors[].possibleResolutions`** (`string`): Information to help you correct the error.

We periodically update this guidance, so these strings may change at any time and may differ between eligibility responses. **Don't build programmatic logic that depends on matching these strings exactly.**
- **`items`** (`array of InsuranceDiscoveryResponseFields objects`): An array of potential coverage matches for the patient. This will only be populated if the insurance discovery check `status` is `COMPLETE`. Each item in the array contains information about a potential match, including the provider, subscriber, payer, and plan information.
- **`items[].benefitsInformation`** (`array of DiscoveryBenefitsInformation objects`): Information about the patient's healthcare benefits, such as coverage level (individual vs. family), coverage type (deductibles, copays, etc.), out of pocket maximums, and more. This is the same information you would get from a standard eligibility check.
 
 Payers typically return at least the following properties: `code`, `coverageLevelCode`, `serviceTypeCodes`, and either `benefitAmount` or `benefitPercent`. However, the exact properties returned in this object are up to the payer's discretion.
 
 Visit [Determine patient benefits](https://www.stedi.com/docs/healthcare/eligibility-active-coverage-benefits) in our eligibility check documentation for more information about benefit types, details about how to interpret the response, and additional examples.
- **`items[].benefitsInformation[].additionalInformation`** (`array of AdditionalInformation objects`): A free-form message containing additional information about the benefits in the response.
- **`items[].benefitsInformation[].additionalInformation[].description`** (`string`): A free-form message containing additional information about the benefits in the response.
- **`items[].benefitsInformation[].authOrCertIndicator`** (`string`): Code indicating whether the benefit is subject to prior authorization or certification.

Payers may sometimes return other non-compliant values.
  - Allowed values: `N`, `U`, `Y`
- **`items[].benefitsInformation[].benefitAmount`** (`string`): The monetary benefit amount, such as a patient's co-pay or deductible. This value is expressed as a decimal, such as 100.00. 
 
 The payer will always send a value in this property when the `benefitsInformation[].code` = `B` - Co-Payment, `C` - Deductible, `G` - Out of Pocket (Stop Loss), `J` - Cost Containment, or `Y` - Spend Down. For those codes, this value represents the patient's portion of responsibility. 
 
 The payer will **never** send this value when `benefitsInformation[].code` = `A` - Co-Insurance. This property can contain zero when the patient has no responsibility. 
 
 Learn more about [patient costs](https://www.stedi.com/docs/healthcare/eligibility-patient-responsibility-benefits).
- **`items[].benefitsInformation[].benefitPercent`** (`string`): The percentage of the benefit, such as co-insurance. This property can contain zero when the patient has no responsibility. 
 
 The payer will always send a value in this property when `benefitsInformation[].code` = `A` - Co-Insurance. For this code, this value represents the patient's portion of the responsibility. The percentage is expressed as a decimal, such as `0.80` represents 80%. 
 
 The payer will **never** send a value in this property when `benefitsInformation[].code` = `B` - Co-Payment, `C` - Deductible, `G` - Out of Pocket (Stop Loss), `J` - Cost Containment, or `Y` - Spend Down. 
 
 Learn more about [patient costs](https://www.stedi.com/docs/healthcare/eligibility-patient-responsibility-benefits).
- **`items[].benefitsInformation[].benefitQuantity`** (`string`): The quantity of the benefit, qualified by the type specified in `quantityQualifier`. For example, `10` when the `quantityQualifier` is `Visits`.
- **`items[].benefitsInformation[].benefitsAdditionalInformation`** (`object`): Identifying information specific to this type of benefit.
- **`items[].benefitsInformation[].benefitsAdditionalInformation.alternativeListId`** (`string`): The alternative list ID. This identifier allows the payer to specify a list of drugs and its alternative drugs with the associated formulary status for the patient.
- **`items[].benefitsInformation[].benefitsAdditionalInformation.coverageListId`** (`string`): The coverage list ID. This identifier allows the payer to specify the identifier of a list of drugs that have coverage limitations for the associated patient.
- **`items[].benefitsInformation[].benefitsAdditionalInformation.drugFormularyNumber`** (`string`): The drug formulary number.
- **`items[].benefitsInformation[].benefitsAdditionalInformation.familyUnitNumber`** (`string`): The family unit number. This is returned when the payer is a pharmacy benefits manager (PBM) and the patient has a suffix to their member ID number that is used in the NCPDP Telecom Standard Insurance Segment, in field `303-C3` (Person Code). For all other uses, the family unit number (suffix) is considered part of the patient's member ID number.
- **`items[].benefitsInformation[].benefitsAdditionalInformation.groupDescription`** (`string`): Group name
- **`items[].benefitsInformation[].benefitsAdditionalInformation.groupNumber`** (`string`): The group number for the patient's health insurance plan.
- **`items[].benefitsInformation[].benefitsAdditionalInformation.hicNumber`** (`string`): The health insurance claim number (HICN). Note that CMS previously used the HICN to uniquely identify Medicare beneficiaries. However, they have since transitioned to a new, randomized Medicare Beneficiary Identifier (MBI) format. The HICN is no longer used for Medicare transactions but this property is now used by some payers to return MBI. If you receive a value in this property that matches the format specified in the [Medicare Beneficiary Identifier documentation](https://www.cms.gov/training-education/partner-outreach-resources/new-medicare-card/medical-beneficiary-identifiers-mbis), the number is likely an MBI and we recommend sending a follow-up eligibility check to CMS for additional benefits data. This most commonly occurs with patients who are covered by both Medicare and Medicaid.
- **`items[].benefitsInformation[].benefitsAdditionalInformation.insurancePolicyNumber`** (`string`): The insurance policy number.
- **`items[].benefitsInformation[].benefitsAdditionalInformation.medicaidRecepientIdNumber`** (`string`): Deprecated (misspelled): use medicaidRecipientIdNumber. The Medicaid Recipient Identification number.
This shape is deprecated: Misspelled. Use medicaidRecipientIdNumber instead. Still populated for backward compatibility.
- **`items[].benefitsInformation[].benefitsAdditionalInformation.medicaidRecipientIdNumber`** (`string`): The Medicaid Recipient Identification number.
- **`items[].benefitsInformation[].benefitsAdditionalInformation.medicalAssistanceCategory`** (`string`): The medical assistance category.
- **`items[].benefitsInformation[].benefitsAdditionalInformation.memberId`** (`string`): The patient's member ID.
- **`items[].benefitsInformation[].benefitsAdditionalInformation.planDescription`** (`string`): Plan name
- **`items[].benefitsInformation[].benefitsAdditionalInformation.planNetworkDescription`** (`string`): Plan network name
- **`items[].benefitsInformation[].benefitsAdditionalInformation.planNetworkIdNumber`** (`string`): The plan network identification number.
- **`items[].benefitsInformation[].benefitsAdditionalInformation.planNumber`** (`string`): The insurance plan number.
- **`items[].benefitsInformation[].benefitsAdditionalInformation.policyNumber`** (`string`): The patient's policy number.
- **`items[].benefitsInformation[].benefitsAdditionalInformation.priorAuthorizationNumber`** (`string`): The prior authorization number.
- **`items[].benefitsInformation[].benefitsAdditionalInformation.referralNumber`** (`string`): The referral number.
- **`items[].benefitsInformation[].benefitsDateInformation`** (`object`): Dates associated with the benefits.
  - This is where you can find benefit-specific eligibility dates, if provided. These dates override dates provided in `planDateInformation` for this benefit type.
  - This is where the payer may specify the last time the service was rendered (`latestVisitOrConsultation`), which you can use to determine whether the patient has already reached the allowed frequency, if applicable. For example, this object could contain the date when the patient received their last dental cleaning.
  - These dates only apply to the `benefitsInformation` object in which this `benefitsDateInformation` is provided.
- **`items[].benefitsInformation[].benefitsDateInformation.added`** (`string`): Added date. Payers may return this information in the case of retroactive eligibility.
- **`items[].benefitsInformation[].benefitsDateInformation.admission`** (`string`): The admission date or dates.
- **`items[].benefitsInformation[].benefitsDateInformation.admissions`** (`array of DtpDate objects`): The date(s) for admission.
- **`items[].benefitsInformation[].benefitsDateInformation.admissions[].date`** (`string`): A single date.
- **`items[].benefitsInformation[].benefitsDateInformation.admissions[].endDate`** (`string`): The end date of a range.
- **`items[].benefitsInformation[].benefitsDateInformation.admissions[].startDate`** (`string`): The beginning date of a range.
- **`items[].benefitsInformation[].benefitsDateInformation.benefit`** (`string`): The benefit date.
- **`items[].benefitsInformation[].benefitsDateInformation.benefitBegin`** (`string`): The date when the benefit begins.
- **`items[].benefitsInformation[].benefitsDateInformation.benefitEnd`** (`string`): The date when the benefit ends.
- **`items[].benefitsInformation[].benefitsDateInformation.certification`** (`string`): The certification date.
- **`items[].benefitsInformation[].benefitsDateInformation.cobraBegin`** (`string`): The date when COBRA coverage begins.
- **`items[].benefitsInformation[].benefitsDateInformation.cobraEnd`** (`string`): The date when COBRA coverage ends.
- **`items[].benefitsInformation[].benefitsDateInformation.completion`** (`string`): The completion date.
- **`items[].benefitsInformation[].benefitsDateInformation.coordinationOfBenefits`** (`string`): The coordination of benefits date.
- **`items[].benefitsInformation[].benefitsDateInformation.dateOfDeath`** (`string`): The date of death.
- **`items[].benefitsInformation[].benefitsDateInformation.dateOfLastUpdate`** (`string`): The date when the plan information was last updated.
- **`items[].benefitsInformation[].benefitsDateInformation.discharge`** (`string`): The discharge date.
- **`items[].benefitsInformation[].benefitsDateInformation.discharges`** (`array of DtpDate objects`): The date(s) when the patient was discharged.
- **`items[].benefitsInformation[].benefitsDateInformation.discharges[].date`** (`string`): A single date.
- **`items[].benefitsInformation[].benefitsDateInformation.discharges[].endDate`** (`string`): The end date of a range.
- **`items[].benefitsInformation[].benefitsDateInformation.discharges[].startDate`** (`string`): The beginning date of a range.
- **`items[].benefitsInformation[].benefitsDateInformation.effectiveDateOfChange`** (`string`): The effective date of change.
- **`items[].benefitsInformation[].benefitsDateInformation.eligibility`** (`string`): Plan eligibility dates.
- **`items[].benefitsInformation[].benefitsDateInformation.eligibilityBegin`** (`string`): The date when the patient is first eligible for benefits under the plan.
- **`items[].benefitsInformation[].benefitsDateInformation.eligibilityEnd`** (`string`): The date when the patient is no longer eligible for benefits under the plan.
- **`items[].benefitsInformation[].benefitsDateInformation.enrollment`** (`string`): The date when the patient is enrolled in the plan.
- **`items[].benefitsInformation[].benefitsDateInformation.issue`** (`string`): The issue date.
- **`items[].benefitsInformation[].benefitsDateInformation.latestVisitOrConsultation`** (`string`): The latest visit or consultation date. This date may be used to determine whether the patient has already reached the allowed frequency for a specific benefit.
- **`items[].benefitsInformation[].benefitsDateInformation.periodEnd`** (`string`): The end of a period.
- **`items[].benefitsInformation[].benefitsDateInformation.periodStart`** (`string`): The start of a period.
- **`items[].benefitsInformation[].benefitsDateInformation.plan`** (`string`): Only included when multiple plans apply to the patient or multiple plan periods apply.
- **`items[].benefitsInformation[].benefitsDateInformation.planBegin`** (`string`): Only included when multiple plans apply to the patient or multiple plan periods apply.
- **`items[].benefitsInformation[].benefitsDateInformation.planEnd`** (`string`): The date coverage from the plan ends.
- **`items[].benefitsInformation[].benefitsDateInformation.policyEffective`** (`string`): The date when the policy becomes effective.
- **`items[].benefitsInformation[].benefitsDateInformation.policyExpiration`** (`string`): The date when the policy expires.
- **`items[].benefitsInformation[].benefitsDateInformation.premiumPaidToDateEnd`** (`string`): The end of period when the plan premium payments are up-to-date.
- **`items[].benefitsInformation[].benefitsDateInformation.premiumPaidtoDateBegin`** (`string`): The start of the period when the plan premium was paid in full.
- **`items[].benefitsInformation[].benefitsDateInformation.primaryCareProvider`** (`string`): The primary care provider date.
- **`items[].benefitsInformation[].benefitsDateInformation.service`** (`string`): The service date or dates.
- **`items[].benefitsInformation[].benefitsDateInformation.status`** (`string`): The status date.
- **`items[].benefitsInformation[].benefitsRelatedEntities`** (`array of BenefitsRelatedEntity objects`): Other entities associated with the eligibility or benefits. This could be a provider, an individual, an organization, or another payer. When present, this array typically contains information about the patient's primary care provider (PCP), another organization that handles a specific benefit type (such as telehealth mental health services), or another health plan for the patient (coordination of benefits scenarios).
- This is where information for a crossover carrier such as Medicaid or Medicare is provided, if it's applicable to the patient and the payer supports it.
- For Blue Cross Blue Shield (BCBS) payers, Stedi returns an entry containing information about the patient's home plan - the plan that actually verified the coverage. In this object, the `entityIdentifier` property is set to `Party Performing Verification`. [Learn more](https://www.stedi.com/docs/healthcare/eligibility-active-coverage-benefits#bcbs-home-plan)
- **`items[].benefitsInformation[].benefitsRelatedEntities[].address`** (`object`)
- **`items[].benefitsInformation[].benefitsRelatedEntities[].address.address1`** (`string`): The first line of the address.
- **`items[].benefitsInformation[].benefitsRelatedEntities[].address.address2`** (`string`): The second line of the address.
- **`items[].benefitsInformation[].benefitsRelatedEntities[].address.city`** (`string`): The city.
- **`items[].benefitsInformation[].benefitsRelatedEntities[].address.countryCode`** (`string`): The two-letter country code from [Part 1 of ISO 3166](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2).
- **`items[].benefitsInformation[].benefitsRelatedEntities[].address.countrySubDivisionCode`** (`string`): The country subdivision code from [Part 2 of ISO 3166](https://en.wikipedia.org/wiki/ISO_3166-2).
- **`items[].benefitsInformation[].benefitsRelatedEntities[].address.postalCode`** (`string`): The United States or Canadian postal code, excluding punctuation and blanks.
- **`items[].benefitsInformation[].benefitsRelatedEntities[].address.state`** (`string`): The US state or Canadian province code with unknown option. For example, `TN` for Tennessee or `NB` for New Brunswick.

Payers may sometimes return other non-compliant values.
  - Allowed values: `NL`, `PE`, `NS`, `NB`, `QC`, `ON`, `MB`, `SK`, `AB`, `BC`, `YT`, `NT`, `NU`, `DC`, `AS`, `GU`, `MP`, `PR`, `UM`, `VI`, `AA`, `AE`, `AP`, `AK`, `AL`, `AR`, `AZ`, `CA`, `CO`, `CT`, `DE`, `FL`, `GA`, `HI`, `IA`, `ID`, `IL`, `IN`, `KS`, `KY`, `LA`, `MA`, `MD`, `ME`, `MI`, `MN`, `MO`, `MS`, `MT`, `NC`, `ND`, `NE`, `NH`, `NJ`, `NM`, `NV`, `NY`, `OH`, `OK`, `OR`, `PA`, `RI`, `SC`, `SD`, `TN`, `TX`, `UT`, `VA`, `VT`, `WA`, `WI`, `WV`, `WY`
- **`items[].benefitsInformation[].benefitsRelatedEntities[].contactInformation`** (`object`)
- **`items[].benefitsInformation[].benefitsRelatedEntities[].contactInformation.contacts`** (`array of Contacts objects`): The contact information.
- **`items[].benefitsInformation[].benefitsRelatedEntities[].contactInformation.contacts[].communicationMode`** (`string`): Payers may sometimes return other non-compliant values.
  - Allowed values: `Electronic Data Interchange Access Number`, `Electronic Mail`, `Facsimile`, `Telephone`, `Uniform Resource Locator (URL)`, `Telephone Extension`, `Work Phone Number`
- **`items[].benefitsInformation[].benefitsRelatedEntities[].contactInformation.contacts[].communicationNumber`** (`string`): The communication number referenced in `communicationMode`. It includes the country or area code when applicable. 
 
 Note that phone numbers are formatted as AAABBBCCCC, where AAA represents the area code, BBB represents the telephone number prefix, and CCCC represents the telephone number. Phone numbers are provided without separators, such as dashes or parentheses. For example, `5551123345` for `555-112-3345`.
- **`items[].benefitsInformation[].benefitsRelatedEntities[].contactInformation.name`** (`string`): The name of the contact person.
- **`items[].benefitsInformation[].benefitsRelatedEntities[].entityFirstname`** (`string`): The first name of the entity, if the entity is a person.
- **`items[].benefitsInformation[].benefitsRelatedEntities[].entityIdentification`** (`string`): Code identifying the type of value provided in `entityIdentificationValue`. For example, `FI` - Federal Taxpayer's Identification Number.

Payers may sometimes return other non-compliant values.
  - Allowed values: `24`, `34`, `46`, `FA`, `FI`, `II`, `MI`, `NI`, `PI`, `PP`, `SV`, `XV`, `XX`
- **`items[].benefitsInformation[].benefitsRelatedEntities[].entityIdentificationValue`** (`string`): The identification number for the entity, qualified by the code in `entityIdentification`.
- **`items[].benefitsInformation[].benefitsRelatedEntities[].entityIdentifier`** (`string`): Code identifying an organizational entity, a physical location, property or an individual. 
  - `PPO` is used to identify a PPO by name or identification number, and also may also be used if identifying the Network that benefits are restricted to for In-Network benefits.

Payers may sometimes return other non-compliant values.
  - Allowed values: `Contracted Service Provider`, `Preferred Provider Organization (PPO)`, `Provider`, `Third-Party Administrator`, `Employer`, `Other Physician`, `Facility`, `Gateway Provider`, `Group`, `Independent Physicians Association (IPA)`, `Insured or Subscriber`, `Legal Representative`, `Origin Carrier`, `Primary Care Provider`, `Prior Insurance Carrier`, `Plan Sponsor`, `Payer`, `Primary Payer`, `Secondary Payer`, `Tertiary Payer`, `Party Performing Verification`, `Vendor`, `Organization Completing Configuration Change`, `Utilization Management Organization`, `Managed Care Organization`
- **`items[].benefitsInformation[].benefitsRelatedEntities[].entityMiddlename`** (`string`): The middle name or initial of the entity, if the entity is a person.
- **`items[].benefitsInformation[].benefitsRelatedEntities[].entityName`** (`string`): The last name (if the entity is a person) or the business name (if the entity is an organization).
- **`items[].benefitsInformation[].benefitsRelatedEntities[].entityRelationship`** (`string`): Code specifying the relationship between the entity and the patient.

Payers may sometimes return other non-compliant values.
  - Allowed values: `01`, `02`, `27`, `41`, `48`, `65`, `72`
- **`items[].benefitsInformation[].benefitsRelatedEntities[].entitySuffix`** (`string`): The name suffix, such as Sr. Jr. or III.
- **`items[].benefitsInformation[].benefitsRelatedEntities[].entityType`** (`string`): The type of entity.

Payers may sometimes return other non-compliant values.
  - Allowed values: `Person`, `Non-Person Entity`
- **`items[].benefitsInformation[].benefitsRelatedEntities[].providerInformation`** (`object`)
- **`items[].benefitsInformation[].benefitsRelatedEntities[].providerInformation.providerCode`** (`string`): A code indicating the type of provider. Visit [Eligibility code lists](https://www.stedi.com/docs/healthcare/eligibility-code-lists#provider-codes) for a complete list.

Payers may sometimes return other non-compliant values.
  - Allowed values: `AD`, `AT`, `BI`, `CO`, `CV`, `H`, `HH`, `LA`, `OT`, `P1`, `P2`, `PC`, `PE`, `R`, `RF`, `SB`, `SK`, `SU`
- **`items[].benefitsInformation[].benefitsRelatedEntities[].providerInformation.referenceIdentification`** (`string`): The provider's taxonomy code.
- **`items[].benefitsInformation[].benefitsServiceDelivery`** (`array of BenefitsServiceDelivery objects`)
- **`items[].benefitsInformation[].benefitsServiceDelivery[].deliveryOrCalendarPatternCode`** (`string`): The name of the `deliveryOrCalendarPatternCode`. For example, `Last Working Day of Period`.

Payers may sometimes return other non-compliant values.
  - Allowed values: `1st Week of the Month`, `2nd Week of the Month`, `3rd Week of the Month`, `4th Week of the Month`, `5th Week of the Month`, `1st & 3rd Week of the Month`, `2nd & 4th Week of the Month`, `1st Working Day of Period`, `Last Working Day of Period`, `Monday through Friday`, `Monday through Saturday`, `Monday through Sunday`, `Monday`, `Tuesday`, `Wednesday`, `Thursday`, `Friday`, `Saturday`, `Sunday`, `Monday through Thursday`, `Immediately`, `As Directed`, `Daily Mon. Through Fri.`, `1/2 Mon. & 1/2 Tues.`, `1/2 Tues. & 1/2 Thurs.`, `1/2 Wed. & 1/2 Fri.`, `Once Anytime Mon. through Fri.`, `Tuesday through Friday`, `Monday, Tuesday and Thursday`, `Monday, Tuesday and Friday`, `Wednesday and Thursday`, `Monday, Wednesday and Thursday`, `Tuesday, Thursday and Friday`, `1/2 Tues. & 1/2 Fri.`, `1/2 Mon. & 1/2 Wed.`, `1/3 Mon., 1/3 Wed., 1/3 Fri.`, `Whenever Necessary`, `1/2 By Wed. Bal. By Fri.`, `None (Also Used to Cancel or Override a Previous Pattern)`
- **`items[].benefitsInformation[].benefitsServiceDelivery[].deliveryOrCalendarPatternQualifier`** (`string`): The name of the `deliveryOrCalendarPatternCode`. For example, `Last Working Day of Period`.

Payers may sometimes return other non-compliant values.
  - Allowed values: `1st Week of the Month`, `2nd Week of the Month`, `3rd Week of the Month`, `4th Week of the Month`, `5th Week of the Month`, `1st & 3rd Week of the Month`, `2nd & 4th Week of the Month`, `1st Working Day of Period`, `Last Working Day of Period`, `Monday through Friday`, `Monday through Saturday`, `Monday through Sunday`, `Monday`, `Tuesday`, `Wednesday`, `Thursday`, `Friday`, `Saturday`, `Sunday`, `Monday through Thursday`, `Immediately`, `As Directed`, `Daily Mon. Through Fri.`, `1/2 Mon. & 1/2 Tues.`, `1/2 Tues. & 1/2 Thurs.`, `1/2 Wed. & 1/2 Fri.`, `Once Anytime Mon. through Fri.`, `Tuesday through Friday`, `Monday, Tuesday and Thursday`, `Monday, Tuesday and Friday`, `Wednesday and Thursday`, `Monday, Wednesday and Thursday`, `Tuesday, Thursday and Friday`, `1/2 Tues. & 1/2 Fri.`, `1/2 Mon. & 1/2 Wed.`, `1/3 Mon., 1/3 Wed., 1/3 Fri.`, `Whenever Necessary`, `1/2 By Wed. Bal. By Fri.`, `None (Also Used to Cancel or Override a Previous Pattern)`
- **`items[].benefitsInformation[].benefitsServiceDelivery[].deliveryOrCalendarPatternQualifierCode`** (`string`): Code that specifies the routine shipments, deliveries, or calendar pattern. For example `9` - Last Working Day of Period. Visit [Eligibility code lists](https://www.stedi.com/docs/healthcare/eligibility-code-lists#delivery-frequency-codes) for a complete list.

Payers may sometimes return other non-compliant values.
  - Allowed values: `1`, `2`, `3`, `4`, `5`, `6`, `7`, `8`, `9`, `A`, `B`, `C`, `D`, `E`, `F`, `G`, `H`, `J`, `K`, `L`, `M`, `N`, `O`, `P`, `Q`, `R`, `S`, `SG`, `SL`, `SP`, `SX`, `SY`, `SZ`, `T`, `U`, `V`, `W`, `X`, `Y`
- **`items[].benefitsInformation[].benefitsServiceDelivery[].deliveryPatternTimeCode`** (`string`): The name of the `deliveryPatternTimeCode`.

Payers may sometimes return other non-compliant values.
  - Allowed values: `1st Shift (Normal Working Hours)`, `2nd Shift`, `3rd Shift`, `A.M.`, `P.M.`, `As Directed`, `Any Shift`, `None (Also Used to Cancel or Override a Previous Pattern)`
- **`items[].benefitsInformation[].benefitsServiceDelivery[].deliveryPatternTimeQualifier`** (`string`): The name of the `deliveryPatternTimeCode`.

Payers may sometimes return other non-compliant values.
  - Allowed values: `1st Shift (Normal Working Hours)`, `2nd Shift`, `3rd Shift`, `A.M.`, `P.M.`, `As Directed`, `Any Shift`, `None (Also Used to Cancel or Override a Previous Pattern)`
- **`items[].benefitsInformation[].benefitsServiceDelivery[].deliveryPatternTimeQualifierCode`** (`string`): A code specifying the time for routine shipments or deliveries.

Payers may sometimes return other non-compliant values.
  - Allowed values: `A`, `B`, `C`, `D`, `E`, `F`, `G`, `Y`
- **`items[].benefitsInformation[].benefitsServiceDelivery[].numOfPeriods`** (`string`): The number of periods in the time period. For example, `12` when the `timePeriodQualifier` is `Hour`.
- **`items[].benefitsInformation[].benefitsServiceDelivery[].quantity`** (`string`): The quantity of the benefit. For example, `10` when the `quantityQualifier` is `Visits`.
- **`items[].benefitsInformation[].benefitsServiceDelivery[].quantityQualifier`** (`string`): The name of the `quantityQualifierCode`. For example, `Days`.

Payers may sometimes return other non-compliant values.
  - Allowed values: `Days`, `Units`, `Hours`, `Month`, `Visits`
- **`items[].benefitsInformation[].benefitsServiceDelivery[].quantityQualifierCode`** (`string`): Code specifying the type of quantity.

Payers may sometimes return other non-compliant values.
  - Allowed values: `DY`, `FL`, `HS`, `MN`, `VS`
- **`items[].benefitsInformation[].benefitsServiceDelivery[].sampleSelectionModulus`** (`string`): Specifies the sampling frequency, based on the unit of measure. For example `every 2 months` or `once per calendar year`.
- **`items[].benefitsInformation[].benefitsServiceDelivery[].timePeriodQualifier`** (`string`): The name of the `timePeriodQualifierCode`. For example, `Calendar Year`.

Payers may sometimes return other non-compliant values.
  - Allowed values: `Hour`, `Day`, `Years`, `Service Year`, `Calendar Year`, `Year to Date`, `Contract`, `Episode`, `Visit`, `Outlier`, `Remaining`, `Exceeded`, `Not Exceeded`, `Lifetime`, `Lifetime Remaining`, `Month`, `Week`
- **`items[].benefitsInformation[].benefitsServiceDelivery[].timePeriodQualifierCode`** (`string`): Code specifying the time period for the benefit information.

Payers may sometimes return other non-compliant values.
  - Allowed values: `6`, `7`, `21`, `22`, `23`, `24`, `25`, `26`, `27`, `28`, `29`, `30`, `31`, `32`, `33`, `34`, `35`
- **`items[].benefitsInformation[].benefitsServiceDelivery[].unitForMeasurementCode`** (`string`): The name of the `unitForMeasurementQualifierCode`. For example, `Days`.

Payers may sometimes return other non-compliant values.
  - Allowed values: `Days`, `Months`, `Visits`, `Week`, `Years`
- **`items[].benefitsInformation[].benefitsServiceDelivery[].unitForMeasurementQualifier`** (`string`): The name of the `unitForMeasurementQualifierCode`. For example, `Days`.

Payers may sometimes return other non-compliant values.
  - Allowed values: `Days`, `Months`, `Visits`, `Week`, `Years`
- **`items[].benefitsInformation[].benefitsServiceDelivery[].unitForMeasurementQualifierCode`** (`string`): Code specifying the unit of measurement for the quantity.

Payers may sometimes return other non-compliant values.
  - Allowed values: `DA`, `MO`, `VS`, `WK`, `YR`
- **`items[].benefitsInformation[].code`** (`string`): The code indicating the type of benefits information. Visit [Eligibility and benefit codes](https://www.stedi.com/docs/healthcare/eligibility-active-coverage-benefits#benefit-type-codes) for more information.

Payers may sometimes return other non-compliant values.
  - Allowed values: `1`, `2`, `3`, `4`, `5`, `6`, `7`, `8`, `A`, `B`, `C`, `CB`, `D`, `E`, `F`, `G`, `H`, `I`, `J`, `K`, `L`, `M`, `MC`, `N`, `O`, `P`, `Q`, `R`, `S`, `T`, `U`, `V`, `W`, `X`, `Y`
- **`items[].benefitsInformation[].compositeMedicalProcedureIdentifier`** (`object`): Identifies relevant medical procedures by their standard codes and modifiers (if applicable).
- **`items[].benefitsInformation[].compositeMedicalProcedureIdentifier.diagnosisCodePointer`** (`array of strings`): The diagnosis code pointer.
- **`items[].benefitsInformation[].compositeMedicalProcedureIdentifier.procedureCode`** (`string`): The procedure code. Many payers do not support eligibility checks for specific procedure codes. If the payer does not support procedure codes, they return a generic benefits response for the service type code `30`.
- **`items[].benefitsInformation[].compositeMedicalProcedureIdentifier.procedureModifiers`** (`array of strings`): Procedure modifiers that provides additional information related to the performance of the service.
- **`items[].benefitsInformation[].compositeMedicalProcedureIdentifier.productOrServiceID`** (`string`): The product or service ID. This value represents the end of the range of applicable procedure codes. The beginning of the range is listed in `procedureCode`.
- **`items[].benefitsInformation[].compositeMedicalProcedureIdentifier.productOrServiceIDQualifier`** (`string`): The name of the `productOrServiceIDQualifierCode`. For example, `American Dental Association`.
- **`items[].benefitsInformation[].compositeMedicalProcedureIdentifier.productOrServiceIDQualifierCode`** (`string`): Identifies the external code list used to provide the specified procedure or service codes. Can be `AD` - American Dental Association, `CJ` - Current Procedural Terminology (CPT) codes, `HC` - Health Care Financing Administration Common Procedural Coding System (HCPCS) Codes, `ID` - International Classification of Diseases 9th Revision, Clinical Modification (ICD-9-CM) - Procedure, `IV` - Home Infusion EDI Coalition (HIEC) Product/Service Code, `N4` - National Drug Code in 5-4-2 Format, or `ZZ` - Mutually Defined
- **`items[].benefitsInformation[].coverageLevel`** (`string`): The full name of the coverage level code.

Payers may sometimes return other non-compliant values.
  - Allowed values: `Children Only`, `Dependents Only`, `Employee and Children`, `Employee Only`, `Employee and Spouse`, `Family`, `Individual`, `Spouse and Children`, `Spouse Only`
- **`items[].benefitsInformation[].coverageLevelCode`** (`string`): Code indicating the level of coverage for the patient. 

This will either be `CHD` - Children Only, `DEP` - Dependents Only, `ECH` - Employee and Children, `EMP` - Employee Only, `ESP` - Employee and Spouse, `FAM` - Family, `IND` - Individual, `SPC` - Spouse and Children, `SPO` - Spouse Only, or `Unknown`.

Payers may sometimes return other non-compliant values.
  - Allowed values: `CHD`, `DEP`, `ECH`, `EMP`, `ESP`, `FAM`, `IND`, `SPC`, `SPO`
- **`items[].benefitsInformation[].eligibilityAdditionalInformationList`** (`array of EligibilityAdditionalInformation objects`): Used when there are multiple Nature of Injury Codes or a Facility Type Codes included in the response.
- **`items[].benefitsInformation[].eligibilityAdditionalInformationList[].codeCategory`** (`string`): Payers may sometimes return other non-compliant values.
  - Allowed values: `44`
- **`items[].benefitsInformation[].eligibilityAdditionalInformationList[].codeListQualifier`** (`string`): The name of the `codeListQualifierCode`. For example `Mutually Defined` when the code is set to `ZZ`.
- **`items[].benefitsInformation[].eligibilityAdditionalInformationList[].codeListQualifierCode`** (`string`): Payers may sometimes return other non-compliant values.
  - Allowed values: `GR`, `NI`, `ZZ`
- **`items[].benefitsInformation[].eligibilityAdditionalInformationList[].industry`** (`string`): The name of the `industryCode`. For example `Pharmacy` when the code is `01`.
- **`items[].benefitsInformation[].eligibilityAdditionalInformationList[].industryCode`** (`string`): The specific industry code. When `codeListQualifierCode` is set to `ZZ` - Mutually Defined, this property will be set to a place of service code. Visit the [Place of Service Code Set](https://www.cms.gov/medicare/coding-billing/place-of-service-codes/code-sets) for a complete list of these codes and their descriptions.
- **`items[].benefitsInformation[].eligibilityAdditionalInformationList[].injuredBodyPartName`** (`string`): Description of injured body parts.
- **`items[].benefitsInformation[].headerLoopIdentifierCode`** (`string`): The loop header identifier number in the `LS` segment of the original X12 EDI transaction.
- **`items[].benefitsInformation[].inPlanNetworkIndicator`** (`string`): The name of the in-plan network indicator code.

Payers may sometimes return other non-compliant values.
  - Allowed values: `Yes`, `No`, `Unknown`, `Not Applicable`
- **`items[].benefitsInformation[].inPlanNetworkIndicatorCode`** (`string`): Code indicating whether the benefit is in-network or out-of-network. Can be `Y` - Yes, `N` - No, `U` - Unknown, or `W` - Not Applicable

 Code `U` indicates that it is unknown whether the benefits are in or out-of-network. Code `W` indicates that the benefit applies to both in and out-of-network providers. 
 
 Note that this property **doesn't indicate** whether the provider is in or out-of-network for the patient. To determine that, you must check with the payer directly.

Payers may sometimes return other non-compliant values.
  - Allowed values: `Y`, `N`, `U`, `W`
- **`items[].benefitsInformation[].insuranceType`** (`string`): The full name of the insurance type code.

Payers may sometimes return other non-compliant values.
  - Allowed values: `Medicare Secondary Working Aged Beneficiary or Spouse with Employer Group Health Plan`, `Medicare Secondary End-Stage Renal Disease Beneficiary in the Mandated Coordination Period with an Employer's Group Health Plan`, `Medicare Secondary, No-fault Insurance including Auto is Primary`, `Medicare Secondary Worker's Compensation`, `Medicare Secondary Public Health Service (PHS)or Other Federal Agency`, `Medicare Secondary Black Lung`, `Medicare Secondary Veteran's Administration`, `Medicare Secondary Disabled Beneficiary Under Age 65 with Large Group Health Plan (LGHP)`, `Medicare Secondary, Other Liability Insurance is Primary`, `Auto Insurance Policy`, `Commercial`, `Consolidated Omnibus Budget Reconciliation Act (COBRA)`, `Medicare Conditionally Primary`, `Disability`, `Disability Benefits`, `Exclusive Provider Organization`, `Family or Friends`, `Group Policy`, `Health Maintenance Organization (HMO)`, `Health Maintenance Organization (HMO) - Medicare Risk`, `Special Low Income Medicare Beneficiary`, `Indemnity`, `Individual Policy`, `Long Term Care`, `Long Term Policy`, `Life Insurance`, `Litigation`, `Medicare Part A`, `Medicare Part B`, `Medicaid`, `Medigap Part A`, `Medigap Part B`, `Medicare Primary`, `Other`, `Property Insurance - Personal`, `Personal`, `Personal Payment (Cash - No Insurance)`, `Preferred Provider Organization (PPO)`, `Point of Service (POS)`, `Qualified Medicare Beneficiary`, `Property Insurance - Real`, `Supplemental Policy`, `Tax Equity Fiscal Responsibility Act (TEFRA)`, `Workers Compensation`, `Wrap Up Policy`
- **`items[].benefitsInformation[].insuranceTypeCode`** (`string`): Code identifying the type of insurance policy.

Payers may sometimes return other non-compliant values.
  - Allowed values: `12`, `13`, `14`, `15`, `16`, `41`, `42`, `43`, `47`, `AP`, `C1`, `CO`, `CP`, `D`, `DB`, `EP`, `FF`, `GP`, `HM`, `HN`, `HS`, `IN`, `IP`, `LC`, `LD`, `LI`, `LT`, `MA`, `MB`, `MC`, `MH`, `MI`, `MP`, `OT`, `PE`, `PL`, `PP`, `PR`, `PS`, `QM`, `RP`, `SP`, `TF`, `WC`, `WU`
- **`items[].benefitsInformation[].name`** (`string`): The full name of the benefits information code.

Payers may sometimes return other non-compliant values.
  - Allowed values: `Active Coverage`, `Active - Full Risk Capitation`, `Active - Services Capitated`, `Active - Services Capitated to Primary Care Physician`, `Active - Pending Investigation`, `Inactive`, `Inactive - Pending Eligibility Update`, `Inactive - Pending Investigation`, `Co-Insurance`, `Co-Payment`, `Deductible`, `Coverage Basis`, `Benefit Description`, `Exclusions`, `Limitations`, `Out of Pocket (Stop Loss)`, `Unlimited`, `Non-Covered`, `Cost Containment`, `Reserve`, `Primary Care Provider`, `Pre-existing Condition`, `Managed Care Coordinator`, `Services Restricted to Following Provider`, `Not Deemed a Medical Necessity`, `Benefit Disclaimer`, `Second Surgical Opinion Required`, `Other or Additional Payor`, `Prior Year(s) History`, `Card(s) Reported Lost/Stolen`, `Contact Following Entity for Eligibility or Benefit Information`, `Cannot Process`, `Other Source of Data`, `Health Care Facility`, `Spend Down`
- **`items[].benefitsInformation[].planCoverage`** (`string`): The specific product name or special program name for an insurance plan. For example `Gold 1-2-3`.

Payers are normally required to send the plan name when `benefitsInformation[].code` is set to values `1` - `8` and the `benefitsInformation[].serviceTypeCodes` contains `30` (Health Benefit Plan Coverage). However, behavior may vary by payer, so don't rely on this information being present in the response. Note that the plan name returned in this property may not exactly match the name the payer uses in official plan documents or marketing literature.

Visit [What's the plan name?](https://www.stedi.com/docs/healthcare/eligibility-active-coverage-benefits#what’s-the-plan-name%3F) in the benefits response documentation for more details.
- **`items[].benefitsInformation[].quantityQualifier`** (`string`): The name of the quantity qualifier code.

Payers may sometimes return other non-compliant values.
  - Allowed values: `Minimum`, `Quantity Used`, `Covered - Actual`, `Covered - Estimated`, `Number of Co-insurance Days`, `Deductible Blood Units`, `Days`, `Hours`, `Life-time Reserve - Actual`, `Life-time Reserve - Estimated`, `Maximum`, `Month`, `Number of Services or Procedures`, `Quantity Approved`, `Age, High Value`, `Age, Low Value`, `Visits`, `Years`
- **`items[].benefitsInformation[].quantityQualifierCode`** (`string`): Code indicating the type of quantity for the benefit.

Payers may sometimes return other non-compliant values.
  - Allowed values: `8H`, `99`, `CA`, `CE`, `D3`, `DB`, `DY`, `HS`, `LA`, `LE`, `M2`, `MN`, `P6`, `QA`, `S7`, `S8`, `VS`, `YY`
- **`items[].benefitsInformation[].serviceTypeCodes`** (`array of strings`): Service Type Codes (STCs) related to the benefit type. For example, `7` - Anesthesia. Visit [Service Type Codes](https://www.stedi.com/docs/healthcare/send-eligibility-checks#service-type-codes) for a complete list.

This list is specific to X12 version 005010, which is the mandated version for eligibility checks. It differs from the current [X12 Service Type Codes](https://x12.org/codes/service-type-codes) list, which applies to X12 versions later than 005010.

Payers may sometimes return other non-compliant values.
- **`items[].benefitsInformation[].serviceTypes`** (`array of strings`): The names of the Service Type Codes listed in the `serviceTypeCodes` array. Visit [Service Type Codes](https://www.stedi.com/docs/healthcare/send-eligibility-checks#service-type-codes) for a complete list of codes and their names.

The word physician in service type codes refers to any healthcare provider, including physician assistants, nurse practitioners, and other types of healthcare professionals.

Payers may sometimes return other non-compliant values.
- **`items[].benefitsInformation[].timeQualifier`** (`string`): The name of the time period qualifier code. 
 
 Note that for the patient's deductible, `Calendar Year` indicates the patient's total deductible amount for the year, while `Remaining` indicates the amount left to meet the deductible. Visit [Payer benefit response](https://www.stedi.com/docs/healthcare/eligibility-patient-responsibility-benefits#deductible) to learn more about deductibles.

Payers may sometimes return other non-compliant values.
  - Allowed values: `Hour`, `Day`, `24 Hours`, `Years`, `Service Year`, `Calendar Year`, `Year to Date`, `Contract`, `Episode`, `Visit`, `Outlier`, `Remaining`, `Exceeded`, `Not Exceeded`, `Lifetime`, `Lifetime Remaining`, `Month`, `Week`, `Admission`
- **`items[].benefitsInformation[].timeQualifierCode`** (`string`): Code indicating the time period for the benefit information.

Payers may sometimes return other non-compliant values.
  - Allowed values: `6`, `7`, `13`, `21`, `22`, `23`, `24`, `25`, `26`, `27`, `28`, `29`, `30`, `31`, `32`, `33`, `34`, `35`, `36`
- **`items[].benefitsInformation[].trailerLoopIdentifierCode`** (`string`): The loop trailer identifier number in the `LE` segment of the original X12 EDI transaction.
- **`items[].confidence`** (`object`)
- **`items[].confidence.level`** (`string`)
  - Allowed values: `REVIEW_NEEDED`, `HIGH`
- **`items[].confidence.reason`** (`string`): A reason for the confidence level. For example, `This record was identified as a low confidence match due to a DOB partial match`.
- **`items[].dependent`** (`object`): Common fields shared between subscriber and dependent structures in the eligibility response.
- **`items[].dependent.address`** (`object`)
- **`items[].dependent.address.address1`** (`string`): The first line of the address.
- **`items[].dependent.address.address2`** (`string`): The second line of the address.
- **`items[].dependent.address.city`** (`string`): The city.
- **`items[].dependent.address.countryCode`** (`string`): The two-letter country code from [Part 1 of ISO 3166](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2).
- **`items[].dependent.address.countrySubDivisionCode`** (`string`): The country subdivision code from [Part 2 of ISO 3166](https://en.wikipedia.org/wiki/ISO_3166-2).
- **`items[].dependent.address.postalCode`** (`string`): The United States or Canadian postal code, excluding punctuation and blanks.
- **`items[].dependent.address.state`** (`string`): The US state or Canadian province code with unknown option. For example, `TN` for Tennessee or `NB` for New Brunswick.

Payers may sometimes return other non-compliant values.
  - Allowed values: `NL`, `PE`, `NS`, `NB`, `QC`, `ON`, `MB`, `SK`, `AB`, `BC`, `YT`, `NT`, `NU`, `DC`, `AS`, `GU`, `MP`, `PR`, `UM`, `VI`, `AA`, `AE`, `AP`, `AK`, `AL`, `AR`, `AZ`, `CA`, `CO`, `CT`, `DE`, `FL`, `GA`, `HI`, `IA`, `ID`, `IL`, `IN`, `KS`, `KY`, `LA`, `MA`, `MD`, `ME`, `MI`, `MN`, `MO`, `MS`, `MT`, `NC`, `ND`, `NE`, `NH`, `NJ`, `NM`, `NV`, `NY`, `OH`, `OK`, `OR`, `PA`, `RI`, `SC`, `SD`, `TN`, `TX`, `UT`, `VA`, `VT`, `WA`, `WI`, `WV`, `WY`
- **`items[].dependent.birthSequenceNumber`** (`string`): The number assigned to each family member born with the same birth date, such as twins or triplets. Indicates the birth order when there are multiple births associated with the provided birth date.
- **`items[].dependent.dateOfBirth`** (`string`): The member's date of birth.
- **`items[].dependent.dateTimePeriod`** (`string`): The military service date.
- **`items[].dependent.dateTimePeriodFormatQualifier`** (`string`): Payers may sometimes return other non-compliant values.
  - Allowed values: `D8`, `RD8`
- **`items[].dependent.description`** (`string`): Context that identifies the exact military unit. Used to report military service data.
- **`items[].dependent.employmentStatusCode`** (`string`): Payers may sometimes return other non-compliant values.
  - Allowed values: `AE`, `AO`, `AS`, `AT`, `AU`, `CC`, `DD`, `HD`, `IR`, `LX`, `PE`, `RE`, `RM`, `RR`, `RU`
- **`items[].dependent.endDateTimePeriod`** (`string`): The military service end date.
- **`items[].dependent.entityIdentifier`** (`string`): The entity identifier for the dependent.
  - Allowed values: `Dependent`
- **`items[].dependent.entityType`** (`string`): The type of entity.

Payers may sometimes return other non-compliant values.
  - Allowed values: `Person`, `Non-Person Entity`
- **`items[].dependent.firstName`** (`string`): The member's first name.
- **`items[].dependent.gender`** (`string`)
  - Allowed values: `M`, `F`, `U`
- **`items[].dependent.governmentServiceAffiliationCode`** (`string`): Payers may sometimes return other non-compliant values.
  - Allowed values: `A`, `B`, `C`, `D`, `E`, `F`, `G`, `H`, `I`, `J`, `K`, `L`, `M`, `N`, `O`, `Q`, `R`, `S`, `U`, `W`
- **`items[].dependent.groupDescription`** (`string`): Group name
- **`items[].dependent.groupNumber`** (`string`): The group number associated with the insurance policy.
- **`items[].dependent.healthCareDiagnosisCodes`** (`array of HealthCareDiagnosisCode objects`)
- **`items[].dependent.healthCareDiagnosisCodes[].diagnosisCode`** (`string`): The diagnosis code. The decimal points are omitted in diagnosis codes - the decimal point is assumed.
- **`items[].dependent.healthCareDiagnosisCodes[].diagnosisTypeCode`** (`string`): The type of diagnosis code provided. It can be `ABK` - International Classification of Diseases Clinical Modification (ICD-10-CM) Principal Diagnosis or `BK` - International Classification of Diseases Clinical Modification (ICD-9-CM) Principal Diagnosis.
- **`items[].dependent.informationStatusCode`** (`string`): Payers may sometimes return other non-compliant values.
  - Allowed values: `A`, `C`, `L`, `O`, `P`, `S`, `T`
- **`items[].dependent.insuredIndicator`** (`string`): Indicates the status of the insured. For the dependent, this is always `N`.
  - Allowed values: `N`
- **`items[].dependent.lastName`** (`string`): The member's last name.
- **`items[].dependent.maintenanceReasonCode`** (`string`): Code identifying the reason for the changes to subscriber identifying information, such as name, date of birth, or address. This is always `25`

Payers may sometimes return other non-compliant values.
  - Allowed values: `25`
- **`items[].dependent.maintenanceTypeCode`** (`string`): The maintenance type code. Used to acknowledge a change in the identifying elements for the subscriber from those submitted in the original eligibility check request. It can also be included when the payer used the birth sequence number from the original request to locate the subscriber in their system. This is always `001`

Payers may sometimes return other non-compliant values.
  - Allowed values: `001`
- **`items[].dependent.memberId`** (`string`): This property will never be populated. Please use `subscriber.memberId` instead.
- **`items[].dependent.middleName`** (`string`): The member's middle name or initial.
- **`items[].dependent.militaryServiceRankCode`** (`string`): Payers may sometimes return other non-compliant values.
  - Allowed values: `A1`, `A2`, `A3`, `B1`, `B2`, `C1`, `C2`, `C3`, `C4`, `C5`, `C6`, `C7`, `C8`, `C9`, `E1`, `F1`, `F2`, `F3`, `F4`, `G1`, `G4`, `L1`, `L2`, `L3`, `L4`, `L5`, `L6`, `M1`, `M2`, `M3`, `M4`, `M5`, `M6`, `P1`, `P2`, `P3`, `P4`, `P5`, `R1`, `R2`, `S1`, `S2`, `S3`, `S4`, `S5`, `S6`, `S7`, `S8`, `S9`, `SA`, `SB`, `SC`, `T1`, `V1`, `W1`
- **`items[].dependent.planDescription`** (`string`): Plan name
- **`items[].dependent.planNetworkDescription`** (`string`): Plan network name
- **`items[].dependent.planNetworkIdNumber`** (`string`): The network identification number associated with the insurance policy.
- **`items[].dependent.planNumber`** (`string`): The plan number associated with the insurance policy.
- **`items[].dependent.relationToSubscriber`** (`string`): The name of the `relationToSubscriberCode`. For example, `Child` when the code is `19`.
  - Allowed values: `Spouse`, `Child`, `Employee`, `Unknown`, `Organ Donor`, `Cadaver Donor`, `Life Partner`, `Other Relationship`
- **`items[].dependent.relationToSubscriberCode`** (`string`): For the dependent, this can be `01` - Spouse, `19` - Child, `20` Employee, `21` - Unknown, `39` - Organ Donor, `40` - Cadaver Donor, `53` - Life Partner, or `G8` - Other Relationship.
  - Allowed values: `01`, `19`, `20`, `21`, `39`, `40`, `53`, `G8`, `Unknown`
- **`items[].dependent.responseProvider`** (`object`): Information about the entity that submitted the original eligibility check request. This may be an individual practitioner, a medical group, a hospital, or another type of healthcare provider. This object will always include at least one identifier, such as the provider's [NPI](https://www.stedi.com/docs/healthcare/national-provider-identifier), tax ID, or EIN.
- **`items[].dependent.responseProvider.aaaErrors`** (`array of EligibilityCheckProviderError objects`)
- **`items[].dependent.responseProvider.aaaErrors[].code`** (`string`): Payers may sometimes return other non-compliant values.
  - Allowed values: `15`, `41`, `43`, `44`, `45`, `46`, `47`, `48`, `50`, `51`, `79`, `97`, `T4`
- **`items[].dependent.responseProvider.aaaErrors[].description`** (`string`): The error description.
- **`items[].dependent.responseProvider.aaaErrors[].field`** (`string`): The error type, `AAA`.
- **`items[].dependent.responseProvider.aaaErrors[].followupAction`** (`string`): Payers may sometimes return other non-compliant values.
  - Allowed values: `Please Correct and Resubmit`, `Resubmission Not Allowed`, `Resubmission Allowed`, `Do Not Resubmit; Inquiry Initiated to a Third Party`, `Please Wait 30 Days and Resubmit`, `Please Wait 10 Days and Resubmit`, `Do Not Resubmit; We Will Hold Your Request and Respond Again Shortly`
- **`items[].dependent.responseProvider.aaaErrors[].location`** (`string`): The location of the error within the original X12 EDI response.
- **`items[].dependent.responseProvider.aaaErrors[].possibleResolutions`** (`string`): Information to help you correct the error.

We periodically update this guidance, so these strings may change at any time and may differ between eligibility responses. **Don't build programmatic logic that depends on matching these strings exactly.**
- **`items[].dependent.responseProvider.address`** (`object`)
- **`items[].dependent.responseProvider.address.address1`** (`string`): The first line of the address.
- **`items[].dependent.responseProvider.address.address2`** (`string`): The second line of the address.
- **`items[].dependent.responseProvider.address.city`** (`string`): The city.
- **`items[].dependent.responseProvider.address.countryCode`** (`string`): The two-letter country code from [Part 1 of ISO 3166](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2).
- **`items[].dependent.responseProvider.address.countrySubDivisionCode`** (`string`): The country subdivision code from [Part 2 of ISO 3166](https://en.wikipedia.org/wiki/ISO_3166-2).
- **`items[].dependent.responseProvider.address.postalCode`** (`string`): The United States or Canadian postal code, excluding punctuation and blanks.
- **`items[].dependent.responseProvider.address.state`** (`string`): The US state or Canadian province code with unknown option. For example, `TN` for Tennessee or `NB` for New Brunswick.

Payers may sometimes return other non-compliant values.
  - Allowed values: `NL`, `PE`, `NS`, `NB`, `QC`, `ON`, `MB`, `SK`, `AB`, `BC`, `YT`, `NT`, `NU`, `DC`, `AS`, `GU`, `MP`, `PR`, `UM`, `VI`, `AA`, `AE`, `AP`, `AK`, `AL`, `AR`, `AZ`, `CA`, `CO`, `CT`, `DE`, `FL`, `GA`, `HI`, `IA`, `ID`, `IL`, `IN`, `KS`, `KY`, `LA`, `MA`, `MD`, `ME`, `MI`, `MN`, `MO`, `MS`, `MT`, `NC`, `ND`, `NE`, `NH`, `NJ`, `NM`, `NV`, `NY`, `OH`, `OK`, `OR`, `PA`, `RI`, `SC`, `SD`, `TN`, `TX`, `UT`, `VA`, `VT`, `WA`, `WI`, `WV`, `WY`
- **`items[].dependent.responseProvider.employersId`** (`string`): Deprecated; The provider's identification number for the entity receiving the benefits information.
This shape is deprecated: This property is no longer used.
- **`items[].dependent.responseProvider.entityIdentifier`** (`string`): A code identifying the type of provider.

Payers may sometimes return other non-compliant values.
  - Allowed values: `Provider`, `Third-Party Administrator`, `Employer`, `Hospital`, `Facility`, `Gateway Provider`, `Plan Sponsor`, `Payer`
- **`items[].dependent.responseProvider.entityType`** (`string`): The type of entity.

Payers may sometimes return other non-compliant values.
  - Allowed values: `Person`, `Non-Person Entity`
- **`items[].dependent.responseProvider.federalTaxpayersIdNumber`** (`string`): The Federal Taxpayer Identification Number (also known as an EIN).
- **`items[].dependent.responseProvider.middleName`** (`string`): The provider's middle name. This applies to providers that are an individual.
- **`items[].dependent.responseProvider.npi`** (`string`): The provider's [National Provider Identifier (NPI)](https://www.stedi.com/docs/healthcare/national-provider-identifier).
- **`items[].dependent.responseProvider.payorIdentification`** (`string`): The payer identification.
- **`items[].dependent.responseProvider.pharmacyProcessorNumber`** (`string`): The pharmacy processor number.
- **`items[].dependent.responseProvider.providerCode`** (`string`): A code indicating the type of provider. Visit [Eligibility code lists](https://www.stedi.com/docs/healthcare/eligibility-code-lists#provider-codes) for a complete list.

Payers may sometimes return other non-compliant values.
  - Allowed values: `AD`, `AT`, `BI`, `CO`, `CV`, `H`, `HH`, `LA`, `OT`, `P1`, `P2`, `PC`, `PE`, `R`, `RF`, `SB`, `SK`, `SU`
- **`items[].dependent.responseProvider.providerFirstName`** (`string`): The provider's first name. This applies to providers that are an individual.
- **`items[].dependent.responseProvider.providerName`** (`string`): The provider's last name. This applies to providers that are an individual.
- **`items[].dependent.responseProvider.providerOrgName`** (`string`): The provider's organization name.
- **`items[].dependent.responseProvider.referenceIdentification`** (`string`): The Health Care Provider Taxonomy Code.
- **`items[].dependent.responseProvider.serviceProviderNumber`** (`string`): The service provider number. This is an identification number assigned by the payer.
- **`items[].dependent.responseProvider.servicesPlanID`** (`string`): The Centers for Medicare and Medicaid Services (CMS) Plan ID.
- **`items[].dependent.responseProvider.ssn`** (`string`): The Social Security Number (SSN).
- **`items[].dependent.responseProvider.suffix`** (`string`): The provider's name suffix, such as Jr., Sr., or III.
- **`items[].dependent.ssn`** (`string`): The member's Social Security Number (SSN).
- **`items[].dependent.startDateTimePeriod`** (`string`): The military service start date.
- **`items[].dependent.suffix`** (`string`): The name suffix, such as Jr., Sr., or III.
- **`items[].dependent.uniqueHealthIdentifier`** (`string`): The member's unique health identifier.
- **`items[].payer`** (`object`)
- **`items[].payer.centersForMedicareAndMedicaidPlanId`** (`string`): The payer's Centers for Medicare and Medicaid Services PlanID.
- **`items[].payer.contactInformation`** (`object`)
- **`items[].payer.contactInformation.contacts`** (`array of Contacts objects`): The contact information.
- **`items[].payer.contactInformation.contacts[].communicationMode`** (`string`): Payers may sometimes return other non-compliant values.
  - Allowed values: `Electronic Data Interchange Access Number`, `Electronic Mail`, `Facsimile`, `Telephone`, `Uniform Resource Locator (URL)`, `Telephone Extension`, `Work Phone Number`
- **`items[].payer.contactInformation.contacts[].communicationNumber`** (`string`): The communication number referenced in `communicationMode`. It includes the country or area code when applicable. 
 
 Note that phone numbers are formatted as AAABBBCCCC, where AAA represents the area code, BBB represents the telephone number prefix, and CCCC represents the telephone number. Phone numbers are provided without separators, such as dashes or parentheses. For example, `5551123345` for `555-112-3345`.
- **`items[].payer.contactInformation.name`** (`string`): The name of the contact person.
- **`items[].payer.entityIdentifier`** (`string`): The entity identifier code for the payer.

Payers may sometimes return other non-compliant values.
  - Allowed values: `Third-Party Administrator`, `Employer`, `Gateway Provider`, `Plan Sponsor`, `Payer`
- **`items[].payer.entityType`** (`string`): The type of entity.

Payers may sometimes return other non-compliant values.
  - Allowed values: `Person`, `Non-Person Entity`
- **`items[].payer.etin`** (`string`): The payer's Electronic Transmitter Identification Number (ETIN).
- **`items[].payer.federalTaxpayersIdNumber`** (`string`): The payer's federal taxpayer's identification number.
- **`items[].payer.firstName`** (`string`): The payer's first name, when the payer is an individual (not commonly used).
- **`items[].payer.lastName`** (`string`): The payer's last name. Used when the payer is an individual (not commonly used).
- **`items[].payer.middleName`** (`string`): The payer's middle name or initial, when the payer is an individual (not commonly used).
- **`items[].payer.naic`** (`string`): The payer's National Association of Insurance Commissioners (NAIC) identification number.
- **`items[].payer.name`** (`string`): The payer's business name, when the payer is not a person.
- **`items[].payer.npi`** (`string`): The payer's [National Provider Identifier (NPI)](https://www.stedi.com/docs/healthcare/national-provider-identifier).
- **`items[].payer.payorIdentification`** (`string`): The payer identification.
- **`items[].payer.suffix`** (`string`): The payer's name suffix, such as Jr. or III. Used when the payer is an individual (not commonly used).
- **`items[].planDateInformation`** (`object`)
- **`items[].planDateInformation.added`** (`string`): Added date. Payers may return this information in the case of retroactive eligibility.
- **`items[].planDateInformation.admission`** (`string`): The admission date or dates.
- **`items[].planDateInformation.certification`** (`string`): The certification date.
- **`items[].planDateInformation.cobraBegin`** (`string`): The date when COBRA coverage begins.
- **`items[].planDateInformation.cobraEnd`** (`string`): The date when COBRA coverage ends.
- **`items[].planDateInformation.dateOfDeath`** (`string`): The date of death. Payers may return this information in the case of a deceased subscriber or dependent.
- **`items[].planDateInformation.dateOfLastUpdate`** (`string`): The date when the plan information was last updated.
- **`items[].planDateInformation.discharge`** (`string`): The discharge date.
- **`items[].planDateInformation.effectiveDateOfChange`** (`string`): The effective date of change.
- **`items[].planDateInformation.eligibility`** (`string`): Plan eligibility dates.
- **`items[].planDateInformation.eligibilityBegin`** (`string`): The date when the patient is first eligible for benefits under the plan.
- **`items[].planDateInformation.eligibilityEnd`** (`string`): The date when the patient is no longer eligible for benefits under the plan.
- **`items[].planDateInformation.enrollment`** (`string`): The date when the patient is enrolled in the plan.
- **`items[].planDateInformation.issue`** (`string`): The issue date.
- **`items[].planDateInformation.plan`** (`string`): Plan effective dates.
- **`items[].planDateInformation.planBegin`** (`string`): The date coverage from the plan begins.
- **`items[].planDateInformation.planEnd`** (`string`): The date coverage from the plan ends.
- **`items[].planDateInformation.policyEffective`** (`string`): The date when the policy becomes effective.
- **`items[].planDateInformation.policyExpiration`** (`string`): The date when the policy expires.
- **`items[].planDateInformation.premiumPaidToDateBegin`** (`string`): The start of the period when the plan premium was paid in full.
- **`items[].planDateInformation.premiumPaidToDateEnd`** (`string`): The end of period when the plan premium payments are up-to-date.
- **`items[].planDateInformation.service`** (`string`): The service date or dates.
- **`items[].planDateInformation.status`** (`string`): The status date.
- **`items[].planInformation`** (`object`): Additional identification for the subscriber's healthcare plan.
- **`items[].planInformation.agencyClaimNumber`** (`string`): The agency claim number, only used when the information source is a Property and Casualty payer.
- **`items[].planInformation.alternativeListId`** (`string`): The alternative list ID - identifies a list of alternative drugs with the associated formulary status for the patient.
- **`items[].planInformation.caseNumber`** (`string`): The case number
- **`items[].planInformation.centersForMedicareAndMedicaidServicesNPI`** (`string`): The [National Provider Identifier (NPI)](https://www.stedi.com/docs/healthcare/national-provider-identifier) assigned by the Centers for Medicare and Medicaid Services
- **`items[].planInformation.classOfContractCode`** (`string`): The class of contract code - used to identify the applicable class of contract for claims processing.
- **`items[].planInformation.contractNumber`** (`string`): The contract number of a contract between the payer and the provider that requested the eligibility check.
- **`items[].planInformation.coverageListId`** (`string`): The coverage list ID - identifies a list of drugs that have coverage limitations for the patient.
- **`items[].planInformation.drugFormularyNumber`** (`string`): The drug formulary number
- **`items[].planInformation.electronicDevicePin`** (`string`): The electronic device pin number
- **`items[].planInformation.eligibilityCategory`** (`string`): The eligibility category
- **`items[].planInformation.facilityIdNumber`** (`string`): The facility ID number
- **`items[].planInformation.facilityNetworkIdentificationNumber`** (`string`): The facility network identification number
- **`items[].planInformation.familyUnitNumber`** (`string`): The family unit number
- **`items[].planInformation.federalTaxpayersIdentificationNumber`** (`string`): The federal taxpayer's identification number
- **`items[].planInformation.groupDescription`** (`string`): The group description
- **`items[].planInformation.groupNumber`** (`string`): The group number
- **`items[].planInformation.hicNumber`** (`string`): The health insurance claim number (HICN). Note that CMS previously used the HICN to uniquely identify Medicare beneficiaries. However, they have since transitioned to a new, randomized Medicare Beneficiary Identifier (MBI) format. The HICN is no longer used for Medicare transactions but this property is now used by some payers to return MBI. If you receive a value in this property that matches the format specified in the [Medicare Beneficiary Identifier documentation](https://www.cms.gov/training-education/partner-outreach-resources/new-medicare-card/medical-beneficiary-identifiers-mbis), the number is likely an MBI and we recommend sending a follow-up eligibility check to CMS for additional benefits data. This most commonly occurs with patients who are covered by both Medicare and Medicaid.
- **`items[].planInformation.idCardNumber`** (`string`): The identity card number, used when the Identity Card Number is different than the Member Identification Number.
- **`items[].planInformation.idCardSerialNumber`** (`string`): The identification card serial number. The Identification Card Serial Number uniquely identifies the identification card when multiple cards have been or will be issued to a member, such as a replacement card.
- **`items[].planInformation.insurancePolicyNumber`** (`string`): The insurance policy number
- **`items[].planInformation.issueNumber`** (`string`): The issue number
- **`items[].planInformation.medicaidProviderNumber`** (`string`): The Medicaid provider number
- **`items[].planInformation.medicaidRecipientIdNumber`** (`string`): The Medicaid recipient identification number
- **`items[].planInformation.medicalAssistanceCategory`** (`string`): The medical assistance category
- **`items[].planInformation.medicalRecordIdentificationNumber`** (`string`): The medical record identification number
- **`items[].planInformation.medicareProviderNumber`** (`string`): The Medicare provider number
- **`items[].planInformation.memberId`** (`string`): The member identification number - only used when checking eligibility with a Workers' Compensation or Property and Casualty insurer.
- **`items[].planInformation.patientAccountNumber`** (`string`): The patient account number. If you included this value in the original eligibility request, the payer will return the same value here in the response.
- **`items[].planInformation.personalIdentificationNumber`** (`string`): The personal identification number (PIN)
- **`items[].planInformation.planDescription`** (`string`): The plan description
- **`items[].planInformation.planNetworkIdDescription`** (`string`): The plan, group, or plan network name
- **`items[].planInformation.planNetworkIdNumber`** (`string`): The plan network identification number
- **`items[].planInformation.planNumber`** (`string`): The plan number
- **`items[].planInformation.policyNumber`** (`string`): The group or policy number
- **`items[].planInformation.priorAuthorizationNumber`** (`string`): The prior authorization number
- **`items[].planInformation.priorIdNumber`** (`string`): The prior identifier number
- **`items[].planInformation.referralNumber`** (`string`): The referral number
- **`items[].planInformation.socialSecurityNumber`** (`string`): The social security number
- **`items[].planInformation.stateLicenseNumber`** (`string`): The state license number
- **`items[].planInformation.submitterIdentificationNumber`** (`string`): The submitter identification number
- **`items[].planInformation.userIdentification`** (`string`): The user identification
- **`items[].provider`** (`object`)
- **`items[].provider.address`** (`object`)
- **`items[].provider.address.address1`** (`string`): The first line of the address.
- **`items[].provider.address.address2`** (`string`): The second line of the address.
- **`items[].provider.address.city`** (`string`): The city.
- **`items[].provider.address.countryCode`** (`string`): The two-letter country code from [Part 1 of ISO 3166](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2).
- **`items[].provider.address.countrySubDivisionCode`** (`string`): The country subdivision code from [Part 2 of ISO 3166](https://en.wikipedia.org/wiki/ISO_3166-2).
- **`items[].provider.address.postalCode`** (`string`): The United States or Canadian postal code, excluding punctuation and blanks.
- **`items[].provider.address.state`** (`string`): The US state or Canadian province code with unknown option. For example, `TN` for Tennessee or `NB` for New Brunswick.

Payers may sometimes return other non-compliant values.
  - Allowed values: `NL`, `PE`, `NS`, `NB`, `QC`, `ON`, `MB`, `SK`, `AB`, `BC`, `YT`, `NT`, `NU`, `DC`, `AS`, `GU`, `MP`, `PR`, `UM`, `VI`, `AA`, `AE`, `AP`, `AK`, `AL`, `AR`, `AZ`, `CA`, `CO`, `CT`, `DE`, `FL`, `GA`, `HI`, `IA`, `ID`, `IL`, `IN`, `KS`, `KY`, `LA`, `MA`, `MD`, `ME`, `MI`, `MN`, `MO`, `MS`, `MT`, `NC`, `ND`, `NE`, `NH`, `NJ`, `NM`, `NV`, `NY`, `OH`, `OK`, `OR`, `PA`, `RI`, `SC`, `SD`, `TN`, `TX`, `UT`, `VA`, `VT`, `WA`, `WI`, `WV`, `WY`
- **`items[].provider.entityIdentifier`** (`string`): A code identifying the type of provider.

Payers may sometimes return other non-compliant values.
  - Allowed values: `Provider`, `Third-Party Administrator`, `Employer`, `Hospital`, `Facility`, `Gateway Provider`, `Plan Sponsor`, `Payer`
- **`items[].provider.entityType`** (`string`): The type of entity.

Payers may sometimes return other non-compliant values.
  - Allowed values: `Person`, `Non-Person Entity`
- **`items[].provider.federalTaxpayersIdNumber`** (`string`): The Federal Taxpayer Identification Number (also known as an EIN).
- **`items[].provider.middleName`** (`string`): The provider's middle name. This applies to providers that are an individual.
- **`items[].provider.npi`** (`string`): The provider's [National Provider Identifier (NPI)](https://www.stedi.com/docs/healthcare/national-provider-identifier).
- **`items[].provider.payorIdentification`** (`string`): The payer identification.
- **`items[].provider.pharmacyProcessorNumber`** (`string`): The pharmacy processor number.
- **`items[].provider.providerCode`** (`string`): A code indicating the type of provider. Visit [Eligibility code lists](https://www.stedi.com/docs/healthcare/eligibility-code-lists#provider-codes) for a complete list.

Payers may sometimes return other non-compliant values.
  - Allowed values: `AD`, `AT`, `BI`, `CO`, `CV`, `H`, `HH`, `LA`, `OT`, `P1`, `P2`, `PC`, `PE`, `R`, `RF`, `SB`, `SK`, `SU`
- **`items[].provider.providerFirstName`** (`string`): The provider's first name. This applies to providers that are an individual.
- **`items[].provider.providerName`** (`string`): The provider's last name. This applies to providers that are an individual.
- **`items[].provider.providerOrgName`** (`string`): The provider's organization name.
- **`items[].provider.referenceIdentification`** (`string`): The Health Care Provider Taxonomy Code.
- **`items[].provider.serviceProviderNumber`** (`string`): The service provider number. This is an identification number assigned by the payer.
- **`items[].provider.servicesPlanID`** (`string`): The Centers for Medicare and Medicaid Services (CMS) Plan ID.
- **`items[].provider.ssn`** (`string`): The Social Security Number (SSN).
- **`items[].provider.suffix`** (`string`): The provider's name suffix, such as Jr., Sr., or III.
- **`items[].subscriber`** (`object`): Common fields shared between subscriber and dependent structures in the eligibility response.
- **`items[].subscriber.address`** (`object`)
- **`items[].subscriber.address.address1`** (`string`): The first line of the address.
- **`items[].subscriber.address.address2`** (`string`): The second line of the address.
- **`items[].subscriber.address.city`** (`string`): The city.
- **`items[].subscriber.address.countryCode`** (`string`): The two-letter country code from [Part 1 of ISO 3166](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2).
- **`items[].subscriber.address.countrySubDivisionCode`** (`string`): The country subdivision code from [Part 2 of ISO 3166](https://en.wikipedia.org/wiki/ISO_3166-2).
- **`items[].subscriber.address.postalCode`** (`string`): The United States or Canadian postal code, excluding punctuation and blanks.
- **`items[].subscriber.address.state`** (`string`): The US state or Canadian province code with unknown option. For example, `TN` for Tennessee or `NB` for New Brunswick.

Payers may sometimes return other non-compliant values.
  - Allowed values: `NL`, `PE`, `NS`, `NB`, `QC`, `ON`, `MB`, `SK`, `AB`, `BC`, `YT`, `NT`, `NU`, `DC`, `AS`, `GU`, `MP`, `PR`, `UM`, `VI`, `AA`, `AE`, `AP`, `AK`, `AL`, `AR`, `AZ`, `CA`, `CO`, `CT`, `DE`, `FL`, `GA`, `HI`, `IA`, `ID`, `IL`, `IN`, `KS`, `KY`, `LA`, `MA`, `MD`, `ME`, `MI`, `MN`, `MO`, `MS`, `MT`, `NC`, `ND`, `NE`, `NH`, `NJ`, `NM`, `NV`, `NY`, `OH`, `OK`, `OR`, `PA`, `RI`, `SC`, `SD`, `TN`, `TX`, `UT`, `VA`, `VT`, `WA`, `WI`, `WV`, `WY`
- **`items[].subscriber.birthSequenceNumber`** (`string`): The number assigned to each family member born with the same birth date, such as twins or triplets. Indicates the birth order when there are multiple births associated with the provided birth date.
- **`items[].subscriber.dateOfBirth`** (`string`): The member's date of birth.
- **`items[].subscriber.dateTimePeriod`** (`string`): The military service date.
- **`items[].subscriber.dateTimePeriodFormatQualifier`** (`string`): Payers may sometimes return other non-compliant values.
  - Allowed values: `D8`, `RD8`
- **`items[].subscriber.description`** (`string`): Context that identifies the exact military unit. Used to report military service data.
- **`items[].subscriber.employmentStatusCode`** (`string`): Payers may sometimes return other non-compliant values.
  - Allowed values: `AE`, `AO`, `AS`, `AT`, `AU`, `CC`, `DD`, `HD`, `IR`, `LX`, `PE`, `RE`, `RM`, `RR`, `RU`
- **`items[].subscriber.endDateTimePeriod`** (`string`): The military service end date.
- **`items[].subscriber.entityIdentifier`** (`string`): The entity identifier for the subscriber.
  - Allowed values: `Insured or Subscriber`
- **`items[].subscriber.entityType`** (`string`): The type of entity.

Payers may sometimes return other non-compliant values.
  - Allowed values: `Person`, `Non-Person Entity`
- **`items[].subscriber.firstName`** (`string`): The member's first name.
- **`items[].subscriber.gender`** (`string`)
  - Allowed values: `M`, `F`, `U`
- **`items[].subscriber.governmentServiceAffiliationCode`** (`string`): Payers may sometimes return other non-compliant values.
  - Allowed values: `A`, `B`, `C`, `D`, `E`, `F`, `G`, `H`, `I`, `J`, `K`, `L`, `M`, `N`, `O`, `Q`, `R`, `S`, `U`, `W`
- **`items[].subscriber.groupDescription`** (`string`): Group name
- **`items[].subscriber.groupNumber`** (`string`): The group number associated with the insurance policy.
- **`items[].subscriber.healthCareDiagnosisCodes`** (`array of HealthCareDiagnosisCode objects`)
- **`items[].subscriber.healthCareDiagnosisCodes[].diagnosisCode`** (`string`): The diagnosis code. The decimal points are omitted in diagnosis codes - the decimal point is assumed.
- **`items[].subscriber.healthCareDiagnosisCodes[].diagnosisTypeCode`** (`string`): The type of diagnosis code provided. It can be `ABK` - International Classification of Diseases Clinical Modification (ICD-10-CM) Principal Diagnosis or `BK` - International Classification of Diseases Clinical Modification (ICD-9-CM) Principal Diagnosis.
- **`items[].subscriber.informationStatusCode`** (`string`): Payers may sometimes return other non-compliant values.
  - Allowed values: `A`, `C`, `L`, `O`, `P`, `S`, `T`
- **`items[].subscriber.insuredIndicator`** (`string`): Indicates the status of the insured. For the subscriber, this is always `Y`.
  - Allowed values: `Y`
- **`items[].subscriber.lastName`** (`string`): The member's last name.
- **`items[].subscriber.maintenanceReasonCode`** (`string`): Code identifying the reason for the changes to subscriber identifying information, such as name, date of birth, or address. This is always `25`

Payers may sometimes return other non-compliant values.
  - Allowed values: `25`
- **`items[].subscriber.maintenanceTypeCode`** (`string`): The maintenance type code. Used to acknowledge a change in the identifying elements for the subscriber from those submitted in the original eligibility check request. It can also be included when the payer used the birth sequence number from the original request to locate the subscriber in their system. This is always `001`

Payers may sometimes return other non-compliant values.
  - Allowed values: `001`
- **`items[].subscriber.memberId`** (`string`): The member ID for the insurance policy.
- **`items[].subscriber.middleName`** (`string`): The member's middle name or initial.
- **`items[].subscriber.militaryServiceRankCode`** (`string`): Payers may sometimes return other non-compliant values.
  - Allowed values: `A1`, `A2`, `A3`, `B1`, `B2`, `C1`, `C2`, `C3`, `C4`, `C5`, `C6`, `C7`, `C8`, `C9`, `E1`, `F1`, `F2`, `F3`, `F4`, `G1`, `G4`, `L1`, `L2`, `L3`, `L4`, `L5`, `L6`, `M1`, `M2`, `M3`, `M4`, `M5`, `M6`, `P1`, `P2`, `P3`, `P4`, `P5`, `R1`, `R2`, `S1`, `S2`, `S3`, `S4`, `S5`, `S6`, `S7`, `S8`, `S9`, `SA`, `SB`, `SC`, `T1`, `V1`, `W1`
- **`items[].subscriber.planDescription`** (`string`): Plan name
- **`items[].subscriber.planNetworkDescription`** (`string`): Plan network name
- **`items[].subscriber.planNetworkIdNumber`** (`string`): The network identification number associated with the insurance policy.
- **`items[].subscriber.planNumber`** (`string`): The plan number associated with the insurance policy.
- **`items[].subscriber.relationToSubscriber`** (`string`): The name of the `relationToSubscriberCode`. For the subscriber, this is always `Self`.
  - Allowed values: `Self`
- **`items[].subscriber.relationToSubscriberCode`** (`string`): For the subscriber, this is always `18` for Self.
  - Allowed values: `18`
- **`items[].subscriber.responseProvider`** (`object`): Information about the entity that submitted the original eligibility check request. This may be an individual practitioner, a medical group, a hospital, or another type of healthcare provider. This object will always include at least one identifier, such as the provider's [NPI](https://www.stedi.com/docs/healthcare/national-provider-identifier), tax ID, or EIN.
- **`items[].subscriber.responseProvider.aaaErrors`** (`array of EligibilityCheckProviderError objects`)
- **`items[].subscriber.responseProvider.aaaErrors[].code`** (`string`): Payers may sometimes return other non-compliant values.
  - Allowed values: `15`, `41`, `43`, `44`, `45`, `46`, `47`, `48`, `50`, `51`, `79`, `97`, `T4`
- **`items[].subscriber.responseProvider.aaaErrors[].description`** (`string`): The error description.
- **`items[].subscriber.responseProvider.aaaErrors[].field`** (`string`): The error type, `AAA`.
- **`items[].subscriber.responseProvider.aaaErrors[].followupAction`** (`string`): Payers may sometimes return other non-compliant values.
  - Allowed values: `Please Correct and Resubmit`, `Resubmission Not Allowed`, `Resubmission Allowed`, `Do Not Resubmit; Inquiry Initiated to a Third Party`, `Please Wait 30 Days and Resubmit`, `Please Wait 10 Days and Resubmit`, `Do Not Resubmit; We Will Hold Your Request and Respond Again Shortly`
- **`items[].subscriber.responseProvider.aaaErrors[].location`** (`string`): The location of the error within the original X12 EDI response.
- **`items[].subscriber.responseProvider.aaaErrors[].possibleResolutions`** (`string`): Information to help you correct the error.

We periodically update this guidance, so these strings may change at any time and may differ between eligibility responses. **Don't build programmatic logic that depends on matching these strings exactly.**
- **`items[].subscriber.responseProvider.address`** (`object`)
- **`items[].subscriber.responseProvider.address.address1`** (`string`): The first line of the address.
- **`items[].subscriber.responseProvider.address.address2`** (`string`): The second line of the address.
- **`items[].subscriber.responseProvider.address.city`** (`string`): The city.
- **`items[].subscriber.responseProvider.address.countryCode`** (`string`): The two-letter country code from [Part 1 of ISO 3166](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2).
- **`items[].subscriber.responseProvider.address.countrySubDivisionCode`** (`string`): The country subdivision code from [Part 2 of ISO 3166](https://en.wikipedia.org/wiki/ISO_3166-2).
- **`items[].subscriber.responseProvider.address.postalCode`** (`string`): The United States or Canadian postal code, excluding punctuation and blanks.
- **`items[].subscriber.responseProvider.address.state`** (`string`): The US state or Canadian province code with unknown option. For example, `TN` for Tennessee or `NB` for New Brunswick.

Payers may sometimes return other non-compliant values.
  - Allowed values: `NL`, `PE`, `NS`, `NB`, `QC`, `ON`, `MB`, `SK`, `AB`, `BC`, `YT`, `NT`, `NU`, `DC`, `AS`, `GU`, `MP`, `PR`, `UM`, `VI`, `AA`, `AE`, `AP`, `AK`, `AL`, `AR`, `AZ`, `CA`, `CO`, `CT`, `DE`, `FL`, `GA`, `HI`, `IA`, `ID`, `IL`, `IN`, `KS`, `KY`, `LA`, `MA`, `MD`, `ME`, `MI`, `MN`, `MO`, `MS`, `MT`, `NC`, `ND`, `NE`, `NH`, `NJ`, `NM`, `NV`, `NY`, `OH`, `OK`, `OR`, `PA`, `RI`, `SC`, `SD`, `TN`, `TX`, `UT`, `VA`, `VT`, `WA`, `WI`, `WV`, `WY`
- **`items[].subscriber.responseProvider.employersId`** (`string`): Deprecated; The provider's identification number for the entity receiving the benefits information.
This shape is deprecated: This property is no longer used.
- **`items[].subscriber.responseProvider.entityIdentifier`** (`string`): A code identifying the type of provider.

Payers may sometimes return other non-compliant values.
  - Allowed values: `Provider`, `Third-Party Administrator`, `Employer`, `Hospital`, `Facility`, `Gateway Provider`, `Plan Sponsor`, `Payer`
- **`items[].subscriber.responseProvider.entityType`** (`string`): The type of entity.

Payers may sometimes return other non-compliant values.
  - Allowed values: `Person`, `Non-Person Entity`
- **`items[].subscriber.responseProvider.federalTaxpayersIdNumber`** (`string`): The Federal Taxpayer Identification Number (also known as an EIN).
- **`items[].subscriber.responseProvider.middleName`** (`string`): The provider's middle name. This applies to providers that are an individual.
- **`items[].subscriber.responseProvider.npi`** (`string`): The provider's [National Provider Identifier (NPI)](https://www.stedi.com/docs/healthcare/national-provider-identifier).
- **`items[].subscriber.responseProvider.payorIdentification`** (`string`): The payer identification.
- **`items[].subscriber.responseProvider.pharmacyProcessorNumber`** (`string`): The pharmacy processor number.
- **`items[].subscriber.responseProvider.providerCode`** (`string`): A code indicating the type of provider. Visit [Eligibility code lists](https://www.stedi.com/docs/healthcare/eligibility-code-lists#provider-codes) for a complete list.

Payers may sometimes return other non-compliant values.
  - Allowed values: `AD`, `AT`, `BI`, `CO`, `CV`, `H`, `HH`, `LA`, `OT`, `P1`, `P2`, `PC`, `PE`, `R`, `RF`, `SB`, `SK`, `SU`
- **`items[].subscriber.responseProvider.providerFirstName`** (`string`): The provider's first name. This applies to providers that are an individual.
- **`items[].subscriber.responseProvider.providerName`** (`string`): The provider's last name. This applies to providers that are an individual.
- **`items[].subscriber.responseProvider.providerOrgName`** (`string`): The provider's organization name.
- **`items[].subscriber.responseProvider.referenceIdentification`** (`string`): The Health Care Provider Taxonomy Code.
- **`items[].subscriber.responseProvider.serviceProviderNumber`** (`string`): The service provider number. This is an identification number assigned by the payer.
- **`items[].subscriber.responseProvider.servicesPlanID`** (`string`): The Centers for Medicare and Medicaid Services (CMS) Plan ID.
- **`items[].subscriber.responseProvider.ssn`** (`string`): The Social Security Number (SSN).
- **`items[].subscriber.responseProvider.suffix`** (`string`): The provider's name suffix, such as Jr., Sr., or III.
- **`items[].subscriber.ssn`** (`string`): The member's Social Security Number (SSN).
- **`items[].subscriber.startDateTimePeriod`** (`string`): The military service start date.
- **`items[].subscriber.suffix`** (`string`): The name suffix, such as Jr., Sr., or III.
- **`items[].subscriber.uniqueHealthIdentifier`** (`string`): The member's unique health identifier.
- **`meta`** (`object`): Metadata about the response. Stedi uses this data for tracking and troubleshooting.
- **`meta.applicationMode`** (`string`): The type of data in the request. This is either `production` when you send a request with a standard API key or `test` when you send a request in test mode with a [test API key](https://www.stedi.com/docs/api-reference/index#api-key-types). The `information` value is not currently used.

Payers may sometimes return other non-compliant values.
  - Allowed values: `production`, `test`, `information`
- **`meta.traceId`** (`string`): The unique ID Stedi assigns to this request.
- **`status`** (`string`)
  - Allowed values: `PENDING`, `COMPLETE`, `ERROR`
- **`warnings`** (`array of Warning objects`): Issues with your insurance discovery check that may affect the results. For example, Stedi issues a warning when enrolling with a payer would improve the results for future requests.
- **`warnings[].code`** (`string`): The warning code.
- **`warnings[].description`** (`string`): The warning description.

**Example:**

```json
{
  "discoveryId": "12345678-abcd-4321-efgh-987654321abc",
  "items": [
    {
      "benefitsInformation": [
        {
          "additionalInformation": [
            {
              "description": "To determine if a prior authorization is required, please check the health plan's website."
            }
          ],
          "benefitsRelatedEntities": [
            {
              "entityFirstname": "Jane",
              "entityIdentification": "XX",
              "entityIdentificationValue": "1234567890",
              "entityIdentifier": "Primary Care Provider",
              "entityName": "Dough",
              "entityType": "Person"
            }
          ],
          "code": "1",
          "inPlanNetworkIndicator": "Not Applicable",
          "inPlanNetworkIndicatorCode": "W",
          "name": "Active Coverage",
          "planCoverage": "Gold Plan",
          "serviceTypeCodes": [
            "30"
          ],
          "serviceTypes": [
            "Health Benefit Plan Coverage"
          ]
        },
        {
          "code": "1",
          "inPlanNetworkIndicator": "Not Applicable",
          "inPlanNetworkIndicatorCode": "W",
          "name": "Active Coverage",
          "planCoverage": "Gold Plan",
          "serviceTypeCodes": [
            "1"
          ],
          "serviceTypes": [
            "Medical Care"
          ]
        },
        {
          "additionalInformation": [
            {
              "description": "Prior authorization may be required. Covered No Limit."
            }
          ],
          "code": "1",
          "inPlanNetworkIndicator": "Yes",
          "inPlanNetworkIndicatorCode": "Y",
          "name": "Active Coverage",
          "planCoverage": "Gold Plan",
          "serviceTypeCodes": [
            "4"
          ],
          "serviceTypes": [
            "Diagnostic X-Ray"
          ]
        },
        {
          "benefitPercent": "0.5",
          "code": "A",
          "coverageLevel": "Family",
          "coverageLevelCode": "FAM",
          "inPlanNetworkIndicator": "Yes",
          "inPlanNetworkIndicatorCode": "Y",
          "name": "Co-Insurance",
          "planCoverage": "Gold Plan",
          "serviceTypeCodes": [
            "4"
          ],
          "serviceTypes": [
            "Diagnostic X-Ray"
          ],
          "timeQualifier": "Visit",
          "timeQualifierCode": "27"
        },
        {
          "code": "I",
          "inPlanNetworkIndicator": "No",
          "inPlanNetworkIndicatorCode": "N",
          "name": "Non-Covered",
          "planCoverage": "Gold Plan",
          "serviceTypeCodes": [
            "4"
          ],
          "serviceTypes": [
            "Diagnostic X-Ray"
          ]
        },
        {
          "code": "1",
          "inPlanNetworkIndicator": "Yes",
          "inPlanNetworkIndicatorCode": "Y",
          "name": "Active Coverage",
          "planCoverage": "Gold Plan",
          "serviceTypeCodes": [
            "5"
          ],
          "serviceTypes": [
            "Diagnostic Lab"
          ]
        },
        {
          "additionalInformation": [
            {
              "description": "per visit"
            }
          ],
          "benefitAmount": "20",
          "code": "B",
          "coverageLevel": "Family",
          "coverageLevelCode": "FAM",
          "inPlanNetworkIndicator": "Yes",
          "inPlanNetworkIndicatorCode": "Y",
          "name": "Co-Payment",
          "planCoverage": "Gold Plan",
          "serviceTypeCodes": [
            "5"
          ],
          "serviceTypes": [
            "Diagnostic Lab"
          ],
          "timeQualifier": "Visit",
          "timeQualifierCode": "27"
        },
        {
          "code": "I",
          "inPlanNetworkIndicator": "No",
          "inPlanNetworkIndicatorCode": "N",
          "name": "Non-Covered",
          "planCoverage": "Gold Plan",
          "serviceTypeCodes": [
            "5"
          ],
          "serviceTypes": [
            "Diagnostic Lab"
          ]
        },
        {
          "additionalInformation": [
            {
              "description": "Prior authorization may be required. Covered No Limit."
            }
          ],
          "code": "1",
          "inPlanNetworkIndicator": "Yes",
          "inPlanNetworkIndicatorCode": "Y",
          "name": "Active Coverage",
          "planCoverage": "Gold Plan",
          "serviceTypeCodes": [
            "12"
          ],
          "serviceTypes": [
            "Durable Medical Equipment Purchase"
          ]
        },
        {
          "benefitPercent": "0.5",
          "code": "A",
          "coverageLevel": "Family",
          "coverageLevelCode": "FAM",
          "inPlanNetworkIndicator": "Yes",
          "inPlanNetworkIndicatorCode": "Y",
          "name": "Co-Insurance",
          "planCoverage": "Gold Plan",
          "serviceTypeCodes": [
            "12"
          ],
          "serviceTypes": [
            "Durable Medical Equipment Purchase"
          ],
          "timeQualifier": "Visit",
          "timeQualifierCode": "27"
        },
        {
          "code": "I",
          "inPlanNetworkIndicator": "No",
          "inPlanNetworkIndicatorCode": "N",
          "name": "Non-Covered",
          "planCoverage": "Gold Plan",
          "serviceTypeCodes": [
            "12"
          ],
          "serviceTypes": [
            "Durable Medical Equipment Purchase"
          ]
        },
        {
          "code": "1",
          "inPlanNetworkIndicator": "Yes",
          "inPlanNetworkIndicatorCode": "Y",
          "name": "Active Coverage",
          "planCoverage": "Gold Plan",
          "serviceTypeCodes": [
            "13"
          ],
          "serviceTypes": [
            "Ambulatory Service Center Facility"
          ]
        },
        {
          "benefitPercent": "0.5",
          "code": "A",
          "coverageLevel": "Family",
          "coverageLevelCode": "FAM",
          "inPlanNetworkIndicator": "Yes",
          "inPlanNetworkIndicatorCode": "Y",
          "name": "Co-Insurance",
          "planCoverage": "Gold Plan",
          "serviceTypeCodes": [
            "13"
          ],
          "serviceTypes": [
            "Ambulatory Service Center Facility"
          ],
          "timeQualifier": "Visit",
          "timeQualifierCode": "27"
        },
        {
          "code": "I",
          "inPlanNetworkIndicator": "No",
          "inPlanNetworkIndicatorCode": "N",
          "name": "Non-Covered",
          "planCoverage": "Gold Plan",
          "serviceTypeCodes": [
            "13"
          ],
          "serviceTypes": [
            "Ambulatory Service Center Facility"
          ]
        },
        {
          "additionalInformation": [
            {
              "description": "Prior authorization may be required. Covered No Limit."
            }
          ],
          "code": "1",
          "inPlanNetworkIndicator": "Yes",
          "inPlanNetworkIndicatorCode": "Y",
          "name": "Active Coverage",
          "planCoverage": "Gold Plan",
          "serviceTypeCodes": [
            "18"
          ],
          "serviceTypes": [
            "Durable Medical Equipment Rental"
          ]
        },
        {
          "benefitPercent": "0.5",
          "code": "A",
          "coverageLevel": "Family",
          "coverageLevelCode": "FAM",
          "inPlanNetworkIndicator": "Yes",
          "inPlanNetworkIndicatorCode": "Y",
          "name": "Co-Insurance",
          "planCoverage": "Gold Plan",
          "serviceTypeCodes": [
            "18"
          ],
          "serviceTypes": [
            "Durable Medical Equipment Rental"
          ],
          "timeQualifier": "Visit",
          "timeQualifierCode": "27"
        },
        {
          "code": "I",
          "inPlanNetworkIndicator": "No",
          "inPlanNetworkIndicatorCode": "N",
          "name": "Non-Covered",
          "planCoverage": "Gold Plan",
          "serviceTypeCodes": [
            "18"
          ],
          "serviceTypes": [
            "Durable Medical Equipment Rental"
          ]
        },
        {
          "additionalInformation": [
            {
              "description": "Limited to 26 visits per year (visits in excess of 26 require prior authorization)."
            }
          ],
          "code": "1",
          "inPlanNetworkIndicator": "Yes",
          "inPlanNetworkIndicatorCode": "Y",
          "name": "Active Coverage",
          "planCoverage": "Gold Plan",
          "serviceTypeCodes": [
            "33"
          ],
          "serviceTypes": [
            "Chiropractic"
          ]
        },
        {
          "benefitPercent": "0.5",
          "code": "A",
          "coverageLevel": "Family",
          "coverageLevelCode": "FAM",
          "inPlanNetworkIndicator": "Yes",
          "inPlanNetworkIndicatorCode": "Y",
          "name": "Co-Insurance",
          "planCoverage": "Gold Plan",
          "serviceTypeCodes": [
            "33"
          ],
          "serviceTypes": [
            "Chiropractic"
          ],
          "timeQualifier": "Visit",
          "timeQualifierCode": "27"
        },
        {
          "code": "I",
          "inPlanNetworkIndicator": "No",
          "inPlanNetworkIndicatorCode": "N",
          "name": "Non-Covered",
          "planCoverage": "Gold Plan",
          "serviceTypeCodes": [
            "33"
          ],
          "serviceTypes": [
            "Chiropractic"
          ]
        },
        {
          "additionalInformation": [
            {
              "description": "Prior authorization may be required. Covered No Limit."
            }
          ],
          "code": "1",
          "inPlanNetworkIndicator": "Yes",
          "inPlanNetworkIndicatorCode": "Y",
          "name": "Active Coverage",
          "planCoverage": "Gold Plan",
          "serviceTypeCodes": [
            "48"
          ],
          "serviceTypes": [
            "Hospital - Inpatient"
          ]
        },
        {
          "benefitPercent": "0.5",
          "code": "A",
          "coverageLevel": "Family",
          "coverageLevelCode": "FAM",
          "inPlanNetworkIndicator": "Yes",
          "inPlanNetworkIndicatorCode": "Y",
          "name": "Co-Insurance",
          "planCoverage": "Gold Plan",
          "serviceTypeCodes": [
            "48"
          ],
          "serviceTypes": [
            "Hospital - Inpatient"
          ],
          "timeQualifier": "Visit",
          "timeQualifierCode": "27"
        },
        {
          "code": "I",
          "inPlanNetworkIndicator": "No",
          "inPlanNetworkIndicatorCode": "N",
          "name": "Non-Covered",
          "planCoverage": "Gold Plan",
          "serviceTypeCodes": [
            "48"
          ],
          "serviceTypes": [
            "Hospital - Inpatient"
          ]
        },
        {
          "additionalInformation": [
            {
              "description": "Prior authorization may be required. Covered No Limit."
            }
          ],
          "code": "1",
          "inPlanNetworkIndicator": "Yes",
          "inPlanNetworkIndicatorCode": "Y",
          "name": "Active Coverage",
          "planCoverage": "Gold Plan",
          "serviceTypeCodes": [
            "50"
          ],
          "serviceTypes": [
            "Hospital - Outpatient"
          ]
        },
        {
          "benefitPercent": "0.5",
          "code": "A",
          "coverageLevel": "Family",
          "coverageLevelCode": "FAM",
          "inPlanNetworkIndicator": "Yes",
          "inPlanNetworkIndicatorCode": "Y",
          "name": "Co-Insurance",
          "planCoverage": "Gold Plan",
          "serviceTypeCodes": [
            "50"
          ],
          "serviceTypes": [
            "Hospital - Outpatient"
          ],
          "timeQualifier": "Visit",
          "timeQualifierCode": "27"
        },
        {
          "code": "I",
          "inPlanNetworkIndicator": "No",
          "inPlanNetworkIndicatorCode": "N",
          "name": "Non-Covered",
          "planCoverage": "Gold Plan",
          "serviceTypeCodes": [
            "50"
          ],
          "serviceTypes": [
            "Hospital - Outpatient"
          ]
        },
        {
          "additionalInformation": [
            {
              "description": "Covered No Limit."
            }
          ],
          "code": "1",
          "inPlanNetworkIndicator": "Yes",
          "inPlanNetworkIndicatorCode": "Y",
          "name": "Active Coverage",
          "planCoverage": "Gold Plan",
          "serviceTypeCodes": [
            "51"
          ],
          "serviceTypes": [
            "Hospital - Emergency Accident"
          ]
        },
        {
          "benefitPercent": "0.5",
          "code": "A",
          "coverageLevel": "Family",
          "coverageLevelCode": "FAM",
          "inPlanNetworkIndicator": "Yes",
          "inPlanNetworkIndicatorCode": "Y",
          "name": "Co-Insurance",
          "planCoverage": "Gold Plan",
          "serviceTypeCodes": [
            "51"
          ],
          "serviceTypes": [
            "Hospital - Emergency Accident"
          ],
          "timeQualifier": "Visit",
          "timeQualifierCode": "27"
        },
        {
          "additionalInformation": [
            {
              "description": "Covered No Limit."
            }
          ],
          "code": "1",
          "inPlanNetworkIndicator": "No",
          "inPlanNetworkIndicatorCode": "N",
          "name": "Active Coverage",
          "planCoverage": "Gold Plan",
          "serviceTypeCodes": [
            "51"
          ],
          "serviceTypes": [
            "Hospital - Emergency Accident"
          ]
        },
        {
          "benefitPercent": "0.5",
          "code": "A",
          "coverageLevel": "Family",
          "coverageLevelCode": "FAM",
          "inPlanNetworkIndicator": "No",
          "inPlanNetworkIndicatorCode": "N",
          "name": "Co-Insurance",
          "planCoverage": "Gold Plan",
          "serviceTypeCodes": [
            "51"
          ],
          "serviceTypes": [
            "Hospital - Emergency Accident"
          ],
          "timeQualifier": "Visit",
          "timeQualifierCode": "27"
        },
        {
          "additionalInformation": [
            {
              "description": "Covered No Limit."
            }
          ],
          "code": "1",
          "inPlanNetworkIndicator": "Yes",
          "inPlanNetworkIndicatorCode": "Y",
          "name": "Active Coverage",
          "planCoverage": "Gold Plan",
          "serviceTypeCodes": [
            "52"
          ],
          "serviceTypes": [
            "Hospital - Emergency Medical"
          ]
        },
        {
          "benefitPercent": "0.5",
          "code": "A",
          "coverageLevel": "Family",
          "coverageLevelCode": "FAM",
          "inPlanNetworkIndicator": "Yes",
          "inPlanNetworkIndicatorCode": "Y",
          "name": "Co-Insurance",
          "planCoverage": "Gold Plan",
          "serviceTypeCodes": [
            "52"
          ],
          "serviceTypes": [
            "Hospital - Emergency Medical"
          ],
          "timeQualifier": "Visit",
          "timeQualifierCode": "27"
        },
        {
          "additionalInformation": [
            {
              "description": "Covered No Limit."
            }
          ],
          "code": "1",
          "inPlanNetworkIndicator": "No",
          "inPlanNetworkIndicatorCode": "N",
          "name": "Active Coverage",
          "planCoverage": "Gold Plan",
          "serviceTypeCodes": [
            "52"
          ],
          "serviceTypes": [
            "Hospital - Emergency Medical"
          ]
        },
        {
          "benefitPercent": "0.5",
          "code": "A",
          "coverageLevel": "Family",
          "coverageLevelCode": "FAM",
          "inPlanNetworkIndicator": "No",
          "inPlanNetworkIndicatorCode": "N",
          "name": "Co-Insurance",
          "planCoverage": "Gold Plan",
          "serviceTypeCodes": [
            "52"
          ],
          "serviceTypes": [
            "Hospital - Emergency Medical"
          ],
          "timeQualifier": "Visit",
          "timeQualifierCode": "27"
        },
        {
          "code": "1",
          "inPlanNetworkIndicator": "Yes",
          "inPlanNetworkIndicatorCode": "Y",
          "name": "Active Coverage",
          "planCoverage": "Gold Plan",
          "serviceTypeCodes": [
            "53"
          ],
          "serviceTypes": [
            "Hospital - Ambulatory Surgical"
          ]
        },
        {
          "benefitPercent": "0.5",
          "code": "A",
          "coverageLevel": "Family",
          "coverageLevelCode": "FAM",
          "inPlanNetworkIndicator": "Yes",
          "inPlanNetworkIndicatorCode": "Y",
          "name": "Co-Insurance",
          "planCoverage": "Gold Plan",
          "serviceTypeCodes": [
            "53"
          ],
          "serviceTypes": [
            "Hospital - Ambulatory Surgical"
          ],
          "timeQualifier": "Visit",
          "timeQualifierCode": "27"
        },
        {
          "code": "I",
          "inPlanNetworkIndicator": "No",
          "inPlanNetworkIndicatorCode": "N",
          "name": "Non-Covered",
          "planCoverage": "Gold Plan",
          "serviceTypeCodes": [
            "53"
          ],
          "serviceTypes": [
            "Hospital - Ambulatory Surgical"
          ]
        },
        {
          "additionalInformation": [
            {
              "description": "Prior authorization may be required. Covered No Limit."
            }
          ],
          "code": "1",
          "inPlanNetworkIndicator": "Yes",
          "inPlanNetworkIndicatorCode": "Y",
          "name": "Active Coverage",
          "planCoverage": "Gold Plan",
          "serviceTypeCodes": [
            "62"
          ],
          "serviceTypes": [
            "MRI/CAT Scan"
          ]
        },
        {
          "benefitPercent": "0.5",
          "code": "A",
          "coverageLevel": "Family",
          "coverageLevelCode": "FAM",
          "inPlanNetworkIndicator": "Yes",
          "inPlanNetworkIndicatorCode": "Y",
          "name": "Co-Insurance",
          "planCoverage": "Gold Plan",
          "serviceTypeCodes": [
            "62"
          ],
          "serviceTypes": [
            "MRI/CAT Scan"
          ],
          "timeQualifier": "Visit",
          "timeQualifierCode": "27"
        },
        {
          "code": "I",
          "inPlanNetworkIndicator": "No",
          "inPlanNetworkIndicatorCode": "N",
          "name": "Non-Covered",
          "planCoverage": "Gold Plan",
          "serviceTypeCodes": [
            "62"
          ],
          "serviceTypes": [
            "MRI/CAT Scan"
          ]
        },
        {
          "additionalInformation": [
            {
              "description": "Prior authorization may be required. Covered No Limit."
            }
          ],
          "code": "1",
          "inPlanNetworkIndicator": "Yes",
          "inPlanNetworkIndicatorCode": "Y",
          "name": "Active Coverage",
          "planCoverage": "Gold Plan",
          "serviceTypeCodes": [
            "65"
          ],
          "serviceTypes": [
            "Newborn Care"
          ]
        },
        {
          "benefitPercent": "0.5",
          "code": "A",
          "coverageLevel": "Family",
          "coverageLevelCode": "FAM",
          "inPlanNetworkIndicator": "Yes",
          "inPlanNetworkIndicatorCode": "Y",
          "name": "Co-Insurance",
          "planCoverage": "Gold Plan",
          "serviceTypeCodes": [
            "65"
          ],
          "serviceTypes": [
            "Newborn Care"
          ],
          "timeQualifier": "Visit",
          "timeQualifierCode": "27"
        },
        {
          "code": "I",
          "inPlanNetworkIndicator": "No",
          "inPlanNetworkIndicatorCode": "N",
          "name": "Non-Covered",
          "planCoverage": "Gold Plan",
          "serviceTypeCodes": [
            "65"
          ],
          "serviceTypes": [
            "Newborn Care"
          ]
        },
        {
          "additionalInformation": [
            {
              "description": "Covered in accordance with ACA guidelines."
            }
          ],
          "code": "1",
          "inPlanNetworkIndicator": "Yes",
          "inPlanNetworkIndicatorCode": "Y",
          "name": "Active Coverage",
          "planCoverage": "Gold Plan",
          "serviceTypeCodes": [
            "68"
          ],
          "serviceTypes": [
            "Well Baby Care"
          ]
        },
        {
          "benefitAmount": "0",
          "code": "B",
          "coverageLevel": "Family",
          "coverageLevelCode": "FAM",
          "inPlanNetworkIndicator": "Yes",
          "inPlanNetworkIndicatorCode": "Y",
          "name": "Co-Payment",
          "planCoverage": "Gold Plan",
          "serviceTypeCodes": [
            "68"
          ],
          "serviceTypes": [
            "Well Baby Care"
          ],
          "timeQualifier": "Visit",
          "timeQualifierCode": "27"
        },
        {
          "code": "I",
          "inPlanNetworkIndicator": "No",
          "inPlanNetworkIndicatorCode": "N",
          "name": "Non-Covered",
          "planCoverage": "Gold Plan",
          "serviceTypeCodes": [
            "68"
          ],
          "serviceTypes": [
            "Well Baby Care"
          ]
        },
        {
          "additionalInformation": [
            {
              "description": "Prior authorization may be required. Covered No Limit."
            }
          ],
          "code": "1",
          "inPlanNetworkIndicator": "Yes",
          "inPlanNetworkIndicatorCode": "Y",
          "name": "Active Coverage",
          "planCoverage": "Gold Plan",
          "serviceTypeCodes": [
            "69"
          ],
          "serviceTypes": [
            "Maternity"
          ]
        },
        {
          "benefitPercent": "0.5",
          "code": "A",
          "coverageLevel": "Family",
          "coverageLevelCode": "FAM",
          "inPlanNetworkIndicator": "Yes",
          "inPlanNetworkIndicatorCode": "Y",
          "name": "Co-Insurance",
          "planCoverage": "Gold Plan",
          "serviceTypeCodes": [
            "69"
          ],
          "serviceTypes": [
            "Maternity"
          ],
          "timeQualifier": "Visit",
          "timeQualifierCode": "27"
        },
        {
          "code": "I",
          "inPlanNetworkIndicator": "No",
          "inPlanNetworkIndicatorCode": "N",
          "name": "Non-Covered",
          "planCoverage": "Gold Plan",
          "serviceTypeCodes": [
            "69"
          ],
          "serviceTypes": [
            "Maternity"
          ]
        },
        {
          "additionalInformation": [
            {
              "description": "Covered No Limit."
            }
          ],
          "code": "1",
          "inPlanNetworkIndicator": "Yes",
          "inPlanNetworkIndicatorCode": "Y",
          "name": "Active Coverage",
          "planCoverage": "Gold Plan",
          "serviceTypeCodes": [
            "86"
          ],
          "serviceTypes": [
            "Emergency Services"
          ]
        },
        {
          "benefitPercent": "0.5",
          "code": "A",
          "coverageLevel": "Family",
          "coverageLevelCode": "FAM",
          "inPlanNetworkIndicator": "Yes",
          "inPlanNetworkIndicatorCode": "Y",
          "name": "Co-Insurance",
          "planCoverage": "Gold Plan",
          "serviceTypeCodes": [
            "86"
          ],
          "serviceTypes": [
            "Emergency Services"
          ],
          "timeQualifier": "Visit",
          "timeQualifierCode": "27"
        },
        {
          "additionalInformation": [
            {
              "description": "Covered No Limit."
            }
          ],
          "code": "1",
          "inPlanNetworkIndicator": "No",
          "inPlanNetworkIndicatorCode": "N",
          "name": "Active Coverage",
          "planCoverage": "Gold Plan",
          "serviceTypeCodes": [
            "86"
          ],
          "serviceTypes": [
            "Emergency Services"
          ]
        },
        {
          "benefitPercent": "0.5",
          "code": "A",
          "coverageLevel": "Family",
          "coverageLevelCode": "FAM",
          "inPlanNetworkIndicator": "No",
          "inPlanNetworkIndicatorCode": "N",
          "name": "Co-Insurance",
          "planCoverage": "Gold Plan",
          "serviceTypeCodes": [
            "86"
          ],
          "serviceTypes": [
            "Emergency Services"
          ],
          "timeQualifier": "Visit",
          "timeQualifierCode": "27"
        },
        {
          "code": "1",
          "inPlanNetworkIndicator": "Yes",
          "inPlanNetworkIndicatorCode": "Y",
          "name": "Active Coverage",
          "planCoverage": "Gold Plan",
          "serviceTypeCodes": [
            "88"
          ],
          "serviceTypes": [
            "Pharmacy"
          ]
        },
        {
          "additionalInformation": [
            {
              "description": "per prescription"
            }
          ],
          "benefitAmount": "10",
          "code": "B",
          "coverageLevel": "Family",
          "coverageLevelCode": "FAM",
          "inPlanNetworkIndicator": "Yes",
          "inPlanNetworkIndicatorCode": "Y",
          "name": "Co-Payment",
          "planCoverage": "Gold Plan",
          "serviceTypeCodes": [
            "88"
          ],
          "serviceTypes": [
            "Pharmacy"
          ],
          "timeQualifier": "Visit",
          "timeQualifierCode": "27"
        },
        {
          "code": "I",
          "inPlanNetworkIndicator": "No",
          "inPlanNetworkIndicatorCode": "N",
          "name": "Non-Covered",
          "planCoverage": "Gold Plan",
          "serviceTypeCodes": [
            "88"
          ],
          "serviceTypes": [
            "Pharmacy"
          ]
        },
        {
          "additionalInformation": [
            {
              "description": "PCP"
            }
          ],
          "code": "1",
          "inPlanNetworkIndicator": "Yes",
          "inPlanNetworkIndicatorCode": "Y",
          "name": "Active Coverage",
          "planCoverage": "Gold Plan",
          "serviceTypeCodes": [
            "98"
          ],
          "serviceTypes": [
            "Professional (Physician) Visit - Office"
          ]
        },
        {
          "additionalInformation": [
            {
              "description": "per visit"
            },
            {
              "description": "PCP"
            }
          ],
          "benefitAmount": "15",
          "code": "B",
          "coverageLevel": "Family",
          "coverageLevelCode": "FAM",
          "inPlanNetworkIndicator": "Yes",
          "inPlanNetworkIndicatorCode": "Y",
          "name": "Co-Payment",
          "planCoverage": "Gold Plan",
          "serviceTypeCodes": [
            "98"
          ],
          "serviceTypes": [
            "Professional (Physician) Visit - Office"
          ],
          "timeQualifier": "Visit",
          "timeQualifierCode": "27"
        },
        {
          "additionalInformation": [
            {
              "description": "PCP"
            }
          ],
          "code": "I",
          "inPlanNetworkIndicator": "No",
          "inPlanNetworkIndicatorCode": "N",
          "name": "Non-Covered",
          "planCoverage": "Gold Plan",
          "serviceTypeCodes": [
            "98"
          ],
          "serviceTypes": [
            "Professional (Physician) Visit - Office"
          ]
        },
        {
          "additionalInformation": [
            {
              "description": "Specialist"
            },
            {
              "description": "Covered No Limit."
            }
          ],
          "code": "1",
          "inPlanNetworkIndicator": "Yes",
          "inPlanNetworkIndicatorCode": "Y",
          "name": "Active Coverage",
          "planCoverage": "Gold Plan",
          "serviceTypeCodes": [
            "98"
          ],
          "serviceTypes": [
            "Professional (Physician) Visit - Office"
          ]
        },
        {
          "additionalInformation": [
            {
              "description": "per visit"
            },
            {
              "description": "Specialist"
            }
          ],
          "benefitAmount": "30",
          "code": "B",
          "coverageLevel": "Family",
          "coverageLevelCode": "FAM",
          "inPlanNetworkIndicator": "Yes",
          "inPlanNetworkIndicatorCode": "Y",
          "name": "Co-Payment",
          "planCoverage": "Gold Plan",
          "serviceTypeCodes": [
            "98"
          ],
          "serviceTypes": [
            "Professional (Physician) Visit - Office"
          ],
          "timeQualifier": "Visit",
          "timeQualifierCode": "27"
        },
        {
          "additionalInformation": [
            {
              "description": "Specialist"
            }
          ],
          "code": "I",
          "inPlanNetworkIndicator": "No",
          "inPlanNetworkIndicatorCode": "N",
          "name": "Non-Covered",
          "planCoverage": "Gold Plan",
          "serviceTypeCodes": [
            "98"
          ],
          "serviceTypes": [
            "Professional (Physician) Visit - Office"
          ]
        },
        {
          "additionalInformation": [
            {
              "description": "Prior authorization may be required. Covered No Limit. (Primary Care Provider (PCP) and other practitioner office visits do not require prior authorization.) Note| Services (excluding Emergency Room Care / Emergency Services) rendered by an out-of-network provider"
            }
          ],
          "code": "1",
          "inPlanNetworkIndicator": "Yes",
          "inPlanNetworkIndicatorCode": "Y",
          "name": "Active Coverage",
          "planCoverage": "Gold Plan",
          "serviceTypeCodes": [
            "A4"
          ],
          "serviceTypes": [
            "Psychiatric"
          ]
        },
        {
          "benefitPercent": "0.5",
          "code": "A",
          "coverageLevel": "Family",
          "coverageLevelCode": "FAM",
          "inPlanNetworkIndicator": "Yes",
          "inPlanNetworkIndicatorCode": "Y",
          "name": "Co-Insurance",
          "planCoverage": "Gold Plan",
          "serviceTypeCodes": [
            "A4"
          ],
          "serviceTypes": [
            "Psychiatric"
          ],
          "timeQualifier": "Visit",
          "timeQualifierCode": "27"
        },
        {
          "code": "I",
          "inPlanNetworkIndicator": "No",
          "inPlanNetworkIndicatorCode": "N",
          "name": "Non-Covered",
          "planCoverage": "Gold Plan",
          "serviceTypeCodes": [
            "A4"
          ],
          "serviceTypes": [
            "Psychiatric"
          ]
        },
        {
          "code": "1",
          "inPlanNetworkIndicator": "Yes",
          "inPlanNetworkIndicatorCode": "Y",
          "name": "Active Coverage",
          "planCoverage": "Gold Plan",
          "serviceTypeCodes": [
            "A6"
          ],
          "serviceTypes": [
            "Psychotherapy"
          ]
        },
        {
          "benefitPercent": "0.5",
          "code": "A",
          "coverageLevel": "Family",
          "coverageLevelCode": "FAM",
          "inPlanNetworkIndicator": "Yes",
          "inPlanNetworkIndicatorCode": "Y",
          "name": "Co-Insurance",
          "planCoverage": "Gold Plan",
          "serviceTypeCodes": [
            "A6"
          ],
          "serviceTypes": [
            "Psychotherapy"
          ],
          "timeQualifier": "Visit",
          "timeQualifierCode": "27"
        },
        {
          "code": "I",
          "inPlanNetworkIndicator": "No",
          "inPlanNetworkIndicatorCode": "N",
          "name": "Non-Covered",
          "planCoverage": "Gold Plan",
          "serviceTypeCodes": [
            "A6"
          ],
          "serviceTypes": [
            "Psychotherapy"
          ]
        },
        {
          "code": "1",
          "inPlanNetworkIndicator": "Yes",
          "inPlanNetworkIndicatorCode": "Y",
          "name": "Active Coverage",
          "planCoverage": "Gold Plan",
          "serviceTypeCodes": [
            "A7"
          ],
          "serviceTypes": [
            "Psychiatric - Inpatient"
          ]
        },
        {
          "benefitPercent": "0.5",
          "code": "A",
          "coverageLevel": "Family",
          "coverageLevelCode": "FAM",
          "inPlanNetworkIndicator": "Yes",
          "inPlanNetworkIndicatorCode": "Y",
          "name": "Co-Insurance",
          "planCoverage": "Gold Plan",
          "serviceTypeCodes": [
            "A7"
          ],
          "serviceTypes": [
            "Psychiatric - Inpatient"
          ],
          "timeQualifier": "Visit",
          "timeQualifierCode": "27"
        },
        {
          "code": "I",
          "inPlanNetworkIndicator": "No",
          "inPlanNetworkIndicatorCode": "N",
          "name": "Non-Covered",
          "planCoverage": "Gold Plan",
          "serviceTypeCodes": [
            "A7"
          ],
          "serviceTypes": [
            "Psychiatric - Inpatient"
          ]
        },
        {
          "code": "1",
          "inPlanNetworkIndicator": "Yes",
          "inPlanNetworkIndicatorCode": "Y",
          "name": "Active Coverage",
          "planCoverage": "Gold Plan",
          "serviceTypeCodes": [
            "A8"
          ],
          "serviceTypes": [
            "Psychiatric - Outpatient"
          ]
        },
        {
          "benefitPercent": "0.5",
          "code": "A",
          "coverageLevel": "Family",
          "coverageLevelCode": "FAM",
          "inPlanNetworkIndicator": "Yes",
          "inPlanNetworkIndicatorCode": "Y",
          "name": "Co-Insurance",
          "planCoverage": "Gold Plan",
          "serviceTypeCodes": [
            "A8"
          ],
          "serviceTypes": [
            "Psychiatric - Outpatient"
          ],
          "timeQualifier": "Visit",
          "timeQualifierCode": "27"
        },
        {
          "code": "I",
          "inPlanNetworkIndicator": "No",
          "inPlanNetworkIndicatorCode": "N",
          "name": "Non-Covered",
          "planCoverage": "Gold Plan",
          "serviceTypeCodes": [
            "A8"
          ],
          "serviceTypes": [
            "Psychiatric - Outpatient"
          ]
        },
        {
          "code": "1",
          "inPlanNetworkIndicator": "Yes",
          "inPlanNetworkIndicatorCode": "Y",
          "name": "Active Coverage",
          "planCoverage": "Gold Plan",
          "serviceTypeCodes": [
            "AD"
          ],
          "serviceTypes": [
            "Occupational Therapy"
          ]
        },
        {
          "benefitPercent": "0.5",
          "code": "A",
          "coverageLevel": "Family",
          "coverageLevelCode": "FAM",
          "inPlanNetworkIndicator": "Yes",
          "inPlanNetworkIndicatorCode": "Y",
          "name": "Co-Insurance",
          "planCoverage": "Gold Plan",
          "serviceTypeCodes": [
            "AD"
          ],
          "serviceTypes": [
            "Occupational Therapy"
          ],
          "timeQualifier": "Visit",
          "timeQualifierCode": "27"
        },
        {
          "code": "I",
          "inPlanNetworkIndicator": "No",
          "inPlanNetworkIndicatorCode": "N",
          "name": "Non-Covered",
          "planCoverage": "Gold Plan",
          "serviceTypeCodes": [
            "AD"
          ],
          "serviceTypes": [
            "Occupational Therapy"
          ]
        },
        {
          "code": "1",
          "inPlanNetworkIndicator": "Yes",
          "inPlanNetworkIndicatorCode": "Y",
          "name": "Active Coverage",
          "planCoverage": "Gold Plan",
          "serviceTypeCodes": [
            "AF"
          ],
          "serviceTypes": [
            "Speech Therapy"
          ]
        },
        {
          "benefitPercent": "0.5",
          "code": "A",
          "coverageLevel": "Family",
          "coverageLevelCode": "FAM",
          "inPlanNetworkIndicator": "Yes",
          "inPlanNetworkIndicatorCode": "Y",
          "name": "Co-Insurance",
          "planCoverage": "Gold Plan",
          "serviceTypeCodes": [
            "AF"
          ],
          "serviceTypes": [
            "Speech Therapy"
          ],
          "timeQualifier": "Visit",
          "timeQualifierCode": "27"
        },
        {
          "code": "I",
          "inPlanNetworkIndicator": "No",
          "inPlanNetworkIndicatorCode": "N",
          "name": "Non-Covered",
          "planCoverage": "Gold Plan",
          "serviceTypeCodes": [
            "AF"
          ],
          "serviceTypes": [
            "Speech Therapy"
          ]
        },
        {
          "additionalInformation": [
            {
              "description": "Prior authorization may be required. Limited to 150 days per year."
            }
          ],
          "code": "1",
          "inPlanNetworkIndicator": "Yes",
          "inPlanNetworkIndicatorCode": "Y",
          "name": "Active Coverage",
          "planCoverage": "Gold Plan",
          "serviceTypeCodes": [
            "AG"
          ],
          "serviceTypes": [
            "Skilled Nursing Care"
          ]
        },
        {
          "benefitPercent": "0.5",
          "code": "A",
          "coverageLevel": "Family",
          "coverageLevelCode": "FAM",
          "inPlanNetworkIndicator": "Yes",
          "inPlanNetworkIndicatorCode": "Y",
          "name": "Co-Insurance",
          "planCoverage": "Gold Plan",
          "serviceTypeCodes": [
            "AG"
          ],
          "serviceTypes": [
            "Skilled Nursing Care"
          ],
          "timeQualifier": "Visit",
          "timeQualifierCode": "27"
        },
        {
          "code": "I",
          "inPlanNetworkIndicator": "No",
          "inPlanNetworkIndicatorCode": "N",
          "name": "Non-Covered",
          "planCoverage": "Gold Plan",
          "serviceTypeCodes": [
            "AG"
          ],
          "serviceTypes": [
            "Skilled Nursing Care"
          ]
        },
        {
          "additionalInformation": [
            {
              "description": "Covered in accordance with ACA guidelines."
            }
          ],
          "code": "1",
          "inPlanNetworkIndicator": "Yes",
          "inPlanNetworkIndicatorCode": "Y",
          "name": "Active Coverage",
          "planCoverage": "Gold Plan",
          "serviceTypeCodes": [
            "BZ"
          ],
          "serviceTypes": [
            "Physician Visit - Office: Well"
          ]
        },
        {
          "benefitAmount": "0",
          "code": "B",
          "coverageLevel": "Family",
          "coverageLevelCode": "FAM",
          "inPlanNetworkIndicator": "Yes",
          "inPlanNetworkIndicatorCode": "Y",
          "name": "Co-Payment",
          "planCoverage": "Gold Plan",
          "serviceTypeCodes": [
            "BZ"
          ],
          "serviceTypes": [
            "Physician Visit - Office: Well"
          ],
          "timeQualifier": "Visit",
          "timeQualifierCode": "27"
        },
        {
          "code": "I",
          "inPlanNetworkIndicator": "No",
          "inPlanNetworkIndicatorCode": "N",
          "name": "Non-Covered",
          "planCoverage": "Gold Plan",
          "serviceTypeCodes": [
            "BZ"
          ],
          "serviceTypes": [
            "Physician Visit - Office: Well"
          ]
        },
        {
          "additionalInformation": [
            {
              "description": "Prior authorization may be required. Covered No Limit."
            }
          ],
          "code": "1",
          "inPlanNetworkIndicator": "Yes",
          "inPlanNetworkIndicatorCode": "Y",
          "name": "Active Coverage",
          "planCoverage": "Gold Plan",
          "serviceTypeCodes": [
            "MH"
          ],
          "serviceTypes": [
            "Mental Health"
          ]
        },
        {
          "benefitPercent": "0.5",
          "code": "A",
          "coverageLevel": "Family",
          "coverageLevelCode": "FAM",
          "inPlanNetworkIndicator": "Yes",
          "inPlanNetworkIndicatorCode": "Y",
          "name": "Co-Insurance",
          "planCoverage": "Gold Plan",
          "serviceTypeCodes": [
            "MH"
          ],
          "serviceTypes": [
            "Mental Health"
          ],
          "timeQualifier": "Visit",
          "timeQualifierCode": "27"
        },
        {
          "code": "I",
          "inPlanNetworkIndicator": "No",
          "inPlanNetworkIndicatorCode": "N",
          "name": "Non-Covered",
          "planCoverage": "Gold Plan",
          "serviceTypeCodes": [
            "MH"
          ],
          "serviceTypes": [
            "Mental Health"
          ]
        },
        {
          "code": "1",
          "inPlanNetworkIndicator": "Yes",
          "inPlanNetworkIndicatorCode": "Y",
          "name": "Active Coverage",
          "planCoverage": "Gold Plan",
          "serviceTypeCodes": [
            "PT"
          ],
          "serviceTypes": [
            "Physical Therapy"
          ]
        },
        {
          "additionalInformation": [
            {
              "description": "per visit"
            }
          ],
          "benefitAmount": "15",
          "code": "B",
          "coverageLevel": "Family",
          "coverageLevelCode": "FAM",
          "inPlanNetworkIndicator": "Yes",
          "inPlanNetworkIndicatorCode": "Y",
          "name": "Co-Payment",
          "planCoverage": "Gold Plan",
          "serviceTypeCodes": [
            "PT"
          ],
          "serviceTypes": [
            "Physical Therapy"
          ],
          "timeQualifier": "Visit",
          "timeQualifierCode": "27"
        },
        {
          "code": "I",
          "inPlanNetworkIndicator": "No",
          "inPlanNetworkIndicatorCode": "N",
          "name": "Non-Covered",
          "planCoverage": "Gold Plan",
          "serviceTypeCodes": [
            "PT"
          ],
          "serviceTypes": [
            "Physical Therapy"
          ]
        },
        {
          "additionalInformation": [
            {
              "description": "Covered No Limit."
            }
          ],
          "code": "1",
          "inPlanNetworkIndicator": "Yes",
          "inPlanNetworkIndicatorCode": "Y",
          "name": "Active Coverage",
          "planCoverage": "Gold Plan",
          "serviceTypeCodes": [
            "UC"
          ],
          "serviceTypes": [
            "Urgent Care"
          ]
        },
        {
          "additionalInformation": [
            {
              "description": "per visit"
            }
          ],
          "benefitAmount": "10",
          "code": "B",
          "coverageLevel": "Family",
          "coverageLevelCode": "FAM",
          "inPlanNetworkIndicator": "Yes",
          "inPlanNetworkIndicatorCode": "Y",
          "name": "Co-Payment",
          "planCoverage": "Gold Plan",
          "serviceTypeCodes": [
            "UC"
          ],
          "serviceTypes": [
            "Urgent Care"
          ],
          "timeQualifier": "Visit",
          "timeQualifierCode": "27"
        },
        {
          "additionalInformation": [
            {
              "description": "Covered No Limit."
            }
          ],
          "code": "1",
          "inPlanNetworkIndicator": "No",
          "inPlanNetworkIndicatorCode": "N",
          "name": "Active Coverage",
          "planCoverage": "Gold Plan",
          "serviceTypeCodes": [
            "UC"
          ],
          "serviceTypes": [
            "Urgent Care"
          ]
        },
        {
          "additionalInformation": [
            {
              "description": "per visit"
            }
          ],
          "benefitAmount": "10",
          "code": "B",
          "coverageLevel": "Family",
          "coverageLevelCode": "FAM",
          "inPlanNetworkIndicator": "No",
          "inPlanNetworkIndicatorCode": "N",
          "name": "Co-Payment",
          "planCoverage": "Gold Plan",
          "serviceTypeCodes": [
            "UC"
          ],
          "serviceTypes": [
            "Urgent Care"
          ],
          "timeQualifier": "Visit",
          "timeQualifierCode": "27"
        },
        {
          "benefitAmount": "0",
          "code": "C",
          "coverageLevel": "Individual",
          "coverageLevelCode": "IND",
          "inPlanNetworkIndicator": "Yes",
          "inPlanNetworkIndicatorCode": "Y",
          "name": "Deductible",
          "planCoverage": "Gold Plan",
          "serviceTypeCodes": [
            "30"
          ],
          "serviceTypes": [
            "Health Benefit Plan Coverage"
          ],
          "timeQualifier": "Calendar Year",
          "timeQualifierCode": "23"
        },
        {
          "benefitAmount": "0",
          "code": "C",
          "coverageLevel": "Individual",
          "coverageLevelCode": "IND",
          "inPlanNetworkIndicator": "Yes",
          "inPlanNetworkIndicatorCode": "Y",
          "name": "Deductible",
          "planCoverage": "Gold Plan",
          "serviceTypeCodes": [
            "30"
          ],
          "serviceTypes": [
            "Health Benefit Plan Coverage"
          ],
          "timeQualifier": "Remaining",
          "timeQualifierCode": "29"
        },
        {
          "benefitAmount": "0",
          "code": "C",
          "coverageLevel": "Family",
          "coverageLevelCode": "FAM",
          "inPlanNetworkIndicator": "Yes",
          "inPlanNetworkIndicatorCode": "Y",
          "name": "Deductible",
          "planCoverage": "Gold Plan",
          "serviceTypeCodes": [
            "30"
          ],
          "serviceTypes": [
            "Health Benefit Plan Coverage"
          ],
          "timeQualifier": "Calendar Year",
          "timeQualifierCode": "23"
        },
        {
          "benefitAmount": "0",
          "code": "C",
          "coverageLevel": "Family",
          "coverageLevelCode": "FAM",
          "inPlanNetworkIndicator": "Yes",
          "inPlanNetworkIndicatorCode": "Y",
          "name": "Deductible",
          "planCoverage": "Gold Plan",
          "serviceTypeCodes": [
            "30"
          ],
          "serviceTypes": [
            "Health Benefit Plan Coverage"
          ],
          "timeQualifier": "Remaining",
          "timeQualifierCode": "29"
        },
        {
          "benefitAmount": "0",
          "code": "C",
          "coverageLevel": "Individual",
          "coverageLevelCode": "IND",
          "inPlanNetworkIndicator": "No",
          "inPlanNetworkIndicatorCode": "N",
          "name": "Deductible",
          "planCoverage": "Gold Plan",
          "serviceTypeCodes": [
            "30"
          ],
          "serviceTypes": [
            "Health Benefit Plan Coverage"
          ],
          "timeQualifier": "Calendar Year",
          "timeQualifierCode": "23"
        },
        {
          "benefitAmount": "0",
          "code": "C",
          "coverageLevel": "Individual",
          "coverageLevelCode": "IND",
          "inPlanNetworkIndicator": "No",
          "inPlanNetworkIndicatorCode": "N",
          "name": "Deductible",
          "planCoverage": "Gold Plan",
          "serviceTypeCodes": [
            "30"
          ],
          "serviceTypes": [
            "Health Benefit Plan Coverage"
          ],
          "timeQualifier": "Remaining",
          "timeQualifierCode": "29"
        },
        {
          "benefitAmount": "0",
          "code": "C",
          "coverageLevel": "Family",
          "coverageLevelCode": "FAM",
          "inPlanNetworkIndicator": "No",
          "inPlanNetworkIndicatorCode": "N",
          "name": "Deductible",
          "planCoverage": "Gold Plan",
          "serviceTypeCodes": [
            "30"
          ],
          "serviceTypes": [
            "Health Benefit Plan Coverage"
          ],
          "timeQualifier": "Calendar Year",
          "timeQualifierCode": "23"
        },
        {
          "benefitAmount": "0",
          "code": "C",
          "coverageLevel": "Family",
          "coverageLevelCode": "FAM",
          "inPlanNetworkIndicator": "No",
          "inPlanNetworkIndicatorCode": "N",
          "name": "Deductible",
          "planCoverage": "Gold Plan",
          "serviceTypeCodes": [
            "30"
          ],
          "serviceTypes": [
            "Health Benefit Plan Coverage"
          ],
          "timeQualifier": "Remaining",
          "timeQualifierCode": "29"
        },
        {
          "benefitAmount": "3000",
          "code": "G",
          "coverageLevel": "Individual",
          "coverageLevelCode": "IND",
          "inPlanNetworkIndicator": "Yes",
          "inPlanNetworkIndicatorCode": "Y",
          "name": "Out of Pocket (Stop Loss)",
          "planCoverage": "Gold Plan",
          "serviceTypeCodes": [
            "30"
          ],
          "serviceTypes": [
            "Health Benefit Plan Coverage"
          ],
          "timeQualifier": "Calendar Year",
          "timeQualifierCode": "23"
        },
        {
          "benefitAmount": "2000",
          "code": "G",
          "coverageLevel": "Individual",
          "coverageLevelCode": "IND",
          "inPlanNetworkIndicator": "Yes",
          "inPlanNetworkIndicatorCode": "Y",
          "name": "Out of Pocket (Stop Loss)",
          "planCoverage": "Gold Plan",
          "serviceTypeCodes": [
            "30"
          ],
          "serviceTypes": [
            "Health Benefit Plan Coverage"
          ],
          "timeQualifier": "Remaining",
          "timeQualifierCode": "29"
        },
        {
          "benefitAmount": "6000",
          "code": "G",
          "coverageLevel": "Family",
          "coverageLevelCode": "FAM",
          "inPlanNetworkIndicator": "Yes",
          "inPlanNetworkIndicatorCode": "Y",
          "name": "Out of Pocket (Stop Loss)",
          "planCoverage": "Gold Plan",
          "serviceTypeCodes": [
            "30"
          ],
          "serviceTypes": [
            "Health Benefit Plan Coverage"
          ],
          "timeQualifier": "Calendar Year",
          "timeQualifierCode": "23"
        },
        {
          "benefitAmount": "5000",
          "code": "G",
          "coverageLevel": "Family",
          "coverageLevelCode": "FAM",
          "inPlanNetworkIndicator": "Yes",
          "inPlanNetworkIndicatorCode": "Y",
          "name": "Out of Pocket (Stop Loss)",
          "planCoverage": "Gold Plan",
          "serviceTypeCodes": [
            "30"
          ],
          "serviceTypes": [
            "Health Benefit Plan Coverage"
          ],
          "timeQualifier": "Remaining",
          "timeQualifierCode": "29"
        },
        {
          "benefitAmount": "0",
          "code": "G",
          "coverageLevel": "Individual",
          "coverageLevelCode": "IND",
          "inPlanNetworkIndicator": "No",
          "inPlanNetworkIndicatorCode": "N",
          "name": "Out of Pocket (Stop Loss)",
          "planCoverage": "Gold Plan",
          "serviceTypeCodes": [
            "30"
          ],
          "serviceTypes": [
            "Health Benefit Plan Coverage"
          ],
          "timeQualifier": "Calendar Year",
          "timeQualifierCode": "23"
        },
        {
          "benefitAmount": "0",
          "code": "G",
          "coverageLevel": "Individual",
          "coverageLevelCode": "IND",
          "inPlanNetworkIndicator": "No",
          "inPlanNetworkIndicatorCode": "N",
          "name": "Out of Pocket (Stop Loss)",
          "planCoverage": "Gold Plan",
          "serviceTypeCodes": [
            "30"
          ],
          "serviceTypes": [
            "Health Benefit Plan Coverage"
          ],
          "timeQualifier": "Remaining",
          "timeQualifierCode": "29"
        },
        {
          "benefitAmount": "0",
          "code": "G",
          "coverageLevel": "Family",
          "coverageLevelCode": "FAM",
          "inPlanNetworkIndicator": "No",
          "inPlanNetworkIndicatorCode": "N",
          "name": "Out of Pocket (Stop Loss)",
          "planCoverage": "Gold Plan",
          "serviceTypeCodes": [
            "30"
          ],
          "serviceTypes": [
            "Health Benefit Plan Coverage"
          ],
          "timeQualifier": "Calendar Year",
          "timeQualifierCode": "23"
        },
        {
          "benefitAmount": "0",
          "code": "G",
          "coverageLevel": "Family",
          "coverageLevelCode": "FAM",
          "inPlanNetworkIndicator": "No",
          "inPlanNetworkIndicatorCode": "N",
          "name": "Out of Pocket (Stop Loss)",
          "planCoverage": "Gold Plan",
          "serviceTypeCodes": [
            "30"
          ],
          "serviceTypes": [
            "Health Benefit Plan Coverage"
          ],
          "timeQualifier": "Remaining",
          "timeQualifierCode": "29"
        }
      ],
      "confidence": {
        "level": "REVIEW_NEEDED",
        "reason": "This record was identified as a low confidence match due to a DOB partial match"
      },
      "payer": {
        "name": "EXAMPLE INSURANCE CO"
      },
      "planDateInformation": {
        "eligibilityBegin": "20250101",
        "planBegin": "20250101",
        "service": "20250301"
      },
      "planInformation": {
        "groupDescription": "Individual On-Exchange",
        "groupNumber": "123456-78",
        "planNumber": "123456-EXMPL9876"
      },
      "provider": {
        "entityType": "Non-Person Entity",
        "npi": "1999999984",
        "providerName": "provider"
      },
      "subscriber": {
        "address": {
          "address1": "123 Main Street",
          "city": "ANYTOWN",
          "postalCode": "12345",
          "state": "CA"
        },
        "dateOfBirth": "19900115",
        "firstName": "John",
        "gender": "M",
        "groupDescription": "Individual On-Exchange",
        "groupNumber": "123456-78",
        "lastName": "Doe",
        "memberId": "987654321000",
        "middleName": "Smith",
        "planNumber": "123456-EXMPL9876"
      }
    }
  ],
  "meta": {
    "applicationMode": "production",
    "traceId": "1-abcdef12-123456789abcdef123456789"
  },
  "status": "COMPLETE"
}
```

#### 400

ValidationException 400 response

**Schema:** `ValidationExceptionResponseContent`

**Properties:**

- **`code`** (`string`): A code describing the type of validation failure.
- **`message`** (`string`) (required): A message describing the causes of the validation failure. There may be more than one.
#### 403

AccessDeniedException 403 response

**Schema:** `AccessDeniedExceptionResponseContent`

**Properties:**

- **`code`** (`string`): Error classification code
- **`message`** (`string`) (required): Human-readable error message
#### 404

ResourceNotFoundException 404 response

**Schema:** `ResourceNotFoundExceptionResponseContent`

**Properties:**

- **`code`** (`string`): Error classification code
- **`message`** (`string`) (required): Human-readable error message
#### 429

ThrottlingException 429 response

**Schema:** `ThrottlingExceptionResponseContent`

**Properties:**

- **`code`** (`string`): Error classification code
- **`message`** (`string`) (required): Human-readable error message
#### 500

InternalFailureException 500 response

**Schema:** `InternalFailureExceptionResponseContent`

**Properties:**

- **`code`** (`string`): Error classification code
- **`message`** (`string`) (required): Human-readable error message
#### 503

ServiceUnavailableException 503 response

**Schema:** `ServiceUnavailableExceptionResponseContent`

**Properties:**

- **`code`** (`string`)
- **`message`** (`string`) (required)
#### 504

GatewayTimeoutException 504 response

**Schema:** `GatewayTimeoutExceptionResponseContent`

**Properties:**

- **`code`** (`string`)
- **`message`** (`string`) (required)