> ## 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 Payroll Connections by Employer Identifier

> Returns a paginated list of payroll connections for a specific employer identifier

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>
    </>;
};

export const FilteringInfo = ({fields = []}) => {
  const operatorsByType = {
    'string': ['eq', 'ne', 'contains', 'not_contains', 'in', 'not_in'],
    'text': ['eq', 'ne', 'contains', 'not_contains', 'in', 'not_in'],
    'number': ['eq', 'ne', 'gt', 'gte', 'lt', 'lte', 'in', 'not_in'],
    'numeric': ['eq', 'ne', 'gt', 'gte', 'lt', 'lte', 'in', 'not_in'],
    'integer': ['eq', 'ne', 'gt', 'gte', 'lt', 'lte', 'in', 'not_in'],
    'date': ['eq', 'ne', 'gt', 'gte', 'lt', 'lte', 'in', 'not_in'],
    'datetime': ['eq', 'ne', 'gt', 'gte', 'lt', 'lte', 'in', 'not_in'],
    'boolean': ['eq', 'ne'],
    'uuid': ['eq', 'ne', 'in', 'not_in']
  };
  const getOperators = field => {
    const baseType = field.type.toLowerCase().replace('?', '');
    const isNullable = field.type.includes('?') || field.nullable;
    const baseOperators = field.operators || operatorsByType[baseType] || ['eq', 'ne'];
    return isNullable ? [...baseOperators, 'empty', 'not_empty'] : baseOperators;
  };
  return <>
<div class="border-b pb-2.5 border-gray-100 dark:border-gray-800 w-full">
<h4>Filtering</h4>
</div>

      <ResponseField name="Filterable Fields">
        <ul>
            {fields.map(field => {
    const operators = getOperators(field);
    return <li key={field.name}>
                      <code>{field.name}</code>: {operators.map(op => <code key={op}>{op}</code>).reduce((prev, curr) => [prev, ', ', curr])}
                    </li>;
  })}
        </ul>
      </ResponseField>
    </>;
};

<FilteringInfo
  fields={[
    {
        name: "status",
        type: "string",
        operators: ["eq", "ne", "in", "not_in"],
    },
    {
        name: "product",
        type: "string",
        operators: ["eq", "ne", "in", "not_in"],
    },
]}
/>

<PaginationInfo defaultSortField={"createdAt"} sortFields={["createdAt"]} />


## OpenAPI

````yaml api-reference/openapi.demo.json GET /v1/employer-identifiers/{employer_identifier}/payroll-connections
openapi: 3.0.3
info:
  title: Payroll Integrations Public API
  version: 1.0.0
  description: Public API for Payroll Integrations platform
  license:
    name: MIT
servers:
  - url: https://demo1-api.payrollintegrationsdemo.com
    description: Demo
  - url: https://demo2-api.payrollintegrationsdemo.com
    description: Demo
  - url: https://demo3-api.payrollintegrationsdemo.com
    description: Demo
security: []
tags:
  - name: auth
  - name: employer-identifiers
  - name: meta
  - name: payroll-connections
  - name: payroll-platforms
  - name: roles
  - name: users
  - name: webhooks
paths:
  /v1/employer-identifiers/{employer_identifier}/payroll-connections:
    get:
      tags:
        - employer-identifiers
      description: >-
        Returns a paginated list of payroll connections for a specific employer
        identifier
      operationId: get_v1_employer_identifiers_employer_identifier_payroll_connections
      parameters:
        - name: employer_identifier
          in: path
          required: true
          schema:
            description: ID of the employer identifier
            type: string
            format: uuid
            pattern: >-
              ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$
          description: ID of the employer identifier
          example: 00000000-0000-0000-0000-000000000000
        - name: limit
          in: query
          required: false
          schema:
            description: Maximum number of records to return
            type: integer
            minimum: 1
            maximum: 4294967295
          description: Maximum number of records to return
        - name: offset
          in: query
          required: false
          schema:
            description: Number of records to skip from the beginning
            type: integer
            minimum: 0
            maximum: 4294967295
          description: Number of records to skip from the beginning
        - name: sort
          in: query
          required: false
          schema:
            description: >-
              Comma-separated list of fields to sort by. Prefix with - for
              descending order
            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
      responses:
        '200':
          description: Payroll connections retrieved successfully
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/ListEmployerIdentifierPayrollConnectionsResponse
              example:
                data:
                  - id: 550e8400-e29b-41d4-a716-446655440000
                    employerIdentifierId: 00000000-0000-0000-0000-000000000000
                    payrollPlatformId: 770e8400-e29b-41d4-a716-446655440000
                    createdAt: '2024-01-15T10:30:00Z'
                    status: Active
                    product: '360'
                meta:
                  currentCount: 1
                  filters: {}
                  limit: 20
                  offset: 0
                  sort: createdAt
                  totalCount: 1
          headers:
            Link:
              schema:
                type: string
                pattern: >-
                  ^(?:<[^>]+>;\s*rel="(?:self|first|last|prev|next)"(?:,\s+<[^>]+>;\s*rel="(?:self|first|last|prev|next)")*)$
        '400':
          description: Invalid request parameters
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '401':
          description: Invalid or missing token
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
          headers:
            WWW-Authenticate:
              schema:
                description: Authentication challenge (Bearer)
                type: string
              description: Authentication challenge (Bearer)
        '403':
          description: Insufficient permissions or access denied
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '429':
          description: Rate limit exceeded
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
          headers:
            Retry-After:
              schema:
                description: Number of seconds to wait before retrying
                type: string
              description: Number of seconds to wait before retrying
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
      security:
        - bearerAuth: []
