# Quote: Plan & Rate Data

Ideon's Individual Medical and Small Group Medical (fully insured) datasets can be delivered in bulk file format. Data is delivered via SFTP and files are available in both JSON and CSV formats. Technical documentation for bulk files can be found at [the bottom of the API documentation](https://docs.ideonapi.com/#bulk-plan-and-rate-data). This section details important information to supplement the technical documentation.

## Directories and Refresh Cadence

Bulk files are delivered via AWS S3. Directories will be available based on the markets, state, and years that are licensed. The file hierarchy structure is: `s3://vericred-emr-workers/production/plans/{username}/{file_type}/{market}/{state}/{year}/{quarter}`, with folder definitions as follows:

* **Username** - provided by Ideon with AWS access credentials
* **File Type** - csv or json
* **Market** - individual or small\_group
* **State** - 2 character state code
* **Year** - the year in which the plans are available
* **Quarter** - the quarter for which premiums are quoted, based on coverage effective date. Only applicable for the small group market. Only the `pricings.{csv,json}` file will vary for Q1-4; all other files will be the same for the market, state, and year.

Bulk files are refreshed on an ad hoc basis, specific to each end directory. If there are updates or additions to any of the data or files, all files in that end directory will be fully replaced. For example, if a new plan is published for plan year 2026 on the individual market in Texas, all files in the `/individual/TX/2026` directory will be updated; a refresh in the `/individual/CA/2026` directory would not be triggered.

## Deleted and Inactive Plans

In rare scenarios, carriers may completely remove, discontinue, or stop selling a plan mid-year. These scenarios are handled in two ways, depending on carrier communication.

* Plan Deletion: used if carriers ask for a plan to be completely removed, typically when the plan was unintentionally included in their source documentation. In this scenario, Ideon will soft delete the plan and remove it from active datasets. A list of soft deleted plans can be found in AWS S3 in the `s3://vericred-emr-workers/production/plans/deleted/` directory.
* Discontinued or Inactive Plans: used if carriers communicate that a plan is no longer being sold in the current plan year. In this scenario, data for the plan will continue to be included in files. However, in the `plans.{csv,json}` file, the `actively_marketed` field will be set to False. These plans should not be quoted for new customers, as the carrier does not intend for them to be sold for future cases.

## File Descriptions and Joins

Only files required for complete integrations are documented in this section. Some files (such as service\_areas, rating\_areas, issuers, and plan\_counties) contain redundant information formatted for specialized use cases. The primary files for quoting use cases are documented below.

#### plans.{csv,json}

Contains all plan benefit and metadata information. Each row represents a unique plan, identified by the `id` column which is the plan's HIOS ID. The [technical documentation](https://docs.ideonapi.com/#bulk-plan-and-rate-data-plans-get) contains a list of support fields. The field naming conventions are consistent with Ideon's API schema; the [Medical Benefits Grammar Guide](/quote-and-select/additional-information-and-workflows/benefit-grammar-guides/medical.md) can be referenced for more detailed field documentation.

#### pricings.{csv,json}

Contains all plan pricing, or premium, data. Rows are defined by `plan_id` and `rating_area_id`; a plan will have one set of premiums for each rating area it is available in.&#x20;

#### service\_area\_zip\_counties.{csv,json}

Service areas define plan availability and are made up of many `zip_code_id` and `county_id` combinations. Each plan will be associated with one and only one `service_area_id`.

#### counties.{csv,json}

Includes the canonical name for each county present in one or more service areas in the directory.

#### zip\_counties.{csv,json}

