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

# Get High Earner Detail

> Threshold Income, Adjusted Income, applicable Annual Allowance, and the
annualisation inputs behind one flagged employee's row.

404s when the employee is not in the report — either they have no snapshot
for the tax year, or their annualised gross is below the threshold.



## OpenAPI

````yaml /api-reference/preview.json get /gb/organizations/{organization_id}/reports/high-earners/{tax_year}/employees/{employee_id}
openapi: 3.2.0
info:
  title: Intermezzo Global Payroll
  summary: Global Payroll Platform
  description: Intermezzo's global payroll apis, organized by country
  version: '2026-10-16'
  x-logo:
    url: /static/icon.svg
servers:
  - url: https://preview.intermezzo.ai
    description: Preview
security: []
paths:
  /gb/organizations/{organization_id}/reports/high-earners/{tax_year}/employees/{employee_id}:
    get:
      tags:
        - Great Britain
        - Reports
      summary: Get High Earner Detail
      description: >-
        Threshold Income, Adjusted Income, applicable Annual Allowance, and the

        annualisation inputs behind one flagged employee's row.


        404s when the employee is not in the report — either they have no
        snapshot

        for the tax year, or their annualised gross is below the threshold.
      operationId: >-
        get_high_earner_detail_gb_organizations__organization_id__reports_high_earners__tax_year__employees__employee_id__get
      parameters:
        - name: organization_id
          in: path
          required: true
          schema:
            type: string
            title: Organization Id
        - name: employee_id
          in: path
          required: true
          schema:
            type: string
            title: Employee Id
        - name: tax_year
          in: path
          required: true
          schema:
            type: integer
            maximum: 2100
            minimum: 1901
            description: Tax year start (2025 = 2025-26)
            title: Tax Year
          description: Tax year start (2025 = 2025-26)
        - name: as_of_tax_month
          in: query
          required: false
          schema:
            anyOf:
              - type: integer
                maximum: 12
                minimum: 1
              - type: 'null'
            title: As Of Tax Month
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HighEarnerDetailResponse'
        '400':
          description: >-
            - `ORG_BELONGS_TO_A_DIFFERENT_COUNTRY`: Raised when an organization
            belongs to a different country than the one in the path.
          content:
            application/json:
              schema:
                type: object
                title: ErrorResponse
                required:
                  - errors
                properties:
                  errors:
                    type: array
                    items:
                      additionalProperties: false
                      description: >-
                        Represents an error that occurred during processing.


                        Designed for client-side i18n:

                        - code: Use this to look up translation (e.g.,
                        "ORG_NOT_FOUND")

                        - message: English fallback if translation not available

                        - field: Field name for form validation highlighting

                        - params: Dynamic values for translation interpolation
                      properties:
                        code:
                          type: string
                          enum:
                            - ORG_BELONGS_TO_A_DIFFERENT_COUNTRY
                          title: Code
                          description: Unique error code for i18n lookup
                        message:
                          type: string
                          title: Message
                          description: English fallback error message
                        field:
                          anyOf:
                            - type: string
                            - type: 'null'
                          title: Field
                          description: Field that caused the error
                        params:
                          anyOf:
                            - additionalProperties: true
                              type: object
                            - type: 'null'
                          title: Params
                          description: Parameters for translation interpolation
                      required:
                        - code
                        - message
                      title: ErrorDetail
                      type: object
              examples:
                ORG_BELONGS_TO_A_DIFFERENT_COUNTRY:
                  summary: >-
                    Raised when an organization belongs to a different country
                    than the one in the path.
                  value:
                    errors:
                      - code: ORG_BELONGS_TO_A_DIFFERENT_COUNTRY
                        message: >-
                          Raised when an organization belongs to a different
                          country than the one in the path.
        '404':
          description: >-
            - `ORG_NOT_FOUND`: Raised when an organization is not found.

            - `HIGH_EARNERS_EMPLOYEE_NOT_FLAGGED`: Raised when calculation
            detail is requested for an employee who is not in the high earners
            report — either they have no snapshot for the tax year, or their
            annualised gross does not exceed the inclusion threshold.
          content:
            application/json:
              schema:
                type: object
                title: ErrorResponse
                required:
                  - errors
                properties:
                  errors:
                    type: array
                    items:
                      additionalProperties: false
                      description: >-
                        Represents an error that occurred during processing.


                        Designed for client-side i18n:

                        - code: Use this to look up translation (e.g.,
                        "ORG_NOT_FOUND")

                        - message: English fallback if translation not available

                        - field: Field name for form validation highlighting

                        - params: Dynamic values for translation interpolation
                      properties:
                        code:
                          type: string
                          enum:
                            - ORG_NOT_FOUND
                            - HIGH_EARNERS_EMPLOYEE_NOT_FLAGGED
                          title: Code
                          description: Unique error code for i18n lookup
                        message:
                          type: string
                          title: Message
                          description: English fallback error message
                        field:
                          anyOf:
                            - type: string
                            - type: 'null'
                          title: Field
                          description: Field that caused the error
                        params:
                          anyOf:
                            - additionalProperties: true
                              type: object
                            - type: 'null'
                          title: Params
                          description: Parameters for translation interpolation
                      required:
                        - code
                        - message
                      title: ErrorDetail
                      type: object
              examples:
                ORG_NOT_FOUND:
                  summary: Raised when an organization is not found.
                  value:
                    errors:
                      - code: ORG_NOT_FOUND
                        message: Raised when an organization is not found.
                HIGH_EARNERS_EMPLOYEE_NOT_FLAGGED:
                  summary: >-
                    Raised when calculation detail is requested for an employee
                    who is not in the high earners report — either they have no
                    snapshot for the tax year, or their annualised gross does
                    not exceed the inclusion threshold.
                  value:
                    errors:
                      - code: HIGH_EARNERS_EMPLOYEE_NOT_FLAGGED
                        message: >-
                          Raised when calculation detail is requested for an
                          employee who is not in the high earners report —
                          either they have no snapshot for the tax year, or
                          their annualised gross does not exceed the inclusion
                          threshold.
        '422':
          description: >-
            The request failed validation. Type and format errors use the
            generic FIELD_* codes.

            - `HIGH_EARNERS_UNSUPPORTED_TAX_YEAR`: Raised when the High Earners
            report is asked for a tax year with no statutory constants (PA/AA
            taper, tax bands) defined.
          content:
            application/json:
              schema:
                type: object
                title: ErrorResponse
                required:
                  - errors
                properties:
                  errors:
                    type: array
                    items:
                      additionalProperties: false
                      description: >-
                        Represents an error that occurred during processing.


                        Designed for client-side i18n:

                        - code: Use this to look up translation (e.g.,
                        "ORG_NOT_FOUND")

                        - message: English fallback if translation not available

                        - field: Field name for form validation highlighting

                        - params: Dynamic values for translation interpolation
                      properties:
                        code:
                          type: string
                          enum:
                            - HIGH_EARNERS_UNSUPPORTED_TAX_YEAR
                            - FIELD_REQUIRED
                            - FIELD_INVALID_TYPE_STRING
                            - FIELD_INVALID_TYPE_INT
                            - FIELD_INVALID_TYPE_FLOAT
                            - FIELD_INVALID_TYPE_BOOL
                            - FIELD_INVALID_TYPE_DICT
                            - FIELD_INVALID_TYPE_LIST
                            - FIELD_STRING_TOO_SHORT
                            - FIELD_STRING_TOO_LONG
                            - FIELD_STRING_PATTERN_MISMATCH
                            - FIELD_VALUE_TOO_SMALL
                            - FIELD_VALUE_TOO_LARGE
                            - FIELD_INVALID_DATE
                            - FIELD_INVALID_DATETIME
                            - FIELD_INVALID_TIME
                            - FIELD_INVALID_DATE_FORMAT
                            - FIELD_INVALID_DATETIME_FORMAT
                            - FIELD_INVALID_ENUM_VALUE
                            - FIELD_INVALID_EMAIL
                            - FIELD_INVALID_URL
                            - FIELD_LIST_TOO_SHORT
                            - FIELD_LIST_TOO_LONG
                            - FIELD_UNKNOWN
                            - FIELD_VALIDATION_ERROR
                          title: Code
                          description: Unique error code for i18n lookup
                        message:
                          type: string
                          title: Message
                          description: English fallback error message
                        field:
                          anyOf:
                            - type: string
                            - type: 'null'
                          title: Field
                          description: Field that caused the error
                        params:
                          anyOf:
                            - additionalProperties: true
                              type: object
                            - type: 'null'
                          title: Params
                          description: Parameters for translation interpolation
                      required:
                        - code
                        - message
                      title: ErrorDetail
                      type: object
              examples:
                HIGH_EARNERS_UNSUPPORTED_TAX_YEAR:
                  summary: >-
                    Raised when the High Earners report is asked for a tax year
                    with no statutory constants (PA/AA taper, tax bands)
                    defined.
                  value:
                    errors:
                      - code: HIGH_EARNERS_UNSUPPORTED_TAX_YEAR
                        message: >-
                          Raised when the High Earners report is asked for a tax
                          year with no statutory constants (PA/AA taper, tax
                          bands) defined.
      security:
        - BearerToken: []
