Overview

The document provides an overview and guidelines for integrating Pay-out functionalities into your application. It covers the necessary steps, APIs, and considerations required to enable seamless processing of payments within your system. From initiating transactions to handling various payment methods, this document aims to provide a comprehensive understanding of integrating Pay-out features effectively.

Payout

Payouts are modern disbursement solutions provided by payment aggregators and gateways. They enable businesses to send money to vendors, employees, partners, or customers quickly and securely through various payment methods such as bank transfers, UPI, wallets, and more.

Method:- POST
Parameters:-
  • "account" => "090701504594",
  • "ifsc" => "ICIC0000907",
  • "orderid" => "180000000000027",
  • "name" => "vikas rai",
  • "mode" => "IMPS",
  • "method" => 1,
  • "amount" => 100

Encrypt this all Parameters using your Secret key.

Request:-

    
        {
            "token":"R0VSN25EMGUSD5OG1YN01XWGtMU2xsNG1XghgGhgfFKBNMSGRJ",
            "encrypt_data":"WnZlpdo8SLM\/q7ELC3nIWHI1NDFMdTFXUWNrYVVYc1UreUZOSkxkRkhiOWIvVy8rdCt1YzB5OHRuRGpYbFNOeS9EekRGdTRYUUEvU3RRVmx5ZHhOY1JIemE1cXdEeGZOK0RaM3kzOUlzdXAzRFhXcGszRHkxd2VvcnJaNlBsTWRvSTQwdEpSK3BLbDA5bzk0d25jYmVtRzZTVThyVlR0NXBvTzhiV3QyUEh5cUdDNHJIVlZxbXJSK2hyST0="
        }
    

    $curl = curl_init();
    curl_setopt_array($curl, array(
    CURLOPT_URL => 'http://Payoutapi.wavexpay.in/api/Payout',
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_ENCODING => '',
    CURLOPT_MAXREDIRS => 10,
    CURLOPT_TIMEOUT => 0,
    CURLOPT_FOLLOWLOCATION => true,
    CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
    CURLOPT_CUSTOMREQUEST => 'POST',
    CURLOPT_POSTFIELDS =>'{"token":"R0VSN25EMGU5OG1YN01XWGtMU2xsNG1X","encrypt_data":"WnZlpdo8SLM\\/q7ELC3nIWHI1NDFMdTFXUWNrYVVYc1UreUZOSkxkRkhiOWIvVy8rdCt1YzB5OHRuRGpYbFNOeS9EekRGdTRYUUEvU3RRVmx5ZHhOY1JIemE1cXdEeGZOK0RaM3kzOUlzdXAzRFhXcGszRHkxd2VvcnJaNlBsTWRvSTQwdEpSK3BLbDA5bzk0d25jYmVtRzZTVThyVlR0NXBvTzhiV3QyUEh5cUdDNHJIVlZxbXJSK2hyST0="}',
    CURLOPT_HTTPHEADER => array(
        'Content-Type: application/json'
    ),
    ));
    $response = curl_exec($curl);
    curl_close($curl);
    echo $response;

