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

# List cardholders

> List cardholders for this partner



## OpenAPI

````yaml /partner-openapi.json get /partner/cardholders
openapi: 3.1.0
info:
  title: Contro Partner API
  version: 1.0.0
  license:
    name: Proprietary
    url: https://contro.me/terms
  description: >-
    The Contro Partner API enables Card-as-a-Service (CaaS) partners to
    programmatically issue cards, manage cardholders, and monitor transactions.


    ## Authentication


    All requests require your partner API key in the `x-contro-api-key` header:


    ```

    x-contro-api-key: sk_live_...

    ```


    Use `sk_test_*` keys for sandbox and `sk_live_*` keys for production.


    ## Rate Limits


    The API allows 1,000 requests per minute per API key. When exceeded,
    responses return HTTP 429 with a `Retry-After` header.


    ## Pagination


    List endpoints use page-based pagination:


    ```json

    {
      "data": [...],
      "page": 1,
      "limit": 20,
      "total": 137
    }

    ```


    Pass `?page=2&limit=20` to paginate. `limit` accepts 1–100 (default 20);
    `page` defaults to 1.


    ## Errors


    All errors return:


    ```json

    {
      "success": false,
      "error": "Human-readable message"
    }

    ```
servers:
  - url: https://api.contro.me/v1
    description: Production server for live traffic
  - url: https://stg-api.contro.dev/v1
    description: Sandbox environment for testing
security:
  - apiKey: []
paths:
  /partner/cardholders:
    get:
      tags:
        - Partner - Cardholders
      summary: List cardholders
      description: List cardholders for this partner
      operationId: listCardholders
      parameters:
        - schema:
            type: integer
            minimum: 1
            default: 1
            description: Page number
          required: false
          description: Page number
          name: page
          in: query
        - schema:
            type: integer
            minimum: 1
            maximum: 100
            default: 20
            description: Number of items per page (1-100)
          required: false
          description: Number of items per page (1-100)
          name: limit
          in: query
        - schema:
            type: string
            format: date-time
            description: ISO 8601 start timestamp (inclusive)
          required: false
          description: ISO 8601 start timestamp (inclusive)
          name: from
          in: query
        - schema:
            type: string
            format: date-time
            description: ISO 8601 end timestamp (inclusive)
          required: false
          description: ISO 8601 end timestamp (inclusive)
          name: to
          in: query
        - schema:
            type: string
            description: 'Filter by cardholder status. One of: active, suspended, closed'
            example: active
          required: false
          description: 'Filter by cardholder status. One of: active, suspended, closed'
          name: status
          in: query
        - schema:
            type: string
            description: 'Filter by KYC status. One of: pending, approved, rejected'
            example: approved
          required: false
          description: 'Filter by KYC status. One of: pending, approved, rejected'
          name: kycStatus
          in: query
        - schema:
            type: string
            description: Filter by partner-supplied external user ID
            example: user_123
          required: false
          description: Filter by partner-supplied external user ID
          name: externalUserId
          in: query
      responses:
        '200':
          description: List of cardholders
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: array
                    items:
                      type: object
                      properties:
                        id:
                          type: string
                          description: Contro cardholder ID
                          example: ch_abc123
                        externalUserId:
                          type: string
                          description: Your unique identifier for this user
                          example: user_42
                        firstName:
                          type: string
                          description: Cardholder's first name
                          example: Jane
                        lastName:
                          type: string
                          description: Cardholder's last name
                          example: Doe
                        email:
                          type: string
                          description: Email address
                          example: jane@example.com
                        phoneNumber:
                          type:
                            - string
                            - 'null'
                          description: >-
                            E.164 formatted phone number, or null if not
                            provided
                          example: '+14155552671'
                        kycSource:
                          type: string
                          description: 'KYC submission method. One of: api, sumsub, web'
                          example: api
                        kycStatus:
                          type: string
                          description: >-
                            KYC verification status. One of: pending, approved,
                            rejected
                          example: approved
                        status:
                          type: string
                          description: >-
                            Cardholder account status. One of: active,
                            suspended, closed
                          example: active
                        createdAt:
                          type: string
                          description: ISO 8601 creation timestamp
                          example: '2026-03-20T14:30:00Z'
                      required:
                        - id
                        - externalUserId
                        - firstName
                        - lastName
                        - email
                        - phoneNumber
                        - kycSource
                        - kycStatus
                        - status
                        - createdAt
                  total:
                    type: number
                  page:
                    type: number
                  limit:
                    type: number
                required:
                  - data
                  - total
                  - page
                  - limit
        '400':
          description: Bad Request
        '401':
          description: Unauthorized
        '404':
          description: Not Found
        '429':
          description: Rate Limited
        '500':
          description: Internal Server Error
components:
  securitySchemes:
    apiKey:
      type: apiKey
      in: header
      name: x-contro-api-key
      description: Partner API key (sk_live_* for production, sk_test_* for sandbox)

````