> ## Documentation Index
> Fetch the complete documentation index at: https://docs.flowpayroll.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Set the employee's SSP qualifying-day policy from an effective date

> Adds a qualifying-day policy version effective from the given date; re-sending the same effectiveFrom replaces that version. mode chooses how qualifying days are decided: "DeriveFromPattern" uses the employee's working days, "AgreedFixedDays" uses the agreedQualifyingDays you supply, and "WednesdayDefault" is the statutory fallback where nothing was agreed. agreedQualifyingDays is required when mode is "AgreedFixedDays" and must select at least one day, because every week needs at least one qualifying day.



## OpenAPI

````yaml /api-reference/specs/pay-api.yaml put /employees/{employeeId}/qualifying-day-policy
openapi: 3.0.3
info:
  title: FlowPayroll API
  description: >-
    API for payroll management, including payroll upload, lock, HMRC submission,
    employee management
  version: 0.1.0
servers:
  - url: https://api.sandbox.flowpayroll.ai/v1
security:
  - XAuthToken: []
    XOrgId: []
tags:
  - name: Employees
    description: >-
      Create, retrieve, update, and delete employee records, and look them up by
      NI number or payroll ID.
  - name: Starters & leavers
    description: Set and clear starter and leaver details, individually or in bulk.
  - name: Tax codes
    description: >-
      Manage employee tax codes and query the effective tax code and NI category
      on a given date.
  - name: NI & identifiers
    description: Manage NI categories, National Insurance numbers, and payroll IDs.
  - name: Student loans
    description: Start and end student and postgraduate loans.
  - name: Payroll setup
    description: Assign an employee's payroll config and set opening balances.
  - name: Salary
    description: >-
      The employee's effective-dated annual salary history: read it, add or
      correct a version from a date, and remove one. The Salary API pro-rates
      this history onto each pay run.
  - name: Payroll
  - name: Payroll lines
  - name: PayrollConfig
  - name: Pay Elements
  - name: Calculator
  - name: Payslip
  - name: RTI
  - name: YearEnd
  - name: Organisation
paths:
  /employees/{employeeId}/qualifying-day-policy:
    put:
      tags:
        - Working patterns
      summary: Set the employee's SSP qualifying-day policy from an effective date
      description: >-
        Adds a qualifying-day policy version effective from the given date;
        re-sending the same effectiveFrom replaces that version. mode chooses
        how qualifying days are decided: "DeriveFromPattern" uses the employee's
        working days, "AgreedFixedDays" uses the agreedQualifyingDays you
        supply, and "WednesdayDefault" is the statutory fallback where nothing
        was agreed. agreedQualifyingDays is required when mode is
        "AgreedFixedDays" and must select at least one day, because every week
        needs at least one qualifying day.
      operationId: PutQualifyingDayPolicy
      parameters:
        - name: employeeId
          in: path
          required: true
          schema:
            type: string
          description: The ID of the employee
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UpsertEmployeeQualifyingDayPolicyRequestDto'
      responses:
        '200':
          description: Qualifying day policy saved successfully
          content:
            application/json:
              schema:
                type: object
                allOf:
                  - $ref: '#/components/schemas/ResponseBody'
                  - properties:
                      content:
                        type: object
                        properties:
                          data:
                            $ref: >-
                              #/components/schemas/EmployeeQualifyingDayPolicyHistoryResponseDto
        '400':
          description: Invalid request data
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseBody'
        '404':
          description: Employee not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseBody'
        '500':
          description: An internal server error occurred
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseBody'
components:
  schemas:
    UpsertEmployeeQualifyingDayPolicyRequestDto:
      type: object
      description: >-
        Set the employee's SSP qualifying-day policy from a given effective
        date.
      required:
        - effectiveFrom
        - mode
      properties:
        effectiveFrom:
          type: string
          description: The date this policy takes effect. Format YYYY-MM-DD.
          example: '2026-04-06'
        mode:
          type: string
          description: How qualifying days are determined.
          enum:
            - DeriveFromPattern
            - AgreedFixedDays
            - WednesdayDefault
          example: AgreedFixedDays
        agreedQualifyingDays:
          $ref: '#/components/schemas/StandardWorkingDaysDto'
          description: >-
            The agreed qualifying weekdays; required when mode is
            "AgreedFixedDays".
    ResponseBody:
      type: object
      properties:
        message:
          $ref: '#/components/schemas/MessageWithTokenResponse'
        content:
          type: object
          properties:
            data:
              type: object
              nullable: true
            metadata:
              type: object
              nullable: true
              properties:
                dateFormat:
                  type: string
                  default: yyyy-MM-dd
                dateTimeFormat:
                  type: string
                  default: yyyy-MM-ddTHH:mm:ss.fffZ
                paginationToken:
                  type: string
                  nullable: true
        validationIssues:
          type: array
          items:
            $ref: '#/components/schemas/ValidationIssue'
    EmployeeQualifyingDayPolicyHistoryResponseDto:
      type: object
      description: The full effective-dated history of an employee's qualifying-day policy.
      properties:
        versions:
          type: array
          items:
            $ref: '#/components/schemas/EmployeeQualifyingDayPolicyVersionDto'
    StandardWorkingDaysDto:
      type: object
      description: Standard working days configuration
      properties:
        monday:
          type: boolean
          description: Whether Monday is a working day
          example: true
        tuesday:
          type: boolean
          description: Whether Tuesday is a working day
          example: true
        wednesday:
          type: boolean
          description: Whether Wednesday is a working day
          example: true
        thursday:
          type: boolean
          description: Whether Thursday is a working day
          example: true
        friday:
          type: boolean
          description: Whether Friday is a working day
          example: true
        saturday:
          type: boolean
          description: Whether Saturday is a working day
          example: false
        sunday:
          type: boolean
          description: Whether Sunday is a working day
          example: false
    MessageWithTokenResponse:
      type: object
      properties:
        text:
          type: string
        token:
          type: string
        tokenArguments:
          type: array
          items:
            $ref: '#/components/schemas/ValidationIssueArgument'
    ValidationIssue:
      type: object
      description: >
        Field validation item. `reasonToken` is a stable snake_case key for i18n
        or custom client messages; `reason` is the default English text from the
        API.
      properties:
        field:
          type: string
          description: Dot-path of the field (e.g. name.firstName, address.line1).
        reason:
          type: string
          description: Default human-readable message.
        reasonToken:
          type: string
          description: Machine-readable error identifier (snake_case).
        reasonTokenArguments:
          type: array
          nullable: true
          items:
            $ref: '#/components/schemas/ValidationIssueArgument'
    EmployeeQualifyingDayPolicyVersionDto:
      type: object
      description: An effective-dated qualifying-day policy version with audit metadata.
      properties:
        effectiveFrom:
          type: string
          example: '2026-04-06'
        mode:
          type: string
          enum:
            - DeriveFromPattern
            - AgreedFixedDays
            - WednesdayDefault
        agreedQualifyingDays:
          $ref: '#/components/schemas/StandardWorkingDaysDto'
        createdDate:
          type: string
        createdBy:
          type: string
        updatedDate:
          type: string
        updatedBy:
          type: string
    ValidationIssueArgument:
      type: object
      properties:
        name:
          type: string
        value:
          type: string
  securitySchemes:
    XAuthToken:
      type: apiKey
      in: header
      name: X-Auth-Token
      description: Access token obtained from OAuth2 client credentials flow
    XOrgId:
      type: apiKey
      in: header
      name: X-Org-Id
      description: >-
        Organisation to scope the request to. Required when the principal can
        access more than one organisation; optional for single-organisation
        principals (the authorizer resolves it automatically).

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.