NiriPayDocs
Dashboard
DocumentationAPI referenceGuidesMerchant API v1 / v2

Create a payout

Send an INR bank payout and track its result.

POST/api/v1/merchant/withdrawals/create
Bearer authentication•Server-side only

Creates an INR bank withdrawal.

Request fields#

FieldTypeRequiredConstraintsDescription
webhook_urlURLYesValid public URLReceives withdrawal status postbacks
amountIntegerYesINR 100 to 100,000Withdrawal amount; decimals are not accepted
transaction_idStringYesUnique, 7 to 32 charactersYour merchant withdrawal ID
beneficiary_nameStringYesNon-emptyBank account beneficiary
bank_nameStringYesNon-emptyBeneficiary bank name
bank_accountStringYesNon-emptyBeneficiary account number
ifscStringYesNon-emptyBeneficiary bank branch IFSC

Request example

Server-side
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"
  }'

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.
NiriPay developer documentationSource reviewed · 27 Oct 2026