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

# Payouts

Process payouts — single, batch, and intent-based flows. Access via `zenpays.payouts`.

## Single Payouts

### getMethods

```typescript
const methods = await zenpays.payouts.getMethods()
```

---

### preview

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

```typescript
const preview = await zenpays.payouts.preview({
  amount: 5000,
  currency: 'INR',
  country: 'IN',
  payoutType: 'bank_transfer',
})
// Returns: { tspProvider, requiredFields, estimatedProcessingTime, fees, totalAmount }
```

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

```python
preview = zenpays.payouts.preview({
    "amount": 5000,
    "currency": "INR",
    "country": "IN",
    "payoutType": "bank_transfer",
})
```

  </TabItem>
</Tabs>

---

### create

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

```typescript
const payout = await zenpays.payouts.create({
  amount: 5000,
  currency: 'INR',
  beneficiary: {
    name: 'John Doe',
    accountNumber: '1234567890',
    ifscCode: 'HDFC0001234',
  },
})
```

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

```python
payout = zenpays.payouts.create({
    "amount": 5000,
    "currency": "INR",
    "beneficiary": {
        "name": "John Doe",
        "accountNumber": "1234567890",
        "ifscCode": "HDFC0001234",
    },
})
```

  </TabItem>
</Tabs>

---

### get

```typescript
const payout = await zenpays.payouts.get('po_xxx')
```

---

### list

```typescript
const { data } = await zenpays.payouts.list({ status: 'completed', limit: 20 })
```

---

### listByCustomer

```typescript
const { data } = await zenpays.payouts.listByCustomer('cust_xxx', { limit: 10 })
```

---

### retry

```typescript
const retried = await zenpays.payouts.retry('po_xxx', 'optional_tsp_provider')
```

---

### cancel

```typescript
const cancelled = await zenpays.payouts.cancel('po_xxx', 'No longer needed')
```

---

### getStats

```typescript
const stats = await zenpays.payouts.getStats('2024-01-01', '2024-12-31')
```

---

### getAnalytics

```typescript
const analytics = await zenpays.payouts.getAnalytics('30d')
```

---

### getDashboardAnalytics

```typescript
const dashboard = await zenpays.payouts.getDashboardAnalytics()
// Returns: PayoutAnalytics & { summary: PayoutStats }
```

---

### export

```typescript
const downloadUrl = await zenpays.payouts.export({ status: 'completed' })
```

---

## Batch Payouts

### createBatch

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

```typescript
const batch = await zenpays.payouts.createBatch({
  name: 'April Payroll',
  payouts: [
    { amount: 5000, currency: 'INR', beneficiary: { name: 'John', accountNumber: '123' } },
    { amount: 3000, currency: 'INR', beneficiary: { name: 'Jane', accountNumber: '456' } },
  ],
})
```

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

```python
batch = zenpays.payouts.create_batch({
    "name": "April Payroll",
    "payouts": [
        {"amount": 5000, "currency": "INR", "beneficiary": {"name": "John", "accountNumber": "123"}},
        {"amount": 3000, "currency": "INR", "beneficiary": {"name": "Jane", "accountNumber": "456"}},
    ],
})
```

  </TabItem>
</Tabs>

---

### getBatch

```typescript
const batch = await zenpays.payouts.getBatch('batch_xxx')
```

---

### listBatches

```typescript
const { data } = await zenpays.payouts.listBatches({ status: 'pending', limit: 10 })
```

---

### confirmBatch

```typescript
const confirmed = await zenpays.payouts.confirmBatch('batch_xxx')
```

---

### getBatchPayouts

```typescript
const { data } = await zenpays.payouts.getBatchPayouts('batch_xxx', { limit: 50 })
```

---

### cancelBatch

```typescript
const result = await zenpays.payouts.cancelBatch('batch_xxx')
// Returns: { success, message }
```

---

## Payout Intents

Intent-based payout flow: create intent → confirm with beneficiary fields → payout executes.

### createPayoutIntent

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

```typescript
const intent = await zenpays.payouts.createPayoutIntent({
  amount: 5000,
  currency: 'INR',
  country: 'IN',
  payoutType: 'bank_transfer',
  description: 'Vendor payment',
})
```

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

```python
intent = zenpays.payouts.create_payout_intent({
    "amount": 5000,
    "currency": "INR",
    "country": "IN",
    "payoutType": "bank_transfer",
    "description": "Vendor payment",
})
```

  </TabItem>
</Tabs>

---

### confirmPayoutIntent

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

```typescript
const confirmed = await zenpays.payouts.confirmPayoutIntent('poi_xxx', {
  beneficiaryName: 'John Doe',
  accountNumber: '1234567890',
  ifscCode: 'HDFC0001234',
})
```

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

```python
confirmed = zenpays.payouts.confirm_payout_intent("poi_xxx", {
    "beneficiaryName": "John Doe",
    "accountNumber": "1234567890",
    "ifscCode": "HDFC0001234",
})
```

  </TabItem>
</Tabs>

---

### getPayoutIntent

```typescript
const intent = await zenpays.payouts.getPayoutIntent('poi_xxx')
```

---

### listPayoutIntents

```typescript
const { data } = await zenpays.payouts.listPayoutIntents({ status: 'pending', limit: 20 })
```

---

### cancelPayoutIntent

```typescript
const cancelled = await zenpays.payouts.cancelPayoutIntent('poi_xxx', 'Changed plans')
```
