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

# List Pay Categories

> Returns a paginated list of pay categories

export const PaginationInfo = ({defaultSortField, sortFields = [], maxLimit = 100, defaultLimit = 20}) => {
  return <>
      <div class="border-b pb-2.5 border-gray-100 dark:border-gray-800 w-full">
      <h4>Pagination & Sorting</h4>
      </div>

      {(maxLimit || defaultLimit) && <ResponseField name="Limit">
        <ul>
          {defaultLimit && <li>Default: {defaultLimit}</li>}
          {maxLimit && <li>Maximum: {maxLimit}</li>}
        </ul>
      </ResponseField>}

      <ResponseField name="Sort Fields">
        <ul>
            {sortFields.map(field => {
    if (field == defaultSortField || sortFields.length == 1) {
      return <li key={field}> <code>{field} (Default)</code> </li>;
    } else {
      return <li key={field}> <code>{field}</code> </li>;
    }
  })}
        </ul>
      </ResponseField>
    </>;
};

<PaginationInfo defaultSortField="category" sortFields={["category", "classification", "subcategory"]} />


## OpenAPI

````yaml GET /v1/employer-identifiers/{employer_identifier}/pay-categories
openapi: 3.1.0
info:
  title: Payroll Integrations Public API
  description: Public API for Payroll Integrations platform
  version: '2025-10-28T20:05:03Z'
  license:
    name: MIT
servers:
  - url: https://api.payrollintegrationsapp.com
    description: Prod environment
  - url: https://demo1-api.payrollintegrationsdemo.com
    description: Demo environment
  - url: https://demo2-api.payrollintegrationsdemo.com
    description: Demo environment
  - url: https://demo3-api.payrollintegrationsdemo.com
    description: Demo environment
security:
  - bearerAuth: []
paths:
  /v1/employer-identifiers/{employer_identifier}/pay-categories:
    get:
      tags:
        - Payroll Categories
      summary: List pay categories
      description: Returns a paginated list of pay categories
      operationId: listPayCategories
      parameters:
        - name: employer_identifier
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: >-
            Retrieve the list of pay categories supported by the employer
            identifier's connected recordkeepers and TPEs.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ListPayCategoriesResponse'
              example:
                data:
                  - category: AFTERTAX
                    categoryDisplayName: Post Tax 401(k)
                    classification: EMPLOYEE_DEDUCTION
                    subcategory: AFTER_TAX
                    subcategoryDisplayName: After Tax
                  - category: AFTERTAX
                    categoryDisplayName: Post Tax 401(k)
                    classification: EMPLOYEE_DEDUCTION
                    subcategory: AFTER_TAX_CATCHUP
                    subcategoryDisplayName: After Tax Catchup
                  - category: LOAN
                    categoryDisplayName: 401(k) Loans
                    classification: EMPLOYEE_DEDUCTION
                    subcategory: 401K_LOAN
                    subcategoryDisplayName: 401k Loan
                  - category: MATCH
                    categoryDisplayName: Match
                    classification: EMPLOYER_PAID_BENEFIT
                    subcategory: MATCH
                    subcategoryDisplayName: Match
                  - category: PRETAX
                    categoryDisplayName: Pretax 401(k)
                    classification: EMPLOYEE_DEDUCTION
                    subcategory: 401K_PRETAX
                    subcategoryDisplayName: 401k Pretax
                  - category: PRETAX
                    categoryDisplayName: Pretax 401(k)
                    classification: EMPLOYEE_DEDUCTION
                    subcategory: 401K_CATCHUP
                    subcategoryDisplayName: 401k Catchup
                  - category: PROFIT_SHARING
                    categoryDisplayName: Profit Sharing
                    classification: EARNING
                    subcategory: PROFIT_SHARING
                    subcategoryDisplayName: Profit Sharing
                  - category: ROTH
                    categoryDisplayName: Roth 401(k)
                    classification: EMPLOYEE_DEDUCTION
                    subcategory: ROTH
                    subcategoryDisplayName: Roth
                  - category: ROTH
                    categoryDisplayName: Roth 401(k)
                    classification: EMPLOYEE_DEDUCTION
                    subcategory: ROTH_CATCHUP
                    subcategoryDisplayName: Roth Catchup
                  - category: SAFE_HARBOR_MATCH
                    categoryDisplayName: Safe Harbor Match
                    classification: EMPLOYER_PAID_BENEFIT
                    subcategory: SAFE_HARBOR_MATCH
                    subcategoryDisplayName: Safe Harbor Match
                  - category: SAFE_HARBOR_NON_ELECTIVE
                    categoryDisplayName: Safe Harbor Non-Elective
                    classification: EMPLOYER_PAID_BENEFIT
                    subcategory: SAFE_HARBOR_NON_ELECTIVE
                    subcategoryDisplayName: Safe Harbor Non-Elective
                meta:
                  limit: 10
                  offset: 0
                  sort: category
                  currentCount: 11
                  totalCount: 11
                  filters: {}
        '401':
          description: Unauthorized - authentication credentials are missing or invalid
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
components:
  schemas:
    ListPayCategoriesResponse:
      type: object
      required:
        - data
        - meta
      properties:
        data:
          type: array
          items:
            type: object
            required:
              - category
              - classification
              - subcategory
              - subcategoryDisplayName
            properties:
              category:
                type: string
                description: The technical identifier of the pay category.
              classification:
                type: string
                enum:
                  - EMPLOYEE_DEDUCTION
                  - EMPLOYEE_PAID_TAX
                  - EMPLOYER_PAID_TAX
                  - EMPLOYER_PAID_BENEFIT
                  - EARNING
                  - UNKNOWN
                description: >-
                  The benefit provider specific display name for the pay
                  category.
              subcategory:
                type: string
                description: >-
                  Describes the operation that the pay code performs on the
                  paycheck.
              subcategoryDisplayName:
                type: string
                description: >-
                  The benefit provider specific display name for the pay
                  subcategory.
        meta:
          $ref: '#/components/schemas/PaginationMeta'
    Error:
      type: object
      required:
        - message
      properties:
        message:
          type: string
          description: Error message describing what went wrong
        errors:
          type: array
          description: Optional array of detailed error messages
          items:
            type: string
    PaginationMeta:
      type: object
      required:
        - offset
        - limit
        - currentCount
        - totalCount
        - sort
        - filters
      properties:
        offset:
          type: integer
          minimum: 0
          description: Number of results to skip from the beginning
        limit:
          type: integer
          minimum: 1
          description: Maximum number of results per page
        currentCount:
          type: integer
          minimum: 0
          description: Number of results in current page
        totalCount:
          type: integer
          minimum: 0
          description: Total number of results
        sort:
          type: string
          pattern: ^(-?\w{1,100})(?:,(-?\w{1,100})){0,2}$
          description: >-
            Comma-separated list of fields to sort by. Prefix with - for
            descending order
        filters:
          type: object
          additionalProperties: true
          description: >-
            The filters applied to the request. Contains field names as keys
            with their filter values or operator-based filter objects as values

````