Defines the rating\_area\_id for each zip-county. Typically, rating areas are defined by counties. However, some states define rating areas by 3-digit zip codes. More information on rating area structures can be found through [CMS](https://www.cms.gov/cciio/programs-and-initiatives/health-insurance-market-reforms/state-gra).

#### business\_rule\_sets.json

Contains the supported group and member eligibility business and quoting rules for each plan. Business rule data is only delivered in JSON files; CSVs are not supported. High-level summaries for rules can be found in the below [Business Rule Descriptions section](#business-rule-descriptions).

### Summary of Joins

<table data-full-width="true"><thead><tr><th width="349.78485107421875">File A - Column</th><th width="350.4169921875">File B - Column</th><th>Relationship Type</th></tr></thead><tbody><tr><td><strong>plans</strong> - service_area_id</td><td><strong>service_area_zip_counties</strong> - service_area_id</td><td>Many-to-Many</td></tr><tr><td><strong>service_area_zip_counties</strong> - county_id</td><td><strong>counties</strong> - id</td><td>Many-to-One</td></tr><tr><td><strong>service_area_zip_counties</strong> - county_id, zip_code_id</td><td><strong>zip_counties</strong> - county_id, zip_code_id</td><td>Many-to-One</td></tr><tr><td><strong>plans</strong> - id<br><strong>zip_counties</strong> - rating_area_id</td><td><strong>pricings</strong> - plan_id, rating_area_id</td><td>One-to-One</td></tr><tr><td><strong>plans.json</strong> - business_rule_set_id</td><td><strong>business_rule_sets.json</strong> - id</td><td>One-to-One</td></tr></tbody></table>

## Business Rule Descriptions

The `business_rule_sets.json` file is intended as a reference for common group and member eligibility rules applied by Ideon's API during quoting. It is not an exhaustive list of all carrier and regulatory eligibility criteria.  The below table documents the commonly used business rules; any business rule types found in the file that are not included in this table can be ignored.

<table data-full-width="true"><thead><tr><th width="250.12567138671875">Type</th><th width="450.15338134765625">Data Description</th><th>Data Example</th></tr></thead><tbody><tr><td>MaximumAgeDependent</td><td>The maximum allowable age (inclusive of the value given) of child dependents for the health plan.</td><td>{<br>     "age": 26<br>}</td></tr><tr><td>Tobacco Cutoff</td><td>The lookback period for which tobacco use is assessed to determine whether tobacco-specific rates should be quoted.</td><td>{<br>     "months": 6<br>}</td></tr><tr><td>EligibleChildrenCap</td><td><p>Defines the maximum number of child dependents that are eligible to be quoted for premiums; additional children can enroll at no additional cost. <br></p><p>For example, using the data to the right: if an individual has child dependents aged 22, 20, 18, 17, and 15, then all dependents would be quoted except the 15 year old. </p></td><td><p>{<br>     "max_age_of_child": 20,</p><p>     "eligible_children_cap": 3<br>}</p></td></tr><tr><td>AllowedRelationships</td><td>A list of the dependent relationships allowed under the health plan and the dependent must live in the same household as the member. Possible <code>relationship</code> values are documented <a href="https://docs.ideonapi.com/#header-add-the-census">here</a>.</td><td>[<br>     {<br>          "relationship": "child",<br>          "same_household": false<br>     },<br>     ...<br>]</td></tr><tr><td>MembersQuotableInServiceArea</td><td>If included in the business rule set for a plan, indicates that for a member to be eligible for the plan, they must reside or work within the service area of the plan.</td><td>null</td></tr><tr><td>MembersQuotableInStateOnly</td><td>If included in the business rule set for a plan, indicates that for a member to be eligible for the plan, they must reside in the state in which the plan is offered.</td><td>null</td></tr><tr><td>MembersInServiceArea</td><td>If included in the business rule set for a plan, indicates that for a member to be eligible for the plan, they must reside in the service area of the plan.</td><td>{<br>     "required?": true<br>}</td></tr><tr><td>MinimumInStatePercentage</td><td>The minimum percentage of members that must reside within the state in which the plan is offered for the group to be considered eligible.</td><td>{<br>     "minimum_percentage": 50<br>}</td></tr><tr><td>MinimumMultiStateResidencyPercentage</td><td>The minimum percentage of members that must reside within one of the states in the <code>allowed_states</code> list for the group to be considered eligible for the plan.</td><td><p>{<br>     "minimum_percentage": 50,</p><p>     "allowed_states": [</p><p>          "ID",</p><p>          ...<br>     ]<br>}</p></td></tr><tr><td>MinimumParticipationPercentage</td><td>The minimum percentage of eligible members that must enroll in the plan for the group to be considered eligible for the plan.</td><td>{<br>     "minimum_percentage": 50<br>}</td></tr><tr><td>MinimumContributionPercentage</td><td>The minimum percentage of premium that the employer must contribute towards member premium for the group to be considered eligible for the plan.</td><td>{<br>     "minimum_percentage": 50<br>}</td></tr></tbody></table>

## Frequently Asked Questions

#### Why don't plan counts match between a quote through Ideon's API and the bulk files?

Assuming service area availability is correctly implemented when integrating a rating engine with Ideon's bulk files, there are three main causes for discrepancies in plan counts.

1. The various iterations of CSR (cost sharing reduction) plans are not properly accounted for. For each given base HIOS ID with CSR variants, a single plan must be quoted based on the applicant's income. Individual market only - more information can be found through [HealthCare.gov](https://www.healthcare.gov/glossary/cost-sharing-reduction/).
2. On the Individual market, Catastrophic plans are not filtered out for applicants over the age of 30. More information can be found through [HealthCare.gov](https://www.healthcare.gov/choose-a-plan/catastrophic-health-plans/).
3. Plans that are flagged as `actively_marketed = false` are automatically filtered out from quotes through Ideon's API; the same logic should be used when quoting using bulk files. More information can be found in the [Deleted and Inactive Plans](#deleted-and-inactive-plans) section.

#### Why is the pricings.csv file is empty for VT and NY?

In NY and VT, rates are structured as family tiers rather than age bands. Columns A through EB contain the age-banded rates, so they are left blank for these states. Columns EC through EO contain the necessary data and family tiered rates to support NY and VT quoting.

#### Why don't UHC B2B plans have premiums in the pricings file?

UnitedHealthcare does not allow premium data to be delivered in bulk for their "B2B" plans - the directly sourced UHC data in the small group market. For approved users, B2B plan data is delivered in bulk files, but premiums are omitted for this reason. For more information on approvals and access to UHC small group data, please reach out to your Customer Success Manager.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://ideonapi.gitbook.io/quote-and-select/flat-file-data-dictionaries/quote-plan-and-rate-data.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
