Skip to main content

Fund Transfer

POST https://{pg_api_url}/v3/fundtransfer
Content-Type: application/x-www-form-urlencoded

{pg_api_url} is the payouts API host provided to you at onboarding.

Request parameters

api_keystring (36)required
merchant_reference_numberstring (30)required

Your merchant reference. The PDF requires it to be unique for every fund transfer.

amountdecimal(10,2)required

Amount to transfer.

transfer_typestring (4)required

NEFT or IMPS. IMPS is capped at ₹2 lakh per transfer.

account_numberstring (50)required

Beneficiary account number.

ifsc_codestring (50)required

Beneficiary IFSC.

account_namestring (50)

Beneficiary account holder name.

bank_namestring (50)
bank_branchstring (50)
hashstring (255)required

Sample request

curl -X POST https://{pg_api_url}/v3/fundtransfer \
-d "api_key=YOUR_API_KEY" \
-d "merchant_reference_number=PAY-124" \
-d "amount=1000" \
-d "transfer_type=NEFT" \
-d "account_name=John Doe" \
-d "account_number=000123456789" \
-d "ifsc_code=HDFC0000001" \
-d "hash=$HASH"

Response

{
"data": {
"status": "PROCESSING",
"merchant_reference_number": "PAY-124",
"transaction_id": "NEFT3057381244"
}
}

The status is initially PROCESSING. Poll Fund Transfer Status or wait for the S2S callback to learn the terminal state.

If the bank terminates the transfer (network or server issue at their end):

{
"error": {
"code": 1029,
"message": "Transaction terminated"
}
}

1029 is terminal failure — generate a new merchant_reference_number if you want to retry.

warning

If a fund-transfer request times out, check Fund Transfer Status with the same merchant_reference_number before sending another transfer request. Retrying with a fresh number can create a second payout.

Rails

RailLimitsSpeed
IMPS≤ ₹2 lakh per txnNear-instant, 24×7
NEFTNo upper capCleared in half-hour windows during banking hours

For amounts above ₹2 lakh, set transfer_type=NEFT.