# Create Payout

Use the Transaction Initiation API to initiate payouts directly from your KwikPaisa wallet to beneficiary bank accounts using supported banking transfer modes.

This API enables merchants to:

* Send instant payouts
* Process salary disbursements
* Automate vendor settlements
* Transfer funds securely
* Build scalable payout workflows

***

## Endpoint

```http
POST /api/v3/banking/payment/create
```

## Base URLs

### Sandbox

```http
https://sandbox.kwikpaisa.com
```

### Production

```http
https://api.kwikpaisa.com
```

***

## Authentication required.

Refer to:\
➡️ [Headers](/v3-guide/authentication/headers.md)\
➡️ [Signature Generation](/v3-guide/authentication/signature.md)\
➡️ [Timestamp Validation](/v3-guide/authentication/timestamp.md)

***

## Request Parameters

{% tabs %}
{% tab title="Bank Transfer" %}

| Parameter                             | Type           | Required | Description                                                                                                                                |
| ------------------------------------- | -------------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------ |
| `kwikx_wallet_id`                     | String         | Yes      | Merchant wallet ID                                                                                                                         |
| `debit_account_type`                  | String         | Yes      | Source account type                                                                                                                        |
| `transfer_type`                       | String         | Yes      | Transfer processing type                                                                                                                   |
| `mobile`                              | String         | Yes      | Merchant mobile number                                                                                                                     |
| `email`                               | String         | Yes      | Merchant email address                                                                                                                     |
| `country_dialing_code`                | String         | Yes      | Country dialing code                                                                                                                       |
| `transfer_mode`                       | String         | Yes      | Transfer mode (`imps`, `neft`, `rtgs`, `upi`, `ach`, `wire`, `swift`, `sepa`, `bank_transfer`, `wallet`, `card_transfer`, `international`) |
| `transfer_amount`                     | Decimal        | Yes      | Transfer amount                                                                                                                            |
| `payout_order_id`                     | String/Integer | Yes      | Unique merchant payout order ID                                                                                                            |
| `account_transfer.account_owner_name` | String         | Yes      | Beneficiary account holder name                                                                                                            |
| `account_transfer.account_number`     | String         | Yes      | Beneficiary account number                                                                                                                 |
| `account_transfer.ifsc_code`          | String         | Yes      | Beneficiary IFSC code                                                                                                                      |
| `account_transfer.is_validate`        | Boolean/String | No       | Validate beneficiary account                                                                                                               |
| `account_transfer.payment_for`        | String         | No       | Transfer description                                                                                                                       |
| {% endtab %}                          |                |          |                                                                                                                                            |

{% tab title="UPI" %}

| Parameter                     | Type           | Required | Description                     |
| ----------------------------- | -------------- | -------- | ------------------------------- |
| `kwikx_wallet_id`             | String         | Yes      | Merchant wallet ID              |
| `debit_account_type`          | String         | Yes      | Source account type             |
| `transfer_type`               | String         | Yes      | Transfer processing type        |
| `beneficiary_id`              | String/Null    | No       | Existing beneficiary reference  |
| `mobile`                      | String         | Yes      | Merchant mobile number          |
| `email`                       | String         | Yes      | Merchant email address          |
| `address`                     | String/Null    | No       | Merchant address                |
| `country_dialing_code`        | String         | Yes      | Country dialing code            |
| `transfer_mode`               | String         | Yes      | Transfer mode (`upi`)           |
| `transfer_amount`             | Decimal        | Yes      | Transfer amount                 |
| `payout_order_id`             | String/Integer | Yes      | Unique merchant payout order ID |
| `upi_transfer.upi_owner_name` | String         | Yes      | Beneficiary UPI holder name     |
| `upi_transfer.upi_id`         | String         | Yes      | Beneficiary UPI ID              |
| `upi_transfer.is_validate`    | Boolean/String | No       | Validate beneficiary UPI ID     |
| `upi_transfer.payment_for`    | String         | No       | Transfer description            |
| {% endtab %}                  |                |          |                                 |
| {% endtabs %}                 |                |          |                                 |

## Example Request Body'

{% tabs %}
{% tab title="Bank Transfer" %}

```json
{
  "kwikx_wallet_id": "9896989698",
  "debit_account_type": "kwikx_wallet",
  "transfer_type": "direct",
  "mobile": "9896989698",
  "email": "email@example.com",
  "country_dialing_code": "91",
  "transfer_mode": "imps",
  "transfer_amount": "9999999999",
  "payout_order_id": "9999999999",
  "account_transfer": {
    "account_owner_name": "beneficiary name",
    "account_number": "6760654654",
    "ifsc_code": "icici000143",
    "is_validate": "false",
    "payment_for": "salary payment"
  }
}
```

{% endtab %}

{% tab title="UPI" %}

```json
{
  "kwikx_wallet_id": "9896989698",
  "debit_account_type": "kwikx_wallet",
  "transfer_type": "direct",
  "mobile": "9896989698",
  "email": "email@example.com",
  "country_dialing_code": "91",
  "transfer_mode": "upi",
  "transfer_amount": "9999999999",
  "payout_order_id": "9999999999",
  "upi_transfer": {
        "upi_owner_name": "beneficiary name",
        "upi_id": "upi-owner@upi",
        "is_validate": "false",
        "payment_for": "salary payment"
    } 
}
```

{% endtab %}
{% endtabs %}

## Example cURL Request

{% tabs %}
{% tab title="Bank Transfer" %}