Response:-

 Success
    
        {
            "Status":"INITIATE",
            "Message":"Transaction Initiate Successfull",
            "TxnID" :"187500010031007",
            "OrderID":"187500010031007",
            "Amount":300,
            "RRN":"5768908909",
            "Account":1800010031890,
            "IFSC":"ICICI0044602",
            "Name":"Test Test",
            "Mode":"IMPS"
        }
    

 ERROR / FAILED
    
        {
            "Status":"ERROR",
            "Message":"Duplicate Transaction",
            "Errorcode":"103"
        }
    
    
        {
            "token":"R0VSN25EMGUSD5OG1YN01XWGtMU2xsNG1XghgGhgfFKBNMSGRJ",
            "encrypt_data":"WnZlpdo8SLM\/q7ELC3nIWHI1NDFMdTFXUWNrYVVYc1UreUZOSkxkRkhiOWIvVy8rdCt1YzB5OHRuRGpYbFNOeS9EekRGdTRYUUEvU3RRVmx5ZHhOY1JIemE1cXdEeGZOK0RaM3kzOUlzdXAzRFhXcGszRHkxd2VvcnJaNlBsTWRvSTQwdEpSK3BLbDA5bzk0d25jYmVtRzZTVThyVlR0NXBvTzhiV3QyUEh5cUdDNHJIVlZxbXJSK2hyST0="
        }
    

    OkHttpClient client = new OkHttpClient().newBuilder()
    .build();
    MediaType mediaType = MediaType.parse("application/json");
    RequestBody body = RequestBody.create(mediaType, "{\"token\":\"R0VSN25EMGU5OG1YN01XWGtMU2xsNG1X\",\"encrypt_data\":\"WnZlpdo8SLM\\/q7ELC3nIWHI1NDFMdTFXUWNrYVVYc1UreUZOSkxkRkhiOWIvVy8rdCt1YzB5OHRuRGpYbFNOeS9EekRGdTRYUUEvU3RRVmx5ZHhOY1JIemE1cXdEeGZOK0RaM3kzOUlzdXAzRFhXcGszRHkxd2VvcnJaNlBsTWRvSTQwdEpSK3BLbDA5bzk0d25jYmVtRzZTVThyVlR0NXBvTzhiV3QyUEh5cUdDNHJIVlZxbXJSK2hyST0=\"}");
    Request request = new Request.Builder()
    .url("http://Payoutapi.wavexpay.in/api/Payout")
    .method("POST", body)
    .addHeader("Content-Type", "application/json")
    .build();
    Response response = client.newCall(request).execute();

Response:-

 Success
    
        {
            "Status":"INITIATE",
            "Message":"Transaction Initiate Successfull",
            "TxnID" :"187500010031007",
            "OrderID":"187500010031007",
            "Amount":300,
            "RRN":"5768908909",
            "Account":1800010031890,
            "IFSC":"ICICI0044602",
            "Name":"Test Test",
            "Mode":"IMPS"
        }
    

 ERROR / FAILED
    
        {
            "Status":"ERROR",
            "Message":"Duplicate Transaction",
            "Errorcode":"103"
        }
    
    
        {
            "token":"R0VSN25EMGUSD5OG1YN01XWGtMU2xsNG1XghgGhgfFKBNMSGRJ",
            "encrypt_data":"WnZlpdo8SLM\/q7ELC3nIWHI1NDFMdTFXUWNrYVVYc1UreUZOSkxkRkhiOWIvVy8rdCt1YzB5OHRuRGpYbFNOeS9EekRGdTRYUUEvU3RRVmx5ZHhOY1JIemE1cXdEeGZOK0RaM3kzOUlzdXAzRFhXcGszRHkxd2VvcnJaNlBsTWRvSTQwdEpSK3BLbDA5bzk0d25jYmVtRzZTVThyVlR0NXBvTzhiV3QyUEh5cUdDNHJIVlZxbXJSK2hyST0="
        }
    

    const myHeaders = new Headers();
    myHeaders.append("Content-Type", "application/json");

    const raw = JSON.stringify({
    "token": "R0VSN25EMGU5OG1YN01XWGtMU2xsNG1X",
    "encrypt_data": "WnZlpdo8SLM/q7ELC3nIWHI1NDFMdTFXUWNrYVVYc1UreUZOSkxkRkhiOWIvVy8rdCt1YzB5OHRuRGpYbFNOeS9EekRGdTRYUUEvU3RRVmx5ZHhOY1JIemE1cXdEeGZOK0RaM3kzOUlzdXAzRFhXcGszRHkxd2VvcnJaNlBsTWRvSTQwdEpSK3BLbDA5bzk0d25jYmVtRzZTVThyVlR0NXBvTzhiV3QyUEh5cUdDNHJIVlZxbXJSK2hyST0="
    });

    const requestOptions = {
    method: "POST",
    headers: myHeaders,
    body: raw,
    redirect: "follow"
    };

    fetch("http://Payoutapi.wavexpay.in/api/Payout", requestOptions)
    .then((response) => response.text())
    .then((result) => console.log(result))
    .catch((error) => console.error(error));