components:
  schemas:
    HighEarnerDetailResponse:
      properties:
        tax_year:
          type: integer
          title: Tax Year
        as_of_tax_month:
          anyOf:
            - type: integer
            - type: 'null'
          title: As Of Tax Month
        summary:
          $ref: '#/components/schemas/HighEarnerSummaryRow'
        detail:
          $ref: '#/components/schemas/HighEarnerCalculationDetail'
        advisory_notice:
          type: string
          title: Advisory Notice
          default: >-
            Advisory only — not an HMRC filing and not a substitute for
            professional tax advice. Figures are straight-line projections from
            payroll data for this organisation only: they exclude other
            employments, non-payroll income, and unused Annual Allowance carried
            forward from earlier years. Treat every flagged employee as worth a
            conversation, not as a final liability figure.
      additionalProperties: false
      type: object
      required:
        - tax_year
        - summary
        - detail
      title: HighEarnerDetailResponse
      description: >-
        Full calculation detail for one flagged employee.


        Carries the summary row alongside the audit trail, so a caller landing
        here

        from a table row does not need a second request for context.
    HighEarnerSummaryRow:
      properties:
        employee_identity:
          $ref: '#/components/schemas/EmployeeIdentity'
        gross_figures:
          $ref: '#/components/schemas/GrossFigures'
        pension_contributions:
          $ref: '#/components/schemas/PensionContributions'
        tax_position:
          $ref: '#/components/schemas/TaxPosition'
        breach_assessment:
          $ref: '#/components/schemas/BreachAssessment'
      additionalProperties: false
      type: object
      required:
        - employee_identity
        - gross_figures
        - pension_contributions
        - tax_position
        - breach_assessment
      title: HighEarnerSummaryRow
      description: One row of the summary sheet — 13 columns.
    HighEarnerCalculationDetail:
      properties:
        employee_identity:
          $ref: '#/components/schemas/EmployeeIdentity'
        annualisation_basis:
          $ref: '#/components/schemas/AnnualisationBasis'
        income_figures:
          $ref: '#/components/schemas/IncomeFigureBreakdown'
        allowance_outcome:
          $ref: '#/components/schemas/AllowanceOutcome'
      additionalProperties: false
      type: object
      required:
        - employee_identity
        - annualisation_basis
        - income_figures
        - allowance_outcome
      title: HighEarnerCalculationDetail
      description: |-
        The audit trail behind one summary row.

        Everything needed to re-derive the taper decision by hand, for anyone
        checking a flagged figure.
    EmployeeIdentity:
      properties:
        employee_id:
          type: string
          title: Employee Id
          default: ''
        employee_number:
          type: string
          title: Employee Number
          default: ''
        full_name:
          type: string
          title: Full Name
          default: ''
      additionalProperties: false
      type: object
      title: EmployeeIdentity
      description: Section A — employee identity.
    GrossFigures:
      properties:
        monthly_gross:
          type: string
          title: Monthly Gross
          default: '0.00'
        ytd_gross:
          type: string
          title: Ytd Gross
          default: '0.00'
        annualized_gross:
          type: string
          title: Annualized Gross
          default: '0.00'
      additionalProperties: false
      type: object
      title: GrossFigures
      description: >-
        Section B — cash gross, per month / to date / projected.


        ``annualized_gross`` is the cash figure the inclusion filter keys off,
        and

        ``monthly_gross`` is derived from it rather than from the current
        period.
    PensionContributions:
      properties:
        monthly_pension_contribution:
          type: string
          title: Monthly Pension Contribution
          default: '0.00'
        ytd_pension_contribution:
          type: string
          title: Ytd Pension Contribution
          default: '0.00'
        annual_pension_contribution:
          type: string
          title: Annual Pension Contribution
          default: '0.00'
      additionalProperties: false
      type: object
      title: PensionContributions
      description: |-
        Section C — employee pension contributions only.

        Employer contributions live on the calculation detail, since they affect
        Adjusted Income rather than the employee's own deduction.
    TaxPosition:
      properties:
        adjusted_net_income:
          type: string
          title: Adjusted Net Income
          default: '0.00'
        tax_bracket:
          $ref: '#/components/schemas/TaxBracket'
          default: BASIC
        pa_tapered:
          $ref: '#/components/schemas/PATaperStatus'
          default: NONE
      additionalProperties: false
      type: object
      title: TaxPosition
      description: Section D — the Personal Allowance taper outcome.
    BreachAssessment:
      properties:
        pension_breach:
          type: boolean
          title: Pension Breach
          default: false
        cause_of_breach:
          type: string
          title: Cause Of Breach
          default: ''
      additionalProperties: false
      type: object
      title: BreachAssessment
      description: Section E — the Annual Allowance breach outcome.
    AnnualisationBasis:
      properties:
        periods_elapsed:
          type: integer
          title: Periods Elapsed
          default: 0
        total_periods:
          type: integer
          title: Total Periods
          default: 0
        projected:
          type: boolean
          title: Projected
          default: true
      additionalProperties: false
      type: object
      title: AnnualisationBasis
      description: >-
        Section F — the divisor behind every projected figure.


        Tenure-based, so a mid-year joiner's run-rate is not diluted by the
        periods

        before they started.
    IncomeFigureBreakdown:
      properties:
        annualized_taxable_gross:
          type: string
          title: Annualized Taxable Gross
          default: '0.00'
        class_1a_benefits:
          type: string
          title: Class 1A Benefits
          default: '0.00'
        relief_at_source_contribution:
          type: string
          title: Relief At Source Contribution
          default: '0.00'
        net_pay_pension:
          type: string
          title: Net Pay Pension
          default: '0.00'
        salary_sacrifice_pension:
          type: string
          title: Salary Sacrifice Pension
          default: '0.00'
        threshold_income:
          type: string
          title: Threshold Income
          default: '0.00'
        annual_employer_pension:
          type: string
          title: Annual Employer Pension
          default: '0.00'
        adjusted_income:
          type: string
          title: Adjusted Income
          default: '0.00'
        personal_allowance_lost:
          type: string
          title: Personal Allowance Lost
          default: '0.00'
        personal_allowance_remaining:
          type: string
          title: Personal Allowance Remaining
          default: '0.00'
      additionalProperties: false
      type: object
      title: IncomeFigureBreakdown
      description: >-
        Section G — the three HMRC income figures and their inputs.


        ``annualized_taxable_gross`` is net of NET_PAY employee pension, and so
        is

        deliberately distinct from the cash ``annualized_gross`` on the summary
        row.
    AllowanceOutcome:
      properties:
        taper_gate:
          $ref: '#/components/schemas/TaperGate'
          default: NOT_MET
        applicable_annual_allowance:
          type: string
          title: Applicable Annual Allowance
          default: '0.00'
        total_pension_input:
          type: string
          title: Total Pension Input
          default: '0.00'
        breach_amount:
          anyOf:
            - type: string
            - type: 'null'
          title: Breach Amount
      additionalProperties: false
      type: object
      title: AllowanceOutcome
      description: Section H — which allowance applied and by how much it was exceeded.
    TaxBracket:
      type: string
      enum:
        - BASIC
        - HIGHER
        - HIGHER_60_EFFECTIVE
        - ADDITIONAL
      title: TaxBracket
      description: >-
        Where the employee's Adjusted Net Income places them (rUK bands).


        ``HIGHER_60_EFFECTIVE`` is the Personal Allowance taper band: the 40%
        higher

        rate still applies while the allowance is withdrawn, giving a 60%
        effective

        marginal rate.
    PATaperStatus:
      type: string
      enum:
        - NONE
        - PARTIAL
        - FULL
      title: PATaperStatus
      description: How much Personal Allowance the employee retains.
    TaperGate:
      type: string
      enum:
        - NOT_MET
        - MET_NO_TAPER
        - TAPERED
        - FLOORED
      title: TaperGate
      description: Which branch of the Annual Allowance taper applied.
  securitySchemes:
    BearerToken:
      type: http
      scheme: bearer
      bearerFormat: JWT
      description: Get token from Auth0 and paste it here

````

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