```json
curl -X POST https://sandbox.kwikpaisa.com/api/v3/banking/payment/create \
     -H "X-API-KEY: pk_test_mQZnmh2BeSDTjEQgzwiSPOhrWyUsPqS6" \
     -H "X-SIGNATURE: 623a603fa35bb5ab736a1272dcd797908ab9af4b0247a55bcfc8676cd821a39b" \
     -H "X-TIMESTAMP: 1778659835" \
     -H "Content-Type: application/json" \
     -d '{
  "kwikx_wallet_id": "9896989698",
  "debit_account_type": "kwikx_wallet",
  "transfer_type": "direct",
  "mobile": "9896989698",
  "email": "email@example.com",
  "country_dialing_code": "91",
  "transfer_mode": "imps",
  "transfer_amount": "9999999999",
  "payout_order_id": "9999999999",
  "account_transfer": {
    "account_owner_name": "beneficiary name",
    "account_number": "6760654654",
    "ifsc_code": "icici000143",
    "is_validate": "false",
    "payment_for": "salary payment"
  }
}'
```

{% endtab %}

{% tab title="UPI" %}

```json
curl -X POST https://sandbox.kwikpaisa.com/api/v3/banking/payment/create \
     -H "X-API-KEY: pk_test_mQZnmh2BeSDTjEQgzwiSPOhrWyUsPqS6" \
     -H "X-SIGNATURE: 623a603fa35bb5ab736a1272dcd797908ab9af4b0247a55bcfc8676cd821a39b" \
     -H "X-TIMESTAMP: 1778659835" \
     -H "Content-Type: application/json" \
     -d '{
  "kwikx_wallet_id": "9896989698",
  "debit_account_type": "kwikx_wallet",
  "transfer_type": "direct",
  "mobile": "9896989698",
  "email": "email@example.com",
  "country_dialing_code": "91",
  "transfer_mode": "upi",
  "transfer_amount": "9999999999",
  "payout_order_id": "9999999999",
  "upi_transfer": {
        "upi_owner_name": "beneficiary name",
        "upi_id": "upi-owner@upi",
        "is_validate": "false",
        "payment_for": "salary payment"
    } 
}'
```

{% endtab %}
{% endtabs %}

## Example Success Response

```json
{
  "status": true,
  "code": 200,
  "message": "Payout initiated successfully.",
  "data": {
    "payout_id": "payout_2c17a19bc5be6d05",
    "payout_order_id": 1778761733,
    "wallet_id": "2026-04-30 13:01:32",
    "debited_amount": 99,
    "available_balance": 98627.88
  }
}
```

***

## Response Parameters

| Parameter           | Description                          |
| ------------------- | ------------------------------------ |
| `payout_id`         | Unique KwikPaisa payout reference ID |
| `payout_order_id`   | Merchant payout order ID             |
| `wallet_id`         | Wallet transaction reference         |
| `debited_amount`    | Amount debited from wallet           |
| `available_balance` | Remaining wallet balance             |

***

## Example Failed Response

### Insufficient Wallet Balance

```json
{
  "status": false,
  "code": 422,
  "message": "Insufficient wallet balance."
}
```

***

### Transaction Not Found

```json
{
  "code": 404,
  "status": false,
  "message": "Order not found",
  "return_data": {
    "payout_id": null,
    "payout_order_id": "68736541046834",
    "payout_status": null
  }
}
```

***

## Supported Transfer Modes

| Transfer Mode   | Description                                         |
| --------------- | --------------------------------------------------- |
| `imps`          | Instant bank transfer available 24x7                |
| `neft`          | Standard bank settlement transfer                   |
| `rtgs`          | Real-time gross settlement for high-value transfers |
| `upi`           | Instant UPI transfer using UPI ID                   |
| `ach`           | Automated Clearing House batch transfer             |
| `wire`          | International wire transfer                         |
| `swift`         | International SWIFT banking transfer                |
| `sepa`          | Eurozone SEPA bank transfer                         |
| `bank_transfer` | Standard domestic bank transfer                     |
| `wallet`        | Wallet-to-wallet transfer                           |
| `card_transfer` | Card-based payout transfer                          |
| `international` | International cross-border payout                   |

## Recommended Payout Flow

1. Check wallet balance
2. Generate payout request signature
3. Initiate payout transaction
4. Store `payout_id` and `payout_order_id`
5. Verify payout using Payout Status API
6. Handle webhook notifications

***

## Important Notes

* `payout_order_id` must always be unique
* Duplicate payout IDs may be rejected
* Ensure sufficient wallet balance before initiating payouts
* Beneficiary bank details should be validated carefully
* Always verify payout status server-side

***

## Common Errors

### 400 Bad Request

Possible reasons:

* Missing required parameters
* Invalid payload structure
* Invalid IFSC code
* Incorrect account details

***

### 401 Unauthorized

Possible reasons:

* Invalid API key
* Incorrect signature
* Expired timestamp

***

### 422 Insufficient Wallet Balance

Possible reasons:

* Wallet balance too low
* Transfer amount exceeds available balance

***

### 404 Order Not Found

Possible reasons:

* Invalid payout order ID
* Transaction does not exist
* Incorrect merchant credentials

***

## Security Recommendations

* Always generate signatures server-side
* Never expose secret keys publicly
* Use HTTPS for all API requests
* Validate beneficiary details carefully
* Monitor payout reconciliation regularly

***

## Best Practices

* Use unique payout order IDs
* Validate account details before payouts
* Store payout references securely
* Retry processing payouts carefully
* Enable webhook handling for real-time payout updates


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://developers.kwikpaisa.com/v3-guide/payout-integration/create-payout.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