Response:-

 Success
    
        {
            "Status":"INITIATE",
            "Message":"Transaction Initiate Successfull",
            "TxnID" :"187500010031007",
            "OrderID":"187500010031007",
            "Amount":300,
            "RRN":"5768908909",
            "Account":1800010031890,
            "IFSC":"ICICI0044602",
            "Name":"Test Test",
            "Mode":"IMPS"
        }
    

 ERROR / FAILED
    
        {
            "Status":"ERROR",
            "Message":"Duplicate Transaction",
            "Errorcode":"103"
        }
    
    
        {
            "token":"R0VSN25EMGUSD5OG1YN01XWGtMU2xsNG1XghgGhgfFKBNMSGRJ",
            "encrypt_data":"WnZlpdo8SLM\/q7ELC3nIWHI1NDFMdTFXUWNrYVVYc1UreUZOSkxkRkhiOWIvVy8rdCt1YzB5OHRuRGpYbFNOeS9EekRGdTRYUUEvU3RRVmx5ZHhOY1JIemE1cXdEeGZOK0RaM3kzOUlzdXAzRFhXcGszRHkxd2VvcnJaNlBsTWRvSTQwdEpSK3BLbDA5bzk0d25jYmVtRzZTVThyVlR0NXBvTzhiV3QyUEh5cUdDNHJIVlZxbXJSK2hyST0="
        }
    

    var client = new HttpClient();
    var request = new HttpRequestMessage(HttpMethod.Post, "http://Payoutapi.wavexpay.in/api/Payout");
    var content = new StringContent("{\"token\":\"R0VSN25EMGU5OG1YN01XWGtMU2xsNG1X\",\"encrypt_data\":\"WnZlpdo8SLM\\/q7ELC3nIWHI1NDFMdTFXUWNrYVVYc1UreUZOSkxkRkhiOWIvVy8rdCt1YzB5OHRuRGpYbFNOeS9EekRGdTRYUUEvU3RRVmx5ZHhOY1JIemE1cXdEeGZOK0RaM3kzOUlzdXAzRFhXcGszRHkxd2VvcnJaNlBsTWRvSTQwdEpSK3BLbDA5bzk0d25jYmVtRzZTVThyVlR0NXBvTzhiV3QyUEh5cUdDNHJIVlZxbXJSK2hyST0=\"}", null, "application/json");
    request.Content = content;
    var response = await client.SendAsync(request);
    response.EnsureSuccessStatusCode();
    Console.WriteLine(await response.Content.ReadAsStringAsync());

