# Create a payout

Creates an INR bank withdrawal.

## Request fields

| Field | Type | Required | Constraints | Description |
| --- | --- | --- | --- | --- |
| `webhook_url` | URL | Yes | Valid public URL | Receives withdrawal status postbacks |
| `amount` | Integer | Yes | INR 100 to 100,000 | Withdrawal amount; decimals are not accepted |
| `transaction_id` | String | Yes | Unique, 7 to 32 characters | Your merchant withdrawal ID |
| `beneficiary_name` | String | Yes | Non-empty | Bank account beneficiary |
| `bank_name` | String | Yes | Non-empty | Beneficiary bank name |
| `bank_account` | String | Yes | Non-empty | Beneficiary account number |
| `ifsc` | String | Yes | Non-empty | Beneficiary bank branch IFSC |

## cURL example

```bash
curl -X POST https://api.niripay.com/api/v1/merchant/withdrawals/create \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "webhook_url": "https://merchant.example/webhooks/withdrawal",
    "amount": 5000,
    "transaction_id": "WD-2026-001",
    "beneficiary_name": "Test Merchant",
    "bank_name": "Example Bank",
    "bank_account": "1234567890123",
    "ifsc": "EXAM0001234"
  }'
```

## JavaScript example

```js
const withdrawal = await niripayJson("/api/v1/merchant/withdrawals/create", {
  webhook_url: "https://merchant.example/webhooks/withdrawal",
  amount: 5000,
  transaction_id: "WD-2026-001",
  beneficiary_name: "Test Merchant",
  bank_name: "Example Bank",
  bank_account: "1234567890123",
  ifsc: "EXAM0001234"
});
```

## Success response

```json
{
  "status": "success",
  "message": "Withdrawal created successfully",
  "data": {
    "transaction_id": "WD-2026-001",
    "internal_transaction_id": "example-internal-id",
    "amount": 5000,
    "status": "pending",
    "fees": {
      "percentage": 3,
      "fixed_amount": 2,
      "total_amount": 152,
      "total_debit_amount": 5152
    }
  }
}
```

## Important rules

- Amount must be a whole number from INR 100 to INR 100,000.
- `transaction_id` must be unique for the merchant and 7 to 32 characters long.
- Persist the API response before considering the request accepted.
- Do not retry an accepted create request with the same transaction ID.