components:
  schemas:
    ListEmployerIdentifierPayrollConnectionsResponse:
      type: object
      properties:
        data:
          type: array
          items:
            type: object
            properties:
              id:
                description: Unique identifier for the payroll connection
                type: string
                format: uuid
                pattern: >-
                  ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$
              employerIdentifierId:
                description: >-
                  Unique identifier of the employer identifier this connection
                  belongs to
                type: string
                format: uuid
                pattern: >-
                  ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$
              payrollPlatformId:
                description: Unique identifier of the payroll platform this connection uses
                type: string
                format: uuid
                pattern: >-
                  ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$
              createdAt:
                description: ISO 8601 timestamp when the payroll connection was created
                type: string
                format: date-time
                pattern: >-
                  ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z|([+-](?:[01]\d|2[0-3]):[0-5]\d)))$
              status:
                description: >-
                  Active if any division under the connection is Active.
                  Inactive otherwise.
                type: string
                enum:
                  - Active
                  - Inactive
              product:
                description: >-
                  360 if any plan for any division using the connection has the
                  productType "360", TPA if ALL plans for any division using the
                  connection has the productType "TPA", and null otherwise.
                nullable: true
                type: string
                enum:
                  - '360'
                  - TPA
            required:
              - id
              - employerIdentifierId
              - payrollPlatformId
              - createdAt
              - status
              - product
            additionalProperties: false
        meta:
          type: object
          properties:
            currentCount:
              description: Number of results in current page
              type: integer
              minimum: 0
              maximum: 4294967295
            filters:
              description: Applied filters with field names and operators
              type: object
              additionalProperties:
                type: object
                properties:
                  eq:
                    type: string
                  ne:
                    type: string
                  gt:
                    type: string
                  gte:
                    type: string
                  lt:
                    type: string
                  lte:
                    type: string
                  in:
                    type: array
                    items:
                      type: string
                  not_in:
                    type: array
                    items:
                      type: string
                  like:
                    type: string
                  not_like:
                    type: string
                  contains:
                    type: string
                  not_contains:
                    type: string
                  empty:
                    type: string
                  not_empty:
                    type: string
                additionalProperties: false
            limit:
              description: Maximum number of results per page
              type: integer
              minimum: 0
              maximum: 4294967295
            offset:
              description: Number of results to skip
              type: integer
              minimum: 0
              maximum: 4294967295
            sort:
              description: Sort order
              type: string
              pattern: ^(-?\w{1,100})(?:,(-?\w{1,100})){0,2}$
            totalCount:
              description: Total number of results
              type: integer
              minimum: 0
              maximum: 9007199254740991
          required:
            - currentCount
            - filters
            - limit
            - offset
            - sort
            - totalCount
          additionalProperties: false
      required:
        - data
        - meta
      additionalProperties: false
    ErrorResponse:
      type: object
      properties:
        message:
          description: Human-readable error message
          type: string
        errors:
          description: Array of specific error details
          type: array
          items:
            type: string
      required:
        - message
        - errors
      additionalProperties: false
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      bearerFormat: JWT
      description: >-
        Bearer token obtained from the /v1/auth/token endpoint. Send as:
        Authorization: Bearer <token>.

````