Create Payout
Send payouts to validated beneficiaries using the PayGo API.
Merchant API
Use the endpoint below to initiate a payout from your PayGo wallet.
Authenticate using your PayGo X-API-Key and X-Secret-Key.
Bank payouts through this integration require whole INR amounts of at least ₹1,000. Supported bank rails are IMPS and NEFT;
bank maps to IMPS. UPI-address payouts are not supported by this bank payout integration.
The saved validated beneficiary supplies the actual bank details; ensure bank name and mobile are present.
POST
https://paygo.sanvexo.in/api/v1/payout/create
Request Body
| Parameter | Type | Required | Description |
|---|---|---|---|
reference_id | string | Yes | Your unique payout reference (max 100 chars) |
amount | integer | Yes | minimum ₹1,000 live; ₹1 sandbox. Wallet, scheme and merchant limits apply. |
payout_mode | string | Yes | bank, imps, or neft. |
account_type | string | Yes for bank payouts | saving or current |
remark | string | Yes for bank payouts | Non-empty description, maximum 250 characters. |
beneficiary_id | integer | No* | ID of a validated beneficiary (recommended) |
beneficiary_name | string | Yes | Beneficiary full name |
beneficiary_account | string | Yes* | Bank account number (required for bank/imps/neft) |
beneficiary_ifsc | string | Yes* | IFSC code (required for bank/imps/neft) |
beneficiary_vpa | string | Yes* | UPI ID e.g. user@upi (required for upi mode) |
beneficiary_bank | string | No | Bank name |
beneficiary_mobile | string | No | Beneficiary mobile |
currency | string | No | Default: INR |
Example Request
Use your saved beneficiary's details; a new beneficiary must complete the configured validation flow before a payout is accepted.
curl -X POST 'https://paygo.sanvexo.in/api/v1/payout/create' -H 'X-API-Key: SVX_your_api_key' -H 'X-Secret-Key: SVS_your_secret_key' -H 'Content-Type: application/json' -d '{
"reference_id": "PAY-2026-001",
"amount": 1000,
"payout_mode": "imps",
"beneficiary_name": "Example Recipient",
"beneficiary_account": "012345678901",
"beneficiary_ifsc": "HDFC0001234",
"beneficiary_bank": "HDFC Bank",
"beneficiary_mobile": "9876543210",
"account_type": "saving",
"remark": "Merchant payout"
}'
$payload = json_decode('{
"reference_id": "PAY-2026-001",
"amount": 1000,
"payout_mode": "imps",
"beneficiary_name": "Example Recipient",
"beneficiary_account": "012345678901",
"beneficiary_ifsc": "HDFC0001234",
"beneficiary_bank": "HDFC Bank",
"beneficiary_mobile": "9876543210",
"account_type": "saving",
"remark": "Merchant payout"
}', true);
$ch = curl_init('https://paygo.sanvexo.in/api/v1/payout/create');
curl_setopt_array($ch, [CURLOPT_POST => true, CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => ["Content-Type: application/json", "X-API-Key: SVX_your_api_key", "X-Secret-Key: SVS_your_secret_key"],
CURLOPT_POSTFIELDS => json_encode($payload)]);
$response = curl_exec($ch);
const response = await fetch("https://paygo.sanvexo.in/api/v1/payout/create", {
method: "POST", headers: {"Content-Type": "application/json",
"X-API-Key": process.env.PAYGO_API_KEY, "X-Secret-Key": process.env.PAYGO_SECRET_KEY},
body: JSON.stringify({
"reference_id": "PAY-2026-001",
"amount": 1000,
"payout_mode": "imps",
"beneficiary_name": "Example Recipient",
"beneficiary_account": "012345678901",
"beneficiary_ifsc": "HDFC0001234",
"beneficiary_bank": "HDFC Bank",
"beneficiary_mobile": "9876543210",
"account_type": "saving",
"remark": "Merchant payout"
})
});
const result = await response.json();
{
"reference_id": "PAY-2026-001",
"amount": 1000,
"payout_mode": "imps",
"beneficiary_name": "Example Recipient",
"beneficiary_account": "012345678901",
"beneficiary_ifsc": "HDFC0001234",
"beneficiary_bank": "HDFC Bank",
"beneficiary_mobile": "9876543210",
"account_type": "saving",
"remark": "Merchant payout"
}
Merchant API acceptance response (illustrative)
HTTP 200 OK
{
"success": true,
"message": "Payout initiated",
"data": {
"payout_id": "POXXXXXXXXXXXX",
"reference_id": "PAY-2024-001",
"amount": 1000,
"platform_fee": 15,
"gst_amount": 2.70,
"total_fee": 17.70,
"total_debited": 1017.70,
"status": "processing",
"payout_mode": "imps",
"beneficiary_name": "Rahul Sharma",
"beneficiary_id": 1,
"invoice_number": null
}
}
Status Values
| Status | Description |
|---|---|
| pending | Payout created, awaiting processing |
| processing | Payout is being processed; settlement is not yet confirmed |
| success | Money credited to beneficiary |
| failed | Payout failed; inspect refund_status and wallet_refunded for refund completion. |
Payouts debit the merchant wallet before submission. Failed payouts retain that debit until PayGo confirms
its refund. Timeouts and ambiguous errors require status checks, not another transfer. Track the outcome using the status endpoint and your PayGo webhooks.