<!-- ZenPays documentation · https://docs.zenpayz.com/docs/api-reference/merchants -->

# Merchants

Manage merchant profile, settings, API keys, webhooks, bank accounts, and IP whitelist. Access via `zenpays.merchants`.

## Profile & Settings

### getProfile

```typescript
const profile = await zenpays.merchants.getProfile()
```

---

### updateSettings

```typescript
const settings = await zenpays.merchants.updateSettings({
  timezone: 'Asia/Kolkata',
  currency: 'INR',
  notifications: { emailNotifications: true },
})
```

---

### getLimits

```typescript
const limits = await zenpays.merchants.getLimits()
```

---

### requestLimitIncrease

```typescript
const result = await zenpays.merchants.requestLimitIncrease({
  type: 'daily_payin',
  requestedLimit: 50000000,
  reason: 'Scaling business volume',
})
// Returns: { requestId, status }
```

---

## API Keys

### listApiKeys

```typescript
const keys = await zenpays.merchants.listApiKeys()
```

---

### createApiKey

<Tabs groupId="language">
  <TabItem value="javascript" label="JavaScript" default>

```typescript
const { apiKey, apiSecret } = await zenpays.merchants.createApiKey({
  description: 'Production key',
  environment: 'live',
})
```

  </TabItem>
  <TabItem value="python" label="Python">

```python
result = zenpays.merchants.create_api_key({
    "description": "Production key",
    "environment": "live",
})
```

  </TabItem>
</Tabs>

---

### revokeApiKey

```typescript
await zenpays.merchants.revokeApiKey('key_xxx')
```

---

## Webhooks

### listWebhooks

```typescript
const webhooks = await zenpays.merchants.listWebhooks()
```

---

### createWebhook

<Tabs groupId="language">
  <TabItem value="javascript" label="JavaScript" default>

```typescript
const webhook = await zenpays.merchants.createWebhook({
  url: 'https://yoursite.com/webhooks/zenpays',
  events: ['payment.success', 'payment.failed', 'refund.created'],
})
```

  </TabItem>
  <TabItem value="python" label="Python">

```python
webhook = zenpays.merchants.create_webhook({
    "url": "https://yoursite.com/webhooks/zenpays",
    "events": ["payment.success", "payment.failed", "refund.created"],
})
```

  </TabItem>
</Tabs>

---

### updateWebhook

```typescript
const updated = await zenpays.merchants.updateWebhook('wh_xxx', {
  events: ['payment.success'],
})
```

---

### deleteWebhook

```typescript
await zenpays.merchants.deleteWebhook('wh_xxx')
```

---

### testWebhook

```typescript
const result = await zenpays.merchants.testWebhook('wh_xxx', 'payment.success')
// Returns: { success, statusCode?, error? }
```

---

### getWebhookLogs

```typescript
const logs = await zenpays.merchants.getWebhookLogs('wh_xxx', {
  from: '2024-01-01',
  to: '2024-12-31',
  limit: 50,
})
```

---

## Bank Accounts

### listBankAccounts

```typescript
const accounts = await zenpays.merchants.listBankAccounts()
```

---

### addBankAccount

```typescript
const account = await zenpays.merchants.addBankAccount({
  accountNumber: '1234567890',
  ifscCode: 'HDFC0001234',
  accountHolderName: 'Business Pvt Ltd',
  bankName: 'HDFC Bank',
})
```

---

### deleteBankAccount

```typescript
await zenpays.merchants.deleteBankAccount('ba_xxx')
```

---

### setDefaultBankAccount

```typescript
const account = await zenpays.merchants.setDefaultBankAccount('ba_xxx')
```

---

## IP Whitelist

### listWhitelistedIPs

```typescript
const ips = await zenpays.merchants.listWhitelistedIPs()
```

---

### addIPToWhitelist

```typescript
const entry = await zenpays.merchants.addIPToWhitelist('203.0.113.50', 'Production server')
```

---

### removeIPFromWhitelist

```typescript
await zenpays.merchants.removeIPFromWhitelist('ip_xxx')
```
