Skip to content

Eligibility determination

An eligibility decision and supporting rationale for a household and program.

A point-in-time eligibility outcome for a specific Enrollment.

PropertyTypeRequiredDescription
iduuidYesThe determination's unique identifier.
householdDeterminationHouseholdYesReference to the household data used for this determination.
outcomeDeterminationOutcomeYesThe outcome of the determination.
estimatedBenefitDeterminationEstimatedBenefit | nullNoThe estimated benefit, if eligible and the amount is calculable.
basisDeterminationBasisYesThe basis on which the determination was made.
determinedAtstringYesThe timestamp at which the determination was made.
producedByDeterminationProducerYesProvenance information for the determination.
{
"id": "30a12e5e-5940-4c08-921c-17a8960fcf4b",
"household": {
"id": "40a12e5e-5940-4c08-921c-17a8960fcf4b",
"revisionId": "50a12e5e-5940-4c08-921c-17a8960fcf4b",
"snapshot": null
},
"outcome": {
"value": "eligible",
"description": ""
},
"estimatedBenefit": {
"amount": {
"amount": "450",
"currency": "USD"
},
"frequency": {
"value": "monthly",
"description": ""
}
},
"basis": {
"type": {
"value": "direct",
"description": ""
}
},
"determinedAt": "2026-05-24T10:31:00Z",
"producedBy": {
"adapterId": "commonbenefits-adapter-policy-engine",
"adapterVersion": "0.1.0",
"rulesVersion": "2026-05"
}
}

The outcome of an eligibility determination.

PropertyTypeRequiredDescription
valueDeterminationOutcomeOptionsYesThe selected value, typed to `T`.
customValuestringNoCaller-defined value when `value` is the `custom` option (or otherwise does not fit a predefined option in `T`).
descriptionstringNoHuman-readable description or annotation for the value.
{
"value": "eligible",
"customValue": "string",
"description": "string"
}

Predefined set of eligibility determination outcomes.

ValueDescription
eligibleDetermined eligible.
ineligibleDetermined ineligible.
pendingDetermination is pending additional data or processing.
needs_verificationEligible pending verification of submitted data.
customA caller-defined outcome.
"eligible"

The basis on which a determination was made. For `categorical`, `sourceProgramId` and `sourceEnrollmentId` are required.

PropertyTypeRequiredDescription
typeDeterminationBasisTypeYesThe type of basis.
sourceProgramIduuidNoThe program that confers categorical eligibility. Required when `type` is `categorical`.
sourceEnrollmentIduuidNoThe enrollment that confers categorical eligibility. Required when `type` is `categorical`.
{
"type": {
"value": "direct",
"customValue": "string",
"description": "string"
},
"sourceProgramId": "30a12e5e-5940-4c08-921c-17a8960fcf4b",
"sourceEnrollmentId": "30a12e5e-5940-4c08-921c-17a8960fcf4b"
}

The type of basis on which a determination was made.

PropertyTypeRequiredDescription
valueDeterminationBasisTypeOptionsYesThe selected value, typed to `T`.
customValuestringNoCaller-defined value when `value` is the `custom` option (or otherwise does not fit a predefined option in `T`).
descriptionstringNoHuman-readable description or annotation for the value.
{
"value": "direct",
"customValue": "string",
"description": "string"
}

Predefined set of bases on which a determination can be made. (e.g., already enrolled in a qualifying program).

ValueDescription
directThe determination was made directly from the household's data.
categoricalThe determination was made via categorical eligibility
customA caller-defined basis.
"direct"

Provenance information for an eligibility determination.

PropertyTypeRequiredDescription
adapterIdstringYesThe identifier of the adapter that produced this determination.
adapterVersionstringYesThe semantic version of the adapter.
rulesVersionstringYesThe rules version used by the adapter (e.g., a date stamp like "2026-05").
{
"adapterId": "string",
"adapterVersion": "string",
"rulesVersion": "string"
}

Reference to the household data used for an eligibility determination. If the implementation supports household revisions, `revisionId` references the immutable revision record and `snapshot` is null. If not, `snapshot` carries the full household JSON inline and `revisionId` is null. Both MAY be present if the implementation populates both.

PropertyTypeRequiredDescription
iduuidYesThe household this determination applies to.
revisionIduuid | nullNoThe household revision record, if revisions are implemented.
snapshotHouseholdBase | nullNoThe full household snapshot, if revisions are not implemented.
{
"id": "30a12e5e-5940-4c08-921c-17a8960fcf4b",
"revisionId": "30a12e5e-5940-4c08-921c-17a8960fcf4b",
"snapshot": {
"id": "50a12e5e-5940-4c08-921c-17a8960fcf4b",
"members": [
{
"identifiers": {
"systemId": "30a12e5e-5940-4c08-921c-17a8960fcf4b",
"ssn": "123-45-6789"
},
"name": {
"prefix": "Ms.",
"firstName": "Jane",
"lastName": "Smith"
},
"dateOfBirth": "1985-03-15",
"isHeadOfHousehold": true,
"legalProfile": {
"citizenshipStatus": {
"value": "us_citizen",
"description": ""
},
"immigrationStatus": {
"value": "not_applicable",
"description": ""
}
},
"healthProfile": {
"disability": {
"status": {
"value": "none",
"description": ""
}
},
"pregnancy": {
"status": {
"value": "not_pregnant",
"description": ""
}
}
},
"workProfile": {
"employmentStatus": {
"value": "employed_part_time",
"description": "Part-time retail"
},
"studentStatus": {
"value": "not_enrolled",
"description": ""
},
"hoursWorkedPerWeek": 20,
"caregiverStatus": {
"value": "none",
"description": ""
}
},
"incomeSources": [
{
"type": {
"value": "wages",
"description": "Part-time retail"
},
"amount": {
"amount": "1200",
"currency": "USD"
},
"frequency": {
"value": "monthly",
"description": ""
}
}
]
}
],
"createdAt": "2026-05-24T10:00:00Z",
"lastModifiedAt": "2026-05-24T10:00:00Z"
}
}

An estimated benefit amount and the cadence at which it would be paid.

PropertyTypeRequiredDescription
amountMoneyYesThe estimated monetary amount.
frequencyFrequencyYesThe cadence at which the benefit would be paid.
{
"amount": {
"amount": "-50.50",
"currency": "USD"
},
"frequency": {
"value": "monthly",
"description": ""
}
}