Skip to main content

Create Payout

Deprecated — Do Not Use

This endpoint is deprecated and will be removed in a future release. It is no longer maintained and may produce unexpected behavior.

Use Payout Intents instead. Payout Intents provide a more reliable, two-step flow with preview, confirmation, smart routing, and full webhook support.

Create a new payout to transfer funds to a beneficiary.

POSThttps://api.zenpays.com/merchant/api/v1/payouts
Bearer · API key

Request​

Headers​

HeaderDescription
Authorization
REQUIRED
Bearer {api_key}
X-Signature
REQUIRED
HMAC-SHA256 signature
X-Timestamp
REQUIRED
ISO 8601 timestamp
X-Secret-Salt
REQUIRED
Secret salt for HMAC validation
Content-Type
REQUIRED
application/json
X-Idempotency-Key
OPTIONAL
Unique key to prevent duplicates

Body Parameters​

ParameterTypeDescription
beneficiaryAccount
REQUIRED
stringBeneficiary account number (5-100 chars)
beneficiaryName
REQUIRED
stringBeneficiary name (2-200 chars)
amount
REQUIRED
numberPayout amount (minimum 1)
payoutType
REQUIRED
stringPayout type: IMPS, NEFT, RTGS, or UPI
currency
OPTIONAL
string3-character currency code (default: INR)
country
OPTIONAL
string2-character ISO country code
beneficiaryIfsc
OPTIONAL
stringIFSC code (for bank transfers in India)
beneficiaryVpa
OPTIONAL
stringUPI VPA (required for UPI payouts)
beneficiarySwift
OPTIONAL
stringSWIFT code (for international transfers)
beneficiaryBic
OPTIONAL
stringBIC code
beneficiaryRoutingNumber
OPTIONAL
stringRouting number
beneficiaryEmail
OPTIONAL
stringBeneficiary email address
beneficiaryMobile
OPTIONAL
stringBeneficiary mobile number
beneficiaryAddress
OPTIONAL
stringBeneficiary address
beneficiaryCity
OPTIONAL
stringBeneficiary city
beneficiaryState
OPTIONAL
stringBeneficiary state
beneficiaryPostalCode
OPTIONAL
stringBeneficiary postal code
beneficiaryBankCode
OPTIONAL
stringBeneficiary bank code
beneficiaryAccountType
OPTIONAL
stringAccount type: CHECKING, SAVINGS, or CURRENT
bankName
OPTIONAL
stringBank name
purpose
OPTIONAL
stringPurpose of the payout
description
OPTIONAL
stringPayout description
customerId
OPTIONAL
stringAssociated customer ID
webhookUrl
OPTIONAL
stringURL for payout status webhooks
metadata
OPTIONAL
objectCustom key-value pairs

Payout Types​

TypeDescriptionSupported Countries
IMPSIMPS transferIndia
NEFTNEFT transferIndia
RTGSRTGS transferIndia
UPIUPI transferIndia

Response​

Success (201 Created)​

{
"success": true,
"data": {
"payoutId": "pay_xxxxx",
"merchantId": "mer_xxxxx",
"amount": 10000,
"currency": "INR",
"status": "processing",
"externalPayoutId": "pout_xxxxx",
"processingFee": 25,
"totalDebitedAmount": 10025,
"estimatedCompletion": "2024-01-15T11:00:00.000Z",
"createdAt": "2024-01-15T10:30:00.000Z",
"metadata": {}
}
}

Error Responses​

CodeHTTPMessage
INVALID_AMOUNT400Amount below minimum or above maximum
INVALID_BENEFICIARY400Invalid beneficiary details
UNAUTHORIZED401Invalid API key
INSUFFICIENT_BALANCE402Wallet balance too low
PAYOUT_FAILED422Payout processing failed

Examples​

curl -X POST https://api.zenpays.com/merchant/api/v1/payouts \
-H "Authorization: Bearer zp_test_xxxxx" \
-H "X-Timestamp: 2024-01-15T10:30:00.000Z" \
-H "X-Signature: a1b2c3d4e5f6..." \
-H "X-Secret-Salt: your_secret_salt" \
-H "Content-Type: application/json" \
-H "X-Idempotency-Key: payout-order-123" \
-d '{
"amount": 10000,
"currency": "INR",
"country": "IN",
"payoutType": "IMPS",
"beneficiaryAccount": "1234567890",
"beneficiaryIfsc": "HDFC0001234",
"beneficiaryName": "John Doe"
}'

Payout Status​

StatusDescription
pendingPayout created, awaiting processing
processingBeing processed by TSP
succeededFunds transferred successfully
failedPayout failed
cancelledPayout was cancelled
reversedPayout was reversed