---
title: "Update policy configuration enrolment intent"
method: PUT
path: "/enrolment_intents/{enrolment_intent_id}"
tags: ["Enrolment Intents"]
---

# Update policy configuration enrolment intent

`PUT /enrolment_intents/{enrolment_intent_id}`

## Request

- Base URL: `https://test.api.kota.io`
- URL: `https://test.api.kota.io/enrolment_intents/{enrolment_intent_id}`
- Auth: HTTP bearer

Updates the policy configuration for an existing `enrolment_intent`. This will reset the enrolment intent back to `processing` status and re-evaluate the enrolment intent based on the new configuration provided.Unavailable for enrolment intents that are already `enrolling` or `enrolled`.

## Path parameters

- `enrolment_intent_id` string, required

## Request body

- PolicyConfigurationRequest
  - `desired_policy_start_date` string, date, nullable: The desired date for the employee's policy to start. This date is not guaranteed to be honored by the insurance provider and may be adjusted based on provider-specific rules and requirements. If unspecified, the policy start date will be determined by the insurance provider.
  - `enrolment_date` string, date, nullable: The date on which the employee agreed to enrol into the group's policies. This date may be used by some insurance providers to determine the policy start date. If unspecified, the enrolment date will default to the date the enrolment intent is processed.

## Response `200`

OK

