Offerings & Enrollment Across Divisions
When an Organization has Divisions, benefits live on the parent Organization and apply across the Organization, including all of its Divisions — there are no separate per-Division benefits to create or maintain. Enrollment follows the same model: a member is enrolled against the parent Organization's benefit, and their coverage applies within their Division automatically.
The model
| If you... | Then... |
|---|---|
| Create a benefit on the parent Organization | It applies across the Organization, including all Divisions. |
| Update the parent benefit | The changes apply across all Divisions. |
| Create a new Division later | The Organization's existing benefits apply to it automatically. |
| Enroll a member who belongs to a Division | The member is enrolled within their Division automatically. |
Every operation targets the parent Organization's benefit:
createBenefit is called once on the parent, and
Division IDs aren't used when enrolling, funding, or managing contributions.
Creating offerings for an Organization with Divisions
Create the Benefits Program and its benefits on the parent Organization, exactly as you would for an Organization without Divisions.
Step 1 — Create the program on the parent Organization:
mutation CreateBenefitsProgram($input: CreateBenefitsProgramInput!) {
createBenefitsProgram(input: $input) {
... on CreateBenefitsProgramResult {
benefitsProgram {
id
name
organizationId
}
}
... on BadRequestError {
code
message
}
}
}
{
"input": {
"name": "2026 Benefits",
"organizationId": "<parent-org-id>"
}
}
Step 2 — Create a benefit in that program:
mutation CreateBenefit($input: CreateBenefitInput!) {
createBenefit(input: $input) {
... on CreateBenefitResult {
benefit {
id
name
type
}
}
... on BadRequestError {
code
message
}
}
}
{
"input": {
"benefitsProgramId": "<program-id-from-step-1>",
"templateId": "<template-id>",
"startDate": "2026-01-01"
}
}
The response returns a single benefit on the parent Organization. That benefit applies across
the Organization, including all of its Divisions — there is no separate per-Division benefit to
create or track. Reference this benefit's id for all subsequent operations.
If you add a Division to an Organization that already has benefits, those benefits apply to the new Division automatically — no re-creation or re-application is needed.
Updating offerings
Update offerings on the parent benefit using
updateBenefit (and the related configuration
mutations). Changes — such as the name, start/end dates, funding configuration, eligible expenses,
and coverage levels — apply across all of the Organization's Divisions automatically. There is no
per-Division update to make.
Enrolling members in a Division
Enrollment is a two-step flow: add the member to the Division, then enroll them against the parent Organization's benefit.
A member's Division is resolved from their Organization membership at the moment of enrollment, so
the membership must already exist for coverage to reach the correct Division. Create the Division
membership (Step 1) before calling enrollIndividualInBenefit (Step 2).
Step 1 — Add the member to the Division. A Division shares the same identifier space as an
Organization, so you assign membership by passing the Division's id as the organizationId on
createOrUpdateOrganizationMembership:
mutation CreateOrUpdateOrganizationMembership($input: CreateOrUpdateOrganizationMembershipInput!) {
createOrUpdateOrganizationMembership(input: $input) {
... on CreateOrUpdateOrganizationMembershipResult {
membership {
id
organization {
id
name
}
}
}
... on BadRequestError {
code
message
}
}
}
{
"input": {
"individualId": "<individual-id>",
"organizationId": "<division-id>"
}
}
Step 2 — Enroll the member using the parent benefit's id. Pass the benefit id from the
parent Organization; the member is enrolled within their Division automatically:
mutation EnrollIndividualInBenefit($input: EnrollIndividualInBenefitInput!) {
enrollIndividualInBenefit(input: $input) {
... on EnrollIndividualInBenefitResult {
individual {
id
}
benefit {
id
}
}
... on BadRequestError {
code
message
}
}
}
{
"input": {
"benefitId": "<parent-benefit-id>",
"individualId": "<individual-id>"
}
}
The same pattern — operate on the parent Organization's benefit, and the member's Division is applied automatically — holds for the rest of the participant lifecycle:
fundBenefitForIndividual/reverseBenefitFundingForIndividual- Contributions:
setInitialContributionsForBenefitAndIndividual,setRecurringContributionsForBenefitAndIndividual,setElectionAmountForBenefitAndIndividual unenrollIndividualFromBenefit/transferBenefitForIndividual- Dependents:
createDependentBenefitEnrollment,removeDependentBenefitEnrollment
A member has at most one active Division membership within a given parent Organization. If a member has active memberships in more than one Division under the same parent, enrolling against the parent benefit is ambiguous, and the request is rejected. With nested Divisions, assign membership to the single, most-specific Division the member belongs to — for example, the Department rather than also its Region.
End-to-end walkthrough
Putting it together for an Organization with two Divisions:
# 1. Create the parent Organization
mutation {
createOrganization(input: { name: "Acme Corp" }) {
... on CreateOrganizationResult { organization { id name } }
}
}
# 2. Create the Benefits Program + a benefit on the parent Organization
mutation {
createBenefitsProgram(input: { name: "2026 Benefits", organizationId: "<parent-org-id>" }) {
... on CreateBenefitsProgramResult { benefitsProgram { id } }
}
}
mutation {
createBenefit(input: {
benefitsProgramId: "<program-id>"
templateId: "<template-id>"
startDate: "2026-01-01"
}) {
... on CreateBenefitResult { benefit { id name } }
}
}
# 3. Create Divisions under the parent (the benefit above applies to each)
mutation {
createDivision(input: { organizationId: "<parent-org-id>", name: "West Region" }) {
... on CreateDivisionResult { division { id name } }
}
}
# 4. Add a member to a Division (Division id as organizationId) — required BEFORE enrolling
mutation {
createOrUpdateOrganizationMembership(input: {
individualId: "<individual-id>"
organizationId: "<west-region-division-id>"
}) {
... on CreateOrUpdateOrganizationMembershipResult { membership { id } }
}
}
# 5. Enroll the member using the PARENT benefit id — applied within their Division automatically
mutation {
enrollIndividualInBenefit(input: {
benefitId: "<parent-benefit-id>"
individualId: "<individual-id>"
}) {
... on EnrollIndividualInBenefitResult { individual { id } benefit { id } }
}
}
Related
- Divisions — Create and manage Divisions within an Organization.
- Setup & Enrollment — The standard program, benefit, and enrollment flow.
- Organizations — Create and manage the parent Organizations that own offerings.