---
title: "List customers"
method: GET
path: "/customers"
tags: ["Customers"]
---

# List customers

`GET /customers`

Returns a paginated list of customers under the current Project.

## Query parameters

- `status` 'active' | 'inactive'
- `email` string
- `externalId` string
- `createdAfter` string, date-time
- `createdBefore` string, date-time
- `limit` integer
- `cursor` string

## Response `200`

List of customers

- CustomersList
  - `data` Customer[], required
    - `id` string
    - `object` string
    - `type` 'individual' — Customer type. Only individual is supported for MVP.
    - `firstName` string, nullable
    - `middleName` string, nullable
    - `lastName` string, nullable
    - `email` string, nullable
    - `phone` string, nullable — Primary phone in E.164 format.
    - `nationality` string, nullable — ISO 3166-1 alpha-2 country code.
    - `externalId` string, nullable — Developer's own user ID for cross-referencing.
    - `status` 'active' | 'inactive' — active or inactive. Inactive customers cannot create new transactions. No intermediate states - all granularity lives in endorsement statuses.
    - `signedAgreement` boolean — Whether the customer has accepted OMS terms of service.
    - `signedAgreementAt` string, date-time, nullable — Timestamp when signedAgreement was set to true. Null if not yet signed.
    - `wallets` object[] — Simplified flat view: one entry per wallet-asset combination. Use GET /wallets/{id} for the full representation.
      - `id` string
      - `type` string
      - `address` string
      - `network` string
      - `asset` string
      - `balance` string
      - `estimatedValueUsd` string
      - `createdAt` string, date-time
    - `endorsements` object[] — Endorsements track KYC/compliance status. Types: basic, cryptoCustody, usd. Statuses use SCREAMING_CASE: INACTIVE, PENDING, ISSUES, ACTIVE, REJECTED, REVOKED_ISSUES, OFFBOARDED.
      - `name` 'basic' | 'cryptoCustody' | 'usd'
      - `status` 'INACTIVE' | 'PENDING' | 'ISSUES' | 'ACTIVE' | 'REJECTED' | 'REVOKED_ISSUES' | 'OFFBOARDED'
      - `rejectionReasons` object[]
        - `developerReason` string
        - `reason` string
      - `requirements` object — Tracks what is complete, pending, missing, or has issues for this endorsement.
        - `complete` string[]
        - `pending` string[]
        - `missing` string[], nullable
        - `issues` string[]
    - `metadata` object, nullable
    - `createdAt` string, date-time
    - `updatedAt` string, date-time
  - `hasMore` boolean, required
  - `cursor` string — Opaque pagination cursor - pass back as the `cursor` query param to fetch the next page. Absent on the last page.

## Other responses

- `401` — Unauthorized

---

[API](https://skmtc.net/polygon-technology/apis/polygon-oms-public-api.md) · [All operations](https://skmtc.net/polygon-technology/apis/polygon-oms-public-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/polygon-technology/polygon-oms-public-api/revisions/18fdaebf64e5/schema)