- EnrolmentIntentResponse
  - `id` string, required: Unique identifier for the enrolment intent. Prefixed with `ei_`.
  - `employee_id` string, required: Identifier for the employee associated with this enrolment intent. Prefixed with `ee_`.
  - `group_id` string, required: Identifier for the group associated with this enrolment intent. Prefixed with `gr_`.
  - `status` 'processing' | 'scheduled' | 'action_required' | 'coverage_options_required' | 'pending_confirmation' | 'enrolling' | 'enrolled' | 'not_undertaken' | 'ineligible' | 'rejected', required
  - `force_confirmation` boolean, required: If set to true, the system will always force the `PendingConfirmation` state before enrolling the employee, even if no action is required. This can be useful in scenarios where you want to ensure that the employee explicitly confirms their enrolment, regardless of their eligibility or any other factors. Defaults to false.
  - `policy_enrolments` EnrolmentIntentPolicyEnrolmentResponse[], required: Policy enrolment information
    - `type` 'health_insurance' | 'life_assurance', required
    - `estimated_effective_from` string, date, required: Estimated date when the policy of this type is expected to become effective in ISO 8601 (YYYY-MM-DD).
    - `provider` PolicyProviderResponse, required
      - `id` string, required: Unique identifier for the provider. Prefixed with pr_.
      - `name` string, required: Provider display name.
      - `description` string, required: Short description of the provider.
      - `logo_url` string, required
      - `employer_portal_url` string, nullable: URL for the employer portal.
      - `employee_portal_url` string, nullable: URL for the employee portal (may include claims management).
      - `support_phone_number` string, nullable: Provider support phone number in E.164 format.
    - `plan` PolicyPlanResponse, required
      - `id` string, required: Unique identifier for the plan. Prefixed with pl_.
      - `name` string, required: Plan display name.
      - `description` string, required: Short description of the plan.
      - `currency` 'eur' | 'aed' | 'afn' | 'xcd' | 'all' | 'amd' | 'aoa' | 'ars' | 'usd' | 'aud' | 'awg' | 'azn' | 'bam' | 'bbd' | 'bdt' | 'xof' | 'bgn' | 'bhd' | 'bif' | 'bmd' | 'bnd' | 'bob' | 'bov' | 'brl' | 'bsd' | 'inr' | 'btn' | 'nok' | 'bwp' | 'byn' | 'bzd' | 'cad' | 'xaf' | 'cdf' | 'chf' | 'che' | 'chw' | 'nzd' | 'clp' | 'clf' | 'cny' | 'cop' | 'cou' | 'crc' | 'cup' | 'cuc' | 'cve' | 'ang' | 'czk' | 'djf' | 'dkk' | 'dop' | 'dzd' | 'egp' | 'mad' | 'ern' | 'etb' | 'fjd' | 'fkp' | 'mdl' | 'gbp' | 'gel' | 'ghs' | 'gip' | 'gmd' | 'gnf' | 'gtq' | 'gyd' | 'hkd' | 'hnl' | 'hrk' | 'htg' | 'huf' | 'idr' | 'xdr' | 'ils' | 'iqd' | 'irr' | 'isk' | 'jmd' | 'jod' | 'jpy' | 'kes' | 'kgs' | 'khr' | 'kmf' | 'kpw' | 'krw' | 'kwd' | 'kyd' | 'kzt' | 'lak' | 'lbp' | 'lkr' | 'lrd' | 'lsl' | 'zar' | 'lyd' | 'mga' | 'mkd' | 'mmk' | 'mnt' | 'mop' | 'mru' | 'mur' | 'mvr' | 'mwk' | 'mxn' | 'mxv' | 'myr' | 'mzn' | 'nad' | 'xpf' | 'ngn' | 'nio' | 'npr' | 'omr' | 'pab' | 'pen' | 'pgk' | 'php' | 'pkr' | 'pln' | 'pyg' | 'qar' | 'ron' | 'rsd' | 'rub' | 'rwf' | 'sar' | 'sbd' | 'scr' | 'sdg' | 'sek' | 'sgd' | 'shp' | 'sll' | 'sos' | 'srd' | 'ssp' | 'stn' | 'svc' | 'xsu' | 'syp' | 'twd' | 'szl' | 'thb' | 'tjs' | 'tmt' | 'tnd' | 'top' | 'try' | 'ttd' | 'tzs' | 'uah' | 'ugx' | 'usn' | 'uyu' | 'uyi' | 'uyw' | 'uzs' | 'ves' | 'vnd' | 'vuv' | 'wst' | 'yer' | 'xua' | 'zmw' | 'zwl', required
      - `documents` PlanDocumentResponse[], required: List of plan documents (e.g., IPIDs, T&Cs).
        - `type` 'ipid' | 'table_of_cover' | 'waiting_periods' | 'hospital_list' | 'plan_summary' | 'terms_and_conditions' | 'other'
        - `title` string, required: Title of the document.
        - `link` string, required: Public URL to the document. This could be any format (PDF, HTML, etc.).
      - `coverage_options` PlanCoverageResponse[], nullable: The coverage options chosen for this policy, as whole objects rather than ids. Each entry is one coverage decision from the plan's catalogue, with `options` narrowed to what was actually selected at every level. Null when nothing was selected, and null on surfaces where the selection has not been made yet.
        - `id` string, required: Unique identifier for the coverage selection. Prefixed with `pc_`.
        - `name` string, required: Title for this coverage selection. Typically used as the display heading.
        - `description` string, nullable: Full description of this coverage selection.
        - `scope` 'group_policy' | 'policy' | 'member', required
        - `input_type` 'single_select' | 'multi_select', required
        - `required` boolean, required: Whether a selection is mandatory.
        - `min_selections` integer, nullable: Minimum required selections (multi-select only).
        - `max_selections` integer, nullable: Maximum allowed selections (multi-select only).
        - `sort_order` integer, nullable: Display ordering hint.
        - `group_label` string, nullable: Optional grouping label for UI rendering. Indicates which coverage selections are best presented together from a UX standpoint.
        - `options` PlanCoverageOptionResponse[], required: Available options within this coverage selection.
          - `id` string, required: Unique identifier for this coverage option. Prefixed with `pco_`.
          - `name` string, required: Display name for this coverage option.
          - `description` string, nullable: Longer explanation of this coverage option.
          - `learn_more_url` string, nullable: Link to learn more about this coverage option.
          - `from_price` number, double, nullable: Lowest applicable monthly price for this coverage option.
          - `benefits` PlanCoverageOptionBenefitResponse[], nullable: Benefit items included with this coverage option.
            - `name` string, required: Benefit name.
            - `description` string, nullable: Benefit description.
          - `sub_options` PlanCoverageOptionResponse[], nullable: Nested sub-options available when this option is selected.
          - `eligibility_criteria` EmployerEligibilityCriterionResponse[], nullable: Eligibility criteria that must be met to select this coverage option.
            - `type` 'employees_count' | 'members_count' | 'industry_exclusions', required
            - `description` string, required: Human-readable description of the criterion.
            - `employees_count` EmployeesCountDetails
              - …
            - `members_count` MembersCountDetails
              - …
            - `industry_exclusions` IndustryExclusionsDetails
              - …
    - `selection_set_id` string, required: Identifies this policy enrolment when submitting coverage selections: the group policy it enrols in (prefixed with `gp_`). Send it as each coverage selection's `selection_set_id`.
    - `health_insurance` HealthInsuranceEnrolmentIntentResponse
      - `configuration` HealthInsurancePolicyConfigurationResponse, required
        - `cost_sharing` CostSharingConfigurationResponse, required
          - `type` 'member_count' | 'member_selection' | 'member_selection_percentage_based' | 'percentage' | 'policyholder_only' | 'family_type' | 'fixed_amount' | 'full_coverage' | 'pooled_member_count', required
          - `member_count` MemberCountCostSharingConfigurationResponse
            - `adults` integer, required: Number of additional adults covered, including partner/spouse.
            - `children` integer, required: Number of additional children covered.
          - `member_selection` MemberSelectionCostSharingConfigurationResponse
            - `partner` boolean, required: If a spouse/partner is covered.
            - `children` boolean, required: If children are covered.
          - `member_selection_percentage_based` MemberSelectionPercentageBasedCostSharingConfigurationResponse
            - `partner` boolean, required: If a spouse/partner is covered.
            - `children` boolean, required: If children are covered.
            - `percentage` integer, required: Employer coverage percentage of each covered member's premium: For 40% send 40. For 100% send 100.
          - `percentage` PercentageCostSharingConfigurationResponse
            - `percentage` integer, required: Employer coverage percentage: For 40% send 40. For 100% send 100.
          - `family_type` FamilyTypeCostSharingConfigurationResponse
            - `type` 'single' | 'couple' | 'single_with_children' | 'family', required
          - `fixed_amount` FixedAmountCostSharingConfigurationResponse
            - `monthly_amount` number, double, required: Monthly amount the employer covers, in the plan's currency. Must be positive.
          - `pooled_member_count` PooledMemberCountCostSharingConfigurationResponse
            - `dependents` integer, required: Number of dependents the employer covers in full, of any relationship: a spouse, partner or child each count as one. Must be zero or more.
        - `max_dependents` integer, nullable, required: The most dependents the policy can cover at once, of any relationship: a spouse, partner or child each count as one. Set by the group policy. Null when there is no limit.
      - `coverage_options` PlanCoverageResponse[], nullable: Available plan coverage options at the policy scope. Only present when the plan has policy-scoped coverage configurations.
        - `id` string, required: Unique identifier for the coverage selection. Prefixed with `pc_`.
        - `name` string, required: Title for this coverage selection. Typically used as the display heading.
        - `description` string, nullable: Full description of this coverage selection.
        - `scope` 'group_policy' | 'policy' | 'member', required
        - `input_type` 'single_select' | 'multi_select', required
        - `required` boolean, required: Whether a selection is mandatory.
        - `min_selections` integer, nullable: Minimum required selections (multi-select only).
        - `max_selections` integer, nullable: Maximum allowed selections (multi-select only).
        - `sort_order` integer, nullable: Display ordering hint.
        - `group_label` string, nullable: Optional grouping label for UI rendering. Indicates which coverage selections are best presented together from a UX standpoint.
        - `options` PlanCoverageOptionResponse[], required: Available options within this coverage selection.
          - `id` string, required: Unique identifier for this coverage option. Prefixed with `pco_`.
          - `name` string, required: Display name for this coverage option.
          - `description` string, nullable: Longer explanation of this coverage option.
          - `learn_more_url` string, nullable: Link to learn more about this coverage option.
          - `from_price` number, double, nullable: Lowest applicable monthly price for this coverage option.
          - `benefits` PlanCoverageOptionBenefitResponse[], nullable: Benefit items included with this coverage option.
            - `name` string, required: Benefit name.
            - `description` string, nullable: Benefit description.
          - `sub_options` PlanCoverageOptionResponse[], nullable: Nested sub-options available when this option is selected.
          - `eligibility_criteria` EmployerEligibilityCriterionResponse[], nullable: Eligibility criteria that must be met to select this coverage option.
            - `type` 'employees_count' | 'members_count' | 'industry_exclusions', required
            - `description` string, required: Human-readable description of the criterion.
            - `employees_count` EmployeesCountDetails
              - …
            - `members_count` MembersCountDetails
              - …
            - `industry_exclusions` IndustryExclusionsDetails
              - …
      - `coverage_selections` EnrolmentIntentCoverageSelectionResponse[], nullable: Current coverage option selections. Populated when selections have been submitted.
        - `configuration_id` string, required: Configuration ID (prefixed with `pc_`).
        - `options` SelectedOptionResponse[], required: Selected options.
          - `option_id` string, required: Option ID (prefixed with `pco_`).
          - `sub_options` SelectedOptionResponse[], nullable: Selected sub-options, if applicable.
        - `selection_set_id` string, required: The policy enrolment this selection is for: its `selection_set_id`, the group policy whose plan offers the configuration (prefixed with `gp_`).
    - `life_assurance` LifeAssuranceEnrolmentIntentResponse
      - `coverage_options` PlanCoverageResponse[], nullable: Available plan coverage options at the policy scope. Only present when the plan has policy-scoped coverage configurations.
        - `id` string, required: Unique identifier for the coverage selection. Prefixed with `pc_`.
        - `name` string, required: Title for this coverage selection. Typically used as the display heading.
        - `description` string, nullable: Full description of this coverage selection.
        - `scope` 'group_policy' | 'policy' | 'member', required
        - `input_type` 'single_select' | 'multi_select', required
        - `required` boolean, required: Whether a selection is mandatory.
        - `min_selections` integer, nullable: Minimum required selections (multi-select only).
        - `max_selections` integer, nullable: Maximum allowed selections (multi-select only).
        - `sort_order` integer, nullable: Display ordering hint.
        - `group_label` string, nullable: Optional grouping label for UI rendering. Indicates which coverage selections are best presented together from a UX standpoint.
        - `options` PlanCoverageOptionResponse[], required: Available options within this coverage selection.
          - `id` string, required: Unique identifier for this coverage option. Prefixed with `pco_`.
          - `name` string, required: Display name for this coverage option.
          - `description` string, nullable: Longer explanation of this coverage option.
          - `learn_more_url` string, nullable: Link to learn more about this coverage option.
          - `from_price` number, double, nullable: Lowest applicable monthly price for this coverage option.
          - `benefits` PlanCoverageOptionBenefitResponse[], nullable: Benefit items included with this coverage option.
            - `name` string, required: Benefit name.
            - `description` string, nullable: Benefit description.
          - `sub_options` PlanCoverageOptionResponse[], nullable: Nested sub-options available when this option is selected.
          - `eligibility_criteria` EmployerEligibilityCriterionResponse[], nullable: Eligibility criteria that must be met to select this coverage option.
            - `type` 'employees_count' | 'members_count' | 'industry_exclusions', required
            - `description` string, required: Human-readable description of the criterion.
            - `employees_count` EmployeesCountDetails
              - …
            - `members_count` MembersCountDetails
              - …
            - `industry_exclusions` IndustryExclusionsDetails
              - …
      - `coverage_selections` EnrolmentIntentCoverageSelectionResponse[], nullable: Current coverage option selections. Populated when selections have been submitted.
        - `configuration_id` string, required: Configuration ID (prefixed with `pc_`).
        - `options` SelectedOptionResponse[], required: Selected options.
          - `option_id` string, required: Option ID (prefixed with `pco_`).
          - `sub_options` SelectedOptionResponse[], nullable: Selected sub-options, if applicable.
        - `selection_set_id` string, required: The policy enrolment this selection is for: its `selection_set_id`, the group policy whose plan offers the configuration (prefixed with `gp_`).
    - `id` string, nullable: Unique identifier for the policy created as part of this enrolment intent. Prefixed with `p_`. Only populated once the policy has been created.
  - `object` string: Object type identifier.
  - `ineligibility_reason` EnrolmentIntentInelgibilityReason
    - `code` 'employee_restricted' | 'employee_under_minimum_age' | 'employee_above_maximum_age' | 'employee_not_active' | 'employment_not_started' | 'unknown', required
    - `reason` string, required: A reason that can be displayed to the end user explaining why the enrolment intent is ineligible.
  - `policy_configuration` PolicyConfigurationResponse
    - `desired_policy_start_date` string, date, nullable: Desired policy start date, not guaranteed to be honoured by the provider.
    - `enrolment_date` string, date, nullable: The date on which the employee has agreed to enrol into a the group policy. This date may be used by some providers to determine policy start date.
  - `action_required` EnrolmentIntentActionRequiredResponse
    - `code` 'provide_dependant_information' | 'provide_beneficiary_information' | 'provide_missing_information', required
    - `reason` string, required: Brief reason for the required action.
    - `reason_description` string, required: Detailed description of the required action.
    - `due_by` string, date-time, required: The deadline by which the action must be completed. The day is included (i.e. the action can be completed any time during this day in the user's local time).
  - `pending_confirmation` EnrolmentIntentPendingConfirmationResponse
    - `due_by` string, date-time, required: The deadline by which the confirmation must be completed.
    - `code` 'confirm_enrolment', required
    - `reason` string, required: A reason for the confirmation action that needs to be taken.
    - `reason_description` string, required: A reason description explaining the confirmation action that needs to be taken.
    - `associated_persons` EnrolmentIntentAssociatedPersonResponse
      - `optional` boolean, required: Indicates whether providing information for the related type is optional.
      - `type` 'dependents', required
      - `dependent` EnrolmentIntentDependentResponse, required
        - `intent_id` string, required: Unique identifier for the dependents management intent. Prefixed with `dmi_`.
        - `status` 'processing' | 'confirmed', required
  - `disclosures` DisclosureResponse[], required: Disclosures associated with this intent.
    - `category` 'regulatory' | 'provider' | 'intermediary', required
    - `type` 'intermediary_role' | 'intermediary_commission' | 'underwriter_disclaimer' | 'anti_selection_notice' | 'statement_of_needs' | 'product_information' | 'pre_existing_conditions' | 'statutory_warning' | 'privacy_policy' | 'terms_of_business', required
    - `title` string, required: The title of the disclosure statement.
    - `text` string, required: The disclosure statement text. It may contain `{token}` placeholders, each of which has exactly one entry in `links` and must be rendered as an anchor to that link. A disclosure with no links contains no placeholders, so plain text stays plain text.
    - `links` DisclosureLinkResponse[], required: The documents `text` names, one per placeholder it carries. Empty for a disclosure that is text only.
      - `token` string, required: The placeholder this link fills. It appears in the disclosure's `text` wrapped in braces, as `{token}`, and matches `^[a-z][a-z0-9_]*$`. Tokens are unique within one disclosure, and every token in the text has exactly one link here.
      - `type` 'intermediary_role' | 'intermediary_commission' | 'underwriter_disclaimer' | 'anti_selection_notice' | 'statement_of_needs' | 'product_information' | 'pre_existing_conditions' | 'statutory_warning' | 'privacy_policy' | 'terms_of_business', required
      - `label` string, required: The anchor text to display in place of the token.
      - `url` string, required: Absolute HTTPS URL of the document.
      - `version` string, required: Version of the document at the URL, so a record of what was shown can name the exact document the customer could have read.

## Other responses

- `400`: Bad Request
- `404`: Not Found

## Changes

- **2026-10-26** `998f7cb004ab`: 1 warning
  - deleted the `header` request parameter `X-Platform-Id`
- **2026-10-21** `ce9736d28f93`: 1 warning, 2 info
  - added the new `pooled_member_count` enum value to the `policy_enrolments/items/health_insurance/allOf[#/components/schemas/HealthInsuranceEnrolmentIntentResponse]/configuration/allOf[#/components/schemas/HealthInsurancePolicyConfigurationResponse]/cost_sharing/allOf[#/components/schemas/CostSharingConfigurationResponse]/type/allOf[#/components/schemas/CostSharingType]/` response property for the response status `200`
  - added the optional property `policy_enrolments/items/health_insurance/allOf[#/components/schemas/HealthInsuranceEnrolmentIntentResponse]/configuration/allOf[#/components/schemas/HealthInsurancePolicyConfigurationResponse]/cost_sharing/allOf[#/components/schemas/CostSharingConfigurationResponse]/pooled_member_count` to the response with the `200` status
  - added the required property `policy_enrolments/items/health_insurance/allOf[#/components/schemas/HealthInsuranceEnrolmentIntentResponse]/configuration/allOf[#/components/schemas/HealthInsurancePolicyConfigurationResponse]/max_dependents` to the response with the `200` status
- **2026-10-16** `af8813bdc38e`: 1 info
  - added the required property `disclosures/items/title` to the response with the `200` status
- …earlier changes not shown

[Operation history](https://skmtc.dev/kota/apis/kota-api/changes/enrolment_intents/:enrolment_intent_id/put.md)

---

[API](https://skmtc.dev/kota/apis/kota-api.md) - [All operations](https://skmtc.dev/kota/apis/kota-api/llms.txt) - [OpenAPI document](https://skmtc.dev/kota/apis/kota-api/revisions/998f7cb004ab?raw)