Response:-

 Success
    
        {
            "Status":"INITIATE",
            "Message":"Transaction Initiate Successfull",
            "TxnID" :"187500010031007",
            "OrderID":"187500010031007",
            "Amount":300,
            "RRN":"5768908909",
            "Account":1800010031890,
            "IFSC":"ICICI0044602",
            "Name":"Test Test",
            "Mode":"IMPS"
        }
    

 ERROR / FAILED
    
        {
            "Status":"ERROR",
            "Message":"Duplicate Transaction",
            "Errorcode":"103"
        }
    
    
        {
            "token":"R0VSN25EMGUSD5OG1YN01XWGtMU2xsNG1XghgGhgfFKBNMSGRJ",
            "encrypt_data":"WnZlpdo8SLM\/q7ELC3nIWHI1NDFMdTFXUWNrYVVYc1UreUZOSkxkRkhiOWIvVy8rdCt1YzB5OHRuRGpYbFNOeS9EekRGdTRYUUEvU3RRVmx5ZHhOY1JIemE1cXdEeGZOK0RaM3kzOUlzdXAzRFhXcGszRHkxd2VvcnJaNlBsTWRvSTQwdEpSK3BLbDA5bzk0d25jYmVtRzZTVThyVlR0NXBvTzhiV3QyUEh5cUdDNHJIVlZxbXJSK2hyST0="
        }
    

    const axios = require('axios');
    let data = JSON.stringify({
    "token": "R0VSN25EMGU5OG1YN01XWGtMU2xsNG1X",
    "encrypt_data": "WnZlpdo8SLM/q7ELC3nIWHI1NDFMdTFXUWNrYVVYc1UreUZOSkxkRkhiOWIvVy8rdCt1YzB5OHRuRGpYbFNOeS9EekRGdTRYUUEvU3RRVmx5ZHhOY1JIemE1cXdEeGZOK0RaM3kzOUlzdXAzRFhXcGszRHkxd2VvcnJaNlBsTWRvSTQwdEpSK3BLbDA5bzk0d25jYmVtRzZTVThyVlR0NXBvTzhiV3QyUEh5cUdDNHJIVlZxbXJSK2hyST0="
    });

    let config = {
    method: 'post',
    maxBodyLength: Infinity,
    url: 'http://Payoutapi.wavexpay.in/api/Payout',
    headers: { 
        'Content-Type': 'application/json'
    },
    data : data
    };

    axios.request(config)
    .then((response) => {
    console.log(JSON.stringify(response.data));
    })
    .catch((error) => {
    console.log(error);
    });


Response:-

 Success
    
        {
            "Status":"INITIATE",
            "Message":"Transaction Initiate Successfull",
            "TxnID" :"187500010031007",
            "OrderID":"187500010031007",
            "Amount":300,
            "RRN":"5768908909",
            "Account":1800010031890,
            "IFSC":"ICICI0044602",
            "Name":"Test Test",
            "Mode":"IMPS"
        }
    

 ERROR / FAILED
    
        {
            "Status":"ERROR",
            "Message":"Duplicate Transaction",
            "Errorcode":"103"
        }
    
    
        {
            "token":"R0VSN25EMGUSD5OG1YN01XWGtMU2xsNG1XghgGhgfFKBNMSGRJ",
            "encrypt_data":"WnZlpdo8SLM\/q7ELC3nIWHI1NDFMdTFXUWNrYVVYc1UreUZOSkxkRkhiOWIvVy8rdCt1YzB5OHRuRGpYbFNOeS9EekRGdTRYUUEvU3RRVmx5ZHhOY1JIemE1cXdEeGZOK0RaM3kzOUlzdXAzRFhXcGszRHkxd2VvcnJaNlBsTWRvSTQwdEpSK3BLbDA5bzk0d25jYmVtRzZTVThyVlR0NXBvTzhiV3QyUEh5cUdDNHJIVlZxbXJSK2hyST0="
        }
    

 
    import http.client
    import json

    conn = http.client.HTTPConnection("http://payoutapi.wavexpay.in/api/payout", 8005)
    payload = json.dumps({
    "token": "R0VSN25EMGU5OG1YN01XWGtMU2xsNG1X",
    "encrypt_data": "WnZlpdo8SLM/q7ELC3nIWHI1NDFMdTFXUWNrYVVYc1UreUZOSkxkRkhiOWIvVy8rdCt1YzB5OHRuRGpYbFNOeS9EekRGdTRYUUEvU3RRVmx5ZHhOY1JIemE1cXdEeGZOK0RaM3kzOUlzdXAzRFhXcGszRHkxd2VvcnJaNlBsTWRvSTQwdEpSK3BLbDA5bzk0d25jYmVtRzZTVThyVlR0NXBvTzhiV3QyUEh5cUdDNHJIVlZxbXJSK2hyST0="
    })
    headers = {
    'Content-Type': 'application/json'
    }
    conn.request("POST", "/api/Payout", payload, headers)
    res = conn.getresponse()
    data = res.read()
    print(data.decode("utf-8"))

