HanuPay - Secure Payment Solutions

HanuPayout API Documentation

Integrate our payment solutions into your applications with our simple and powerful API endpoints.

Authentication

All API calls require authentication using your API key. Include it in the authorization parameter for each request.

To authenticate your API requests, you'll need to include your API key in the authorization parameter. You can obtain your API key from your HanuPayout dashboard.

Keep your API key secure and never share it publicly.

GET Check Balance

Retrieve the current balance in your HanuPayout account.

xyz.com/v2/balance.php?authorization=YOUR_API_KEY

Parameters

Parameter Type Required Description
authorization string Required Your API key for authentication
curl "xyz.com/v2/balance.php?authorization=YOUR_API_KEY"
<?php
$url = "xyz.com/v2/balance.php?authorization=YOUR_API_KEY";
$response = file_get_contents($url);
$data = json_decode($response, true);

if (isset($data['status']) && $data['status'] === 'success') {
    echo "Balance: " . $data['balance'];
} else {
    echo "Error: " . $data['message'];
}
?>
import java.net.HttpURLConnection;
import java.net.URL;
import java.io.BufferedReader;
import java.io.InputStreamReader;

public class CheckBalance {
    public static void main(String[] args) {
        try {
            URL url = new URL("xyz.com/v2/balance.php?authorization=YOUR_API_KEY");
            HttpURLConnection conn = (HttpURLConnection) url.openConnection();
            conn.setRequestMethod("GET");
            
            BufferedReader in = new BufferedReader(new InputStreamReader(conn.getInputStream()));
            String inputLine;
            StringBuffer response = new StringBuffer();
            
            while ((inputLine = in.readLine()) != null) {
                response.append(inputLine);
            }
            in.close();
            
            System.out.println(response.toString());
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}
using System;
using System.Net.Http;
using System.Threading.Tasks;

class Program {
    static async Task Main() {
        using (HttpClient client = new HttpClient()) {
            string url = "xyz.com/v2/balance.php?authorization=YOUR_API_KEY";
            HttpResponseMessage response = await client.GetAsync(url);
            
            if (response.IsSuccessStatusCode) {
                string responseBody = await response.Content.ReadAsStringAsync();
                Console.WriteLine(responseBody);
            } else {
                Console.WriteLine($"Error: {response.StatusCode}");
            }
        }
    }
}
#include 
#include 

size_t write_callback(char *ptr, size_t size, size_t nmemb, void *userdata) {
    size_t realsize = size * nmemb;
    printf("%.*s\n", (int)realsize, ptr);
    return realsize;
}

int main(void) {
    CURL *curl;
    CURLcode res;
    
    curl = curl_easy_init();
    if(curl) {
        curl_easy_setopt(curl, CURLOPT_URL, "xyz.com/v2/balance.php?authorization=YOUR_API_KEY");
        curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, write_callback);
        
        res = curl_easy_perform(curl);
        if(res != CURLE_OK)
            fprintf(stderr, "curl_easy_perform() failed: %s\n", curl_easy_strerror(res));
            
        curl_easy_cleanup(curl);
    }
    return 0;
}
import requests
import json

url = "xyz.com/v2/balance.php"
params = {
    "authorization": "YOUR_API_KEY"
}

response = requests.get(url, params=params)
data = response.json()

if data.get("status") == "success":
    print(f"Balance: {data['balance']}")
else:
    print(f"Error: {data.get('message')}")
require 'net/http'
require 'json'

uri = URI("xyz.com/v2/balance.php")
uri.query = URI.encode_www_form({
  authorization: "YOUR_API_KEY"
})

response = Net::HTTP.get_response(uri)
data = JSON.parse(response.body)

if data["status"] == "success"
  puts "Balance: #{data['balance']}"
else
  puts "Error: #{data['message']}"
end
fetch("xyz.com/v2/balance.php?authorization=YOUR_API_KEY")
  .then(response => response.json())
  .then(data => {
    if (data.status === "success") {
      console.log(`Balance: ${data.balance}`);
    } else {
      console.error(`Error: ${data.message}`);
    }
  })
  .catch(error => console.error("Error:", error));
const https = require('https');

const options = {
  hostname: 'xyz.com',
  path: '/v2/balance.php?authorization=YOUR_API_KEY',
  method: 'GET'
};

const req = https.request(options, res => {
  let data = '';
  
  res.on('data', chunk => {
    data += chunk;
  });
  
  res.on('end', () => {
    const response = JSON.parse(data);
    if (response.status === 'success') {
      console.log(`Balance: ${response.balance}`);
    } else {
      console.error(`Error: ${response.message}`);
    }
  });
});

req.on('error', error => {
  console.error('Error:', error);
});

req.end();

Example Response

{
  "status": "success",
  "message": "Balance retrieved successfully",
  "balance": "₹145,000.00",
  "available_balance": "₹142,500.00",
  "currency": "INR",
  "timestamp": "2025-07-16T12:35:58+05:30"
}

GET UPI Payout

Send money to a UPI ID instantly.

xyz.com/v2/upi.php?authorization=YOUR_API_KEY&vpa=UPI_ID&amount=AMOUNT&referid=REFERENCE_ID

Parameters

Parameter Type Required Description
authorization string Required Your API key for authentication
vpa string Required UPI ID of the recipient (e.g., name@upi)
amount number Required Amount to transfer in INR
referid string Required Your unique reference ID for this transaction
curl "xyz.com/v2/upi.php?authorization=YOUR_API_KEY&vpa=recipient@upi&amount=1000&referid=TX123456"
<?php
$apiKey = "YOUR_API_KEY";
$upiId = "recipient@upi";
$amount = 1000;
$referenceId = "TX" . time();

$url = "xyz.com/v2/upi.php?authorization={$apiKey}&vpa={$upiId}&amount={$amount}&referid={$referenceId}";

$response = file_get_contents($url);
$data = json_decode($response, true);

if (isset($data['status']) && $data['status'] === 'success') {
    echo "Payment successful! Transaction ID: " . $data['transaction_id'];
} else {
    echo "Error: " . $data['message'];
}
?>
import java.net.HttpURLConnection;
import java.net.URL;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.URLEncoder;
import java.nio.charset.StandardCharsets;

public class UPIPayout {
    public static void main(String[] args) {
        try {
            String apiKey = "YOUR_API_KEY";
            String upiId = "recipient@upi";
            double amount = 1000;
            String referenceId = "TX" + System.currentTimeMillis();
            
            String urlString = String.format("xyz.com/v2/upi.php?authorization=%s&vpa=%s&amount=%s&referid=%s",
                URLEncoder.encode(apiKey, StandardCharsets.UTF_8.toString()),
                URLEncoder.encode(upiId, StandardCharsets.UTF_8.toString()),
                amount,
                URLEncoder.encode(referenceId, StandardCharsets.UTF_8.toString()));
                
            URL url = new URL(urlString);
            HttpURLConnection conn = (HttpURLConnection) url.openConnection();
            conn.setRequestMethod("GET");
            
            BufferedReader in = new BufferedReader(new InputStreamReader(conn.getInputStream()));
            String inputLine;
            StringBuffer response = new StringBuffer();
            
            while ((inputLine = in.readLine()) != null) {
                response.append(inputLine);
            }
            in.close();
            
            System.out.println(response.toString());
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}
using System;
using System.Net.Http;
using System.Threading.Tasks;
using System.Web;

class Program {
    static async Task Main() {
        string apiKey = "YOUR_API_KEY";
        string upiId = "recipient@upi";
        double amount = 1000;
        string referenceId = "TX" + DateTimeOffset.Now.ToUnixTimeSeconds();
        
        var query = HttpUtility.ParseQueryString(string.Empty);
        query["authorization"] = apiKey;
        query["vpa"] = upiId;
        query["amount"] = amount.ToString();
        query["referid"] = referenceId;
        
        string url = $"xyz.com/v2/upi.php?{query}";
        
        using (HttpClient client = new HttpClient()) {
            HttpResponseMessage response = await client.GetAsync(url);
            
            if (response.IsSuccessStatusCode) {
                string responseBody = await response.Content.ReadAsStringAsync();
                Console.WriteLine(responseBody);
            } else {
                Console.WriteLine($"Error: {response.StatusCode}");
            }
        }
    }
}
#include 
#include 
#include 

size_t write_callback(char *ptr, size_t size, size_t nmemb, void *userdata) {
    size_t realsize = size * nmemb;
    printf("%.*s\n", (int)realsize, ptr);
    return realsize;
}

int main(void) {
    CURL *curl;
    CURLcode res;
    char url[256];
    time_t t = time(NULL);
    
    snprintf(url, sizeof(url), "xyz.com/v2/upi.php?authorization=YOUR_API_KEY&vpa=recipient@upi&amount=1000&referid=TX%ld", t);
    
    curl = curl_easy_init();
    if(curl) {
        curl_easy_setopt(curl, CURLOPT_URL, url);
        curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, write_callback);
        
        res = curl_easy_perform(curl);
        if(res != CURLE_OK)
            fprintf(stderr, "curl_easy_perform() failed: %s\n", curl_easy_strerror(res));
            
        curl_easy_cleanup(curl);
    }
    return 0;
}
import requests
import json
import time

api_key = "YOUR_API_KEY"
upi_id = "recipient@upi"
amount = 1000
reference_id = f"TX{int(time.time())}"

url = "xyz.com/v2/upi.php"
params = {
    "authorization": api_key,
    "vpa": upi_id,
    "amount": amount,
    "referid": reference_id
}

response = requests.get(url, params=params)
data = response.json()

if data.get("status") == "success":
    print(f"Payment successful! Transaction ID: {data.get('transaction_id')}")
else:
    print(f"Error: {data.get('message')}")
require 'net/http'
require 'json'
require 'time'

api_key = "YOUR_API_KEY"
upi_id = "recipient@upi"
amount = 1000
reference_id = "TX#{Time.now.to_i}"

uri = URI("xyz.com/v2/upi.php")
uri.query = URI.encode_www_form({
  authorization: api_key,
  vpa: upi_id,
  amount: amount,
  referid: reference_id
})

response = Net::HTTP.get_response(uri)
data = JSON.parse(response.body)

if data["status"] == "success"
  puts "Payment successful! Transaction ID: #{data['transaction_id']}"
else
  puts "Error: #{data['message']}"
end
const apiKey = "YOUR_API_KEY";
const upiId = "recipient@upi";
const amount = 1000;
const referenceId = `TX${Date.now()}`;

const url = `xyz.com/v2/upi.php?authorization=${apiKey}&vpa=${upiId}&amount=${amount}&referid=${referenceId}`;

fetch(url)
  .then(response => response.json())
  .then(data => {
    if (data.status === "success") {
      console.log(`Payment successful! Transaction ID: ${data.transaction_id}`);
    } else {
      console.error(`Error: ${data.message}`);
    }
  })
  .catch(error => console.error("Error:", error));
const https = require('https');
const querystring = require('querystring');

const apiKey = "YOUR_API_KEY";
const upiId = "recipient@upi";
const amount = 1000;
const referenceId = `TX${Date.now()}`;

const params = querystring.stringify({
  authorization: apiKey,
  vpa: upiId,
  amount: amount,
  referid: referenceId
});

const options = {
  hostname: 'xyz.com',
  path: `/v2/upi.php?${params}`,
  method: 'GET'
};

const req = https.request(options, res => {
  let data = '';
  
  res.on('data', chunk => {
    data += chunk;
  });
  
  res.on('end', () => {
    const response = JSON.parse(data);
    if (response.status === 'success') {
      console.log(`Payment successful! Transaction ID: ${response.transaction_id}`);
    } else {
      console.error(`Error: ${response.message}`);
    }
  });
});

req.on('error', error => {
  console.error('Error:', error);
});

req.end();

Example Response

{
  "status": "success",
  "message": "UPI payment initiated successfully",
  "transaction_id": "UPI78945612",
  "reference_id": "TX123456",
  "amount": "₹1,000.00",
  "vpa": "recipient@upi",
  "timestamp": "2025-07-16T12:36:30+05:30"
}

GET Bank Payout

Transfer money directly to a bank account.

xyz.com/v2/bank.php?authorization=YOUR_API_KEY&account=ACCOUNT_NUMBER&ifsccode=IFSC_CODE&amount=AMOUNT&referid=REFERENCE_ID

Parameters

Parameter Type Required Description
authorization string Required Your API key for authentication
account string Required Bank account number of the recipient
ifsccode string Required IFSC code of the recipient's bank
amount number Required Amount to transfer in INR
referid string Required Your unique reference ID for this transaction
curl "xyz.com/v2/bank.php?authorization=YOUR_API_KEY&account=1234567890&ifsccode=ABCD0001234&amount=5000&referid=TX789012"
<?php
$apiKey = "YOUR_API_KEY";
$accountNumber = "1234567890";
$ifscCode = "ABCD0001234";
$amount = 5000;
$referenceId = "TX" . time();

$url = "xyz.com/v2/bank.php?authorization={$apiKey}&account={$accountNumber}&ifsccode={$ifscCode}&amount={$amount}&referid={$referenceId}";

$response = file_get_contents($url);
$data = json_decode($response, true);

if (isset($data['status']) && $data['status'] === 'success') {
    echo "Bank transfer initiated! Transaction ID: " . $data['transaction_id'];
} else {
    echo "Error: " . $data['message'];
}
?>
import java.net.HttpURLConnection;
import java.net.URL;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.URLEncoder;
import java.nio.charset.StandardCharsets;

public class BankPayout {
    public static void main(String[] args) {
        try {
            String apiKey = "YOUR_API_KEY";
            String accountNumber = "1234567890";
            String ifscCode = "ABCD0001234";
            double amount = 5000;
            String referenceId = "TX" + System.currentTimeMillis();
            
            String urlString = String.format("xyz.com/v2/bank.php?authorization=%s&account=%s&ifsccode=%s&amount=%s&referid=%s",
                URLEncoder.encode(apiKey, StandardCharsets.UTF_8.toString()),
                URLEncoder.encode(accountNumber, StandardCharsets.UTF_8.toString()),
                URLEncoder.encode(ifscCode, StandardCharsets.UTF_8.toString()),
                amount,
                URLEncoder.encode(referenceId, StandardCharsets.UTF_8.toString()));
                
            URL url = new URL(urlString);
            HttpURLConnection conn = (HttpURLConnection) url.openConnection();
            conn.setRequestMethod("GET");
            
            BufferedReader in = new BufferedReader(new InputStreamReader(conn.getInputStream()));
            String inputLine;
            StringBuffer response = new StringBuffer();
            
            while ((inputLine = in.readLine()) != null) {
                response.append(inputLine);
            }
            in.close();
            
            System.out.println(response.toString());
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}
using System;
using System.Net.Http;
using System.Threading.Tasks;
using System.Web;

class Program {
    static async Task Main() {
        string apiKey = "YOUR_API_KEY";
        string accountNumber = "1234567890";
        string ifscCode = "ABCD0001234";
        double amount = 5000;
        string referenceId = "TX" + DateTimeOffset.Now.ToUnixTimeSeconds();
        
        var query = HttpUtility.ParseQueryString(string.Empty);
        query["authorization"] = apiKey;
        query["account"] = accountNumber;
        query["ifsccode"] = ifscCode;
        query["amount"] = amount.ToString();
        query["referid"] = referenceId;
        
        string url = $"xyz.com/v2/bank.php?{query}";
        
        using (HttpClient client = new HttpClient()) {
            HttpResponseMessage response = await client.GetAsync(url);
            
            if (response.IsSuccessStatusCode) {
                string responseBody = await response.Content.ReadAsStringAsync();
                Console.WriteLine(responseBody);
            } else {
                Console.WriteLine($"Error: {response.StatusCode}");
            }
        }
    }
}
#include 
#include 
#include 

size_t write_callback(char *ptr, size_t size, size_t nmemb, void *userdata) {
    size_t realsize = size * nmemb;
    printf("%.*s\n", (int)realsize, ptr);
    return realsize;
}

int main(void) {
    CURL *curl;
    CURLcode res;
    char url[512];
    time_t t = time(NULL);
    
    snprintf(url, sizeof(url), "xyz.com/v2/bank.php?authorization=YOUR_API_KEY&account=1234567890&ifsccode=ABCD0001234&amount=5000&referid=TX%ld", t);
    
    curl = curl_easy_init();
    if(curl) {
        curl_easy_setopt(curl, CURLOPT_URL, url);
        curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, write_callback);
        
        res = curl_easy_perform(curl);
        if(res != CURLE_OK)
            fprintf(stderr, "curl_easy_perform() failed: %s\n", curl_easy_strerror(res));
            
        curl_easy_cleanup(curl);
    }
    return 0;
}
import requests
import json
import time

api_key = "YOUR_API_KEY"
account_number = "1234567890"
ifsc_code = "ABCD0001234"
amount = 5000
reference_id = f"TX{int(time.time())}"

url = "xyz.com/v2/bank.php"
params = {
    "authorization": api_key,
    "account": account_number,
    "ifsccode": ifsc_code,
    "amount": amount,
    "referid": reference_id
}

response = requests.get(url, params=params)
data = response.json()

if data.get("status") == "success":
    print(f"Bank transfer initiated! Transaction ID: {data.get('transaction_id')}")
else:
    print(f"Error: {data.get('message')}")
require 'net/http'
require 'json'
require 'time'

api_key = "YOUR_API_KEY"
account_number = "1234567890"
ifsc_code = "ABCD0001234"
amount = 5000
reference_id = "TX#{Time.now.to_i}"

uri = URI("xyz.com/v2/bank.php")
uri.query = URI.encode_www_form({
  authorization: api_key,
  account: account_number,
  ifsccode: ifsc_code,
  amount: amount,
  referid: reference_id
})

response = Net::HTTP.get_response(uri)
data = JSON.parse(response.body)

if data["status"] == "success"
  puts "Bank transfer initiated! Transaction ID: #{data['transaction_id']}"
else
  puts "Error: #{data['message']}"
end
const apiKey = "YOUR_API_KEY";
const accountNumber = "1234567890";
const ifscCode = "ABCD0001234";
const amount = 5000;
const referenceId = `TX${Date.now()}`;

const url = `xyz.com/v2/bank.php?authorization=${apiKey}&account=${accountNumber}&ifsccode=${ifscCode}&amount=${amount}&referid=${referenceId}`;

fetch(url)
  .then(response => response.json())
  .then(data => {
    if (data.status === "success") {
      console.log(`Bank transfer initiated! Transaction ID: ${data.transaction_id}`);
    } else {
      console.error(`Error: ${data.message}`);
    }
  })
  .catch(error => console.error("Error:", error));
const https = require('https');
const querystring = require('querystring');

const apiKey = "YOUR_API_KEY";
const accountNumber = "1234567890";
const ifscCode = "ABCD0001234";
const amount = 5000;
const referenceId = `TX${Date.now()}`;

const params = querystring.stringify({
  authorization: apiKey,
  account: accountNumber,
  ifsccode: ifscCode,
  amount: amount,
  referid: referenceId
});

const options = {
  hostname: 'xyz.com',
  path: `/v2/bank.php?${params}`,
  method: 'GET'
};

const req = https.request(options, res => {
  let data = '';
  
  res.on('data', chunk => {
    data += chunk;
  });
  
  res.on('end', () => {
    const response = JSON.parse(data);
    if (response.status === 'success') {
      console.log(`Bank transfer initiated! Transaction ID: ${response.transaction_id}`);
    } else {
      console.error(`Error: ${response.message}`);
    }
  });
});

req.on('error', error => {
  console.error('Error:', error);
});

req.end();

Example Response

{
  "status": "success",
  "message": "Bank transfer initiated successfully",
  "transaction_id": "BANK98765432",
  "reference_id": "TX789012",
  "amount": "₹5,000.00",
  "account_number": "XXXX7890",
  "ifsc_code": "ABCD0001234",
  "bank_name": "State Bank of India",
  "estimated_completion": "2-4 hours",
  "timestamp": "2025-07-16T12:40:15+05:30"
}

GET Check Status

Check the status of a previously initiated transaction.

xyz.com/v2/status.php?authorization=YOUR_API_KEY&txnid=TRANSACTION_ID

Parameters

Parameter Type Required Description
authorization string Required Your API key for authentication
txnid string Required Transaction ID received from a previous payout request
curl "xyz.com/v2/status.php?authorization=YOUR_API_KEY&txnid=UPI12345678"
<?php
$apiKey = "YOUR_API_KEY";
$transactionId = "UPI12345678"; // Transaction ID from previous payout request

$url = "xyz.com/v2/status.php?authorization={$apiKey}&txnid={$transactionId}";

$response = file_get_contents($url);
$data = json_decode($response, true);

if (isset($data['status'])) {
    echo "Transaction status: " . $data['status'];
    echo "\nMessage: " . $data['message'];
} else {
    echo "Error: Unable to retrieve transaction status";
}
?>
import java.net.HttpURLConnection;
import java.net.URL;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.URLEncoder;
import java.nio.charset.StandardCharsets;

public class CheckStatus {
    public static void main(String[] args) {
        try {
            String apiKey = "YOUR_API_KEY";
            String transactionId = "UPI12345678"; // Transaction ID from previous payout request
            
            String urlString = String.format("xyz.com/v2/status.php?authorization=%s&txnid=%s",
                URLEncoder.encode(apiKey, StandardCharsets.UTF_8.toString()),
                URLEncoder.encode(transactionId, StandardCharsets.UTF_8.toString()));
                
            URL url = new URL(urlString);
            HttpURLConnection conn = (HttpURLConnection) url.openConnection();
            conn.setRequestMethod("GET");
            
            BufferedReader in = new BufferedReader(new InputStreamReader(conn.getInputStream()));
            String inputLine;
            StringBuffer response = new StringBuffer();
            
            while ((inputLine = in.readLine()) != null) {
                response.append(inputLine);
            }
            in.close();
            
            System.out.println(response.toString());
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}
using System;
using System.Net.Http;
using System.Threading.Tasks;
using System.Web;

class Program {
    static async Task Main() {
        string apiKey = "YOUR_API_KEY";
        string transactionId = "UPI12345678"; // Transaction ID from previous payout request
        
        var query = HttpUtility.ParseQueryString(string.Empty);
        query["authorization"] = apiKey;
        query["txnid"] = transactionId;
        
        string url = $"xyz.com/v2/status.php?{query}";
        
        using (HttpClient client = new HttpClient()) {
            HttpResponseMessage response = await client.GetAsync(url);
            
            if (response.IsSuccessStatusCode) {
                string responseBody = await response.Content.ReadAsStringAsync();
                Console.WriteLine(responseBody);
            } else {
                Console.WriteLine($"Error: {response.StatusCode}");
            }
        }
    }
}
#include 
#include 

size_t write_callback(char *ptr, size_t size, size_t nmemb, void *userdata) {
    size_t realsize = size * nmemb;
    printf("%.*s\n", (int)realsize, ptr);
    return realsize;
}

int main(void) {
    CURL *curl;
    CURLcode res;
    
    curl = curl_easy_init();
    if(curl) {
        curl_easy_setopt(curl, CURLOPT_URL, "xyz.com/v2/status.php?authorization=YOUR_API_KEY&txnid=UPI12345678");
        curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, write_callback);
        
        res = curl_easy_perform(curl);
        if(res != CURLE_OK)
            fprintf(stderr, "curl_easy_perform() failed: %s\n", curl_easy_strerror(res));
            
        curl_easy_cleanup(curl);
    }
    return 0;
}
import requests
import json

api_key = "YOUR_API_KEY"
transaction_id = "UPI12345678"  # Transaction ID from previous payout request

url = "xyz.com/v2/status.php"
params = {
    "authorization": api_key,
    "txnid": transaction_id
}

response = requests.get(url, params=params)
data = response.json()

if "status" in data:
    print(f"Transaction status: {data['status']}")
    print(f"Message: {data['message']}")
    
