ICHRA network checks: employees' doctors against individual plans.
Under an ICHRA, each employee buys their own individual health plan, so the question "is my doctor covered?" has to be answered plan by plan, for the plans that employee can actually buy. Check each doctor's NPI against each offered plan ID before the employee chooses, show the date of every answer, and re-check before enrollment closes.
Why ICHRA makes network checks harder
An individual coverage health reimbursement arrangement (ICHRA) lets an employer give employees a monthly allowance that reimburses premiums for individual health insurance. Instead of one group plan with one network, every employee chooses from the individual plans sold where they live. Two employees in different counties see different plans, and the plans in one county can come from several insurers, each with several networks.
That is good for choice and hard on the employee. People switching from a group plan usually want to keep their doctors, and networks differ from plan to plan, even between two plans from the same insurer. A benefits platform that shows premiums without network answers leaves the hardest part of the decision to the employee.
The workflow, step by step
- Collect the employee's providers. Ask for each doctor's name and city, then resolve them to NPIs. The free NPI lookup shows what an NPI resolves to; in your product, store the NPI, not the name.
- List the plans the employee can buy. Your quoting or enrollment system already knows the plan IDs offered at the employee's address for the plan year. Use those exact IDs.
- Check every pair. One request per provider and plan pair, or one batch request for up to 100 pairs. The check answers per plan ID, so you never mix up two plans from the same insurer.
- Show the results next to the premiums. "Your doctor is listed in 3 of the 4 plans you can buy" turns a premium table into a decision.
- Re-check before enrollment closes and at renewal. Store each answer with its read date and plan year.
A real example
Take one employee in North Carolina whose family doctor is Samantha N. Beard, DO (NPI 1376006148, family practice, North Wilkesboro). Say four individual plans are on the employee's shortlist. One batch request checks all four:
curl -X POST -H "Authorization: Bearer $INPLAN_KEY" \
-H "content-type: application/json" \
"https://api.inplan.io/v1/check/batch" \
-d '{"items": [
{"npi": "1376006148", "plan_id": "17414NC0010004"},
{"npi": "1376006148", "plan_id": "69803NC0010024"},
{"npi": "1376006148", "plan_id": "54332NC0030027"},
{"npi": "1376006148", "plan_id": "73943NC0070030"}
]}'{
"data": {
"count": 4,
"summary": { "listed": 3, "not_found": 1, "invalid": 0 },
"results": [
{ "plan_id": "17414NC0010004", "in_network": true, "answer": "listed",
"plan_years_listed": [2026, 2025],
"source": { "type": "insurer_directory", "as_of": "2026-08-12" } },
{ "plan_id": "69803NC0010024", "in_network": true, "answer": "listed",
"plan_years_listed": [2027, 2026],
"source": { "type": "insurer_directory", "as_of": "2026-10-29" } },
{ "plan_id": "54332NC0030027", "in_network": true, "answer": "listed",
"plan_years_listed": [2026],
"source": { "type": "insurer_directory", "as_of": "2026-07-27" } },
{ "plan_id": "73943NC0070030", "in_network": null, "answer": "not_found",
"explanation": "No listing found in current directory data for this provider and plan." }
]
}
}| PLAN ID | PLAN | ANSWER | PLAN YEARS LISTED |
|---|---|---|---|
| 17414NC0010004 | AmeriHealth Caritas Next Bronze Essential + No Referrals | Listed | 2026, 2025 |
| 69803NC0010024 | Oscar: Bronze Classic 4700 | Listed | 2027, 2026 |
| 54332NC0030027 | UHC Silver Standard (No Referrals) | Listed | 2026 |
| 73943NC0070030 | Cigna: Connect Silver 3600 Indiv Med Deductible | Not found |
Three of the four plans list her. For the fourth, no listing was found in current directory data, which is a reason to confirm with the plan before the employee picks it, not proof that she is out of network. Note also the plan years: one plan lists her for 2026 and 2027, one for 2026 and 2025, one for 2026 only. When enrollment is for next year, check that the listing covers next year.
How to show the answers to employees
- Use three states, not two. "Listed" when the directory lists the provider; "Not found, please confirm" when it does not; and nothing at all for a plan you did not check. Never turn a missing listing into "Out of network".
- Show the date. "Listed in this plan's directory, read on 2026-10-29" is honest and builds trust.
- Mention tiers. Some directories place a provider in a network tier, such as preferred or non-preferred, which can change what the employee pays. The answer's evidence carries the tier when the directory gives one.
- Point to confirmation. Directories change. Suggest the employee confirm with the provider's office before a first visit.
Scale and cost
A typical check is one employee, two or three providers and five to fifteen plans: a few dozen pairs. Each pair in a batch counts as one call. The free tier gives 500 calls a month for single checks, which is enough to build and test the flow. Batch checks start on the Builder plan; see pricing. If you would rather pre-load a whole state for analysis, a state data file holds every provider practising there with every plan that lists them.
To see which insurers and plans we hold where your employees live, start from the state pages. For the details of each field, read the batch check reference and our benefits and ICHRA developer guide.