Response:-

 Success
    
        {
            "Status":"INITIATE",
            "Message":"Transaction Initiate Successfull",
            "TxnID" :"187500010031007",
            "OrderID":"187500010031007",
            "Amount":300,
            "RRN":"5768908909",
            "Account":1800010031890,
            "IFSC":"ICICI0044602",
            "Name":"Test Test",
            "Mode":"IMPS"
        }
    

 ERROR / FAILED
    
        {
            "Status":"ERROR",
            "Message":"Duplicate Transaction",
            "Errorcode":"103"
        }
    

Payout Webhook Response:-

A webhook system needs implementation to receive updates on payment statuses from the Payout API. Data in JSON format will be delivered through the webhook, facilitating efficient tracking and management of payment statuses in real-time.

Webhook Status:-

  • SUCCESS
  • FAILED
  • REVERSAL
  • PENDING
 Response
    
        {
            "Status": "SUCCESS",
            "Txnid": "187500010031002",
            "OrderID" => "187500010031002",
            "Amount": "200",
            "RRN": "53253646467",
            "Message": "NA",
            'Account': "1800010031890",
            'IFSC': "ICICI0044602",
            'Name': "Test Test",
            'Mode': "IMPS",
        }
    

Payout Check Response:-

Method:- POST
Status:-
  • PROCESSING
  • PENDING
  • SUCCESS
  • FAILED
  • REVERSAL
  • CANCELLED

Request:-

    
        {
            "token":"Uzh5WHNuZllrd0R6WEZxaFZJV2VDDDGGBMSlFwMGhZMGxGK2FHM2Np",
            "txnid":"WXP9047953036032"
        }
    

    $curl = curl_init();
    curl_setopt_array($curl, array(
    CURLOPT_URL => 'http://Payoutapi.wavexpay.in/api/PayoutCheckStatus',
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_ENCODING => '',
    CURLOPT_MAXREDIRS => 10,
    CURLOPT_TIMEOUT => 0,
    CURLOPT_FOLLOWLOCATION => true,
    CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
    CURLOPT_CUSTOMREQUEST => 'POST',
    CURLOPT_POSTFIELDS =>'{
        "token":"Uzh5WHNuZllrd0R6WEZxaFZJV2VDDDGGBMSlFwMGhZMGxGK2FHM2Np",
        "txnid":"WXP9047953036032"
    }',
    CURLOPT_HTTPHEADER => array(
        'Content-Type: application/json'
    ),
    ));
    $response = curl_exec($curl);
    curl_close($curl);
    echo $response;

Response:-

 Success
    
        {
            "Status":"SUCCESS",
            "TxnID":"187500010031007",
            "OrderID" :"187500010031007",
            "Amount":200,
            "RRN":"1234567890"
        }
    

 ERROR / FAILED
    
        {
            "Status":"ERROR",
            "Message":"Invalid Token",
            "Errorcode":"103"
        }
    

Encrypt Formate:-

    $clientSecretKey = 'eXpKUWlrSWJLdjhPTUJ5UmdJcUJJZmdt';
    $encrydata = [
        "account" => "090701504594",
        "ifsc" => "ICIC0000907",
        "orderid" => "180000000000027",
        "name" => "vikas rai",
        "mode" => "IMPS",
        "method" => 1,
        "amount" => 100
    ];
    $encryptedData = $this->encryptData($encrydata, $clientSecretKey);
    $request = [
        "token" => "R0VSN25EMGU5OG1YN01XWGtMU2xsNG1X",
        "encrypt_data" => $encryptedData
    ];
    
    echo json_encode($request);

    function encryptData($data, $secretKey)
    {
        $iv = random_bytes(16); // 16 bytes for AES-256
        $cipher = 'AES-256-CBC';

        $encrypted = openssl_encrypt(
            json_encode($data), // Convert data to JSON
            $cipher,
            $secretKey,
            0,
            $iv
        );

        return base64_encode($iv . $encrypted); // Combine IV and encrypted data
    }