API Documentation
Welcome to the Novexapay API reference. Our RESTful API exposes endpoints to automate payouts, check wallet balances, and track transactions in real time.
Gateway Details
Base URL: https://taskbazi.xyz/api/v1
All requests must use JSON bodies and include signature headers to pass the security shield.
Authentication Headers
Include these required HTTP headers in every request.
| Header Name | Type | Description |
|---|---|---|
| x-api-key | String | Your merchant Public API Key generated inside the Merchant Portal. |
| x-merchant-id | String | Your Merchant Account ID (retrievable from the Merchant Portal developer tab). |
| x-signature | String | HMAC-SHA256 signature calculated from the request timestamp, nonce, and request body. |
| x-timestamp | Integer | Current Unix timestamp in seconds. Replayed requests older than 5 minutes will be rejected. |
| x-nonce | String | A unique UUID or high-entropy random string generated for the request. Used to block replay attempts. |
HMAC Verification Protocol
To construct a valid signature:
1. Concatenate fields with a dot (.) separator:
stringToSign = timestamp + "." + nonce + "." + requestBodyJsonString2. Calculate SHA256 HMAC using your Secret Key:
signature = hmacSha256(stringToSign, yourSecretKey)
Get Wallet Balance
Retrieve current available and frozen balance details.
GET
/wallet/balance
SUCCESS RESPONSE (200)
{
"success": true,
"balance": 154500.50,
"frozen_balance": 0.00,
"currency": "INR"
}
cURL Request
curl -X GET https://taskbazi.xyz/api/v1/wallet/balance \ -H "x-api-key: nvx_pk_live_your_key" \ -H "x-merchant-id: your_merchant_id" \ -H "x-signature: computed_signature" \ -H "x-timestamp: 1785089201" \ -H "x-nonce: random_uuid_string"
Create Payout
Initiate a transfer to a customer bank account. Deducts from wallet balance.
POST
/payouts
JSON PARAMETERS
{
"client_reference_id": "unique_ref_101",
"amount": 1500.00,
"bank_name": "HDFC Bank",
"bank_account_number": "5010022334455",
"bank_ifsc": "HDFC0001245",
"bank_holder_name": "John Doe"
}
cURL Payload
curl -X POST https://taskbazi.xyz/api/v1/payouts \
-H "Content-Type: application/json" \
-H "x-api-key: nvx_pk_live_your_key" \
-H "x-merchant-id: your_merchant_id" \
-H "x-signature: calculated_hmac_signature" \
-H "x-timestamp: 1785089201" \
-H "x-nonce: random_uuid_string" \
-d '{
"client_reference_id": "unique_ref_101",
"amount": 1500.00,
"bank_name": "HDFC Bank",
"bank_account_number": "5010022334455",
"bank_ifsc": "HDFC0001245",
"bank_holder_name": "John Doe"
}'
PHP Snippet
<?php
$apiKey = 'nvx_pk_live_your_key';
$secretKey = 'nvx_sk_live_your_secret';
$merchantId = 'your_merchant_id';
$timestamp = time();
$nonce = bin2hex(random_bytes(16));
$body = json_encode([
'client_reference_id' => 'unique_ref_101',
'amount' => 1500.00,
'bank_name' => 'HDFC Bank',
'bank_account_number' => '5010022334455',
'bank_ifsc' => 'HDFC0001245',
'bank_holder_name' => 'John Doe'
]);
$stringToSign = $timestamp . '.' . $nonce . '.' . $body;
$signature = hash_hmac('sha256', $stringToSign, $secretKey);
// Send POST request with x-api-key, x-signature, x-timestamp, x-nonce, x-merchant-id headers
?>
Node.js Snippet
const crypto = require('crypto');
const axios = require('axios');
const apiKey = 'nvx_pk_live_your_key';
const secretKey = 'nvx_sk_live_your_secret';
const merchantId = 'your_merchant_id';
const timestamp = Math.floor(Date.now() / 1000).toString();
const nonce = crypto.randomUUID();
const payload = {
client_reference_id: "unique_ref_101",
amount: 1500.00,
bank_name: "HDFC Bank",
bank_account_number: "5010022334455",
bank_ifsc: "HDFC0001245",
bank_holder_name: "John Doe"
};
const bodyString = JSON.stringify(payload);
const signature = crypto
.createHmac('sha256', secretKey)
.update(`${timestamp}.${nonce}.${bodyString}`)
.digest('hex');
Python 3 Snippet
import time, uuid, hmac, hashlib, json, requests
api_key = 'nvx_pk_live_your_key'
secret_key = 'nvx_sk_live_your_secret'
merchant_id = 'your_merchant_id'
timestamp = str(int(time.time()))
nonce = str(uuid.uuid4())
payload = {
"client_reference_id": "unique_ref_101",
"amount": 1500.00,
"bank_name": "HDFC Bank",
"bank_account_number": "5010022334455",
"bank_ifsc": "HDFC0001245",
"bank_holder_name": "John Doe"
}
body_str = json.dumps(payload, separators=(',', ':'))
string_to_sign = f"{timestamp}.{nonce}.{body_str}"
signature = hmac.new(secret_key.encode(), string_to_sign.encode(), hashlib.sha256).hexdigest()
C++ OpenSSL & CPR Snippet
#include <iostream>
#include <sstream>
#include <iomanip>
#include <openssl/hmac.h>
#include <cpr/cpr.h>
std::string compute_hmac(const std::string& key, const std::string& msg) {
unsigned char hash[32];
unsigned int len = 32;
HMAC(EVP_sha256(), key.c_str(), key.length(), (unsigned char*)msg.c_str(), msg.length(), hash, &len);
std::stringstream ss;
for(int i = 0; i < 32; i++) {
ss << std::hex << std::setw(2) << std::setfill('0') << (int)hash[i];
}
return ss.str();
}
Go Snippet
package main
import (
"crypto/hmac"
"crypto/sha256"
"encoding/hex"
"fmt"
"time"
)
func main() {
secret := "nvx_sk_live_your_secret"
timestamp := fmt.Sprintf("%d", time.Now().Unix())
nonce := "uuid_or_random_hash"
body := `{"client_reference_id":"unique_ref_101","amount":1500.00}`
h := hmac.New(sha256.New, []byte(secret))
h.Write([]byte(timestamp + "." + nonce + "." + body))
signature := hex.EncodeToString(h.Sum(nil))
}
Java okHttp Snippet
import javax.crypto.Mac;
import javax.crypto.spec.SecretKeySpec;
import okhttp3.*;
public class NovexaPay {
public static String calculateHMAC(String data, String key) throws Exception {
SecretKeySpec secretKeySpec = new SecretKeySpec(key.getBytes(), "HmacSHA256");
Mac mac = Mac.getInstance("HmacSHA256");
mac.init(secretKeySpec);
byte[] rawHmac = mac.doFinal(data.getBytes());
return hex(rawHmac);
}
}
C# RestSharp Snippet
using System;
using System.Security.Cryptography;
using System.Text;
using RestSharp;
public class NovexaPay {
public static string CreateHMAC(string message, string secret) {
byte[] keyByte = Encoding.UTF8.GetBytes(secret);
byte[] messageBytes = Encoding.UTF8.GetBytes(message);
using (var hmacsha256 = new HMACSHA256(keyByte)) {
byte[] hashmessage = hmacsha256.ComputeHash(messageBytes);
return BitConverter.ToString(hashmessage).Replace("-", "").ToLower();
}
}
}
Ruby Snippet
require 'openssl'
require 'net/http'
require 'json'
require 'securerandom'
secret = "nvx_sk_live_your_secret"
timestamp = Time.now.to_i.to_s
nonce = SecureRandom.uuid
body = { client_reference_id: "unique_ref_101", amount: 1500.00 }.to_json
string_to_sign = "#{timestamp}.#{nonce}.#{body}"
signature = OpenSSL::HMAC.hexdigest('SHA256', secret, string_to_sign)
Swift CryptoKit Snippet
import Foundation
import CryptoKit
let secret = "nvx_sk_live_your_secret"
let timestamp = String(Int(Date().timeIntervalSince1970))
let nonce = UUID().uuidString
let body = "{\"client_reference_id\":\"unique_ref_101\",\"amount\":1500.00}"
let key = SymmetricKey(data: secret.data(using: .utf8)!)
let code = HMAC<SHA256>.authenticationCode(for: (timestamp + "." + nonce + "." + body).data(using: .utf8)!, using: key)
Get Payout Status
Check status and provider reference details for a specific payout.
GET
/payouts/{reference_id}
SUCCESS RESPONSE (200)
{
"success": true,
"transaction_id": "tx_abc123xyz",
"reference_id": "tx_abc123xyz",
"client_reference_id": "ref_101",
"amount": 1500.00,
"status": "success",
"provider_reference": "PAY202607052228",
"created_at": "2026-07-26T12:00:00Z"
}
cURL Request
curl -X GET https://taskbazi.xyz/api/v1/payouts/tx_abc123xyz \ -H "x-api-key: nvx_pk_live_your_key" \ -H "x-merchant-id: your_merchant_id" \ -H "x-signature: computed_signature"