<!-- ZenPays documentation · https://docs.zenpayz.com/docs/rest-api/endpoints/customers/list-customers -->

# List Customers

Retrieve a paginated list of customers with optional filters.

<EndpointHeader verb="GET" path="/merchant/api/v1/customers" />

## Request

### Headers

<ParamTable
  label="Header"
  rows={[
    { name: "Authorization", required: true, desc: "`Bearer {api_key}`" },
    { name: "X-Signature", required: true, desc: "HMAC-SHA256 signature" },
    { name: "X-Timestamp", required: true, desc: "ISO 8601 timestamp" },
    { name: "X-Secret-Salt", required: true, desc: "Secret salt for HMAC validation" },
  ]}
/>

### Query Parameters

<ParamTable
  rows={[
    { name: "page", type: "integer", default: "1", desc: "Page number" },
    { name: "limit", type: "integer", default: "10", desc: "Items per page (max 100)" },
    { name: "search", type: "string", default: "-", desc: "Search by email, name, or customer ID (alias for `searchTerm`)" },
    { name: "searchTerm", type: "string", default: "-", desc: "Search by email, name, or customer ID" },
    { name: "status", type: "string", default: "-", desc: "Filter by status (`active`, `inactive`, `blocked`, `suspended`)" },
    { name: "riskLevel", type: "string", default: "-", desc: "Filter by risk level (`low`, `medium`, `high`, `warning`, `critical`, `risky`, `vip`)" },
    { name: "currency", type: "string", default: "-", desc: "Filter by transaction currency" },
    { name: "sortBy", type: "string", default: "createdAt", desc: "Sort field (`createdAt`, `updatedAt`, `riskScore`, `totalAmount`, `lastTransactionDate`)" },
    { name: "sortOrder", type: "string", default: "DESC", desc: "Sort direction (`ASC`, `DESC`)" },
  ]}
/>

## Response

### Success (200 OK)

```json
{
  "success": true,
  "data": {
    "customers": [
      {
        "customerId": "cust_a1b2c3d4e5f6g7h8",
        "email": "john@example.com",
        "firstName": "John",
        "lastName": "Doe",
        "phone": "+1234567890",
        "country": "US",
        "status": "active",
        "riskLevel": "low",
        "riskScore": 10,
        "totalTransactions": 15,
        "totalSpent": 25000,
        "lastPurchase": "2024-01-14T15:30:00.000Z",
        "createdAt": "2024-01-01T10:00:00.000Z"
      }
    ],
    "total": 150,
    "page": 1,
    "limit": 10,
    "hasMore": true
  },
  "message": "Customers retrieved successfully",
  "error": null,
  "meta": {
    "request_id": "req_xxxxx",
    "timestamp": "2024-01-15T10:30:00.000Z",
    "processing_time_ms": 85,
    "api_version": "v1",
    "endpoint": "GET /customers",
    "user_type": "merchant"
  }
}
```

<CodeRail>

## Examples

<Tabs groupId="language">
  <TabItem value="curl" label="cURL" default>

```bash
curl -X GET "https://api.zenpayz.com/merchant/api/v1/customers?status=active&limit=50" \
  -H "Authorization: Bearer zp_test_xxxxx" \
  -H "X-Timestamp: 2024-01-15T10:30:00.000Z" \
  -H "X-Signature: a1b2c3d4e5f6..." \
  -H "X-Secret-Salt: your_secret_salt"
```

  </TabItem>
  <TabItem value="sdk" label="SDK">

```javascript
const { data } = await zenpays.customers.list({
  status: 'active',
  limit: 50,
});

console.log(`Found ${data.total} customers`);
```

  </TabItem>
</Tabs>

</CodeRail>

## Related Endpoints

- [Create Customer](/docs/rest-api/endpoints/customers/create-customer)
- [Get Customer](/docs/rest-api/endpoints/customers/get-customer)
