Kota Contribution Reports API

The Contribution Reports API from Kota — 5 operation(s) for contribution reports.

OpenAPI Specification

kota-contribution-reports-api-openapi.yml Raw ↑
openapi: 3.1.0
info:
  title: API Reference Associated Persons Contribution Reports API
  version: 1.0.0
servers:
- url: https://test.api.kota.io
  description: test
- url: https://api.kota.io
  description: production
tags:
- name: Contribution Reports
paths:
  /contribution_reports/{contribution_report_id}:
    get:
      tags:
      - Contribution Reports
      summary: Retrieve a contribution report
      description: Returns a `contribution report` object.
      operationId: RetrieveContributionReport
      parameters:
      - name: contribution_report_id
        in: path
        required: true
        schema:
          pattern: ctr_.+
          type: string
          example: ctr_3b1333d87d9d4fd6ad83ba7f6b0e951a
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ContributionReportResponse'
        '404':
          description: Not Found
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
  /contribution_reports:
    get:
      tags:
      - Contribution Reports
      summary: List all contribution reports
      description: Returns a list of `contribution reports`. The reports are returned sorted by creation date, with the most recent reports appearing first.
      operationId: ListContributionReports
      parameters:
      - name: employer_id
        in: query
        description: Unique identifier of the employer for filtering reports
        schema:
          pattern: er_.+
          type: string
          example: er_3b1333d87d9d4fd6ad83ba7f6b0e951a
      - name: status
        in: query
        description: 'Multiple values can be provided by separating them with a comma. Allowed values are: `open`, `finalized`.'
        schema:
          type: string
      - name: month
        in: query
        description: Month for filtering reports, used together with `year` (MM format)
        schema:
          type: integer
          format: int32
      - name: year
        in: query
        description: Year for filtering reports, can be used standalone or with `month` (YYYY format)
        schema:
          type: integer
          format: int32
      - name: external_customer_id
        in: query
        description: Unique identifier of the customer for EoR platforms, used to filter reports for a logical employer
        schema:
          type: string
      - name: page
        in: query
        description: The page of results to return. Defaults to 1 if not provided.
        schema:
          type: integer
          description: The page of results to return. Defaults to 1 if not provided.
          format: int32
      - name: page_size
        in: query
        description: The number of results to return per page. Defaults to 10 if not provided. Maximum value is 100.
        schema:
          type: integer
          description: The number of results to return per page. Defaults to 10 if not provided. Maximum value is 100.
          format: int32
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ContributionReportResponsePagedList'
  /contribution_reports/{contribution_report_id}/finalize:
    post:
      tags:
      - Contribution Reports
      summary: Finalize a contribution report
      description: This endpoint finalizes the `contribution report` object, making it immutable and preventing any further updates. Once finalized, its `status` changes to `finalized`, and it serves as a historical record for payroll reporting. Any changes or adjustments that occur after the finalization will roll into the next reporting period.
      operationId: FinalizeContributionReport
      parameters:
      - name: contribution_report_id
        in: path
        required: true
        schema:
          pattern: ctr_.+
          type: string
          example: ctr_3b1333d87d9d4fd6ad83ba7f6b0e951a
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ContributionReportResponse'
        '400':
          description: Bad Request
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '404':
          description: Not Found
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
  /contribution_reports/{contribution_report_id}/employee_breakdowns/{employee_id}:
    get:
      tags:
      - Contribution Reports
      summary: Retrieve an employee breakdown
      description: Returns the `employee breakdown` for a `contribution report`.
      operationId: RetrieveEmployeeBreakdownForContributionReport
      parameters:
      - name: contribution_report_id
        in: path
        required: true
        schema:
          pattern: ctr_.+
          type: string
          example: ctr_3b1333d87d9d4fd6ad83ba7f6b0e951a
      - name: employee_id
        in: path
        required: true
        schema:
          pattern: ee_.+
          type: string
          example: ee_3b1333d87d9d4fd6ad83ba7f6b0e951a
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ContributionReportEmployeeBreakdownResponse'
        '404':
          description: Not Found
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
  /contribution_reports/{contribution_report_id}/employee_breakdowns:
    get:
      tags:
      - Contribution Reports
      summary: List all employee breakdowns
      description: Returns a list of `employee breakdowns` for a `contribution report`. The breakdowns are returned sorted by creation date, with the most recent breakdown appearing first.
      operationId: ListEmployeeBreakdownsForContributionReport
      parameters:
      - name: contribution_report_id
        in: path
        required: true
        schema:
          pattern: ctr_.+
          type: string
          example: ctr_3b1333d87d9d4fd6ad83ba7f6b0e951a
      - name: page
        in: query
        description: The page of results to return. Defaults to 1 if not provided.
        schema:
          type: integer
          description: The page of results to return. Defaults to 1 if not provided.
          format: int32
      - name: page_size
        in: query
        description: The number of results to return per page. Defaults to 10 if not provided. Maximum value is 100.
        schema:
          type: integer
          description: The number of results to return per page. Defaults to 10 if not provided. Maximum value is 100.
          format: int32
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ContributionReportEmployeeBreakdownResponsePagedList'
        '404':
          description: Not Found
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
components:
  schemas:
    ContributionReportEmployeeBreakdownResponsePagedList:
      required:
      - items
      - page
      - page_size
      - total_count
      type: object
      properties:
        items:
          type: array
          items:
            $ref: '#/components/schemas/ContributionReportEmployeeBreakdownResponse'
          description: A paginated array containing the response elements
        page:
          type: integer
          description: The current page of the results
          format: int32
          example: 123
        page_size:
          type: integer
          description: The number of results on this page. This can be different from the requested page size if the total number of results is less than the requested page size
          format: int32
          example: 123
        total_count:
          type: integer
          description: The total number of elements available in the response. This is the total number of elements available across all pages, not just the current page.
          format: int32
          example: 123
        has_next_page:
          type: boolean
          description: Whether there are more pages available after this page
          readOnly: true
          example: true
        has_previous_page:
          type: boolean
          description: Whether there are more pages available before this page
          readOnly: true
          example: true
      additionalProperties: false
    HealthInsuranceContributionType:
      enum:
      - recurring
      - one_off
      type: string
    ContributionReportResponsePagedList:
      required:
      - items
      - page
      - page_size
      - total_count
      type: object
      properties:
        items:
          type: array
          items:
            $ref: '#/components/schemas/ContributionReportResponse'
          description: A paginated array containing the response elements
        page:
          type: integer
          description: The current page of the results
          format: int32
          example: 123
        page_size:
          type: integer
          description: The number of results on this page. This can be different from the requested page size if the total number of results is less than the requested page size
          format: int32
          example: 123
        total_count:
          type: integer
          description: The total number of elements available in the response. This is the total number of elements available across all pages, not just the current page.
          format: int32
          example: 123
        has_next_page:
          type: boolean
          description: Whether there are more pages available after this page
          readOnly: true
          example: true
        has_previous_page:
          type: boolean
          description: Whether there are more pages available before this page
          readOnly: true
          example: true
      additionalProperties: false
    HealthInsuranceContributionMemberType:
      enum:
      - policyholder
      - partner_dependant
      - child_dependant
      type: string
    ContributionReportEmployeeBreakdownResponse:
      required:
      - contribution_report_id
      - created_at
      - currency
      - employee_id
      - employer_id
      - health_insurance
      - last_updated_at
      - period
      - status
      type: object
      properties:
        object:
          type: string
          description: The object type
          readOnly: true
        employee_id:
          pattern: ee_.+
          type: string
          description: Unique identifier of the employee for which the breakdown is created
          example: ee_3b1333d87d9d4fd6ad83ba7f6b0e951a
        contribution_report_id:
          pattern: ctr_.+
          type: string
          description: Unique identifier of the related contribution report
          example: ctr_3b1333d87d9d4fd6ad83ba7f6b0e951a
        employer_id:
          pattern: er_.+
          type: string
          description: Unique identifier of the employer for which the breakdown is created
          example: er_3b1333d87d9d4fd6ad83ba7f6b0e951a
        external_customer_id:
          type:
          - 'null'
          - string
          description: Unique identifier of the customer for which the breakdown is created. This identifier is assigned by the Employer of Record (EoR) platform to the Customer (i.e. the company using the EoR service) for which the employee is employed. This parameter is only available to EoR platforms.
        period:
          allOf:
          - $ref: '#/components/schemas/GetEmployeeBreakdownPeriod'
          description: Period covered by the employee breakdown
        currency:
          allOf:
          - $ref: '#/components/schemas/CurrencyCode'
          description: The currency in which all the amounts in this breakdown are presented (e.g. `eur`)
        status:
          allOf:
          - $ref: '#/components/schemas/ContributionReportStatus'
          description: Current status of the breakdown
        finalized_at:
          type:
          - 'null'
          - string
          description: Date and time the breakdown was finalized, if applicable
          format: date-time
          example: '2024-12-01T00:00:00Z'
        created_at:
          type: string
          description: Date and time the breakdown was created
          format: date-time
          example: '2024-12-01T00:00:00Z'
        last_updated_at:
          type: string
          description: Date and time of the last update to the breakdown
          format: date-time
          example: '2024-12-01T00:00:00Z'
        health_insurance:
          allOf:
          - $ref: '#/components/schemas/GetEmployeeBreakdownHealthInsurance'
          description: Health insurance contribution details
      additionalProperties: false
    GetContributionReportPeriod:
      required:
      - from_date
      - to_date
      type: object
      properties:
        from_date:
          type: string
          description: Start date of the period
          format: date
          example: '2024-12-01'
        to_date:
          type: string
          description: End date of the period
          format: date
          example: '2024-12-01'
      additionalProperties: false
    GetEmployeeBreakdownPeriod:
      required:
      - from_date
      - to_date
      type: object
      properties:
        from_date:
          type: string
          description: Start date of the period
          format: date
          example: '2024-12-01'
        to_date:
          type: string
          description: End date of the period
          format: date
          example: '2024-12-01'
      additionalProperties: false
    CurrencyCode:
      enum:
      - 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
      type: string
    ProblemDetails:
      type: object
      properties:
        type:
          type:
          - 'null'
          - string
        title:
          type:
          - 'null'
          - string
        status:
          type:
          - 'null'
          - integer
          format: int32
        detail:
          type:
          - 'null'
          - string
        instance:
          type:
          - 'null'
          - string
      additionalProperties: {}
    GetEmployeeBreakdownHealthInsurance:
      required:
      - employee_contributions
      - employer_contributions
      type: object
      properties:
        employer_contributions:
          type: array
          items:
            $ref: '#/components/schemas/GetEmployeeBreakdownContribution'
          description: Employer health insurance contributions
        employee_contributions:
          type: array
          items:
            $ref: '#/components/schemas/GetEmployeeBreakdownContribution'
          description: Employee health insurance contributions
      additionalProperties: false
    HealthInsuranceContributionCategory:
      enum:
      - gross_premium
      - tax
      - tax_relief
      type: string
    ContributionReportResponse:
      required:
      - created_at
      - employer_id
      - id
      - last_updated_at
      - period
      - status
      type: object
      properties:
        object:
          type: string
          description: The object type
          readOnly: true
        id:
          pattern: ctr_.+
          type: string
          description: Unique identifier for the contribution report
          example: ctr_3b1333d87d9d4fd6ad83ba7f6b0e951a
        employer_id:
          pattern: er_.+
          type: string
          description: Unique identifier of the employer for which the report is created
          example: er_3b1333d87d9d4fd6ad83ba7f6b0e951a
        external_customer_id:
          type:
          - 'null'
          - string
          description: Unique identifier of the customer for which the report is created. This identifier is assigned by the Employer of Record (EoR) platform to the Customer (i.e. the company using the EoR service) for which the employee is employed. This parameter is only available to EoR platforms.
        period:
          allOf:
          - $ref: '#/components/schemas/GetContributionReportPeriod'
          description: Period covered by the contribution report
        status:
          allOf:
          - $ref: '#/components/schemas/ContributionReportStatus'
          description: Current status of the contribution report
        finalized_at:
          type:
          - 'null'
          - string
          description: Date and time the report was finalized, if applicable
          format: date-time
          example: '2024-12-01T00:00:00Z'
        created_at:
          type: string
          description: Date and time the report was created
          format: date-time
          example: '2024-12-01T00:00:00Z'
        last_updated_at:
          type: string
          description: Date and time of the last update to the report
          format: date-time
          example: '2024-12-01T00:00:00Z'
      additionalProperties: false
    ContributionReportStatus:
      enum:
      - open
      - finalized
      type: string
    GetEmployeeBreakdownContribution:
      required:
      - adjustment
      - amount
      - category
      - cover_period
      - employee_policy_id
      - id
      - member_type
      - policy_id
      - reporting_month
      - type
      type: object
      properties:
        id:
          pattern: ct_.+
          type: string
          description: Unique identifier for the contribution entry
          example: ct_3b1333d87d9d4fd6ad83ba7f6b0e951a
        category:
          allOf:
          - $ref: '#/components/schemas/HealthInsuranceContributionCategory'
          description: Category of the contribution
        member_type:
          allOf:
          - $ref: '#/components/schemas/HealthInsuranceContributionMemberType'
          description: Type of member for the contribution
        adjustment:
          type: boolean
          description: Indicates if this contribution is an adjustment to a previous charge
          example: true
        adjustment_for:
          pattern: ct_.+
          type:
          - 'null'
          - string
          description: Unique identifier of the original contribution being adjusted, if applicable
          example: ct_3b1333d87d9d4fd6ad83ba7f6b0e951a
        amount:
          type: number
          description: The monetary value of the contribution
          format: double
          example: 123.45
        type:
          allOf:
          - $ref: '#/components/schemas/HealthInsuranceContributionType'
          description: Type of the contribution
        note:
          type:
          - 'null'
          - string
          description: Optional field for additional context, e.g. if the amount is pro-rated or backdated
        cover_period:
          allOf:
          - $ref: '#/components/schemas/GetEmployeeBreakdownPeriod'
          description: The health insurance period the contribution applies to
        policy_id:
          pattern: p_.+
          type: string
          description: The policy the contribution applies to. Prefixed with `p_`.
          example: p_3b1333d87d9d4fd6ad83ba7f6b0e951a
        employee_policy_id:
          pattern: eehp_.+
          type: string
          description: 'DEPRECATED: Use `policy_id` instead. The employee health insurance policy the contribution applies to. Prefixed with `eehp_`.'
          example: eehp_3b1333d87d9d4fd6ad83ba7f6b0e951a
          deprecated: true
        reporting_month:
          type: string
          description: The primary month for which the contribution is relevant, helping to align contributions with standard monthly reporting cycles. It allows for consistent monthly categorisation in systems that require calendar-based reporting. Provided in `YYYY-MM-DD` format (with the day set to `01` as a convention), only the year and month are relevant.
          format: date
          example: '2024-12-01'
      additionalProperties: false
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      description: Authorization header using the Bearer scheme