Skip to main content
POST 

/user/payments/payout

Payout Request

API to place a fund withdrawal (payout) request for the authenticated user. Supports Standard (NEFT) and Instant (IMPS) withdrawal modes. The withdrawal is credited to the user's registered primary bank account.

  • Use the Get Payout Modes API to fetch the modes available and eligible withdrawal amount to your account along with the minimum and maximum withdrawal amounts for each mode before placing a request.
  • NEFT (Standard): Free of charge.
  • IMPS (Instant): Credited within minutes subject to eligibility.
    Fee: ₹20 + GST (Basic plan); Free (Plus plan).
  • Only one active withdrawal request is allowed at a time.
  • IMPS requests cannot be edited once initiated.
  • The Payout APIs are subject to a separate rate limit. For more information, please check here.

Instant Withdrawal Eligibility​

IMPS (Instant) withdrawals are subject to real-time eligibility checks. See Instant Withdrawal Eligibility for the full list of criteria.

Request​

curl --location --request POST 'https://api.upstox.com/v2/user/payments/payout' \
--header 'accept: application/json' \
--header 'Authorization: Bearer {your_access_token}' \
--header 'Content-Type: application/json' \
--data '{"mode": "IMPS", "amount": 5000.0}'

Additional samples in various languages are available in the Sample Code section on this page.

Request Body​

NameTypeRequiredDescription
modestringYesWithdrawal mode. One of NEFT (Standard) or IMPS (Instant).
amountnumberYesWithdrawal amount in INR. Must satisfy the min/max bounds for the selected mode.

Responses​

Response Body​

{
"status": "success",
"data": {
"transaction_id": "ABC123XYZ-GC0173-7HIMPSABC",
"status": "received",
"mode": "IMPS",
"amount": 5000.0,
"currency": "INR",
"eta": "2026-04-19 13:30:00",
"created_at": "2026-04-19 13:25:56",
"bank_name": "AXIS BANK",
"message": "Your instant withdrawal request has been received. Funds will be credited within 5 minutes."
}
}
NameTypeDescription
statusstringOutcome of the request.
dataobjectPayout transaction record.
data.transaction_idstringUnique identifier for the payout transaction.
data.statusstringCurrent state of the payout. One of RECEIVED, VALIDATING, APPROVED, TRANSFER_IN_PROGRESS, COMPLETED, REJECTED, REVERSED.
data.modestringResolved payout mode. One of NEFT or IMPS.
data.amountnumberWithdrawal amount in INR.
data.currencystringCurrency code. Always INR.
data.etastringEstimated completion time (YYYY-MM-DD HH:MM:SS).
data.created_atstringTransaction creation timestamp (YYYY-MM-DD HH:MM:SS).
data.bank_namestringDisplay name of the destination bank.
data.messagestringUser-facing status message.

Sample Code​

Payout request​

import requests

url = 'https://api.upstox.com/v2/user/payments/payout'
headers = {
'accept': 'application/json',
'Authorization': 'Bearer {your_access_token}',
'Content-Type': 'application/json',
}
payload = {
'mode': 'IMPS',
'amount': 5000.0,
}
print(requests.post(url, headers=headers, json=payload).json())