    if data["status"] == "success":
        print(f"UTR: {data.get('utr', 'N/A')}")
        print(f"Completed at: {data.get('completed_at', 'N/A')}")
else:
    print("Error: Unable to retrieve transaction status")
require 'net/http'
require 'json'

api_key = "YOUR_API_KEY"
transaction_id = "UPI12345678" # Transaction ID from previous payout request

uri = URI("xyz.com/v2/status.php")
uri.query = URI.encode_www_form({
  authorization: api_key,
  txnid: transaction_id
})

response = Net::HTTP.get_response(uri)
data = JSON.parse(response.body)

if data["status"]
  puts "Transaction status: #{data['status']}"
  puts "Message: #{data['message']}"
  
  if data["status"] == "success"
    puts "UTR: #{data['utr'] || 'N/A'}"
    puts "Completed at: #{data['completed_at'] || 'N/A'}"
  end
else
  puts "Error: Unable to retrieve transaction status"
end
const apiKey = "YOUR_API_KEY";
const transactionId = "UPI12345678"; // Transaction ID from previous payout request

const url = `xyz.com/v2/status.php?authorization=${apiKey}&txnid=${transactionId}`;

fetch(url)
  .then(response => response.json())
  .then(data => {
    if (data.status) {
      console.log(`Transaction status: ${data.status}`);
      console.log(`Message: ${data.message}`);
      
      if (data.status === "success") {
        console.log(`UTR: ${data.utr || 'N/A'}`);
        console.log(`Completed at: ${data.completed_at || 'N/A'}`);
      }
    } else {
      console.error("Error: Unable to retrieve transaction status");
    }
  })
  .catch(error => console.error("Error:", error));
const https = require('https');
const querystring = require('querystring');

const apiKey = "YOUR_API_KEY";
const transactionId = "UPI12345678"; // Transaction ID from previous payout request

const params = querystring.stringify({
  authorization: apiKey,
  txnid: transactionId
});

const options = {
  hostname: 'xyz.com',
  path: `/v2/status.php?${params}`,
  method: 'GET'
};

const req = https.request(options, res => {
  let data = '';
  
  res.on('data', chunk => {
    data += chunk;
  });
  
  res.on('end', () => {
    try {
      const response = JSON.parse(data);
      
      if (response.status) {
        console.log(`Transaction status: ${response.status}`);
        console.log(`Message: ${response.message}`);
        
        if (response.status === 'success') {
          console.log(`UTR: ${response.utr || 'N/A'}`);
          console.log(`Completed at: ${response.completed_at || 'N/A'}`);
        }
      } else {
        console.error("Error: Unable to retrieve transaction status");
      }
    } catch (e) {
      console.error('Error parsing response:', e);
    }
  });
});

req.on('error', error => {
  console.error('Error:', error);
});

req.end();

Example Response

{
  "status": "success",
  "message": "Transaction completed successfully",
  "transaction_id": "UPI12345678",
  "reference_id": "TX123456",
  "amount": "₹1,000.00",
  "recipient": "9876543210@ybl",
  "utr": "123456789012",
  "initiated_at": "2025-07-16T10:30:45+05:30",
  "completed_at": "2025-07-16T10:31:22+05:30",
  "processing_time": "37 seconds"
}

Possible Status Values

Status Description
success Transaction has been completed successfully
pending Transaction is being processed
failed Transaction failed due to an error
rejected Transaction was rejected by the recipient's bank
hold Transaction is on hold pending review

GET Bank Verification

Verify bank account details and get account holder name.

xyz.com/v2/bankverification.php?authorization=YOUR_API_KEY&account=ACCOUNT_NUMBER&ifsc=IFSC_CODE

Parameters

Parameter Type Required Description
authorization string Required Your API key for authentication
account string Required Bank account number to verify
ifsc string Required IFSC code of the bank
curl "xyz.com/v2/bankverification.php?authorization=YOUR_API_KEY&account=1234567890&ifsc=SBIN0001234"
<?php
$apiKey = "YOUR_API_KEY";
$account = "1234567890";
$ifsc = "SBIN0001234";

$url = "xyz.com/v2/bankverification.php?authorization={$apiKey}&account={$account}&ifsc={$ifsc}";

$response = file_get_contents($url);
$data = json_decode($response, true);

if (isset($data['status']) && $data['status'] === 'success') {
    echo "Verification successful!";
    echo "Account Holder: " . $data['verification']['name_at_bank'];
    echo "Bank: " . $data['verification']['bank_name'];
} else {
    echo "Error: " . $data['message'];
}
?>
import requests

url = "xyz.com/v2/bankverification.php"
params = {
    "authorization": "YOUR_API_KEY",
    "account": "1234567890",
    "ifsc": "SBIN0001234"
}

response = requests.get(url, params=params)
data = response.json()

if data.get("status") == "success":
    verification = data["verification"]
    print(f"Verification successful!")
    print(f"Account Holder: {verification['name_at_bank']}")
    print(f"Bank: {verification['bank_name']}")
    print(f"Charge: ₹{verification['charge']}")
else:
    print(f"Error: {data.get('message')}")
const apiKey = "YOUR_API_KEY";
const account = "1234567890";
const ifsc = "SBIN0001234";

const url = `xyz.com/v2/bankverification.php?authorization=${apiKey}&account=${account}&ifsc=${ifsc}`;

fetch(url)
  .then(response => response.json())
  .then(data => {
    if (data.status === "success") {
      console.log("Verification successful!");
      console.log(`Account Holder: ${data.verification.name_at_bank}`);
      console.log(`Bank: ${data.verification.bank_name}`);
      console.log(`Charge: ₹${data.verification.charge}`);
    } else {
      console.error(`Error: ${data.message}`);
    }
  })
  .catch(error => console.error("Error:", error));
const https = require('https');
const querystring = require('querystring');

const params = querystring.stringify({
  authorization: "YOUR_API_KEY",
  account: "1234567890",
  ifsc: "SBIN0001234"
});

const options = {
  hostname: 'xyz.com',
  path: `/v2/bankverification.php?${params}`,
  method: 'GET'
};

const req = https.request(options, res => {
  let data = '';
  
  res.on('data', chunk => {
    data += chunk;
  });
  
  res.on('end', () => {
    try {
      const response = JSON.parse(data);
      
      if (response.status === 'success') {
        console.log('Verification successful!');
        console.log(`Account Holder: ${response.verification.name_at_bank}`);
        console.log(`Bank: ${response.verification.bank_name}`);
        console.log(`Charge: ₹${response.verification.charge}`);
      } else {
        console.error(`Error: ${response.message}`);
      }
    } catch (e) {
      console.error('Error parsing response:', e);
    }
  });
});

req.on('error', error => {
  console.error('Error:', error);
});

req.end();

Example Response

{
  "status": "success",
  "verification": {
    "order_id": "20250116123456789",
    "account": "1234567890",
    "ifsc": "SBIN0001234",
    "verification_status": "Success",
    "name_at_bank": "JOHN DOE",
    "bank_name": "STATE BANK OF INDIA",
    "utr": "123456789012",
    "city": "MUMBAI",
    "branch": "MAIN BRANCH",
    "micr": "400002002",
    "message": "Verification completed",
    "charge": 7
  }
}

Error Response

{
  "status": "error",
  "message": "Invalid account number or IFSC code"
}

Charges

Bank Verification Charge: ₹7 per verification

The charge will be automatically deducted from your account balance before processing the verification.

GET UPI Verification

Verify UPI ID and get account holder name.

xyz.com/v2/upiverification.php?authorization=YOUR_API_KEY&upi=UPI_ID

Parameters

Parameter Type Required Description
authorization string Required Your API key for authentication
upi string Required UPI ID to verify (e.g., name@upi)
curl "xyz.com/v2/upiverification.php?authorization=YOUR_API_KEY&upi=john@paytm"
<?php
$apiKey = "YOUR_API_KEY";
$upi = "john@paytm";

$url = "xyz.com/v2/upiverification.php?authorization={$apiKey}&upi={$upi}";

$response = file_get_contents($url);
$data = json_decode($response, true);

if (isset($data['status']) && $data['status'] === 'success') {
    echo "Verification successful!";
    echo "Account Holder: " . $data['verification']['name_at_bank'];
    echo "Account Exists: " . ($data['verification']['account_exists'] ? 'Yes' : 'No');
} else {
    echo "Error: " . $data['message'];
}
?>
import requests

url = "xyz.com/v2/upiverification.php"
params = {
    "authorization": "YOUR_API_KEY",
    "upi": "john@paytm"
}

response = requests.get(url, params=params)
data = response.json()

if data.get("status") == "success":
    verification = data["verification"]
    print(f"Verification successful!")
    print(f"UPI ID: {verification['upi']}")
    print(f"Account Holder: {verification['name_at_bank']}")
    print(f"Account Exists: {'Yes' if verification['account_exists'] else 'No'}")
    print(f"Charge: ₹{verification['charge']}")
else:
    print(f"Error: {data.get('message')}")
const apiKey = "YOUR_API_KEY";
const upi = "john@paytm";

const url = `xyz.com/v2/upiverification.php?authorization=${apiKey}&upi=${upi}`;

fetch(url)
  .then(response => response.json())
  .then(data => {
    if (data.status === "success") {
      console.log("Verification successful!");
      console.log(`UPI ID: ${data.verification.upi}`);
      console.log(`Account Holder: ${data.verification.name_at_bank}`);
      console.log(`Account Exists: ${data.verification.account_exists ? 'Yes' : 'No'}`);
      console.log(`Charge: ₹${data.verification.charge}`);
    } else {
      console.error(`Error: ${data.message}`);
    }
  })
  .catch(error => console.error("Error:", error));
const https = require('https');
const querystring = require('querystring');

const params = querystring.stringify({
  authorization: "YOUR_API_KEY",
  upi: "john@paytm"
});

const options = {
  hostname: 'xyz.com',
  path: `/v2/upiverification.php?${params}`,
  method: 'GET'
};

const req = https.request(options, res => {
  let data = '';
  
  res.on('data', chunk => {
    data += chunk;
  });
  
  res.on('end', () => {
    try {
      const response = JSON.parse(data);
      
      if (response.status === 'success') {
        console.log('Verification successful!');
        console.log(`UPI ID: ${response.verification.upi}`);
        console.log(`Account Holder: ${response.verification.name_at_bank}`);
        console.log(`Account Exists: ${response.verification.account_exists ? 'Yes' : 'No'}`);
        console.log(`Charge: ₹${response.verification.charge}`);
      } else {
        console.error(`Error: ${response.message}`);
      }
    } catch (e) {
      console.error('Error parsing response:', e);
    }
  });
});

req.on('error', error => {
  console.error('Error:', error);
});

req.end();

Example Response

{
  "status": "success",
  "verification": {
    "order_id": "20250116123456789",
    "upi": "john@paytm",
    "verification_status": "Success",
    "name_at_bank": "JOHN DOE",
    "account_exists": true,
    "message": "Verification completed",
    "charge": 5
  }
}

Error Response

{
  "status": "error",
  "message": "Invalid UPI ID format"
}

Charges

UPI Verification Charge: ₹5 per verification

The charge will be automatically deducted from your account balance before processing the verification.