NAV
shell ruby javascript

Introduction

Welcome to the Xpentra API! You can use our API to access Xpentra API endpoints.

Authentication

To authorize any request, you must first authenticate with the API. You can authenticate with the API using a secure token. You can find your secure token in the Xpentra login response. This secure token has to be sent via the X-Api-Key header with every request unless otherwise noted.

X-Api-Key: <your secure token>

User Login

curl -X POST "https://<environmenturl>/api/users/token"
  -H "X-Api-Key: <your secure token>"
  -H "Content-Type: application/json"
  -d "{
        "identifier": "xxxxxx",
        "password": "xxxxxx",
        "device_info": 
        {
          "uuid": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
          "platform": "android",
          "os_version": "1.6",
          "ip_address": "103.67.90.00",
          "app_version_code": 49,
          "app_version_name": 2.48,
          "brand": "Android",
          "manufacturer": "realme",
          "device_model": "realme 11 pro",
          "sdk_version": "60",
          "serial_number": "9876bcde234",
          "fcm_token": "klmnopfghjkl"
        }
      }"
require 'net/http'
require 'uri'
require 'json'

uri = URI.parse("https://<environmenturl>/api/users/token") header = {'X-Api-Key' => '<your secure token>','Content-Type' => 'application/json'} body = { "identifier": "xxxxxx", "password": "xxxxxx", "device_info": { "uuid": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx", "platform": "android", "os_version": "1.6", "ip_address": "103.67.90.00", "app_version_code": 55, "app_version_name": 2.48, "brand": "Android", "manufacturer": "realme", "device_model": "realme 11 pro", "sdk_version": "60", "serial_number": "9876bcde234", "fcm_token": "klmnopfghjkl" } } http = Net::HTTP.new(uri.host, uri.port) http.use_ssl = true request = Net::HTTP::Get.new(uri.request_uri, header) request.body = body.to_json response = http.request(request)

const data =
  {
    "identifier": "xxxxxx",
    "password": "xxxxxx",
      "device_info":
       {
          "uuid": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
          "platform": "android",
          "os_version": "1.6",
          "ip_address": "103.67.90.00",
          "app_version_code": 55,
          "app_version_name": 2.48,
          "brand": "Android",
          "manufacturer": "realme",
          "device_model": "realme 11 pro",
          "sdk_version": "60",
          "serial_number": "9876bcde234",
          "fcm_token": "klmnopfghjkl"
        }
  };

fetch('https://<environmenturl>/api/users/token', { method: 'POST', headers: { 'X-Api-Key' => '<your secure token>', 'Content-Type': 'application/json' }, body: JSON.stringify(data) }) .then(response => response.json()) .then(data => console.log(data)) .catch(error => console.error(error));

The below example can be sent as a request to the API for Android.

{
  "identifier": "xxxxxx",
  "password": "xxxxxx",
  "device_info": {
    "uuid": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
    "platform": "android",
    "os_version": "1.6",
    "ip_address": "103.67.90.00",
    "app_version_code": 55,
    "app_version_name": 2.48,
    "brand": "Android",
    "manufacturer": "realme",
    "device_model": "realme 11 pro",
    "sdk_version": "60"
    }
}

The below example can be sent as a request to the API for Web.

{
  "identifier": "xxxxxx",
  "password": "xxxxxx",
  "device_info": {
    "uuid": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
    "platform": "web",
    "os_version": "4.6",
    "ip_address": "103.67.90.00",
    "browser_name": "FireFox"
  }
}

The below example can be sent as a request to the API enable two factor TOTP for Android.

{
  "identifier": "xxxxxx",
  "password": "xxxxxx",
  "totp": "xxxxxx",
  "device_info": {
    "uuid": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
    "platform": "android",
    "os_version": "1.6",
    "ip_address": "103.67.90.00",
    "app_version_code": 55,
    "app_version_name": 2.48,
    "brand": "Android",
    "manufacturer": "realme",
    "device_model": "realme 11 pro",
    "sdk_version": "60"
    }
}

The below example can be sent as a request to the API enable two factor TOTP for Web.

{
  "identifier": "xxxxxx",
  "password": "xxxxxx",
  "totp": "xxxxxx",
  "device_info": {
    "uuid": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
    "platform": "web",
    "os_version": "4.6",
    "ip_address": "103.67.90.00",
    "browser_name": "FireFox"
  }
}

SUCCESS RESPONSE The request returns JSON structured like below successful login for Android

{
  "status": true,
  "employees": {
    "id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
    "user_id": "xxxxxx",
    "first_name": "Rajesh",
    "last_name": "Jadhav",
    "mob_no": "9876567890",
    "email": "rajesh@gmail.com",
    "created_by": "1",
    "grade": "Approver",
    "alias_name": "xzyu",
    "android_setting": ""{"demo_target_filter":false,"demo_target_navigation":false,"demo_target_create":false,"demo_target_alias":false}"",
    "approval_status": "Y",
    "active_status": "N",
    "is_authorized": "Y",
    "verified_email": "Y",
    "verified_sms": "Y",
    "first_login_flag": "Y",
    "can_concierge_login":"Y"
  },
  "entity": {
    "entity_id": "xxxxxx",
    "entity_name": "Manufacturing Entity",
    "entity_pan": "xxxxxxxx",
    "encryption_active": true
  },
  "services": [
    {
      "service_id": "manage",
      "service_header": "client",
      "service_name": "client Details 2",
      "service_desc": "To Verify Details 2",
      "is_delete": false,
      "status": "Development Complete"}
  ],
  "q2p_token": "<your secure token>"
}

ERROR RESPONSE The request returns JSON structured like below for errors related to missing identifier

{
  "status": false,
  "errors": {
    "base": [
      "Your account is Blocked"
    ],
    "uuid": [
      "Uuid can't be blank",
      "Uuid is the wrong length (should be 36 characters)",
      "Uuid (Device identifier) is not provided in a valid uuid format"
    ],
    "os_version": [
      "Os version can't be blank"
    ],
    "ip_address": [
      "Ip address can't be blank"
    ],
    "app_version_code": [
      "App version code can't be blank"
    ],
    "app_version_name": [
      "App version name can't be blank"
    ],
    "brand": [
      "Brand can't be blank"
    ],
    "manufacturer": [
      "Manufacturer can't be blank"
    ],
    "device_model": [
      "Device model can't be blank"
    ],
    "sdk_version": [
      "Sdk version can't be blank"
    ],
    "serial_number": [
      "Serial number can't be blank"
    ],
    "browser_name": [
      "Browser name can't be blank"
    ],
    "user_unauthorized": [
      "Sorry! You are not authorized to perform this action"
    ],
    "base": [
      "Unauthorized User",
      "Invalid TOTP code"
    ]
  }
}

This endpoint will login user for your entity.

UAT HTTP Request

POST https://nxt.api.q2pay.co.in/api/users/token

PRODUCTION HTTP Request

POST https://nxt.api.q2pay.in/api/users/token

Query Parameters for Android

Parameter Default Description Required Sample
identifier N.A. Identifier for login Yes xxxxxx
password N.A. Password for Login Yes xxxxxx
device_info N.A. Include device info parameter (Refer Table below) Yes
totp N.A TOTP is required when enable two factor authentication is enable optional xxxxxx

Device Info for Android

Parameter Default Description Required Sample
uuid N.A. Unique Device Id Yes xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx
platform N.A. Platform Value Yes android
os_version N.A. OS Version Yes Android 11
ip_address N.A. IP Address Yes 188.101.98.00
app_version_code N.A. App Version Code Yes 77
app_version_name N.A. App Version Nmae Yes 2.68
brand N.A. Brand Yes android
manufacturer N.A. Manufacturer Yes motorola
device_model N.A. Device Model Yes generation3
sdk_version N.A. SDK Version Yes 50
serial_number N.A. Serial Number Yes 4567cfgj67
fcm_token N.A. FCM Token No kjlhnmugjk
primary_device false Primary Device No Y
verified false Verified No N

Query Parameters for Web

Parameter Default Description Required Sample
identifier N.A. Identifier for login Yes xxxxxx
password N.A. Password for login Yes xxxxxx
device_info N.A. Include device info parameter (Refer Table below) Yes
totp N.A TOTP is required when enable two factor authentication is enable optional xxxxxx

Device Info for Web

Parameter Default Description Required Sample
uuid N.A. Unique Device Id Yes xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx
platform N.A. Platform Value Yes web
os_version N.A. OS Version Yes Versions 1.0
ip_address N.A. IP Address Yes 188.101.98.00
browser_name N.A. Browser Name Yes FireFox

Device Info for PWA

Parameter Default Description Required Sample
uuid N.A. Unique Device Id Yes xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx
platform N.A. Platform Value Yes PWA
os_version N.A. OS Version Yes Versions 1.0
ip_address N.A. IP Address Yes 188.101.98.00
browser_name N.A. Browser Name Yes FireFox

Service Details

Service ID Description
PLogin To Login User

Refresh

curl -X POST "https://<environmenturl>/api/me/refresh"
  -H "X-Api-Key: <your secure token>"
  -H "Content-Type: application/json"
  -d 
  "{ 
    "device_info":
    {
      "uuid": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
      "platform": "android",
      "os_version": "1.6",
      "ip_address": "103.67.90.00",
      "app_version_code": 49,
      "app_version_name": 2.48,
      "brand": "Android",
      "manufacturer": "realme",
      "device_model": "realme 11 pro",
      "sdk_version": "60",
      "serial_number": "9876bcde234",
      "fcm_token": "klmnopfghjkl"
    }
  }"
require 'net/http'
require 'uri'
require 'json'

uri = URI.parse("https://<environmenturl>/api/me/refresh") header = {'X-Api-Key' => '<your secure token>', 'Content-Type' => 'application/json'} body = { "device_info": { "uuid": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx", "platform": "android", "os_version": "1.6", "ip_address": "103.67.90.00", "app_version_code": 55, "app_version_name": 2.48, "brand": "Android", "manufacturer": "realme", "device_model": "realme 11 pro", "sdk_version": "60", "serial_number": "9876bcde234", "fcm_token": "klmnopfghjkl" } } http = Net::HTTP.new(uri.host, uri.port) http.use_ssl = true request = Net::HTTP::POST.new(uri.request_uri, header) request.body = body.to_json response = http.request(request)

const data = 
{
  "device_info": 
  {
    "uuid": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
    "platform": "android",
    "os_version": "1.6",
    "ip_address": "103.67.90.00",
    "app_version_code": 55,
    "app_version_name": 2.48,
    "brand": "Android",
    "manufacturer": "realme",
    "device_model": "realme 11 pro",
    "sdk_version": "60",
    "serial_number": "9876bcde234",
    "fcm_token": "klmnopfghjkl"
  }
};

fetch('https://<environmenturl>/api/me/refresh', { method: 'POST', headers: { 'X-Api-Key': '<your secure token>', 'Content-Type': 'application/json' }, body: JSON.stringify(data) }) .then(response => response.json()) .then(data => console.log(data)) .catch(error => console.error(error));

The below example can be sent as a request to the API for Android.

{
  "device_info": 
  {
    "uuid": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
    "platform": "android",
    "os_version": "1.6",
    "ip_address": "103.67.90.00",
    "app_version_code": 55,
    "app_version_name": 2.48,
    "brand": "Android",
    "manufacturer": "realme",
    "device_model": "realme 11 pro",
    "sdk_version": "60",
    "serial_number": "9876bcde234",
    "fcm_token": "klmnopfghjkl"
  }
}

The below example can be sent as a request to the API for Web.

{
   "device_info":
  {
    "uuid": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
    "platform": "web",
    "os_version": "4.6",
    "ip_address": "103.67.90.00",
    "browser_name": "FireFox"
  }
}

SUCCESS RESPONSE The request returns JSON structured like below on Refresh User

{
  "status": true,
   "employees": {
    "id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
    "user_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
    "first_name": "Rajesh",
    "last_name": "Jadhav",
    "mob_no": "9876567890",
    "email": "rajesh@gmail.com",
    "created_by": "1",
    "grade": "Approver",
    "alias_name": "xzyu",
    "android_setting": ""{"demo_target_filter":false,"demo_target_navigation":false,"demo_target_create":false,"demo_target_alias":false}"",
    "approval_status": "Y",
    "active_status": "N",
    "is_authorized": "Y",
    "verified_email": "Y",
    "verified_sms": "Y",
    "first_login_flag": "Y"
  },
  "entity": {
    "entity_id": "xxxxxx",
    "entity_name": "Manufacturing Entity",
    "entity_pan": "xxxxxxxxx"
  },
  "services": [
    {
      "service_id": "manage",
      "service_header": "client",
      "service_name": "client Details 2",
      "service_desc": "To Verify Details 2",
      "is_delete": false,
      "status": "Development Complete"}
  ]
}

ERROR RESPONSE The request returns JSON structured like below when token has expired

{
  "errors": {
    "user_unauthorized":[
      "Sorry! You are not authorized to perform this action"
    ], 
    "token_expired":[
      "Sorry! Your token is expired. Please login again!"
    ]
  },
  "status": false
}

ERROR RESPONSE The request returns JSON structured like below for error response related to missing X-Api-Key in headers

{
  "errors": {
    "user_unauthorized": [
      "Sorry! You are not authorized to perform this action"
    ],
    "base": [
      "Something went wrong! Please contact admin!"
    ],
    "base": [
      "Invalid token format"
    ]
  },
  "status": false
}

This endpoint will refresh user token with extended validity.

UAT HTTP Request

POST https://nxt.api.q2pay.co.in/api/me/refresh

PRODUCTION HTTP Request

POST https://nxt.api.q2pay.in/api/me/refresh

Query Parameters

Parameter Default Description Required Sample
device_info
uuid N.A. Unique Device Id No xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx
platform N.A. Platform Value Yes android
os_version N.A. OS Version No Android 11
ip_address N.A. IP Address No 188.101.98.00
app_version_code N.A. App Version Code No 77
app_version_name N.A. App Version Nmae No 2.68
brand N.A. Brand No android
manufacturer N.A. Manufacturer No motorola
device_model N.A. Device Model No generation3
sdk_version N.A. SDK Version No 50
serial_number N.A. Serial Number No 4567cfgj67
fcm_token N.A. FCM Token Yes kjlhnmugjk
primary_device false Primary Device No Y
verified false Verified No N

Query Parameters for Web

Parameter Default Description Required Sample
device_info
uuid N.A. Unique Device Id Yes xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx
platform N.A. Platform Value Yes web
os_version N.A. OS Version Yes Versions 1.0
ip_address N.A. IP Address Yes 188.101.98.00
browser_name N.A. Browser Name Yes FireFox

Device Info for PWA

Parameter Default Description Required Sample
uuid N.A. Unique Device Id Yes xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx
platform N.A. Platform Value Yes PWA
os_version N.A. OS Version Yes Versions 1.0
ip_address N.A. IP Address Yes 188.101.98.00
browser_name N.A. Browser Name Yes FireFox

Service Details

Service ID Description
PLogin To Refresh User

System Refresh

curl -X POST "https://<environmenturl>/api/me/system_refresh"
     -H "X-Api-Key: <your secure token>" 
     -H "Content-Type: application/json"
     -d "{
          "service_id": "service example",
          "entity_id": "xxxxxx"
         }"
require 'net/http'
require 'uri'
require 'json'

uri = URI.parse("https://<environmenturl>/api/me/system_refresh") header = {'X-Api-Key' => '<your secure token>', 'Content-Type' => 'application/json'} body = { "service_id": "service example", "entity_id": "xxxxxx" } http = Net::HTTP.new(uri.host, uri.port) http.use_ssl = true request = Net::HTTP::POST.new(uri.request_uri, header) request.body = body.to_json response = http.request(request)

fetch('https://<environmenturl>/api/me/system_refresh', 
{
  method: 'POST',
  headers: {
    'X-Api-Key': '<your secure token>'
  },
  "Content-Type": "application/json"
})
let bodyContent = JSON.stringify({
  "service_id": "service example",
  "entity_id": "xxxxxx"
});
let response = await fetch("localhost:3000/api/me/system_refresh.json", { 
  method: "POST",
  body: bodyContent,
  headers: headersList
});
let data = await response.text();
console.log(data);

The below example can be sent as a request to the API.

{
  "service_id": "service example",
  "entity_id": "xxxxxx"
}

SUCCESS RESPONSE The request returns JSON structured like below on System Refresh User

{
  "status": true,
  "data": {
    "uuid": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
    "entity_id": "xxxxxx",
    "user_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
    "legacy_user_id": "xxxxxx",
    "platform": "android",
    "entity_id_to_use": "xxxxxx",
    "services": [
      {
        "service_id": "xxxxxxxx",
        "service_header": "service header example",
        "service_name": "service name example",
        "service_desc": "service descripton example",
        "is_delete": false,
        "status": "about status"
      }
    ]
  }
}

ERROR RESPONSE The request returns JSON structured like below for error response related to missing X-Api-Key in headers

{
  "errors": {
    "user_unauthorized": [
      "Sorry! You are not authorized to perform this action"
    ],
    "base": [
      "Invalid token format"
    ]
  }
  "errors": {
    "base": [
      { 
        "key": "user_unauthorized",
"code": "QP401", "message": "Sorry! User is not having the requested service to perform the action" } ], "base": [ { "key": "service_missing", "code": "QP404", "message": "Sorry! Input is insufficient to perform the action" } ], "base": [ { "key": "entity_unknown", "code": "QP404E", "message": "Sorry! Entity is not found" } ] } "status": false }

This endpoint will report service availability for user.

UAT HTTP Request

POST https://nxt.api.q2pay.co.in/api/me/system_refresh

PRODUCTION HTTP Request

POST https://nxt.api.q2pay.in/api/me/system_refresh

Query Parameters

Parameter Default Description Required Sample
service_id N.A. Platform Service identifier Yes ABCD 12
entity_id N.A. Entity Id No xxxxxx

Service Details

Service ID Description
PLogin To report service availability

Logout

curl "https://<environmenturl>/api/users/logout"
  -H "X-Api-Key: <your secure token>"
  -H "Content-Type: application/json"
require 'net/http'
require 'uri'
require 'json'

uri = URI.parse("https://<environmenturl>/api/users/logout") header = {'X-Api-Key' => '<your secure token>', 'Content-Type' => 'application/json'}

http = Net::HTTP.new(uri.host, uri.port) http.use_ssl = true request = Net::HTTP::Delete.new(uri.request_uri, header) request.body = body.to_json response = http.request(request)


fetch('https://<environmenturl>/api/users/logout', 
{
  method: 'DELETE',
  headers: {
    'X-Api-Key': '<your secure token>',
    'Content-Type': 'application/json'
  },
  body: JSON.stringify(data)
})
  .then(response => response.json())
  .then(data => console.log(data))
  .catch(error => console.error(error));

SUCCESS RESPONSE The request returns JSON structured like below User Logout successfully.

{
  "status": true,
  "message": "User logged out"
}

ERROR RESPONSE The request returns JSON structured like below for error related to missing X-Api-Key in headers

{
  "errors": {
    "user_unauthorized": [
      "Sorry! You are not authorized to perform this action"
    ],
    "base": [
      "Invalid token format"
    ]
  },
  "status": false
}

This endpoint will logout user for your entity.

UAT HTTP Request

DELETE https://nxt.api.q2pay.co.in/api/users/logout

PRODUCTION HTTP Request

DELETE https://nxt.api.q2pay.in/api/users/logout

Service Details

Service ID Description
PLogout To Logout User

Concierge Login

curl -X POST "https://<environmenturl>/api/users/concierge_login"
  -H "X-Api-Key: <your secure token>"
  -H "Content-Type: application/json"
  -d "{
       "sessions": {
        "primary_entity_id": "ABC12",
        "primary_user_id": "1",
        "sub_entity_id": "xxxxxx",
        "sub_user_id": "xxxxxx"
    }
    }"
require 'net/http'
require 'uri'
require 'json'

uri = URI.parse("https://<environmenturl>/api/users/concierge_login") header = {'X-Api-Key' => '<your secure token>','Content-Type' => 'application/json'} body = { "sessions": { "primary_entity_id": "ABC12", "primary_user_id": "1", "sub_entity_id": "xxxxxx", "sub_user_id": "xxxxxx" } } http = Net::HTTP.new(uri.host, uri.port) http.use_ssl = true request = Net::HTTP::Get.new(uri.request_uri, header) request.body = body.to_json response = http.request(request)

const data =
  {
     "sessions": {
        "primary_entity_id": "ABC12",
        "primary_user_id": "1",
        "sub_entity_id": "xxxxxx",
        "sub_user_id": "xxxxxx"
    }
  };

fetch('https://<environmenturl>/api/users/concierge_login', { method: 'POST', headers: { 'X-Api-Key': '<your secure token>', 'Content-Type': 'application/json' }, body: JSON.stringify(data) }) .then(response => response.json()) .then(data => console.log(data)) .catch(error => console.error(error));

The below example can be sent as a request to the API for Android.

{
   "sessions": {
        "primary_entity_id": "ABC12",
        "primary_user_id": "1",
        "sub_entity_id": "xxxxxx",
        "sub_user_id": "xxxxxx"
    }
}

SUCCESS RESPONSE The request returns JSON structured like below successful login

{
      "status": true,
      "employees": {
            "id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
            "user_id": "xxxxxx",
            "first_name": "Pramod",
            "last_name": "Pramod",
            "mob_no": "9870000189",
            "email": "pramodrpoojary@gmail.com",
            "created_by": "Akshay Rangnekar",
            "grade": "Approver",
            "android_setting": "{}",
            "approval_status": "Y",
            "active_status": "Y",
            "is_authorized": "Y",
            "verified_email": "Y",
            "verified_sms": "N",
            "first_login_flag": "Y",
            "can_concierge_login": "Y"
      },
      "entity": {
            "entity_id": "xxxxxx",
            "entity_name": "Pramod Ratnakar Poojary",
            "entity_pan": "xxxxxxxx",
            "entity_activate_date": 1693480123,
            "entity_active_status": true,
            "encryption_active": true
      },
      "services": [
            {
                  "id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
                  "service_id": "CRole_User",
                  "service_header": "Role",
                  "service_name": "Create Role User Mapping",
                  "service_desc": "To add a user to an existing role",
                  "is_delete": false,
                  "status": "Development Complete"
            }
      ],
      "q2p_token": "<your secure token>"
}

ERROR RESPONSE The request returns JSON structured like below for errors related to missing mapping

{
    "status": false,
    "errors": "Mapping Not Found"
}

ERROR RESPONSE The request returns JSON structured like below for errors related to missing mapping

{
    "status": false,
    "errors": "Sub Entity Access Denied!"
}

ERROR RESPONSE The request returns JSON structured like below for errors related to missing mapping

{
    "status": false,
    "errors": "Please login again and retry"
}

ERROR RESPONSE The request returns JSON structured like below for errors related to missing mapping

{
    "status": false,
    "errors": "Login with Primary User and Retry"
}

ERROR RESPONSE The request returns JSON structured like below for errors related to missing mapping

{
    "status": false,
    "errors": "User not registered for Multi Entity Access"
}

This endpoint will login user for your multi entity mapping.

UAT HTTP Request

POST https://nxt.api.q2pay.co.in/api/users/concierge_login

PRODUCTION HTTP Request

POST https://nxt.api.q2pay.in/api/users/concierge_login

Query Parameters for Android

Parameter Default Description Required Sample
primary_entity_id N.A. primary entity id for mapping Yes "ABC12"
primary_user_id N.A. primary user id for mapping Yes 1
sub_entity_id N.A. sub entity id for mapping Yes "PR3356",
sub_user_id N.A. sub user id for mapping Yes "Q1P5745"

Service Details

Service ID Description
LMapping To Login User

Device

Devices helps to manage device lifecycle for your organization.

Get All Devices

curl -X GET "https://<environmenturl>/api/devices"
  -H "X-Api-Key: <your secure token>"
  -H "Content-Type: application/json"
  -d "{ "page_size": 2,
        "page_no": 1}"
require 'net/http'
require 'uri'
require 'json'

uri = URI.parse("https://<environmenturl>/api/devices") header = {'X-Api-Key' => '<your secure token>', 'Content-Type' => 'application/json'} body = {"page_size" => 2, "page_no" => 1} http = Net::HTTP.new(uri.host, uri.port) http.use_ssl = true request = Net::HTTP::Get.new(uri.request_uri, header) request.body = body.to_json response = http.request(request)

const data = {
  page_size: 2,
  page_no: 1
};

fetch('https://<environmenturl>/api/devices', { method: 'GET', headers: { 'X-Api-Key': '<your secure token>', 'Content-Type': 'application/json' }, body: JSON.stringify(data) }) .then(response => response.json()) .then(data => console.log(data)) .catch(error => console.error(error));

The below example can be sent as a request to the API.

{
  "page_size": 2,
  "page_no": 1
}

SUCCESS RESPONSE The request returns JSON structured like below on successfully getting all devices

{
  "status": true,
  "total_count": 2,
  "devices": [
    {
      "id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
      "last_used": 16940895,
      "logged_in_flag": "N",
      "logged_in_time": 16949499,
      "platform": "web",
      "browser_name": "google chrome",
      "os_version": "Windows 10",
      "is_primary": false,
      "is_unauthorized": false,
      "is_verified": false,
      "created_by_name": "Ragini mhetre",
      "entity_id": "xxxxxx"
    },
    {
      "id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
      "last_used": 16938293,
      "logged_in_flag": "N",
      "logged_in_time": 169384193,
      "app_version_name": "3.39",
      "app_version_code": "99",
      "platform": "android",
       "model": "vivo1",
      "manufacturer": "Xiaomi redmi",
      "brand": "Android",
      "serial_number": "1234567d",
      "os_version": "windows",
      "sdk_version": "300",
      "is_primary": false,
      "is_unauthorized": false,
      "is_verified": false,
      "created_by_name": "Rhea mane",
      "entity_id": "xxxxxx"
    }
  ],
  "title": {
    "records": 10,
    "current_page": 4,
    "total_pages": 7,
    "page_item_count": 10,
    "previous_page": 3,
    "next_page": 5
  }
}

This endpoint retrieves for the logged in users.

UAT HTTP Request

GET https://nxt.api.q2pay.co.in/api/devices

PRODUCTION HTTP Request

GET https://nxt.api.q2pay.in/api/devices

Query Parameters

Parameter Default Description Required Sample
page_size 50 If set to specific number, the result will include that number of transactions. No 10
page_no 1 If set to specific number, the result will include that page of transactions. No 2

Service Details

Service ID Description
Sup_VDevice View all devices

Primary Device

curl -X PUT "https://<environmenturl>/api/devices/:id/mark_as_primary"
  -H "X-Api-Key: <your secure token>"
require 'net/http'
require 'uri'
require 'json'

uri = URI.parse("https://<environmenturl>/api/devices/:id/mark_as_primary") header = {'X-Api-Key' => '<your secure token>', 'Content-Type' => 'application/json'} http = Net::HTTP.new(uri.host, uri.port) http.use_ssl = true request = Net::HTTP::PUT.new(uri.request_uri, header) request.body = body.to_json response = http.request(request)


fetch('https://<environmenturl>/api/devices/:id/mark_as_primary', {
  method: 'PUT',
  headers: {
    'X-Api-Key': '<your secure token>',
    'Content-Type': 'application/json'
  },
  body: JSON.stringify(data)
})
  .then(response => response.json())
  .then(data => console.log(data))
  .catch(error => console.error(error));

SUCCESS RESPONSE The request returns JSON structured like below on successfully update device

{
  "status": true
}

ERROR RESPONSE The request returns JSON structured like below for errors related to update device

{
  "errors": {
    "user_unauthorized": [
      "Sorry! You are not authorized to perform this action"
    ],
    "base": [
      "Unauthorize device cannot be set a primary!"
    ]
  },
  "status": false
}

This endpoint marks specific device as primary.

UAT HTTP Request

PUT https://nxt.api.q2pay.co.in/api/devices/:id/mark_as_primary

PRODUCTION HTTP Request

PUT https://nxt.api.q2pay.in/api/devices/:id/mark_as_primary

Service Details

Service ID Description
Sup_SPDevice Update primary device

Unauthorize Device

curl -X PUT "https://<environmenturl>/api/devices/:id/mark_as_unauthorized"
  -H "X-Api-Key: <your secure token>"
  -H "Content-Type: application/json"
require 'net/http'
require 'uri'
require 'json'

uri = URI.parse("https://<environmenturl>/api/devices/:id/mark_as_unauthorized") header = {'X-Api-Key' => '<your secure token>', 'Content-Type' => 'application/json'} http = Net::HTTP.new(uri.host, uri.port) http.use_ssl = true request = Net::HTTP::PUT.new(uri.request_uri, header) request.body = body.to_json response = http.request(request)


fetch('https://<environmenturl>/api/devices/:id/mark_as_unauthorized', {
  method: 'PUT',
  headers: {
    'X-Api-Key': '<your secure token>',
    'Content-Type': 'application/json'
  },
  body: JSON.stringify(data)
})
  .then(response => response.json())
  .then(data => console.log(data))
  .catch(error => console.error(error));

SUCCESS RESPONSE The request returns JSON structured like below on successfully update device

{
  "status": true
}

ERROR RESPONSE The request returns JSON structured like below for errors related to update device

{
  "status": false,
  "errors": {
    "base": [
      "Invalid token format"
    ]
  }
}

This endpoint marks specific device as unauthorized.

UAT HTTP Request

PUT https://nxt.api.q2pay.co.in/api/devices/:id/mark_as_unauthorized

PRODUCTION HTTP Request

PUT https://nxt.api.q2pay.in/api/devices/:id/mark_as_unauthorized

Service Details

Service ID Description
Sup_UDevice Update unauthorized device

Generate API Token

curl -X POST "https://<environmenturl>/api/devices/:id/generate_api_token"
  -H "X-Api-Key: <your secure token>"
  -H "Content-Type: application/json"

require 'net/http'
require 'uri'
require 'json'

uri = URI.parse("https://<environmenturl>/api/devices/:id/generate_api_token") header = {'X-Api-Key' => '<your secure token>', 'Content-Type' => 'application/json'} http = Net::HTTP.new(uri.host, uri.port) http.use_ssl = true request = Net::HTTP::POST.new(uri.request_uri, header) request.body = body.to_json response = http.request(request)


fetch('https://<environmenturl>/api/devices/:id/generate_api_token', {
  method: 'POST',
  headers: {
    'X-Api-Key': '<your secure token>',
    'Content-Type': 'application/json'
  },
  body: JSON.stringify(data)
})
  .then(response => response.json())
  .then(data => console.log(data))
  .catch(error => console.error(error));

SUCCESS RESPONSE The request returns successfully JSON response after token generation

  {
    "status": true,
    "device_details": {
      "id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
      "last_used": 1690795413,
      "logged_in_flag": "N",
      "logged_in_time": 1690795351,
      "platform": "web",
      "browser_name": "Google Chrome",
      "os_version": "Windows 10",
      "is_primary": false,
      "is_unauthorized": false,
      "is_verified": false,
      "created_by_name": "Roshan Patel",
      "entity_id": "xxxxxx",
      "q2p_token": "<your secure token>"
    }
  }

ERROR RESPONSE The request returns JSON response like below for errors related to generate token

{
  "status": false
  "errors": {
    "user_unauthorized": [
      "Sorry! You are not authorized to perform this action"
    ],
    "base": [
      "Invalid token format"
    ],
    "base": [
      "Cannot generate an API token for an unauthorized device!"
    ]
  }
}

This endpoint return authorization token for specific device.

UAT HTTP Request

POST https://nxt.api.q2pay.co.in/api/devices/:id/generate_api_token

PRODUCTION HTTP Request

POST https://nxt.api.q2pay.in/api/devices/:id/generate_api_token

Service Details

Service ID Description
GenerateAPIToken Generate token for specific device

Delete Device

curl -X DELETE "https://<environmenturl>/api/devices/:id"
  -H "X-Api-Key: <your secure token>"
  -H "Content-Type: application/json"
require 'net/http'
require 'uri'
require 'json'

uri = URI.parse("https://<environmenturl>/api/devices/:id") header = {'X-Api-Key' => '<your secure token>', 'Content-Type' => 'application/json'} http = Net::HTTP.new(uri.host, uri.port) http.use_ssl = true request = Net::HTTP::DELETE.new(uri.request_uri, header) request.body = body.to_json response = http.request(request)


fetch('https://<environmenturl>/api/devices/:id', {
  method: 'DELETE',
  headers: {
    'X-Api-Key': '<your secure token>',
    'Content-Type': 'application/json'
  },
  body: JSON.stringify(data)
})
  .then(response => response.json())
  .then(data => console.log(data))
  .catch(error => console.error(error));

SUCCESS RESPONSE The request returns JSON structured like below on successfully delete device

{
  "status": true
}

ERROR RESPONSE The request returns JSON structured like below for errors related to delete device

{
  "status": false,
  "errors": "Not Found"
}

This endpoint deletes a specific device.

UAT HTTP Request

DELETE https://nxt.api.q2pay.co.in/api/devices/:id

PRODUCTION HTTP Request

DELETE https://nxt.api.q2pay.in/api/devices/:id

Service Details

Service ID Description
DDevice To delete device

Revoke Token

curl -X DELETE "https://<environmenturl>/api/devices/revoke_api_token"
  -H "X-Api-Key: <your secure token>"
  -H "Content-Type: application/json"
  -d "{
        "api_token": "<your secure token>"
      }"
require 'net/http'
require 'uri'
require 'json'

uri = URI.parse("https://<environmenturl>/api/devices/revoke_api_token") header = {'X-Api-Key' => '<your secure token>', 'Content-Type' => 'application/json'} body ={
"api_token": "<your secure token>" } http = Net::HTTP.new(uri.host, uri.port) http.use_ssl = true request = Net::HTTP::DELETE.new(uri.request_uri, header) request.body = body.to_json response = http.request(request)


const data ={
              "api_token": "<your secure token>"
            }
fetch('https://<environmenturl>/api/devices/revoke_api_token', {
  method: 'DELETE',
  headers: {
    'X-Api-Key': '<your secure token>',
    'Content-Type': 'application/json'
  },
  body: JSON.stringify(data)
})
  .then(response => response.json())
  .then(data => console.log(data))
  .catch(error => console.error(error));

The below example can be sent as a request to the API.

{
  "api_token": "<your secure token>"
}

SUCCESS RESPONSE The request returns JSON structured like below on successfully revoke token

{
  "status": true
}

ERROR RESPONSE The request returns JSON structured like below for errors related to revoke token

{
  "status": false,
  "errors": {
    "user_unauthorized": [
      "Sorry! You are not authorized to perform this action"
    ]
  }
}

This endpoint will revoke authorization token for an API specific device.

UAT HTTP Request

DELETE https://nxt.api.q2pay.co.in/api/devices/revoke_api_token

PRODUCTION HTTP Request

DELETE https://nxt.api.q2pay.in/api/devices/revoke_api_token

Service Details

Service ID Description
DDevice To revoke device

Bank Account Details

Bank Account Details helps you to verify Account number and IFSC code for the branch of the related account.

Verify Bank Account Details

curl "https://<environmenturl>/api/verification/bank_account/verify"
  -H "X-Api-Key: <your secure token>"
  -H "Content-Type: application/json"
   -d "{
        "bank_account": "129856644",
        "ifsc_code": "ACBD0049"
       }"
require 'net/http'
require 'uri'
require 'json'

uri = URI.parse("https://<environmenturl>/api/verification/bank_account/verify") header = {'X-Api-Key' => '<your secure token>', 'Content-Type' => 'application/json'} body = { "bank_account": "129856644", "ifsc_code": "ACBD0049" } http = Net::HTTP.new(uri.host, uri.port) http.use_ssl = true request = Net::HTTP::Post.new(uri.request_uri, header) request.body = body.to_json response = http.request(request)

const data = {
  "bank_account": "129856644",
  "ifsc_code": "ACBD0049"
};

fetch('https://<environmenturl>/api/verification/bank_account/verify', { method: 'POST', headers: { 'X-Api-Key': '<your secure token>', 'Content-Type': 'application/json' }, body: JSON.stringify(data) }) .then(response => response.json()) .then(data => console.log(data)) .catch(error => console.error(error));

The below example can be sent as a request to the API.

{
  "bank_account": "129856644",
  "ifsc_code": "ACBD0049"
}

SUCCESS RESPONSE The request returns JSON structured like below

{
    "status": true,
    "verification_details": [
        {
            "bank_acc_no": "129856644",
            "ifsc_code": "ACBD0049",
            "legal_name": "xyz",
            "full_name": "xyz",
            "verification_flag": "Y",
            "is_virtual": "N",
            "verified_on": "xxxxx",
            "client_id": "xxxxxxxxxxxx",
            "account_exists": "Y",
            "bank_name": "ICIC",
            "district": "SANAND",
            "city": "AHMADABAD",
            "branch": "SANAND",
            "address": "SHOP NO 25,26,27 GROUND FLOOR,AAKAR ARCADEand RESIDENCY,AHMEDABAD SANAND HIGHWAY,SANAND "
        }
    ]
}

The below example can be sent as a virtual bank account request to the API.

{
  "bank_account": "AAAA56644",
  "ifsc_code": "ACBD0049",
  "full_name": "xyz"
}

SUCCESS RESPONSE The request returns JSON structured like below

{
    "status": true,
    "verification_details": [
        {
            "bank_acc_no": "129856644",
            "ifsc_code": "ACBD0049",
            "legal_name": "xyz",
            "full_name": "xyz",
            "verification_flag": "Y",
            "is_virtual": "Y",
            "verified_on": "xxxxx",
            "client_id": "xxxxxxxxxxxx",
            "account_exists": "Y",
            "bank_name": "ICIC",
            "district": "SANAND",
            "city": "AHMADABAD",
            "branch": "SANAND",
            "address": "SHOP NO 25,26,27 GROUND FLOOR,AAKAR ARCADEand RESIDENCY,AHMEDABAD SANAND HIGHWAY,SANAND"
        }
    ]
}

ERROR RESPONSE The request returns JSON structured like below for errors related to bank account

{
    "status": false,
    "errors": {
        "base":  [
            "Invalid Bank Account Number",
            "Invalid format for Bank Account Number",
            "Bank Account Number / IFSC cannot be blank",
            "Please try again later",
            "Bank account is too long (maximum is 18 characters)"
        ],
        "legal_name": [
            "Legal name can't be blank"
        ],
        "full_name": [
            "Full name can't be blank"
        ]
} }

This endpoint will retrieve customer bank account verification.

UAT HTTP Request

POST https://nxt.api.q2pay.co.in/api/verification/bank_account/verify

PRODUCTION HTTP Request

POST https://nxt.api.q2pay.in/api/verification/bank_account/verify

Query Parameters

Parameter Default Description Required Sample
bank_account N.A. User bank account number Yes "129856644"
ifsc_code N.A. User ifsc code Yes "ACBD0049"
full_name N.A. full name for bank account number optional "xyz"

Service Details

Service ID Description
VBank Verify Bank Acccount details

PAN ( Permanent Account Number )

Verification help to manage verification lifecycle for your organization.

Get specific PAN

curl -X GET "https://<environmenturl>/api/verification/pan/:PAN"
  -H "X-Api-Key: <your secure token>"
  -H "Content-Type: application/json"
require 'net/http'
require 'uri'
require 'json'

uri = URI.parse("https://<environmenturl>/api/verification/pan/:PAN") header = {'X-Api-Key' => '<your secure token>', 'Content-Type' => 'application/json'} http = Net::HTTP.new(uri.host, uri.port) http.use_ssl = true request = Net::HTTP::Get.new(uri.request_uri, header) request.body = body.to_json response = http.request(request)

const data = {};

fetch('https://<environmenturl>/api/verification/pan/:PAN', { method: 'GET', headers: { 'X-Api-Key': '<your secure token>', 'Content-Type': 'application/json' }, body: JSON.stringify(data) }) .then(response => response.json()) .then(data => console.log(data)) .catch(error => console.error(error));

SUCCESS RESPONSE The request returns JSON structured like below on successfully response PAN

{
  "status": true,
  "pan_details": {
    "pan_number": "AAACQ0519L",
    "full_name": "First Middle Last"
  }
}

SUCCESS RESPONSE The request returns JSON structured like below on successfully response for pan with gstin (if gstin available in specific pan)

{
  "status": true,
  "pan_details": {
    "pan_number": "AAACQ0519L",
    "full_name": "Q2PAY TECHNOLOGIES PRIVATE LIMITED"
  },
  "gstin_details": [
    {
      "pan_no": "AAACQ0519L",
      "gstin_no": "27AAACQ5359D2ZY",
      "business_name": "Q2PAY TECHNOLOGIES PRIVATE LIMITED",
      "address": "6th Floor, 601, Mangal Bhavna, 14th Khar Pali Road Corner, Above Jai Jawan Restaurant, Khar West, Mumbai, Mumbai Suburban, Maharashtra, 400052",
      "date_of_registration": "2018-06-01",
      "state": "Maharashtra",
      "state_code": "27",
      "state_jurisdiction": "State - Maharashtra,Zone - MUMBAI_NORTH_WEST,Division - SANTACRUZ,Charge - KHAR-DANDA_701",
      "status": "Active",
      "field_visit_conducted": "No",
      "constitution_of_business": "Private Limited Company",
      "taxpayer_type": "Regular"
    }
  ]
}

ERROR RESPONSE The request returns JSON structured like below for errors related to find PAN

{
  "status": false,
  "errors": {
    "base":[
      "Record not found"
    ]
  }
}

This endpoint retrieves information about specific PAN.

UAT HTTP Request

GET https://nxt.api.q2pay.co.in/api/verification/pan/:PAN

PRODUCTION HTTP Request

GET https://nxt.api.q2pay.in/api/verification/pan/:PAN

Service ID Description
VPAN To view pan details

Verify specific PAN

curl -X POST "https://<environmenturl>/api/verification/pan/verify"
  -H "X-Api-Key: <your secure token>"
  -H "Content-Type: application/json"
  -b  "{
          "pan": "DFOPS3909J"
       }"
require 'net/http'
require 'uri'
require 'json'

uri = URI.parse("https://<environmenturl>/api/verification/pan/verify") header = {'X-Api-Key' => '<your secure token>', 'Content-Type' => 'application/json'} body = { "pan": "DFOPS3909J" } http = Net::HTTP.new(uri.host, uri.port) http.use_ssl = true request = Net::HTTP::POST.new(uri.request_uri, header) request.body = body.to_json response = http.request(request)

const data = {
               "pan": "DFOPS3909J"
             };

fetch('https://<environmenturl>/api/verification/pan/verify', { method: 'POST', headers: { 'X-Api-Key': '<your secure token>', 'Content-Type': 'application/json' }, body: JSON.stringify(data) }) .then(response => response.json()) .then(data => console.log(data)) .catch(error => console.error(error));

The below example can be sent as a request to the API.

{
  "pan": "DFOPS3909J"
}

SUCCESS RESPONSE The request returns JSON structured like below on successful find PAN

{
  "status": true,
  "pan_details": {
    "pan_number": "DFOPS3909J",
    "full_name": "First Middle Last",
    "client_id": "pan_special_code",
    "last_updated_on": 1680088928,
    "created_on": 1680088907
  }
}

ERROR RESPONSE The request returns JSON structured like below for errors related to find PAN

{
  "status": false,
  "errors": {
    "base":[
      "Record not found", 
      "PAN ID cannot be blank",
      "Invalid format for PAN ID",
      "Please try again later"
    ]
  }
}

This endpoint will verify the PAN.

UAT HTTP Request

POST https://nxt.api.q2pay.co.in/api/verification/pan/verify

PRODUCTION HTTP Request

POST https://nxt.api.q2pay.in/api/verification/pan/verify

Service Details

Service ID Description
Verify_Pan_No Verify pan id

IFSC ( Indian Financial System Code )

Verification help to manage Indian Financial System Code ( IFSC ) verification lifecycle for your organization.

Get search IFSC / Bank Name

curl "https://<environmenturl>/api/verification/ifsc/:search"
  -H "X-Api-Key: <your secure token>"
  -H "Content-Type: application/json"
require 'net/http'
require 'uri'
require 'json'

uri = URI.parse("https://<environmenturl>/api/verification/ifsc/:search") header = {'X-Api-Key' => '<your secure token>', 'Content-Type' => 'application/json'} http = Net::HTTP.new(uri.host, uri.port) http.use_ssl = true request = Net::HTTP::Get.new(uri.request_uri, header) response = http.request(request)


fetch('https://<environmenturl>/api/verification/ifsc/:search', {
  method: 'GET',
  headers: {
    'X-Api-Key': '<your secure token>',
    'Content-Type': 'application/json'
  },
  body: JSON.stringify(data)
})
  .then(response => response.json())
  .then(data => console.log(data))
  .catch(error => console.error(error));

SUCCESS RESPONSE The request returns JSON structured like below on successfully search for IFSC Code

{
  "status": true,
  "total_count": 1,
  "ifsc_details": [
    {
      "bank": "Bank of India",
      "branch": "CHALISGAON",
      "address": "HIRAPUR ROAD PLOT NO 443CHALISGAON 424101",
      "city": "CHALISGAON",
      "district": "CHALISGAON",
      "state": "MAHARASHTRA",
      "ifsc": "BKID0000674",
      "micr": "424013202",
      "contact": "+912589222177",
      "last_updated": 1691751999
    }
  ],
  "title": {
    "records": 1,
    "current_page": 1,
    "total_pages": 1,
    "page_item_count": 50
  }
}

SUCCESS RESPONSE The request returns JSON structured like below on successfully search for Bank Name

{
  "status": true,
  "total_count": 4,
  "ifsc_details": [
    {
      "bank": "Bank of India",
      "branch": "CHALISGAON",
      "address": "HIRAPUR ROAD PLOT NO 443CHALISGAON 424101",
      "city": "CHALISGAON",
      "district": "CHALISGAON",
      "state": "MAHARASHTRA",
      "ifsc": "BKID0000674",
      "micr": "424013202",
      "contact": "+912589222177",
      "last_updated": 1691751999
    },
    {
      "bank": "Bank of India",
      "branch": "RAJUR GANPATI",
      "address": "PLOT NO 795 JALNA JALGAON ROAD SH222 AT POST RAJUR TALUKA BHOKERDAN DIST JALNA",
      "city": "JALNA MAHARASHTRA",
      "district": "JALNA MAHARASHTRA",
      "state": "MAHARASHTRA",
      "ifsc": "BKID0000675",
      "micr": "431013506",
      "contact": "+919960200963",
      "last_updated": 1691762754
    },
    {
      "bank": "Bank of India",
      "branch": "WALCHANDNAGAR",
      "address": "AT POST WALCHANDNAGARDISTRICT PUNE",
      "city": "WALCHANDNAGAR DIST PUNE",
      "district": "WALCHANDNAGAR DIST PUNE",
      "state": "MAHARASHTRA",
      "ifsc": "BKID0000612",
      "micr": "413013541",
      "contact": "+912118252251",
      "last_updated": 1692850966
    },
    {
      "bank": "Bank of India",
      "branch": "BHUSAVAL",
      "address": "SUKHSAGAR JAMNER ROADNEW AREA BHUSAVALDIST JALGAON",
      "city": "BHUSAWAL DIST JALGAON",
      "district": "BHUSAWAL DIST JALGAON",
      "state": "MAHARASHTRA",
      "ifsc": "BKID0000673",
      "micr": "425013101",
      "contact": "+912582223557",
      "last_updated": 1695052200
    }
  ],
  "title": {
    "records": 4,
    "current_page": 1,
    "total_pages": 1,
    "page_item_count": 50
  }
}

ERROR RESPONSE The request returns JSON structured like below for errors related to find ifsc/bank name

{
  "status": false,
  "errors":{
    "base" :[
      "IFSC code cannot be blank",
      "Invalid format for IFSC",
      "Not Found IFSC Code",
      "Please try again later"
    ]
  }
}

This endpoint retrieves information IFSC / Bank.

UAT HTTP Request

GET https://nxt.api.q2pay.co.in/api/verification/ifsc/:search

PRODUCTION HTTP Request

GET https://nxt.api.q2pay.in/api/verification/ifsc/:search

Query Parameters

Parameter Default Description Required Sample
search N.A. Bank Name / IFSC Code Yes Bank Of India / BKID0000674
Service ID Description
VIFSC To view IFSC details

Get All Bank Names

curl "https://<environmenturl>/api/verification/bank/bank_list"
  -H "X-Api-Key: <your secure token>"
  -H "Content-Type: application/json"
require 'net/http'
require 'uri'
require 'json'

uri = URI.parse("https://<environmenturl>/api/verification/bank/bank_list") header = {'X-Api-Key' => '<your secure token>', 'Content-Type' => 'application/json'} http = Net::HTTP.new(uri.host, uri.port) http.use_ssl = true request = Net::HTTP::Get.new(uri.request_uri, header) response = http.request(request)


fetch('https://<environmenturl>/api/verification/bank/bank_list', {
  method: 'GET',
  headers: {
    'X-Api-Key': '<your secure token>',
    'Content-Type': 'application/json'
  },
  body: JSON.stringify(data)
})
  .then(response => response.json())
  .then(data => console.log(data))
  .catch(error => console.error(error));

SUCCESS RESPONSE The request returns JSON structured like below on successfully getting bank names

{
  "status": true,
  "bank_names": [
    "Abhyudaya Co-operative Bank",
    "Akola District Central Co-operative Bank",
    "Bank of India",
    "HDFC Bank",
    "ICICI Bank",
    "Kotak Mahindra Bank",
    "State Bank of India",
    "Union Bank of India"
  ]
}

This endpoint retrieves information about all bank names.

UAT HTTP Request

GET https://nxt.api.q2pay.co.in/api/verification/bank/bank_list

PRODUCTION HTTP Request

GET https://nxt.api.q2pay.in/api/verification/bank/bank_list

Service ID Description
VBank View bank name list

CIN ( Corporate Identification Number )

Verification help to manage Corporate Identification Number(CIN) verification lifecycle for your organization.

Get specific CIN

curl -X GET "https://<environmenturl>api/verification/cin/:CIN"
  -H "X-Api-Key: <your secure token>"
  -H "Content-Type: application/json"
require 'net/http'
require 'uri'
require 'json'

uri = URI.parse("https://<environmenturl>api/verification/cin/:CIN") header = {'X-Api-Key' => '<your secure token>', 'Content-Type' => 'application/json'} http = Net::HTTP.new(uri.host, uri.port) http.use_ssl = true request = Net::HTTP::Get.new(uri.request_uri, header) request.body = body.to_json response = http.request(request)

const data = {};

fetch('https://<environmenturl>api/verification/cin/:CIN', { method: 'GET', headers: { 'X-Api-Key': '<your secure token>', 'Content-Type': 'application/json' }, body: JSON.stringify(data) }) .then(response => response.json()) .then(data => console.log(data)) .catch(error => console.error(error));

SUCCESS RESPONSE The request returns JSON structured like below on successfully getting CIN

{
  "status": true,
  "cin_details": {
    "cin_number": "Z00012JK1785DFR000000",
    "client_id": "Company CIN",
    "company_name": "little star pvt limites",
    "incorporation_date": "2014-12-11",
    "phone_number": "9876543458",
    "company_address": "001, xyz colony,hjfjhfjfk",
    "email": "abc@ind.in",
    "company_class": "PRIV",
    "zip": 400000,
    "directors": [
      {
        "din_number": "123456",
        "director_name": "RADHA RANJANE"
      },
      {
        "din_number": "234567",
        "director_name": "OMKAR RAMTEKE"
      },
      {
        "din_number": "345678",
        "director_name": "MAYUR GORE"
      }
    ],
    "authorized_capital": 980000,
    "paid_up_capital": 90000,
    "last_agm_date": "2019-09-30",
    "last_bs_date": "2019-03-31",
    "company_status": "Active",
    "listed_status": "Unlisted",
    "last_updated_on": 1692606736,
    "created_on": 1692606736
  }
}

ERROR RESPONSE The request returns JSON structured like below for errors related to find CIN

{
  "status": false,
  "errors": {
    "base": [
      "Record not found"
    ]
  }
}

This endpoint retrieves information about specific CIN.

UAT HTTP Request

GET https://nxt.api.q2pay.co.in/api/verification/cin/:CIN

PRODUCTION HTTP Request

GET https://nxt.api.q2pay.in/api/verification/cin/:CIN

Service ID Description
VCIN To view CIN details

Verify specific CIN

curl -X POST "https://<environmenturl> /api/verification/cin/verify"
  -H "X-Api-Key: <your secure token>"
  -H "Content-Type: application/json"
  -b "{ 
        "cin" : "Z00012JK1785DFR000000"
      }"

require 'net/http'
require 'uri'
require 'json'

uri = URI.parse("https://<environmenturl> /api/verification/cin/verify") header = {'X-Api-Key' => '<your secure token>', 'Content-Type' => 'application/json'} body = { "cin": "Z00012JK1785DFR000000" } http = Net::HTTP.new(uri.host, uri.port) http.use_ssl = true request = Net::HTTP::POST.new(uri.request_uri, header) request.body = body.to_json response = http.request(request)

const data ={ 
              "cin": "Z00012JK1785DFR000000"
            };

fetch('https://<environmenturl>/api/verification/cin/verify', { method: 'POST', headers: { 'X-Api-Key': '<your secure token>', 'Content-Type': 'application/json' }, body: JSON.stringify(data) }) .then(response => response.json()) .then(data => console.log(data)) .catch(error => console.error(error));

The below example can be sent as a request to the API.

{
  "cin": "Z00012JK1785DFR000000"
}

SUCCESS RESPONSE The request returns JSON structured like below on successful verify CIN

{
  "status": true,
  "cin_details": {
    "cin_number": "Z00012JK1785DFR000000",
    "client_id": "corporate_CIN",
    "company_name": "little star pvt limites",
    "incorporation_date": "2014-12-11",
    "phone_number": "9876543458",
    "company_address": "001, xyz colony,hjfjhfjfk",
    "email": "abc@ind.in",
    "company_class": "PRIV",
    "zip": 400000,
    "directors": [
      {
        "din_number": "123456",
        "director_name": "RADHA RANJANE"
      },
      {
        "din_number": "234567",
        "director_name": "OMKAR RAMTEKE"
      },
      {
        "din_number": "345678",
        "director_name": "MAYUR GORE"
      }
    ],
    "authorized_capital": 980000,
    "paid_up_capital": 90000,
    "last_agm_date": "2019-09-30",
    "last_bs_date": "2019-03-31",
    "company_status": "Active",
    "listed_status": "Unlisted",
    "last_updated_on": 1692606736,
    "created_on": 1692606736
  }
}

ERROR RESPONSE The request returns JSON structured like below for errors related to Verify CIN

{
  "status": false,
  "errors":{
    "base":[
      "Record not found",
      "Invalid format for CIN ID",
      "CIN number cannot be blank",
      "Invalid CIN!",
      "Please try again later"
    ]
  }
}

This endpoint will verify the CIN.

UAT HTTP Request

POST https://nxt.api.q2pay.co.in/api/verification/cin/verify

PRODUCTION HTTP Request

POST https://nxt.api.q2pay.in/api/verification/cin/verify

Service Details

Service ID Description
Verify_Cin_No Verify CIN details

DIN ( Director Identification Number )

Verification help to manage Director Identification Number(DIN) verification lifecycle for your organization.

Get specific DIN

curl "https://<environmenturl>api/verification/din/:din"
  -H "X-Api-Key: <your secure token>"
  -H "Content-Type: application/json"
require 'net/http'
require 'uri'
require 'json'

uri = URI.parse("https://<environmenturl>api/verification/din/:din") header = {'X-Api-Key' => '<your secure token>', 'Content-Type' => 'application/json'} http = Net::HTTP.new(uri.host, uri.port) http.use_ssl = true request = Net::HTTP::Get.new(uri.request_uri, header) request.body = body.to_json response = http.request(request)


fetch('https://<environmenturl>api/verification/din/:din', {
  method: 'GET',
  headers: {
    'X-Api-Key': '<your secure token>',
    'Content-Type': 'application/json'
  },
  body: JSON.stringify(data)
})
  .then(response => response.json())
  .then(data => console.log(data))
  .catch(error => console.error(error));

SUCCESS RESPONSE The request returns JSON structured like below on successfully getting din

{
  "status": true,
  "din_details": {
    "din_number": "99009900",
    "client_id": "corporate_din_oyyjkl_yyte",
    "full_name": "Suraj J",
    "father_name": "Kunal J",
    "dob": "1977-08-06",
    "nationality": "IN",
    "present_address": "J-600-b, DHF PHASE - 7, GANGA, HR, 12112, India",
    "permanent_address": "J-600-b, DHF PHASE - 7, GANGA, HR, 12112, India",
    "pan_number": "FTTPK909Q",
    "companies_associated": " ",
    "email": "skj@gmail.com",
    "status": "success",
    "created_on": 19998909
    "last_updated_on": 100008899
    "cin_details": [
      {
        "cin_number": "XXXXMH2018PTC30XXXX",
        "client_id": "xxxxxx_cin_iftTkkuvKfivEBxxx",
        "company_name": "XXXX XXXX PRIVATE LIMITED",
        "incorporation_date": "2018-05-01",
        "phone_number": "",
        "company_address": "xxxxxx xxxx, xxxxx, Maharashtra, India",
        "email": "xxxx@xxxx.in",
        "company_class": "xxxx",
        "zip": "400052",
        "authorized_capital": "200000.0",
        "paid_up_capital": "100000.0",
        "last_agm_date": "2022-09-30",
        "last_bs_date": "2022-03-31",
        "company_status": "Active",
        "listed_status": "Unlisted",
        "attempted_count": 1,
        "created_at": 1697201962,
        "updated_at": 1697201962
      }
    ]
  }
}

ERROR RESPONSE The request returns JSON structured like below for errors related to find din

{
  "status": false,
  "errors":{
    "base": [
      "record not found"
    ]
  }
}

This endpoint retrieves information about specific DIN.

UAT HTTP Request

GET https://nxt.api.q2pay.co.in/api/verification/din/:din

PRODUCTION HTTP Request

GET https://nxt.api.q2pay.in/api/verification/din/:din

Service ID Description
VDIN To view DIN details

Verify specific DIN

curl -X POST "https://<environmenturl> /api/verification/din/verify"
  -H "X-Api-Key: <your secure token>"
  -H "Content-Type: application/json"
  -B "{
        "din": "99009900"
      }"
require 'net/http'
require 'uri'
require 'json'

uri = URI.parse("https://<environmenturl> /api/verification/din/verify") header = {'X-Api-Key' => '<your secure token>', 'Content-Type' => 'application/json'} body = { "din": "99009900" } http = Net::HTTP.new(uri.host, uri.port) http.use_ssl = true request = Net::HTTP::POST.new(uri.request_uri, header) request.body = body.to_json response = http.request(request)

const data = {
  "din": "99009900"
  };

fetch('https://<environmenturl>/api/verification/din/verify', { method: 'POST', headers: { 'X-Api-Key': '<your secure token>', 'Content-Type': 'application/json' }, body: JSON.stringify(data) }) .then(response => response.json()) .then(data => console.log(data)) .catch(error => console.error(error));

The below example can be sent as a request to the API.

{
  "din": "99009900"
}

SUCCESS RESPONSE The request returns JSON structured like below on successful verify din


{
  "status": true,
  "din_details": {
    "din_number": "99009900",
    "client_id": "corporate_din_oyyjkl_yyte",
    "full_name": "Suraj J",
    "father_name": "Kunal J",
    "dob": "1977-08-06",
    "nationality": "IN",
    "present_address": "J-600-b, DHF PHASE - 7, GANGA, HR, 12112, India",
    "permanent_address": "J-600-b, DHF PHASE - 7, GANGA, HR, 12112, India",
    "pan_number": "FTTPK909Q",
    "companies_associated": " ",
    "email": "skj@gmail.com",
    "status": "success",
    "created_on": 19998909
    "last_updated_on": 100008899
    "cin_details": [
      {
        "cin_number": "XXXXMH2018PTC30XXXX",
        "client_id": "xxxxxx_cin_iftTkkuvKfivEBxxx",
        "company_name": "XXXX XXXX PRIVATE LIMITED",
        "incorporation_date": "2018-05-01",
        "phone_number": "",
        "company_address": "xxxxxx xxxx, xxxxx, Maharashtra, India",
        "email": "xxxx@xxxx.in",
        "company_class": "xxxx",
        "zip": "400052",
        "authorized_capital": "200000.0",
        "paid_up_capital": "100000.0",
        "last_agm_date": "2022-09-30",
        "last_bs_date": "2022-03-31",
        "company_status": "Active",
        "listed_status": "Unlisted",
        "attempted_count": 1,
        "created_at": 1697201962,
        "updated_at": 1697201962
      }
    ]
  }
}

ERROR RESPONSE The request returns JSON structured like below for errors related to Verify din

{
  "status": false,
  "errors":{
    "base":[
      "Invalid format for din ID",
      "Invalid DIN",
      "DIN number cannot be blank",
      "Please try again later"
    ]
  }
}

This endpoint will verify the DIN.

UAT HTTP Request

POST https://nxt.api.q2pay.co.in/api/verification/din/verify

PRODUCTION HTTP Request

POST https://nxt.api.q2pay.in/api/verification/din/verify

Service Details

Service ID Description
Verify_Din_No Verify din details

GSTIN ( Goods and Services Tax Identification Number )

Verification help to manage Goods and Services Tax Identification Number(GSTIN) verification lifecycle for your organization.

Get specific GSTIN

curl -X GET "https://<environmenturl>api/verification/gstin/:gstin"
  -H "X-Api-Key: <your secure token>"
  -H "Content-Type: application/json"
require 'net/http'
require 'uri'
require 'json'

uri = URI.parse("https://<environmenturl>api/verification/gstin/:gstin") header = {'X-Api-Key' => '<your secure token>', 'Content-Type' => 'application/json'} http = Net::HTTP.new(uri.host, uri.port) http.use_ssl = true request = Net::HTTP::Get.new(uri.request_uri, header) request.body = body.to_json response = http.request(request)

const data = {};

fetch('https://<environmenturl>api/verification/gstin/:gstin', { method: 'GET', headers: { 'X-Api-Key': '<your secure token>', 'Content-Type': 'application/json' }, body: JSON.stringify(data) }) .then(response => response.json()) .then(data => console.log(data)) .catch(error => console.error(error));

SUCCESS RESPONSE The request returns JSON structured like below on successfully getting GSTIN

{
  "status": true,
  "gstin_details": {
    "pan_no": "AAACQ0510K",
    "gstin_no": "13POICQ0519P1CR",
    "business_name": "TRAVEL.COM INDIA ",
    "address": "GEN. A. K. VAIDYA MARG BANDRA RECLAMATION, Nagaland, 400050",
    "date_of_registration": "2019-03-28",
    "state": "Nagaland",
    "state_code": "13",
    "state_jurisdiction": "Dimapur Ward",
    "status": "Active",
    "field_visit_conducted": "No",
    "constitution_of_business": "Private Company",
    "taxpayer_type": "Tax Collector"
  }
}

ERROR RESPONSE The request returns JSON structured like below for errors related to find GSTIN

{
  "status": false,
  "errors": {
    "base": [
      "Record not found"
    ]
  }
}

This endpoint retrieves information about specific GSTIN.

UAT HTTP Request

GET https://nxt.api.q2pay.co.in/api/verification/gstin/:gstin

PRODUCTION HTTP Request

GET https://nxt.api.q2pay.in/api/verification/gstin/:gstin

Service ID Description
VGSTIN To view GSTIN details

Verify specific GSTIN

curl -X POST "https://<environmenturl> /api/verification/gstin/verify"
  -H "X-Api-Key: <your secure token>"
  -H "Content-Type: application/json"
  -b "{ 
        "gstin": "09AAACQ0519P1JK"
      }"

require 'net/http'
require 'uri'
require 'json'

uri = URI.parse("https://<environmenturl> /api/verification/gstin/verify") header = {'X-Api-Key' => '<your secure token>', 'Content-Type' => 'application/json'} body = { "gstin": "09AAACQ0519P1JK" } http = Net::HTTP.new(uri.host, uri.port) http.use_ssl = true request = Net::HTTP::POST.new(uri.request_uri, header) request.body = body.to_json response = http.request(request)

const data ={ 
              "gstin": "09AAACQ0519P1JK"
            };

fetch('https://<environmenturl>/api/verification/gstin/verify', { method: 'POST', headers: { 'X-Api-Key': '<your secure token>', 'Content-Type': 'application/json' }, body: JSON.stringify(data) }) .then(response => response.json()) .then(data => console.log(data)) .catch(error => console.error(error));

The below example can be sent as a request to the API.

{
   "gstin": "09AAACQ0519P1JK"
}

SUCCESS RESPONSE The request returns JSON structured like below on successful verify GSTIN

{
  "status": true,
  "gstin_details": {
    "pan_no": "AAACQ0510K",
    "gstin_no": "09AAACQ0519P1JK",
    "business_name": "TRAVEL.COM INDIA ",
    "address": "GEN. A. K. VAIDYA MARG BANDRA RECLAMATION, Nagaland, 400050",
    "date_of_registration": "2019-03-28",
    "state": "Nagaland",
    "state_code": "13",
    "state_jurisdiction": "Dimapur Ward",
    "status": "Active",
    "field_visit_conducted": "No",
    "constitution_of_business": "Private Company",
    "taxpayer_type": "Tax Collector"
  }
}

ERROR RESPONSE The request returns JSON structured like below for errors related to Verify GSTIN

{
  "status": false,
  "errors":{
    "base":[
      "Invalid format for GSTIN",
      "GSTIN cannot be blank",
      "Invalid GSTIN!",
      "Please try again later"
    ]
  }
}

This endpoint will verify the GSTIN.

UAT HTTP Request

POST https://nxt.api.q2pay.co.in/api/verification/gstin/verify

PRODUCTION HTTP Request

POST https://nxt.api.q2pay.in/api/verification/gstin/verify

Service Details

Service ID Description
Verify_Gstin_No Verify GSTIN details

User

Users help manage user lifecycle for your organization.

Get All Users

curl -X GET "https://<environmenturl>/api/users"
  -H "X-Api-Key: <your secure token>"
  -H "Content-Type: application/json"
  -d "{ 
        "page_size": 2,
        "page_no": 1
      }"
require 'net/http'
require 'uri'
require 'json'

uri = URI.parse("https://<environmenturl>/api/users") header = {'X-Api-Key' => '<your secure token>', 'Content-Type' => 'application/json'} body = {"page_size" => 2, "page_no" => 1} http = Net::HTTP.new(uri.host, uri.port) http.use_ssl = true request = Net::HTTP::Get.new(uri.request_uri, header) request.body = body.to_json response = http.request(request)

const data ={
              page_size: 2,
              page_no: 1
            };

fetch('https://<environmenturl>/api/users', { method: 'GET', headers: { 'X-Api-Key': '<your secure token>', 'Content-Type': 'application/json' }, body: JSON.stringify(data) }) .then(response => response.json()) .then(data => console.log(data)) .catch(error => console.error(error));

The below example can be sent as a request to the API.

{
  "page_size": 2,
  "page_no": 1
}

SUCCESS RESPONSE The request returns JSON structured like below on successfully getting all users

{
  "status": true,
  "total_count": 439,
  "available_tags":[
    "dhule",
    "jalgaon", 
    "jammu", 
    "mumbai",
    "nashik", 
    "navi mumbai", 
    "pune", 
    "superviewaccess"
  ],
  "employees": [
    {
      "id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
      "user_id": "xxxxxxx",
      "entity_id": "xxxxxx",
      "first_name": "Sumit",
      "last_name": "Bagul",
      "mob_no": "7841841000",
      "email_id": "awfihd2@q2pay.in",
      "account_tags": ["pune"],
      "approval_status": "Y",
      "grade": "NoGrade",
      "alias_name": "xyzabc"
      "active_status": "Y",
      "is_authorized": "Y",
      "verified_email": "Y",
      "verified_sms": "Y",
      "first_login_flag": "Y",
      "created_by": "A Kamble",
      "created_by_name": "A Kamble",
      "created_on": "xxxxxxxx"
    },
    {
      "id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
      "user_id": "xxxxxxx",
      "entity_id": "xxxxxx",
      "first_name": "Mandar",
      "last_name": "Alase",
      "mob_no": "7841841677",
      "email_id": "Mandar001@q2pay.in",
      "account_tags": ["pune"],
      "approval_status": "Y",
      "grade": "NoGrade",
      "alias_name": "xyzabc"
      "active_status": "Y",
      "is_authorized": "Y",
      "verified_email": "Y",
      "verified_sms": "Y",
      "first_login_flag": "Y",
      "created_by": "A Kamble",
      "created_by_name": "A Kamble",
      "created_on": "xxxxxxxx"
    }
  ],
  "title": {
    "records": 13,
    "current_page": 5,
    "total_pages": 39,
    "page_item_count": 13,
    "previous_page": 4,
    "next_page": 6
  }
}

This endpoint retrieves all users.

UAT HTTP Request

GET https://nxt.api.q2pay.co.in/api/users

PRODUCTION HTTP Request

GET https://nxt.api.q2pay.in/api/users

Query Parameters

Parameter Default Description Required Sample
search_string NA If set to some phrase, the result will include users with first_name / last_name / identifier / full_name No Vivian, Dbritto, xxxx, Vivian Dbritto
page_size 50 If set to specific number, the result will include that number of transactions. No 10
page_no 1 If set to specific number, the result will include that page of transactions. No 2
entity_id NA If set, entity_id all users will be returned No ******
account_tags NA Account tags is used to filter the user optional ["superviewaccess"]

Service Details

Service ID Description
VEmp, MimicEntity View all Users

Get Specific User

curl -X GET "https://<environmenturl>/api/users/:user_id"
  -H "X-Api-Key: <your secure token>"
  -H "Content-Type: application/json"
require 'net/http'
require 'uri'
require 'json'

uri = URI.parse("https://<environmenturl>/api/users/:user_id") header = {'X-Api-Key' => '<your secure token>', 'Content-Type' => 'application/json'} body = {"page_size" => 2, "page_no" => 1} http = Net::HTTP.new(uri.host, uri.port) http.use_ssl = true request = Net::HTTP::Get.new(uri.request_uri, header) request.body = body.to_json response = http.request(request)

const data = {
  page_size: 2,
  page_no: 1
};

fetch('https://<environmenturl>/api/users/:user_id', { method: 'GET', headers: { 'X-Api-Key': '<your secure token>', 'Content-Type': 'application/json' }, body: JSON.stringify(data) }) .then(response => response.json()) .then(data => console.log(data)) .catch(error => console.error(error));

SUCCESS RESPONSE The request returns JSON structured like below on successfully getting user

{
  "status": true,
  "employees": [
    {
      "id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
      "user_id": "xxxxxx",
      "entity_id": "xxxxxx",
      "first_name": "Chintan",
      "last_name": "Q",
      "mob_no": "9664175316",
      "email_id": "emailc4d276d9-2af4-4f44-a5c4-d3e8e086bf52@example.org",
      "account_tags": ["pune"],
      "approval_status": "Y",
      "grade": "NoGrade",
      "alias_name": "gadjjsk",
      "field_force_account": "12345",
      "active_status": "Y",
      "is_authorized": "Y",
      "verified_email": "Y",
      "verified_sms": "Y",
      "first_login_flag": "Y",
      "created_by": "A Kamble",
      "created_by_name": "A Kamble",
      "created_on": "xxxxxxxx",
    }
  ],
  "pan_details": {
    "pan": "xxxxxxxxxx",
    "full_name": "xxxx xxxx",
    "client_id": "xxxxxxxxxxxxxxxxx",
    "created_on": 1698305363,
    "last_updated_on": 1698305363
  },
  "din_details": {
    "din_number": "xxxxxxxx",
    "client_id": "xxxxxxxxxxxxxxxxxx",
    "full_name": "xxxxx xxxx",
    "father_name": "xxxx xxxxx xxxx",
    "dob": "1978-07-31",
    "nationality": "IN",
    "present_address": "A-703, Dev City, P C N T D A Moshi, Spine Street",
    "permanent_address": "",
    "pan_number": "xxxxxxxxxx",
    "companies_associated": "[]",
    "email": "xxxxx@xxxx.in",
    "status": "success",
    "created_on": 1698305187,
    "last_updated_on": 1698305187
  },
  "cin_details": [
    {
      "cin_number": "xxxxxxxxxxxxxxxxxxxxx",
      "client_id": "xxxxxxxxxxxxxxxxxx",
      "company_name": "xx xxxxx xxxx xxxxxx",
      "incorporation_date": "2018-05-01",
      "phone_number": "",
      "company_address": "601 Mangal Bhavna,, 14th Khar Pali, Maharashtra, 400052, India, ",
      "email": "xxxxx@xxxx.in",
      "company_class": "xxxx",
      "zip": "400052",
      "directors": [
        {
          "din_number": "xxxxxxxxxx",
          "director_name": "xxxxxx xxxxx xxxxxx"
        },
        {
          "din_number": "xxxxxxxxx",
          "director_name": "xxxxx xxxxx xxxxxx"
        },
        {
          "din_number": "xxxxxxxxx",
          "director_name": "xxxxxx xxxx xxxxxx"
        }
      ],
      "authorized_capital": "200000.0",
      "paid_up_capital": "100000.0",
      "last_agm_date": "2022-09-30",
      "last_bs_date": "2022-03-31",
      "company_status": "Active",
      "listed_status": "Unlisted",
      "created_on": 1697201962,
      "last_updated_on": 1697201962
    }
  ],
  "user_roles": [
    {
      "role_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
      "role_name": "testing",
      "role_desc": "all testing"
    }
  ],
  "unassigned_user_roles": [
    {
      "role_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
      "role_name": "role name example",
      "role_desc": "role description"
    }
  ],
  "user_features": [
    {
      "feature_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
      "feature_name": "documentation",
      "feature_description": "all feature documentation"
    }
  ],
  "user_services": [
    { 
      "service_id": "ABCD 12",
      "service_header": "service abcd 12",
      "service_name": "service abcd",
      "service_desc": "to document service"
    }
  ]
  "title": {
    "records": 1,
    "current_page": 1,
    "total_pages": 1,
    "page_item_count": 1
  }
}

This endpoint retrieves specific user.

UAT HTTP Request

GET https://nxt.api.q2pay.co.in/api/users/:user_id

PRODUCTION HTTP Request

GET https://nxt.api.q2pay.in/api/users/:user_id

Service ID Description
VEmp View User

Create User

curl -X POST "https://<environmenturl>/api/users"
  -H "X-Api-Key: <your secure token>"
  -H "Content-Type: application/json"
  -d "{
  "active_status": "Y",
  "approval_status": "Y",
  "is_authorized": "Y",
  "auth_key": "xxxxxx",
  "identifier": "xxxxxx",
  "email": "Mandar8@q2pay.in",
  "entity_id": "xxxxxx",
  "first_name": "Mandar",
  "last_name": "Alase",
  "mob_no": "7841841677",
  "verified_email": "Y",
  "verified_sms": "N",
  "grade": "second User",
  "alias_name": "Akash"
}"
require 'net/http'
require 'uri'
require 'json'

uri = URI.parse("https://<environmenturl>/api/users") header = {'X-Api-Key' => '<your secure token>', 'Content-Type' => 'application/json'} body = { "active_status": "Y", "approval_status": "Y", "is_authorized": "Y", "auth_key": "xxxxxx", "identifier": "xxxxxx", "email": "Mandar8@q2pay.in", "entity_id": "xxxxxx", "first_name": "Mandar", "last_name": "Alase", "mob_no": "7841841677", "verified_email": "Y", "verified_sms": "N", "grade": "second User", "alias_name": "Akash" } http = Net::HTTP.new(uri.host, uri.port) http.use_ssl = true request = Net::HTTP::Post.new(uri.request_uri, header) request.body = body.to_json response = http.request(request)

const data ={
  "active_status": "Y",
  "approval_status": "Y",
  "is_authorized": "Y",
  "auth_key": "xxxxxx",
  "identifier": "xxxxxx",
  "email": "Mandar8@q2pay.in",
  "entity_id": "xxxxxx",
  "first_name": "Mandar",
  "last_name": "Alase",
  "mob_no": "7841841677",
  "verified_email": "Y",
  "verified_sms": "N",
  "grade": "second User",
  "alias_name": "Akash"
};

fetch('https://<environmenturl>/api/users', { method: 'POST', headers: { 'X-Api-Key': '<your secure token>', 'Content-Type': 'application/json' }, body: JSON.stringify(data) }) .then(response => response.json()) .then(data => console.log(data)) .catch(error => console.error(error));

The below example can be sent as a request to the API.

{
  "active_status": "Y",
  "approval_status": "Y",
  "is_authorized": "Y",
  "auth_key": "xxxxxx",
  "identifier": "xxxxxx",
  "email": "Mandar8@q2pay.in",
  "entity_id": "xxxxxx",
  "first_name": "Mandar",
  "last_name": "Alase",
  "mob_no": "7841841677",
  "verified_email": "Y",
  "verified_sms": "N",
  "grade": "second User",
  "alias_name": "Akash"
}

SUCCESS RESPONSE The request returns JSON structured like below on successful create user

{
  "status": true,
  "employees": [
    {
      "id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
      "user_id": "xxxxxx"
      "entity_id": "xxxxxx",
      "first_name": "Mandar",
      "last_name": "Alase",
      "mob_no": "7841841677",
      "email_id": "Mandar001@q2pay.in",
      "approval_status": "Y",
      "grade": "NoGrade",
      "alias_name": "xyzabc"
      "active_status": "Y",
      "is_authorized": "Y",
      "verified_email": "Y",
      "verified_sms": "Y",
      "first_login_flag": "Y",
      "register_accounts": {
      "reimbursement_accounts": {
          "beneficiary_account_id": "xxxxxxxx-xxxx-xxxx-xxxxxx"
        }
      },
      "created_by": "Ankit Wagh",
      "created_by_name": "A Kamble",
      "created_on": "xxxxxxxx"
    }
  ],
  "user_roles": [],
  "unassigned_user_roles": [
    {
      "role_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
      "role_name": "role name",
      "role_desc": "role description"
    },
    {
      "role_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
      "role_name": "role name example",
      "role_desc": "role description example"
    }
  ],
  "user_features": [],
  "user_services": [],
  "title": {
    "records": 1,
    "current_page": 1,
    "total_pages": 1,
    "page_item_count": 1
  }
}

ERROR RESPONSE The request returns JSON structured like below for errors related to create user

{
  "status": false,
  "errors": 
  {

"password": [ "Password can't be blank" ], "entity": [ "Entity must exist" ], "identifier": [ "Identifier can't be blank" ], "identifier": [ "Identifier Only letters and numbers are allowed" ], "first_name": [ "First name can't be blank" ], "first_name": [ "First name Only letters, hyphens, numbers and apostrophes are allowed" ], "last_name": [ "Last name Only letters, hyphens, numbers and apostrophes are allowed" ], "email": [ "Email can't be blank", "Email invalid", "Email is too short (minimum is 4 characters)" ], "mobile": [ "Mobile can't be blank", "Mobile is not a number", "Mobile must be a 10-digit number" ], "alias_name": [ "Alias name is too short (minimum is 3 characters)" ], "alias_name": [ "Alias name Only letters and numbers are allowed" ], "alias_name": [ "Alias name is not allowed" ], "beneficiary_account": [ "Beneficiary account must exist", "Beneficiary account is pending. User account cannot be updated. Kindly contact support.", "Beneficiary account is archived. User account cannot be updated. Kindly contact support.", "Beneficiary account is blocked. User account cannot be updated. Kindly contact support." ] } }

This endpoint create an user.

UAT HTTP Request

POST https://nxt.api.q2pay.co.in/api/users

PRODUCTION HTTP Request

POST https://nxt.api.q2pay.in/api/users

Query Parameters

Parameter Default Description Required Sample
identifier N.A. Identifier for login Yes xxxxxx
auth_key N.A. Auth key is necessary for verification Yes xxxxxx
entity_id N.A. Entity id for creating user Yes xxxxxx
first_name N.A. First name of user Yes Neha
last_name N.A. Last name of user No Patil
mob_no N.A. Mobile number for user Yes 7841841677
email N.A. Email of user Yes Mandar8@q2pay.in
active_status false Active status for user No Y/N
approval_status false Approval status for user No Y/N
is_authorized false Checking the authorization of User No Y/N
verified_email false Status of email verification for user No Y/N
verified_sms false Status of sms verification for user No Y/N
grade NoGrade User grade in the entity Yes second User
alias_name N.A User alias name (Nickname) No Rajesh
account N.A. register account to user No { "beneficiary_account_id": "xxxxxxxx-xxxx-xxxx-xxxxxx"}

Service Details

Service ID Description
CEmp Create User

Update User

curl -X PUT "https://<environmenturl>/api/users/:user_id"
  -H "X-Api-Key: <your secure token>"
  -H "Content-Type: application/json"
  -d "{ 
        "first_name": "Nikhil"
      }"
require 'net/http'
require 'uri'
require 'json'

uri = URI.parse("https://<environmenturl>/api/users/:user_id") header = {'X-Api-Key' => '<your secure token>', 'Content-Type' => 'application/json'} body = { "first_name": "Nikhil" } http = Net::HTTP.new(uri.host, uri.port) http.use_ssl = true request = Net::HTTP::Put.new(uri.request_uri, header) request.body = body.to_json response = http.request(request)

const data ={
              "first_name": "Nikhil"
            };

fetch('https://<environmenturl>/api/users/:user_id', { method: 'PUT', headers: { 'X-Api-Key': '<your secure token>', 'Content-Type': 'application/json' }, body: JSON.stringify(data) }) .then(response => response.json()) .then(data => console.log(data)) .catch(error => console.error(error));

The below example can be sent as a request to the API.

{
  "first_name": "Nikhil"
}

SUCCESS RESPONSE The request returns JSON structured like below on successfull user updation

{
  "status": true,
  "employees": [
    {
      "id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
      "user_id": "xxxxxx"
      "entity_id": "xxxxxx",
      "first_name": "Mandar",
      "last_name": "Alase",
      "mob_no": "7841841677",
      "email_id": "Mandar001@q2pay.in",
      "approval_status": "Y",
      "grade": "NoGrade",
      "alias_name": "Akash"
      "active_status": "Y",
      "is_authorized": "Y",
      "verified_email": "Y",
      "verified_sms": "Y",
      "first_login_flag": "Y",
      "created_by": "A Kamble",
      "created_by_name": "A Kamble",
      "created_on": "xxxxxxxx"
    }
  ],
  "user_roles": [
    {
      "role_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
      "role_name": "testing",
      "role_desc": "all testing"
    }
  ],
  "unassigned_user_roles": [
    {
      "role_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
      "role_name": "role name",
      "role_desc": "role description"
    },
    {
      "role_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
      "role_name": "role name example",
      "role_desc": "role description example"
    }
  ],
  "user_features": [
    {
      "feature_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
      "feature_name": "documentation",
      "feature_description": "all feature documentation"
    }
  ],
  "user_services": [
    {
      "service_id": "service 123",
      "service_header": "User",
      "service_name": "Test service",
      "service_desc": "service description example"
    },
    {
      "service_id": "service 123",
      "service_header": "User",
      "service_name": "Test service",
      "service_desc": "service description example"
    }
  ],
  "title": {
    "records": 1,
    "current_page": 1,
    "total_pages": 1,
    "page_item_count": 1
  }
}

ERROR RESPONSE The request returns JSON structured like below for errors related to update user

{
  "status": false,
  "errors": 
  {
    "entity": [
      "Entity must exist"
    ],
    "identifier": [
      "Identifier can't be blank"
    ],
    "identifier": [
      "Identifier Only letters and numbers are allowed"
    ],
    "first_name": [
      "First name can't be blank"
    ],
    "first_name": [
      "First name Only letters, hyphens, numbers and apostrophes are allowed"
    ],
    "last_name": [
      "Last name Only letters, hyphens, numbers and apostrophes are allowed"
    ]
    "email": [
      "Email can't be blank",
      "Email invalid",
      "Email is too short (minimum is 4 characters)"
    ],
    "mobile": [
      "Mobile can't be blank",
      "Mobile is not a number",
      "Mobile must be a 10-digit number"
    ]
  }
}

This endpoint update an user.

UAT HTTP Request

PUT https://nxt.api.q2pay.co.in/api/users/:user_id

PRODUCTION HTTP Request

PUT https://nxt.api.q2pay.in/api/users/:user_id

Query Parameters

Parameter Default Description Required Sample
identifier N.A. Identifier for login No xxxxxx
entity_id N.A. Entity id for creating user No xxxxxx
first_name N.A. First name of user No Neha
last_name N.A. Last name of user No Patil
mob_no N.A. Mobile number for user No 7841841677
email N.A. Email of user No Mandar8@q2pay.in
active_status false Active status for user No Y/N
approval_status false Approval status for user No Y/N
is_authorized false Checking the authorization of User No Y/N
verified_email false Status of email verification for user No Y/N
verified_sms false Status of sms verification for user No Y/N
grade NoGrade User grade in the entity No second User

Service Details

Service ID Description
Sup_Admin Update Identifier & entity_id
EEmp Update User

Delete User

curl -X DELETE "https://<environmenturl>/api/users/:user_id"
  -H "X-Api-Key: <your secure token>"
  -H "Content-Type: application/json"
  -d "{
        "entity_id":"xxxxxx"
      }"

require 'net/http'
require 'uri'
require 'json'
body = {
         "entity_id":"xxxxxx"
       }
uri = URI.parse("https://<environmenturl>/api/users/:user_id")
header = {'X-Api-Key' => '<your secure token>', 'Content-Type' => 'application/json'}
http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = true
request = Net::HTTP::DELETE.new(uri.request_uri, header)
request.body = body.to_json
response = http.request(request)

const data = {
               "entity_id":"xxxxxx"
             };

fetch('https://<environmenturl>/api/users/:user_id', { method: 'DELETE', headers: { 'X-Api-Key': '<your secure token>', 'Content-Type': 'application/json' }, body: JSON.stringify(data) }) .then(response => response.json()) .then(data => console.log(data)) .catch(error => console.error(error));

The below example can be sent as a request to the API.

{
  "entity_id":"xxxxxx"
}

SUCCESS RESPONSE The request returns JSON structured like below on successfully delete user

{
  "status": true
}

ERROR RESPONSE The request returns JSON structured like below for errors related to delete user

{ 
 "status": false,
 "errors": {
  "base": [
     "Entity ID / User are not matching / blank" 
     ]
  }
}

This endpoint deletes a specific user.

UAT HTTP Request

DELETE https://nxt.api.q2pay.co.in/api/users/:user_id

PRODUCTION HTTP Request

DELETE https://nxt.api.q2pay.in/api/users/:user_id

Query Parameters

Parameter Default Description Required Sample
entity_id N.A Entity id for user Yes xxxxxx

Service Details

Service ID Description
REmp Delete User

Create Alias

curl -X PUT "https://<environmenturl>/api/users/create_alias"
  -H "X-Api-Key: <your secure token>"
  -H "Content-Type: application/json"
  -d "{
        "alias_name": "harsha"
      }"
require 'net/http'
require 'uri'
require 'json'

uri = URI.parse("https://<environmenturl>/api/users/create_alias") header = {'X-Api-Key' => '<your secure token>', 'Content-Type' => 'application/json'} body = { "alias_name": "harsha", } http = Net::HTTP.new(uri.host, uri.port) http.use_ssl = true request = Net::HTTP::PUT.new(uri.request_uri, header) request.body = body.to_json response = http.request(request)

const data = {
               "alias_name": "harsha"
              };

fetch('https://<environmenturl>/api/users/create_alias', { method: 'PUT', headers: { 'X-Api-Key': '<your secure token>', 'Content-Type': 'application/json' }, body: JSON.stringify(data) }) .then(response => response.json()) .then(data => console.log(data)) .catch(error => console.error(error));

The below example can be sent as a request to the API.

{
  "alias_name": "harsha"
}

SUCCESS RESPONSE The request returns JSON structured like below on successful create alias name for user

{
  "status": true
}

ERROR RESPONSE The request returns JSON structured like below for errors related to alias name for user

{
  "status": false,
  "errors": 
  {
    "alias_name": [
      "Alias name has already been taken"
    ],
    "alias_name": [
      "Alias name is too short (minimum is 3 characters)"
    ],
    "alias_name": [
      "Alias name Only letters and numbers are allowed"
    ],
    "alias_name": [
      "Alias name is not allowed"
    ]
  }
}

This endpoint will create the alias for user.

UAT HTTP Request

PUT https://nxt.api.q2pay.co.in/api/users/create_alias

PRODUCTION HTTP Request

PUT https://nxt.api.q2pay.in/api/users/create_alias

Query Parameters

Parameter Default Description Required Sample
alias_name N.A Alias name for user Yes harsha

Service Details

Service ID Description
EEmp Update for user

Register Email

curl -X PUT "https://<environmenturl>/api/users/register/email"
  -H "X-Api-Key: <your secure token>"
  -H "Content-Type: application/json"
  -d "{
        "email": "xxxx@xxxx.xxx"
      }"
require 'net/http'
require 'uri'
require 'json'

uri = URI.parse("https://<environmenturl>/api/users/register/email") header = {'X-Api-Key' => '<your secure token>', 'Content-Type' => 'application/json'} body = { "email": "xxxx@xxxx.xxx" } http = Net::HTTP.new(uri.host, uri.port) http.use_ssl = true request = Net::HTTP::PUT.new(uri.request_uri, header) request.body = body.to_json response = http.request(request)

const data = {
               "email": "xxxx@xxxx.xxx"
             };

fetch('https://<environmenturl>/api/users/register/email', { method: 'PUT', headers: { 'X-Api-Key': '<your secure token>', 'Content-Type': 'application/json' }, body: JSON.stringify(data) }) .then(response => response.json()) .then(data => console.log(data)) .catch(error => console.error(error));

The below example can be sent as a request to the API for generation of OTP.

{
  "email": "xxxx@xxxx.xxx"
}

The below example can be sent as a request to the API for verification of email.

{
  "passcode": "xxxxxxxx",
  "email": "xxxx@xxxx.xxx"
}

SUCCESS RESPONSE The request returns JSON structured like below on successful generation of OTP

{
  "status": "generated",
  "message": "OTP has been successfully sent to xxxx@xxxx.xxx"
}

SUCCESS RESPONSE The request returns JSON structured like below on successful verification of email

{
  "status": true,
  "message": "Your email xxxx@xxxx.xxx has been verified."
}

ERROR RESPONSE The request returns JSON structured like below for errors related to generation of OTP

{
  "status": false,
  "errors": {
    "base": [
      "Invalid email",
      "Email cannot be blank."
    ]
  }
}

ERROR RESPONSE The request returns JSON structured like below for errors related to verification of email

{
  "status": "expired",
  "errors": {
    "base": [
      "OTP has been expired"
    ]
  }
}

{ "status": false, "errors": { "base": [ "Invalid / Incorrect OTP for verification", "Email cannot be blank." ] } }

This endpoint will generate OTP or verify the email for user.

UAT HTTP Request

PUT https://nxt.api.q2pay.co.in/api/users/register/email

PRODUCTION HTTP Request

PUT https://nxt.api.q2pay.in/api/users/register/email

Query Parameters for generation of OTP

Parameter Default Description Required Sample
email N.A Email Id for generation of OTP Yes xxxx@xxxx.xxx

Query Parameters for verification of email

Parameter Default Description Required Sample
email N.A Email Id for verification of OTP Yes xxxx@xxxx.xxx
passcode N.A Passcode for verification of OTP No xxxxxxxx

Service Details

Service ID Description
EEmp Update for User

Register Mobile

curl -X PUT "https://<environmenturl>/api/users/verify/mobile"
  -H "X-Api-Key: <your secure token>"
  -H "Content-Type: application/json"
  -d "{
        "mob_no":"xxxxxxxxxx"
      }"
require 'net/http'
require 'uri'
require 'json'

uri = URI.parse("https://<environmenturl>/api/users/verify/mobile") header = {'X-Api-Key' => '<your secure token>', 'Content-Type' => 'application/json'} body = { "mob_no":"xxxxxxxxxx" } http = Net::HTTP.new(uri.host, uri.port) http.use_ssl = true request = Net::HTTP::PUT.new(uri.request_uri, header) request.body = body.to_json response = http.request(request)

const data ={
              "mob_no":"xxxxxxxxxx"
            };

fetch('https://<environmenturl>/api/users/verify/mobile', { method: 'PUT', headers: { 'X-Api-Key': '<your secure token>', 'Content-Type': 'application/json' }, body: JSON.stringify(data) }) .then(response => response.json()) .then(data => console.log(data)) .catch(error => console.error(error));

The below example can be sent as a request to the API for generation of OTP.

{
 "mob_no":"xxxxxxxxxx"
}

The below example can be sent as a request to the API for verification of mobile number.

{
  "passcode": "xxxxxx",
  "mob_no": "xxxxxxxxxx"
}

SUCCESS RESPONSE The request returns JSON structured like below on successful generation of mobile OTP

{
  "status": "generated",
  "message": "OTP sent to your mobile number xxxxxxxxxx"
}

SUCCESS RESPONSE The request returns JSON structured like below on successful verification of mobile number

{
  "status": true,
  "message": "Your mobile xxxxxxxxxx has been verified."
}

ERROR RESPONSE The request returns JSON structured like below for errors related to generation of mobile OTP

{
  "status": false,
  "errors": {
    "base": [
      "Invalid mobile number",
      "Mobile number cannot be blank."
    ]
  }
}

ERROR RESPONSE The request returns JSON structured like below for errors related to verification of mobile number

{
  "status": "expired",
  "errors": {
    "base": [
      "OTP has been expired"
    ]
  }
}

{ "status": false, "errors": { "base": [ "Invalid / Incorrect OTP for verification", "Mobile number cannot be blank." ] } }

This endpoint will generate OTP or verify the mobile number for user.

UAT HTTP Request

PUT https://nxt.api.q2pay.co.in/api/users/verify/mobile

PRODUCTION HTTP Request

PUT https://nxt.api.q2pay.in/api/users/verify/mobile

Query Parameters for generation of OTP

Parameter Default Description Required Sample
mob_no N.A Mobile number for generation of OTP Yes xxxxxxxxxx

Query Parameters for verification of mobile number

Parameter Default Description Required Sample
mob_no N.A Mobile number for verification of OTP Yes xxxxxxxxxx
passcode N.A Passcode for verification of OTP No xxxxxx

Service Details

Service ID Description
EEmp Update for User

Register Account

curl -X PUT "https://<environmenturl>/api/users/register/account/:id"
  -H "X-Api-Key: <your secure token>"
  -H "Content-Type: application/json"
  -d "{
        "account": {
          "beneficiary_account_id": "xxxxxxxx-xxxx-xxxx-xxxxxx"
        }
    }"
require 'net/http'
require 'uri'
require 'json'

uri = URI.parse("https://<environmenturl>/api/users/register/account/:id") header = {'X-Api-Key' => '<your secure token>', 'Content-Type' => 'application/json'} body = { "account": { "beneficiary_account_id": "xxxxxxxx-xxxx-xxxx-xxxxxx" } } http = Net::HTTP.new(uri.host, uri.port) http.use_ssl = true request = Net::HTTP::PUT.new(uri.request_uri, header) request.body = body.to_json response = http.request(request)

const data ={
              "account": {
                "beneficiary_account_id": "xxxxxxxx-xxxx-xxxx-xxxxxx"
              }
            };

fetch('https://<environmenturl>/api/users/register/account/:id', { method: 'PUT', headers: { 'X-Api-Key': '<your secure token>', 'Content-Type': 'application/json' }, body: JSON.stringify(data) }) .then(response => response.json()) .then(data => console.log(data)) .catch(error => console.error(error));

The example below can be used as an API request to register a beneficiary account for the user..

{
  "account": {
    "beneficiary_account_id": "xxxxxxxx-xxxx-xxxx-xxxxxx"
  }
}

SUCCESS RESPONSE The request returns a JSON response structured as shown below upon successfully registering a beneficiary account for the user.

{
  "status": true,
  "employees": [
    {
      "id": "xxxxxxxx-xxxx-xxxx-xxxxxx",
      "user_id": "Q2PANUJ",
      "entity_id": "MH1214",
      "first_name": "anuj",
      "last_name": "shukla",
      "mob_no": "7387153454",
      "email_id": "anujshukla@q2pay.in",
      "account_tags": [
        "superviewaccess"
      ],
      "approval_status": "Y",
      "grade": "Approver",
      "active_status": "Y",
      "is_authorized": "Y",
      "verified_email": "Y",
      "verified_sms": "Y",
      "first_login_flag": "Y",
      "register_accounts": {
        "reimbursement_accounts": {
          "beneficiary_account_id": "xxxxxxxx-xxxx-xxxx-xxxxxx"
        }
      },
      "created_by": "Akshay Rangnekar",
      "created_by_name": "Akshay Rangnekar",
      "created_on": 1700643200
    }
  ],
  "user_roles": [],
  "unassigned_user_roles": [
    {
      "role_id": "baac2178-f7c9-4890-a269-20feb05d1d35",
      "role_name": "Vendor Trx MH1214",
      "role_desc": "Vendor Trx MH1214"
    },
    {
      "role_id": "da0b08ea-2e3c-480c-bcbb-955921702267",
      "role_name": "Admin MH1214",
      "role_desc": "MH1214 Admin"
    }
  ],
  "title": {
    "records": 1,
    "current_page": 1,
    "total_pages": 1,
    "page_item_count": 1
  }
}

ERROR RESPONSE The request returns a JSON response structured as shown below for errors related to beneficiary account registration

{
  "status": false,
  "errors": {
    "beneficiary_account": [
      "Beneficiary account must exist",
      "Beneficiary account is pending. User account cannot be updated. Kindly contact support.",
      "Beneficiary account is archived. User account cannot be updated. Kindly contact support.",
      "Beneficiary account is blocked. User account cannot be updated. Kindly contact support."
    ],
    "user": [
      "User doesn't belong to your entity."
    ]
  }
}

This endpoint will register a account for the user.

UAT HTTP Request

PUT https://nxt.api.q2pay.co.in/api/users/register/account/:id

PRODUCTION HTTP Request

PUT https://nxt.api.q2pay.in/api/users/register/account/:id

Query Parameters

Parameter Default Description Required Sample
account N.A. register account to user Yes { "beneficiary_account_id": "xxxxxxxx-xxxx-xxxx-xxxxxx"}

Service Details

Service ID Description
CEmp Create User
EEmp Update User

Change Password

curl -X PUT "https://<environmenturl>/api/users/change_password"
  -H "X-Api-Key: <your secure token>"
  -H "Content-Type: application/json"
  -d "{
        "old_pwd":"xxxxxx",
        "new_pwd1":"xxxxxx",
        "new_pwd2":"xxxxxx"
      }"
require 'net/http'
require 'uri'
require 'json'

uri = URI.parse("https://<environmenturl>/api/users/change_password") header = {'X-Api-Key' => '<your secure token>', 'Content-Type' => 'application/json'} body = { "old_pwd":"xxxxxx", "new_pwd1":"xxxxxx", "new_pwd2":"xxxxxx" } http = Net::HTTP.new(uri.host, uri.port) http.use_ssl = true request = Net::HTTP::PUT.new(uri.request_uri, header) request.body = body.to_json response = http.request(request)

const data ={
              "old_pwd":"xxxxxx",
              "new_pwd1":"xxxxxx",
              "new_pwd2":"xxxxxx"
            }

fetch('https://<environmenturl>/api/users/change_password', { method: 'PUT', headers: { 'X-Api-Key': '<your secure token>', 'Content-Type': 'application/json' }, body: JSON.stringify(data) }) .then(response => response.json()) .then(data => console.log(data)) .catch(error => console.error(error));

The below example can be sent as a request to the API.

{
  "old_pwd":"xxxxxx",
  "new_pwd1":"xxxxxx",
  "new_pwd2":"xxxxxx"
}

SUCCESS RESPONSE The request returns JSON structured like below on successfully update change password of user

{
  "status": true
}

ERROR RESPONSE The request returns JSON structured like below for errors related to incorrect password

{
  "status": false,
  "errors": {
    "base": [
      "Password is blank",
      "New password cannot be the same as the current password.",
      "User is unauthorised. Please check your User ID or password",
      "New password confirmation does not match"
    ]
  }
}

This endpoint will change the password for user.

UAT HTTP Request

PUT https://nxt.api.q2pay.co.in/api/users/change_password

PRODUCTION HTTP Request

PUT https://nxt.api.q2pay.in/api/users/change_password

Query Parameters

Parameter Default Description Required Sample
old_pwd N.A Old password for user Yes xxxxxx
new_pwd1 N.A New password for user Yes xxxxxx
new_pwd2 N.A New password for user to confirm Yes xxxxxx

Service Details

Service ID Description
CPwd Update for user

Reset Password

curl -X PUT "https://<environmenturl>/api/users/reset_password"
  -H "X-Api-Key: <your secure token>"
  -H "Content-Type: application/json"
  -d "{
        "user_id":"xxxxxx",
        "password": "xxxxxx",
        "entity_id":"xxxxxx",
        "pass_reset_flag":"Y"
      }"
require 'net/http'
require 'uri'
require 'json'

uri = URI.parse("https://<environmenturl>/api/users/reset_password") header = {'X-Api-Key' => '<your secure token>', 'Content-Type' => 'application/json'} body ={ "user_id":"xxxxxx", "password": "xxxxxx", "entity_id":"xxxxxx", "pass_reset_flag":"Y" } http = Net::HTTP.new(uri.host, uri.port) http.use_ssl = true request = Net::HTTP::PUT.new(uri.request_uri, header) request.body = body.to_json response = http.request(request)

const data = {
              "user_id":"xxxxxx",
              "password": "xxxxxx",
              "entity_id":"xxxxxx",
              "pass_reset_flag":"Y"
             }

fetch('https://<environmenturl>/api/users/reset_password', { method: 'PUT', headers: { 'X-Api-Key': '<your secure token>', 'Content-Type': 'application/json' }, body: JSON.stringify(data) }) .then(response => response.json()) .then(data => console.log(data)) .catch(error => console.error(error));

The below example can be sent as a request to the API.

{
  "user_id":"xxxxxx",
  "password": "xxxxxx",
  "entity_id":"xxxxxx",
  "pass_reset_flag":"Y"
}

SUCCESS RESPONSE The request returns JSON structured like below on successful reset password of user

{
"status": true
}

ERROR RESPONSE The request returns JSON structured like below for errors related to update user

{
  "status": false,
  "errors": {
    "base": [
      "User not present"
    ],
     "user_unauthorized": [
      "Sorry! You are not authorized to perform this action"
    ],
    "password": [
      "Password can't be blank"
    ]
  }
}

This endpoint will reset the password for user.

UAT HTTP Request

PUT https://nxt.api.q2pay.co.in/api/users/reset_password

PRODUCTION HTTP Request

PUT https://nxt.api.q2pay.in/api/users/reset_password

Query Parameters

Parameter Default Description Required Sample
user_id N.A User id for user Yes xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx
password N.A Password for user Yes xxxxxx
entity_id N.A Entity id for user Yes xxxxxx
pass_reset_flag N.A Password reset flag for user No Y

Service Details

Service ID Description
Admin Update for user

Reset Password Communicate

curl -X PUT "https://<environmenturl>/api/users/reset_password_communicate"
  -H "X-Api-Key: <your secure token>"
  -H "Content-Type: application/json"
  -d "{
  "user_id":"xxxxxx",
  "entity_id":"xxxxxx"
}"
require 'net/http'
require 'uri'
require 'json'

uri = URI.parse("https://<environmenturl>/api/users/reset_password_communicate") header = {'X-Api-Key' => '<your secure token>', 'Content-Type' => 'application/json'} body = { "user_id":"xxxxxx", "entity_id":"xxxxxx" } http = Net::HTTP.new(uri.host, uri.port) http.use_ssl = true request = Net::HTTP::PUT.new(uri.request_uri, header) request.body = body.to_json response = http.request(request)

const data ={
  "user_id":"xxxxxx",
  "entity_id":"xxxxxx"
}

fetch('https://<environmenturl>/api/users/reset_password_communicate', { method: 'PUT', headers: { 'X-Api-Key': '<your secure token>', 'Content-Type': 'application/json' }, body: JSON.stringify(data) }) .then(response => response.json()) .then(data => console.log(data)) .catch(error => console.error(error));

The below example can be sent as a request to the API.

{
  "user_id":"xxxxxx",
  "entity_id":"xxxxxx"
}

SUCCESS RESPONSE The request returns JSON structured like below on successful reset password communicate of user

{
  "status": true,
  "message": "Reset password email sent to user successfully."
}

ERROR RESPONSE The request returns JSON structured like below for errors related to reset password communicate of user

{
  "status": false,
  "errors": {
    "base": [
      "User_id/Entity_id cannot be blank"
    ]
  }
}

{ "status": false, "errors": { "base": [ "User not present" ] } }

This endpoint will reset the password communicate for user.

UAT HTTP Request

PUT https://nxt.api.q2pay.co.in/api/users/reset_password_communicate

PRODUCTION HTTP Request

PUT https://nxt.api.q2pay.in/api/users/reset_password_communicate

Query Parameters

Parameter Default Description Required Sample
user_id N.A User id for user Y Q2P0070
entity_id N.A Entity id for user Y FRT222

Service Details

Service ID Description
Admin Update for user

Assign Role To User

curl -X POST "https://<environmenturl>/api/users/:id/add_roles"
  -H "X-Api-Key: <your secure token>"
  -H "Content-Type: application/json"
  -d "{
        "user_roles_attributes": [
          {
            "role_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx"
          }
        ]
      }"
require 'net/http'
require 'uri'
require 'json'

uri = URI.parse("https://<environmenturl>/api/users/:id/add_roles") header = {'X-Api-Key' => '<your secure token>', 'Content-Type' => 'application/json'} body = { "user_roles_attributes": [ { "role_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx" } ] }

http = Net::HTTP.new(uri.host, uri.port) http.use_ssl = true request = Net::HTTP::Post.new(uri.request_uri, header) request.body = body.to_json response = http.request(request)

const data ={
              "user_roles_attributes": [
                {
                  "role_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx"
                }
              ]
            };

fetch('https://<environmenturl>/api/users/:id/add_roles', { method: 'POST', headers: { 'X-Api-Key': '<your secure token>', 'Content-Type': 'application/json' }, body: JSON.stringify(data) }) .then(response => response.json()) .then(data => console.log(data)) .catch(error => console.error(error));

The below example can be sent as a request to the API.

{
  "user_roles_attributes": [
    {
      "role_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx"
    }
  ]
}

SUCCESS RESPONSE The request returns JSON structured like below on successful create user role

{
  "status": true,
  "employees": [
   {
      "id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
      "user_id": "xxxxxxx",
      "entity_id": "xxxxxx",
      "first_name": "Sumit",
      "last_name": "Bagul",
      "mob_no": "7841841000",
      "email_id": "awfihd2@q2pay.in",
      "approval_status": "Y",
      "grade": "NoGrade",
      "alias_name": "xyzabc"
      "active_status": "Y",
      "is_authorized": "Y",
      "verified_email": "Y",
      "verified_sms": "Y",
      "first_login_flag": "Y",
      "created_by": "A Kamble",
      "created_by_name": "A Kamble",
      "created_on": "xxxxxxxx"
    }
  ],
  "user_roles": [
    {
      "role_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
      "role_name": "Role name",
      "role_desc": "Role Description"
    }
  ],
  "unassigned_user_roles": [
    {
      "role_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
      "role_name": "role name",
      "role_desc": "role description"
    },
    {
      "role_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
      "role_name": "role name example",
      "role_desc": "role description example"
    }
  ]
  "user_features": [
     {
      "feature_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
      "feature_name": "Feature name",
      "feature_description": "feature Description"
    }
  ],
  "user_services": [
    {
      "service_id": "service id example",
      "service_header": "service header",
      "service_name": "Service name",
      "service_desc": "service descripton example"
    }
  ],
  "title": {
    "records": 1,
    "current_page": 1,
    "total_pages": 1,
    "page_item_count": 1
  }
}

ERROR RESPONSE The request returns JSON structured like below for errors related to create user role

{
  "status": false,
  "errors": {
     "user_roles.role": [
      "User roles role must exist"
    ],
    "user_roles.user_id": [
      "User roles user has already been taken"
    ],
    [
      "Role & User do not belong to same entity"
    ],
    "base": [
      "User not present"
    ]
  }
}

This endpoint create an user role.

UAT HTTP Request

POST https://nxt.api.q2pay.co.in/api/users/:id/add_roles

PRODUCTION HTTP Request

POST https://nxt.api.q2pay.in/api/users/:id/add_roles

Query Parameters

Parameter Default Description Required Sample
role_id N.A. Role Id Yes xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx

Service Details

Service ID Description
Admin, CRole_User Create User Role

Remove Role From User

curl -X DELETE "https://<environmenturl>/api/users/:id/remove_role"
  -H "X-Api-Key: <your secure token>"
  -H "Content-Type: application/json"
  -d "{
        "role_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx"
      }"
require 'net/http'
require 'uri'
require 'json'

uri = URI.parse("https://<environmenturl>/api/users/:id/remove_role") header = {'X-Api-Key' => '<your secure token>', 'Content-Type' => 'application/json'} body = { "role_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx" }

http = Net::HTTP.new(uri.host, uri.port) http.use_ssl = true request = Net::HTTP::Post.new(uri.request_uri, header) request.body = body.to_json response = http.request(request)

const data =
{
  "role_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx"
};

fetch('https://<environmenturl>/api/users/:id/remove_role', { method: 'DELETE', headers: { 'X-Api-Key': '<your secure token>', 'Content-Type': 'application/json' }, body: JSON.stringify(data) }) .then(response => response.json()) .then(data => console.log(data)) .catch(error => console.error(error));

The below example can be sent as a request to the API.

{
  "role_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx"
}

SUCCESS RESPONSE The request returns JSON structured like below on successful create user role

{
  "status": true,
  "employees": [
   {
      "id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
      "user_id": "xxxxxxx",
      "entity_id": "xxxxxx",
      "first_name": "Sumit",
      "last_name": "Bagul",
      "mob_no": "7841841000",
      "email_id": "awfihd2@q2pay.in",
      "approval_status": "Y",
      "grade": "NoGrade",
      "alias_name": "xyzabc"
      "active_status": "Y",
      "is_authorized": "Y",
      "verified_email": "Y",
      "verified_sms": "Y",
      "first_login_flag": "Y",
      "created_by": "A Kamble",
      "created_by_name": "A Kamble",
      "created_on": "xxxxxxxx"
    }
  ],
  "user_roles": [
    {
      "role_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
      "role_name": "Role name",
      "role_desc": "Role Description"
    }
  ],
  "unassigned_user_roles": [
    {
      "role_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
      "role_name": "role name",
      "role_desc": "role description"
    },
    {
      "role_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
      "role_name": "role name example",
      "role_desc": "role description example"
    }
  ]
  "user_features": [
     {
      "feature_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
      "feature_name": "Feature name",
      "feature_description": "feature Description"
    }
  ],
  "user_services": [
    {
      "service_id": "service id example",
      "service_header": "service header",
      "service_name": "Service name",
      "service_desc": "service descripton example"
    }
  ],
  "title": {
    "records": 1,
    "current_page": 1,
    "total_pages": 1,
    "page_item_count": 1
  }
}

ERROR RESPONSE The request returns JSON structured like below for errors related to create user role

{
  "status": false,
  "errors": {
    "base": [
      "User not found"
    ]
  }
}

This endpoint remove an user role.

UAT HTTP Request

DELETE https://nxt.api.q2pay.co.in/api/users/:id/remove_role

PRODUCTION HTTP Request

DELETE https://nxt.api.q2pay.in/api/users/:id/remove_role

Query Parameters

Parameter Default Description Required Sample
role_id N.A. Role Id Yes xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx

Service Details

Service ID Description
DRole Remove User Role

Add Tag Of User

curl -X PUT "https://<environmenturl>/api/users/add_tag"
  -H "X-Api-Key: <your secure token>"
  -H "Content-Type: application/json"
  -d "{
        "user_id": ["xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx", "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx"],
        "account_tags": ["bank"]
      }"
require 'net/http'
require 'uri'
require 'json'

uri = URI.parse("https://<environmenturl>/api/users/add_tag") header = {'X-Api-Key' => '<your secure token>', 'Content-Type' => 'application/json'} body = { "user_id": ["xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx", "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx"], "account_tags": ["bank"] } http = Net::HTTP.new(uri.host, uri.port) http.use_ssl = true request = Net::HTTP::PUT.new(uri.request_uri, header) request.body = body.to_json response = http.request(request)

const data = {
               "user_id": ["xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx", "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx"],
               "account_tags": ["bank"]
             };

fetch('https://<environmenturl>/api/users/add_tag', { method: 'PUT', headers: { 'X-Api-Key': '<your secure token>', 'Content-Type': 'application/json' }, body: JSON.stringify(data) }) .then(response => response.json()) .then(data => console.log(data)) .catch(error => console.error(error));

The below example can be sent as a request to the API.

{
  "user_id": ["xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx", "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx"],
  "account_tags": ["bank"]
}

SUCCESS RESPONSE The request returns JSON structured like below on successful response

{
  "status":true, 
  "successful_count":1,
  "unsuccessful_count":1, 
  "ids":{
    "successful_ids":[
      "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx"
    ], 
    "unsuccessful_ids": [
      { "id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx", "errors": "tag could not be added due to validation error" }
    ]
  }
}

ERROR RESPONSE The request returns JSON structured like below for errors related to add tag

{
  "status":false,
  "errors":{
    "base":[
      "Missing required parameters: user_id and/or account tags."
    ],
    "base":[
      "No valid account tags to add"
    ],
    "base":[
      "The user IDs are not present."
    ]
  }
}

This endpoint add tag of user.

UAT HTTP Request

PUT https://nxt.api.q2pay.co.in/api/users/add_tag

PRODUCTION HTTP Request

PUT https://nxt.api.q2pay.in/api/users/add_tag

Query Parameters

Parameter Default Description Required Sample
user_id N.A user_id for user Yes ["xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx","xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx" ]
account_tags N.A Account tag for user Yes ["bank"]

Service Details

Service ID Description
CTag Add tag for user

Remove Tag Of User

curl -X PUT "https://<environmenturl>/api/users/remove_tag"
  -H "X-Api-Key: <your secure token>"
  -H "Content-Type: application/json"
  -d "{
        "user_id": ["xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx", "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx"],
        "account_tags": ["bank"]
      }"
require 'net/http'
require 'uri'
require 'json'

uri = URI.parse("https://<environmenturl>/api/users/remove_tag") header = {'X-Api-Key' => '<your secure token>', 'Content-Type' => 'application/json'} body = { "user_id": ["xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx", "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx"], "account_tags": ["bank"] } http = Net::HTTP.new(uri.host, uri.port) http.use_ssl = true request = Net::HTTP::PUT.new(uri.request_uri, header) request.body = body.to_json response = http.request(request)

const data = {
               "user_id": ["xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx", "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx"],
               "account_tags": ["bank"]
             };

fetch('https://<environmenturl>/api/users/remove_tag', { method: 'PUT', headers: { 'X-Api-Key': '<your secure token>', 'Content-Type': 'application/json' }, body: JSON.stringify(data) }) .then(response => response.json()) .then(data => console.log(data)) .catch(error => console.error(error));

The below example can be sent as a request to the API.

{
  "user_id": ["xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx", "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx"],
  "account_tags": ["bank"]
}

SUCCESS RESPONSE The request returns JSON structured like below on successful response

{
  "status":true, 
  "successful_count":1,
  "unsuccessful_count":1, 
  "ids":{
    "successful_ids":[
      "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx"
    ], 
    "unsuccessful_ids": [
      { "id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx", "errors": "tag could not be removed due to validation error" }
    ]
  }
}

ERROR RESPONSE The request returns JSON structured like below for errors related to remove tag

{
  "status":false,
  "errors":{
    "base":[
      "Missing required parameters: user_id and/or account tags."
    ],
    "base":[
      "No valid account tags to remove"
    ],
    "base":[
      "The User IDs are not present."
    ],
    "base":[
      "Account Tags are not present in some users."
    ]
  }
}

This endpoint remove tag of user.

UAT HTTP Request

PUT https://nxt.api.q2pay.co.in/api/users/remove_tag

PRODUCTION HTTP Request

PUT https://nxt.api.q2pay.in/api/users/remove_tag

Query Parameters

Parameter Default Description Required Sample
user_id N.A user_id for user Yes ["xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx","xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx" ]
account_tags N.A Account tag for user Yes ["bank"]

Service Details

Service ID Description
DTag Remove tag for user

Initialized Two Factor Authentication Of User

curl -X PUT "https://<environmenturl>/api/users/init_two_fa"
  -H "X-Api-Key: <your secure token>"
  -H "Content-Type: application/json"
  -d "{
        "id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx"
      }"
require 'net/http'
require 'uri'
require 'json'

uri = URI.parse("https://<environmenturl>/api/users/init_two_fa") header = {'X-Api-Key' => '<your secure token>', 'Content-Type' => 'application/json'} body = { "id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx" } http = Net::HTTP.new(uri.host, uri.port) http.use_ssl = true request = Net::HTTP::PUT.new(uri.request_uri, header) request.body = body.to_json response = http.request(request)

const data = {
               "id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx"
             };

fetch('https://<environmenturl>/api/users/init_two_fa', { method: 'PUT', headers: { 'X-Api-Key': '<your secure token>', 'Content-Type': 'application/json' }, body: JSON.stringify(data) }) .then(response => response.json()) .then(data => console.log(data)) .catch(error => console.error(error));

The below example can be sent as a request to the API.

{
  "id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx"
}

SUCCESS RESPONSE The request returns JSON structured like below on successful response

{
    "status": true,
    "message": "Two Factor Authentication Initialized successfully",
    "data": {
        "email": "abc@q2pay.in",
        "totp_secret": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
    }
}

ERROR RESPONSE The request returns JSON structured like below for errors related intialized two factor authentication

{
  "status": false, 
  "errors": "Two Factor Authentication is already enabled" 
}

This endpoint will initialized two factor authentication of user.

UAT HTTP Request

PUT https://nxt.api.q2pay.co.in/api/users/init_two_fa

PRODUCTION HTTP Request

PUT https://nxt.api.q2pay.in/api/users/init_two_fa

Query Parameters

Parameter Default Description Required Sample
id N.A Id of the user Yes xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx

Service Details

Service ID Description
PLogin To Login User

Enable Two Factor Authentication Of User

curl -X PUT "https://<environmenturl>/api/users/enable_two_fa"
  -H "X-Api-Key: <your secure token>"
  -H "Content-Type: application/json"
  -d "{
        "id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
        "totp": "xxxxxx"
      }"
require 'net/http'
require 'uri'
require 'json'

uri = URI.parse("https://<environmenturl>/api/users/enable_two_fa") header = {'X-Api-Key' => '<your secure token>', 'Content-Type' => 'application/json'} body = { "id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx", "totp": "xxxxxx" } http = Net::HTTP.new(uri.host, uri.port) http.use_ssl = true request = Net::HTTP::PUT.new(uri.request_uri, header) request.body = body.to_json response = http.request(request)

const data = {
               "id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
               "totp": "xxxxxx"
             };

fetch('https://<environmenturl>/api/users/enable_two_fa', { method: 'PUT', headers: { 'X-Api-Key': '<your secure token>', 'Content-Type': 'application/json' }, body: JSON.stringify(data) }) .then(response => response.json()) .then(data => console.log(data)) .catch(error => console.error(error));

The below example can be sent as a request to the API.

{
  "id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
  "totp": "xxxxxx"
}

SUCCESS RESPONSE The request returns JSON structured like below on successful response

{
    "status": true,
    "message": "Two Factor Authentication enabled successfully",
    "data": {
        "backup_codes": [
            "xxxxxxx",
            "xxxxxxx",
            "xxxxxxx",
            "xxxxxxx",
            "xxxxxxx",
            "xxxxxxx",
            "xxxxxxx",
            "xxxxxxx",
            "xxxxxxx",
            "xxxxxxx"
        ]
    }
}

ERROR RESPONSE The request returns JSON structured like below for errors related enable two factor authentication

{
  "status": false, 
  "errors": "Two Factor Authentication is already enabled" 
}

ERROR RESPONSE The request returns JSON structured like below for errors related enable two factor authentication

{
   "status": false,
   "errors": {
        "base": [
            "Invalid Request",
            "Invalid TOTP"
        ]
}

This endpoint will enable two factor authentication of user.

UAT HTTP Request

PUT https://nxt.api.q2pay.co.in/api/users/enable_two_fa

PRODUCTION HTTP Request

PUT https://nxt.api.q2pay.in/api/users/enable_two_fa

Query Parameters

Parameter Default Description Required Sample
id N.A Id of the user Yes xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx
totp N.A totp for the user Yes xxxxxx

Service Details

Service ID Description
PLogin To Login User

Disable Two Factor Authentication Of User

curl -X PUT "https://<environmenturl>/api/users/disable_two_fa"
  -H "X-Api-Key: <your secure token>"
  -H "Content-Type: application/json"
  -d "{
        "id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx"
      }"
require 'net/http'
require 'uri'
require 'json'

uri = URI.parse("https://<environmenturl>/api/users/disable_two_fa") header = {'X-Api-Key' => '<your secure token>', 'Content-Type' => 'application/json'} body = { "id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx" } http = Net::HTTP.new(uri.host, uri.port) http.use_ssl = true request = Net::HTTP::PUT.new(uri.request_uri, header) request.body = body.to_json response = http.request(request)

const data = {
               "id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx"
             };

fetch('https://<environmenturl>/api/users/disable_two_fa', { method: 'PUT', headers: { 'X-Api-Key': '<your secure token>', 'Content-Type': 'application/json' }, body: JSON.stringify(data) }) .then(response => response.json()) .then(data => console.log(data)) .catch(error => console.error(error));

The below example can be sent as a request to the API.

{
  "id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx"
}

SUCCESS RESPONSE The request returns JSON structured like below on successful response

{
    "status": true,
    "message": "Two Factor Authentication disabled successfully"
}

ERROR RESPONSE The request returns JSON structured like below for errors related disable two factor authentication

{
  "status": false, 
  "errors": "Two Factor Authentication is already disabled"
}

This endpoint will disable two factor authentication of user.

UAT HTTP Request

PUT https://nxt.api.q2pay.co.in/api/users/disable_two_fa

PRODUCTION HTTP Request

PUT https://nxt.api.q2pay.in/api/users/disable_two_fa

Query Parameters

Parameter Default Description Required Sample
id N.A Id of the user Yes xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx

Service Details

Service ID Description
PLogin To Login User

User Feature

User feature helps you to manage lifecycle of specific features which can be assigned to user.

Get All User Features

curl -X GET "https://<environmenturl>/api/user_features"
  -H "X-Api-Key: <your secure token>"
  -H "Content-Type: application/json"
  -d { "page_size": 2,
        "page_no": 1
     }
require 'net/http'
require 'uri'
require 'json'

uri = URI.parse("https://<environmenturl>/api/user_features") header = {'X-Api-Key' => '<your secure token>', 'Content-Type' => 'application/json'} body = {"page_size" => 1, "page_no" => 1} http = Net::HTTP.new(uri.host, uri.port) http.use_ssl = true request = Net::HTTP::Get.new(uri.request_uri, header) request.body = body.to_json response = http.request(request)

const data = {
  "page_size": 1,
  "page_no": 1
};

fetch('https://<environmenturl>/api/user_features', { method: 'GET', headers: { 'X-Api-Key': '<your secure token>', 'Content-Type': 'application/json' }, body: JSON.stringify(data) }) .then(response => response.json()) .then(data => console.log(data)) .catch(error => console.error(error));

The below example can be sent as a request to the API.

{
  "page_size": 1,
  "page_no": 1
}

SUCCESS RESPONSE The request returns JSON structured like below

{
  "status": true,
  "total_count": 111,
  "features": [
    {
      "feature_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
      "feature_name": "ABCD AFARA AGAGAGA AHAHAHA",
      "feature_description": "ABDSSHS DERCD CVFRD",
      "feature_header": "test",
      "is_delete": "N",
      "privilege": "Admin",
      "created_by": "xxxxxx",
      "created_by_name": "jitendra",
      "created_on": 1689691628,
      "user_features_line_items": [
        {
          "id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
          "platform_service_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
          "service_id": "service is example 1",
          "service_header": "service header example 1",
          "service_desc": "service desc example 1",
           "service_name": "service name example 1"
        },
        {
          "id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
          "platform_service_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
          "service_id": "service is example 2",
          "service_header": "service header example 2",
          "service_desc": "service desc example 2",
           "service_name": "service name example 2"
        },
        {
          "id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
          "platform_service_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
          "service_id": "service is example 3",
          "service_header": "service header example 3",
          "service_desc": "service desc example 3",
          "service_name": "service name example 3"
        }
      ]
    },
    {
      "feature_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
      "feature_name": "ABCDFGTG",
      "feature_description": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
      "is_delete": "N",
      "privilege": "Super Admin",
      "created_by": "Q2S9907",
      "created_by_name": "jitendra",
      "created_on": 1689691628,
      "user_features_line_items": [
        {
          "id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
          "platform_service_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
          "service_id": "service is example 1",
          "service_header": "service header example 1",
          "service_desc": "service desc example 1",
          "service_name": "service name example 1"
        },
        {
          "id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
          "platform_service_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
          "service_id": "service is example 2",
          "service_header": "service header example 2",
          "service_desc": "service desc example 2",
          "service_name": "service name example 2"
        },
        {
          "id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
          "platform_service_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
          "service_id": "service is example 3",
          "service_header": "service header example 3",
          "service_desc": "service desc example 3",
          "service_name": "service name example 3"
        }
      ]
    }
  ],
  "title": {
    "records": 50,
    "current_page": 1,
    "total_pages": 3,
    "page_item_count": 50,
    "next_page": 2
  }
}

This endpoint retrieves all user features.

UAT HTTP Request

GET https://nxt.api.q2pay.co.in/api/user_features

PRODUCTION HTTP Request

GET https://nxt.api.q2pay.in/api/user_features

Query Parameters

Parameter Default Description Required Sample
search_string NA If set to some phrase, the result will include user_features with name / description / header No Abcd
page_size 50 If set to specific number, the result will include that number of user features. No 10
page_no 1 If set to specific number, the result will include that page of user features. No 2

Service Details

Service ID Description
SERVICE_VIEW_FEATURE View all User Features

Get specific User Feature

curl -X GET "https://<environmenturl>/api/user_features/:user_feature_id"
  -H "X-Api-Key: <your secure token>"
  -H "Content-Type: application/json"
require 'net/http'
require 'uri'
require 'json'
VCIN
uri = URI.parse("https://<environmenturl>/api/user_features/:user_feature_id")
header = {'X-Api-Key' => '<your secure token>', 'Content-Type' => 'application/json'}
http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = true
request = Net::HTTP::Get.new(uri.request_uri, header)
response = http.request(request)
fetch('https://<environmenturl>/api/user_features/:user_feature_id', {
  method: 'GET',
  headers: {
    'X-Api-Key': '<your secure token>',
    'Content-Type': 'application/json'
  }
})
  .then(response => response.json())
  .then(data => console.log(data))
  .catch(error => console.error(error));

SUCCESS RESPONSE The request returns JSON structured like below

{
  "status": true,
  "features": [
    {
      "feature_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
      "feature_name": "Approve Field Force Transaction ",
      "feature_description": "Approving Field Force Related Transactions",
      "feature_header": "test",
      "is_delete": "N",
      "privilege": "Admin",
      "created_by": "xxxxxx",
      "created_by_name": "jitendra",
      "created_on": 1689691628,
      "user_features_line_items": [
        {
          "id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
          "platform_service_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
          "service_id": "service is example 1",
          "service_header": "service header example 1",
          "service_desc": "service desc example 1"
          "service_name": "service name example 1"
        },
        {
          "id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
          "platform_service_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
          "service_id": "service is example 2",
          "service_header": "service header example 2",
          "service_desc": "service desc example 2",
          "service_name": "service name example 2"
        },
        {
          "id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
          "platform_service_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
          "service_id": "service is example 3",
          "service_header": "service header example 3",
          "service_desc": "service desc example 3",
          "service_name": "service name example 3"
        }
      ],
      "unassigned_platform_services": [
        {
          "id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
          "service_id": "service example",
          "service_header": "service header",
          "service_name": "service name",
          "service_desc": "service description"
        },
        {
          "id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
          "service_id": "service example 1",
          "service_header": "service header 1",
          "service_name": "service name 1",
          "service_desc": "service description 1"
        }
      ]
} ], "title": { "records": 1, "current_page": 1, "total_pages": 1, "page_item_count": 1 } }

This endpoint retrieves specific user feature assigned to user.

UAT HTTP Request

GET https://nxt.api.q2pay.co.in/api/user_features/:user_feature_id

PRODUCTION HTTP Request

GET https://nxt.api.q2pay.in/api/user_features/:user_feature_id

Service Details

Service ID Description
SERVICE_VIEW_FEATURE View User Feature

Create User Feature

curl -X POST "https://<environmenturl>/api/user_features"
  -H "X-Api-Key: <your secure token>"
  -H "Content-Type: application/json"
  -d {
       "name": "Tester 110",
       "description": "Aaa",
       "header": "test1",
       "user_feature_line_items_attributes": [
         {
           "platform_service_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx"
         }
       ]
}
require 'net/http'
require 'uri'
require 'json'

uri = URI.parse("https://<environmenturl>/api/user_features") header = {'X-Api-Key' => '<your secure token>', 'Content-Type' => 'application/json'} body = { "name": "Tester 110", "description": "Aaa", "header": "test1", "user_feature_line_items_attributes": [ { "platform_service_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx" } ] } http = Net::HTTP.new(uri.host, uri.port) http.use_ssl = true request = Net::HTTP::Post.new(uri.request_uri, header) request.body = body.to_json response = http.request(request)

const data = {
  "name": "Tester 110",
  "description": "Aaa",
  "header": "test1",
  "user_feature_line_items_attributes": [
    {
    "platform_service_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx"
    }
  ]
};

fetch('https://<environmenturl>/api/user_features', { method: 'POST', headers: { 'X-Api-Key': '<your secure token>', 'Content-Type': 'application/json' }, body: JSON.stringify(data) }) .then(response => response.json()) .then(data => console.log(data)) .catch(error => console.error(error));

The below example can be sent as a request to the API.

{
  "name": "Tester 110",
  "description": "Aaa",
  "header": "test1",
  "user_feature_line_items_attributes": [
    {
    "platform_service_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx"
    }
  ]
}

SUCCESS RESPONSE The request returns JSON structured like below on successful user feature creation

{
  "status": true,
  "features": [
    {
      "feature_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
      "feature_name": "Approve Field Force Transaction ",
      "feature_description": "Approving Field Force Related Transactions",
      "feature_header": "test",
      "is_delete": "N",
      "privilege": "Admin",
      "created_by": "xxxxxx",
      "created_by_name": "jitendra",
      "created_on": 1689691628,
      "user_features_line_items": [
        {
          "id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
          "platform_service_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
          "service_id": "service is example 1",
          "service_header": "service header example 1",
          "service_desc": "service desc example 1",
          "service_name": "service name example 1"
        },
        {
          "id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
          "platform_service_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
          "service_id": "service is example 2",
          "service_header": "service header example 2",
          "service_desc": "service desc example 2",
          "service_name": "service name example 2"
        },
        {
          "id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
          "platform_service_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
          "service_id": "service is example 3",
          "service_header": "service header example 3",
          "service_desc": "service desc example 3",
          "service_name": "service name example 3"
        }
      ],
      "unassigned_platform_services": [
        {
          "id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
          "service_id": "service example",
          "service_header": "service header",
          "service_name": "service name",
          "service_desc": "service description"
        },
        {
          "id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
          "service_id": "service example 1",
          "service_header": "service header 1",
          "service_name": "service name 1",
          "service_desc": "service description 1"
        }
      ]
} ], "title": { "records": 1, "current_page": 1, "total_pages": 1, "page_item_count": 1 } }

ERROR RESPONSE The request returns JSON structured like below for errors related to user feature creation

{
  "status": false,
  "errors": {
    "name": [
      "Name can't be blank"
    ],
    "name": [
      "Name has already been taken"
    ],
    "description": [
      "Description can't be blank"
    ],
    "header": [
      "Header can't be blank"
    ],
    "user_feature_line_items": [
      "User feature line items should have at least 1 feature defined."
    ],
     "user_feature_line_items.platform_service": [
      "User feature line items platform service must exist"
    ]
  }
}

This endpoint creates a user feature for a user.

UAT HTTP Request

POST https://nxt.api.q2pay.co.in/api/user_features

PRODUCTION HTTP Request

POST https://nxt.api.q2pay.in/api/user_features

Query Parameters

Parameter Default Description Required Sample
name N.A. Name of user feature Yes Test1
description N.A. Description for user feature Yes Anything
header N.A. Header for user feature Yes ttesterr
platform_service_id N.A. Platform service id for user feature Yes xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx

Service Details

Service ID Description
SERVICE_UPSERT_FEATURE Create User Feature

Update User Feature

curl -X PUT "https://<environmenturl>/api/user_features/:user_feature_id"
  -H "X-Api-Key: <your secure token>"
  -H "Content-Type: application/json"
  -d {
       "name": "Tester 110",
       "description": "Testing Feature",
       "header": "tester" 
     }
require 'net/http'
require 'uri'
require 'json'

uri = URI.parse("https://<environmenturl>/api/user_features/:user_feature_id") header = {'X-Api-Key' => '<your secure token>', 'Content-Type' => 'application/json'} body = { "name": "Tester 110", "description": "Testing Feature", "header": "tester" } http = Net::HTTP.new(uri.host, uri.port) http.use_ssl = true request = Net::HTTP::Put.new(uri.request_uri, header) request.body = body.to_json response = http.request(request)

const data = {
  "name": "Tester 110",
  "description": "Testing Feature",
  "header": "tester"
};

fetch('https://<environmenturl>/api/user_features/:user_feature_id', { method: 'PUT', headers: { 'X-Api-Key': '<your secure token>', 'Content-Type': 'application/json' }, body: JSON.stringify(data) }) .then(response => response.json()) .then(data => console.log(data)) .catch(error => console.error(error));

The below example can be sent as a request to the API.

{
  "name": "Tester 110",
  "description": "Testing Feature",
  "header": "tester"
}

SUCCESS RESPONSE The request returns JSON structured like below on successful user feature updation

{
  "status": true,
  "features": [
    {
      "feature_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
      "feature_name": "Approve Field Force Transaction ",
      "feature_description": "Approving Field Force Related Transactions",
      "feature_header": "test",
      "is_delete": "N",
      "privilege": "Admin",
      "created_by": "xxxxxx",
      "created_by_name": "jitendra",
      "created_on": 1689691628,
      "user_features_line_items": [
        {
          "id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
          "platform_service_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
          "service_id": "service is example 1",
          "service_header": "service header example 1",
          "service_desc": "service desc example 1",
          "service_name": "service name example 1"
        },
        {
          "id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
          "platform_service_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
          "service_id": "service is example 2",
          "service_header": "service header example 2",
          "service_desc": "service desc example 2",
          "service_name": "service name example 2"
        },
        {
          "id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
          "platform_service_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
          "service_id": "service is example 3",
          "service_header": "service header example 3",
          "service_desc": "service desc example 3",
          "service_name": "service name example 3"
        }
      ],
      "unassigned_platform_services": [
        {
          "id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
          "service_id": "service example",
          "service_header": "service header",
          "service_name": "service name",
          "service_desc": "service description"
        },
        {
          "id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
          "service_id": "service example 1",
          "service_header": "service header 1",
          "service_name": "service name 1",
          "service_desc": "service description 1"
        }
      ]
} ], "title": { "records": 1, "current_page": 1, "total_pages": 1, "page_item_count": 1 } }

ERROR RESPONSE The request returns JSON structured like below for errors related to user feature updation

{
  "status": false,
  "errors": {
    "name": [
      "Name can't be blank"
    ],
    "name": [
      "Name has already been taken"
    ],
    "description": [
      "Description can't be blank"
    ],
    "header": [
      "Header can't be blank"
    ]
  }
}

This endpoint updates a user feature assigned for user.

UAT HTTP Request

PUT https://nxt.api.q2pay.co.in/api/user_features/:user_feature_id

PRODUCTION HTTP Request

PUT https://nxt.api.q2pay.in/api/user_features/:user_feature_id

Query Parameters

Parameter Default Description Required Sample
name N.A. Name of user feature No Test1
description N.A. Description for user feature No Anything about feature
header N.A. Header for user feature No testerr

Service Details

Service ID Description
SERVICE_UPSERT_FEATURE Update User Feature

Delete User Feature

curl -X DELETE "https://<environmenturl>/api/user_features/:user_feature_id"
  -H "X-Api-Key: <your secure token>"
  -H "Content-Type: application/json"
require 'net/http'
require 'uri'
require 'json'

uri = URI.parse("https://<environmenturl>/api/user_features/:user_feature_id") header = {'X-Api-Key' => '<your secure token>', 'Content-Type' => 'application/json'} http = Net::HTTP.new(uri.host, uri.port) http.use_ssl = true request = Net::HTTP::Delete.new(uri.request_uri, header) response = http.request(request)

fetch('https://<environmenturl>/api/user_features/:user_feature_id', {
  method: 'DELETE',
  headers: {
    'X-Api-Key': '<your secure token>',
    'Content-Type': 'application/json'
  }
})
  .then(response => response.json())
  .then(data => console.log(data))
  .catch(error => console.error(error));

SUCCESS RESPONSE The request returns JSON structured like below

{
  "status": "true"
}

This endpoint deletes user feature assigned to user.

UAT HTTP Request

DELETE https://nxt.api.q2pay.co.in/api/user_features/:user_feature_id

PRODUCTION HTTP Request

DELETE https://nxt.api.q2pay.in/api/user_features/:user_feature_id

Service Details

Service ID Description
SERVICE_DELETE_FEATURE Delete User Feature

Add platform service to User Feature

curl -X POST "https://<environmenturl>/api/user_feature_line_items"
  -H "X-Api-Key: <your secure token>"
  -H "Content-Type: application/json"
  -d {
       "user_feature_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
       "platform_service_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx"
     }
require 'net/http'
require 'uri'
require 'json'

uri = URI.parse("https://<environmenturl>/api/user_feature_line_items") header = {'X-Api-Key' => '<your secure token>', 'Content-Type' => 'application/json'} body = { "user_feature_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx", "platform_service_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx" } http = Net::HTTP.new(uri.host, uri.port) http.use_ssl = true request = Net::HTTP::Post.new(uri.request_uri, header) request.body = body.to_json response = http.request(request)

const data = {
       "user_feature_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
       "platform_service_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx"
     };

fetch('https://<environmenturl>/api/user_feature_line_items', { method: 'POST', headers: { 'X-Api-Key': '<your secure token>', 'Content-Type': 'application/json' }, body: JSON.stringify(data) }) .then(response => response.json()) .then(data => console.log(data)) .catch(error => console.error(error));

The below example can be sent as a request to the API.

{
       "user_feature_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
       "platform_service_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx"
}

SUCCESS RESPONSE The request returns JSON structured like below on successful user feature line item addition

{
  "status": true,
  "features": [
    {
      "feature_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
      "feature_name": "Approve Field Force Transaction ",
      "feature_description": "Approving Field Force Related Transactions",
      "feature_header": "test",
      "is_delete": "N",
      "privilege": "Admin",
      "created_by": "xxxxxx",
      "created_by_name": "jitendra",
      "created_on": 1689691628,
      "user_features_line_items": [
        {
          "id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
          "platform_service_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
          "service_id": "service is example 1",
          "service_header": "service header example 1",
          "service_desc": "service desc example 1",
          "service_name": "service name example 1"
        },
        {
          "id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
          "platform_service_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
          "service_id": "service is example 2",
          "service_header": "service header example 2",
          "service_desc": "service desc example 2",
          "service_name": "service name example 2"
        },
        {
          "id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
          "platform_service_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
          "service_id": "service is example 3",
          "service_header": "service header example 3",
          "service_desc": "service desc example 3",
          "service_name": "service name example 3"
        }
      ],
      "unassigned_platform_services": [
        {
          "id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
          "service_id": "service example",
          "service_header": "service header",
          "service_name": "service name",
          "service_desc": "service description"
        },
        {
          "id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
          "service_id": "service example 1",
          "service_header": "service header 1",
          "service_name": "service name 1",
          "service_desc": "service description 1"
        }
      ]
} ], "title": { "records": 1, "current_page": 1, "total_pages": 1, "page_item_count": 1 } }

ERROR RESPONSE The request returns JSON structured like below for errors related to user feature line item posting

{
  "status": false,
  "errors": {
    "platform_service": [
      "Platform service must exist"
    ],
    "user_feature": [
      "User feature must exist"
    ]
  }
}

This endpoint assings a new service to existing user feature.

UAT HTTP Request

POST https://nxt.api.q2pay.co.in/api/user_feature_line_items

PRODUCTION HTTP Request

POST https://nxt.api.q2pay.in/api/user_feature_line_items

Query Parameters

Parameter Default Description Required Sample
user_feature_id N.A. User feature ID for user feature line item Yes xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx
platform_service_id N.A. Platform service id for user feature line item Yes xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx

Service Details

Service ID Description
ADD_SERVICE_FEATURE_MAPPING Adds User Feature line item

Delete platform service from User Feature

curl -X DELETE "https://<environmenturl>/api/user_feature_line_items/:user_feature_line_item_id"
  -H "X-Api-Key: <your secure token>"
  -H "Content-Type: application/json"
require 'net/http'
require 'uri'
require 'json'

uri = URI.parse("https://<environmenturl>/api/user_feature_line_items/:user_feature_line_item_id") header = {'X-Api-Key' => '<your secure token>', 'Content-Type' => 'application/json'} http = Net::HTTP.new(uri.host, uri.port) http.use_ssl = true request = Net::HTTP::Delete.new(uri.request_uri, header) response = http.request(request)

fetch('https://<environmenturl>/api/user_feature_line_items/:user_feature_line_item_id', {
  method: 'DELETE',
  headers: {
    'X-Api-Key': '<your secure token>',
    'Content-Type': 'application/json'
  }
})
  .then(response => response.json())
  .then(data => console.log(data))
  .catch(error => console.error(error));

SUCCESS RESPONSE The request returns JSON structured like below

{
  "status": true,
  "features": [
    {
      "feature_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
      "feature_name": "Approve Field Force Transaction ",
      "feature_description": "Approving Field Force Related Transactions",
      "feature_header": "test",
      "is_delete": "N",
      "privilege": "Admin",
      "created_by": "xxxxxx",
      "created_by_name": "jitendra",
      "created_on": 1689691628,
      "user_features_line_items": [
        {
          "id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
          "platform_service_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
          "service_id": "service is example 1",
          "service_header": "service header example 1",
          "service_desc": "service desc example 1",
          "service_name": "service name example 1"
        },
        {
          "id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
          "platform_service_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
          "service_id": "service is example 2",
          "service_header": "service header example 2",
          "service_desc": "service desc example 2",
          "service_name": "service name example 2"
        },
        {
          "id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
          "platform_service_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
          "service_id": "service is example 3",
          "service_header": "service header example 3",
          "service_desc": "service desc example 3",
          "service_name": "service name example 3"
        }
      ],
      "unassigned_platform_services": [
        {
          "id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
          "service_id": "service example",
          "service_header": "service header",
          "service_name": "service name",
          "service_desc": "service description"
        },
        {
          "id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
          "service_id": "service example 1",
          "service_header": "service header 1",
          "service_name": "service name 1",
          "service_desc": "service description 1"
        }
      ]
} ], "title": { "records": 1, "current_page": 1, "total_pages": 1, "page_item_count": 1 } }

This endpoint deletes a service assinged to existing user feature.

UAT HTTP Request

DELETE https://nxt.api.q2pay.co.in/api/user_feature_line_items/:user_feature_line_item_id

PRODUCTION HTTP Request

DELETE https://nxt.api.q2pay.in/api/user_feature_line_items/:user_feature_line_item_id

Service Details

Service ID Description
DELETE_SERVICE_FEATURE_MAPPING Delete User Feature line item

Entity

Entities help manage identities of firms registered by clients

Get All Entities (Admin)

curl "https://<environmenturl>/api/entities"
  -H "X-Api-Key: <your secure token>"
  -H "Content-Type: application/json"
  -d "{ "page_size": 2,
        "page_no": 1
    }"
require 'net/http'
require 'uri'
require 'json'

uri = URI.parse("https://<environmenturl>/api/entities") header = {'X-Api-Key' => '<your secure token>', 'Content-Type' => 'application/json'} body = {"page_size" => 2, "page_no" => 1} http = Net::HTTP.new(uri.host, uri.port) http.use_ssl = true request = Net::HTTP::Get.new(uri.request_uri, header) request.body = body.to_json response = http.request(request)

const data = {
  page_size: 2,
  page_no: 1
};

fetch('https://<environmenturl>/api/entities', { method: 'GET', headers: { 'X-Api-Key': '<your secure token>', 'Content-Type': 'application/json' }, body: JSON.stringify(data) }) .then(response => response.json()) .then(data => console.log(data)) .catch(error => console.error(error));

The below example can be sent as a request to the API.

{
  "page_size": 2,
  "page_no": 1
}

SUCCESS RESPONSE The request returns JSON structured like below


 {
  "status": true,
  "total_count": 5,
  "entities": [
    {
      "entity_id": "xxxxxx",
      "entity_name": "V transaction",
      "entity_pan": "FTTPK9789",
      "entity_address": "Pune",
      "entity_pincode": "411057",
      "entity_activate_date": "122345566",
      "cin_number": "322243",
      "entity_created_by": "testing",
      "sent_daily_mis": "  ",
      "sent_monthly_mis": " ",
      "sent_yearly_mis": "  ",
      "field_force_limit": "N",
      "acquired_by": "  ",
      "grades": "  "
    },
   {
      "entity_id": "xxxxxx",
      "entity_name": "V",
      "entity_pan": "HJDJLL89",
      "entity_address": "Mumbai",
      "entity_pincode": "411057",
      "entity_activate_date": "122345566",
      "cin_number": "322243",
      "entity_created_by": "testing",
      "sent_daily_mis": "  ",
      "sent_monthly_mis": " ",
      "sent_yearly_mis": "  ",
      "field_force_limit": "N",
      "acquired_by": "  ",
      "grades": "  "
    }],

"title": { "records": 10, "current_page": 1, "total_pages": 5, "page_item_count": 4, "next_page": 2 } }

This endpoint retrieves all entities.

UAT HTTP Request

GET https://nxt.api.q2pay.co.in/api/entities

PRODUCTION HTTP Request

GET https://nxt.api.q2pay.in/api/entities

Query Parameters

Parameter Default Description Required Sample
page_size 50 If set to specific number, the result will include that number of transactions. No 10
page_no 1 If set to specific number, the result will include that page of transactions. No 2
search_string N.A. If set to some phrase, the result will include entities with name / address / PAN matching that phrase No Awesome Enterprises Ltd.
entity_id N.A. If set, entity with the ID will be returned Yes xxxxxx

Service Details

Service ID Description
Admin Admin
MimicEntity View All entities
VEntity View Entity

Get User Specific Entity

curl "https://<environmenturl>/api/entities"
  -H "X-Api-Key: <your secure token>"
  -H "Content-Type: application/json"

require 'net/http'
require 'uri'
require 'json'

uri = URI.parse("https://<environmenturl>/api/entities") header = {'X-Api-Key' => '<your secure token>', 'Content-Type' => 'application/json'} http = Net::HTTP.new(uri.host, uri.port) http.use_ssl = true request = Net::HTTP::Get.new(uri.request_uri, header) request.body = body.to_json response = http.request(request)

fetch('https://<environmenturl>/api/entities', { method: 'GET', headers: { 'X-Api-Key': '<your secure token>', 'Content-Type': 'application/json' }, body: JSON.stringify(data) }) .then(response => response.json()) .then(data => console.log(data)) .catch(error => console.error(error));

SUCCESS RESPONSE The request returns JSON structured like below


 {
  "status": true,
  "total_count": 5,
  "entities": [
  {
    "entity_id": "xxxxxx",
    "entity_name": "V",
    "entity_pan": "HJDJLL89",
    "entity_address": "Mumbai",
    "entity_pincode": "411057",
    "entity_activate_date": "122345566",
    "cin_number": "322243",
    "entity_created_by": "testing",
    "sent_daily_mis": "  ",
    "sent_monthly_mis": " ",
    "sent_yearly_mis": "  ",
    "field_force_limit": "N",
    "acquired_by": "  ",
    "grades": "  ",
    } ],

"title": { "records": 1, "current_page": 1, "total_pages": 1, "page_item_count": 1, "next_page": 1 } }

SUCCESS RESPONSE The request returns JSON structured like below on successfully response for entity with cin (if cin available in specific entity)

{
  "status":true,
  "total_count":1,
  "entities":[
    {
      "entity_id":"RTB3907",
      "entity_name":"Primary Testing Entity",
      "entity_pan":"VASED4727H",
      "entity_activate_date":0,
      "is_delete":false,
      "cin_number":"Z00012JK1785DFR000000",
      "entity_creator_name":"N.A.",
      "sent_daily_mis":"abhaykamble@q2pay.in,tejasweegade@q2pay.in,harsh@yahmoooz.bom,harsh@gmail.com",
      "sent_monthly_mis":"chintan@gmail.com",
      "sent_yearly_mis":"harsh@gmail.com",
      "field_force_limit":"6666666.0",
      "grades":["Approver", "       CEO", "     1", "     abcd", "     t", "  Admin"],
      "txn_fields":"{\"vendor\": [{\"name\": \"test\", \"position\": 1, \"data_type\": \"numeric\", \"mandatory\": \"N\"}]}",
      "cin_details":
      {
        "cin_number":"Z00012JK1785DFR000000",
        "client_id":"corporate_cin_bddpnufGsQpGGrxczCpx",
        "company_name":"Q2PAY TECHNOLOGIES PRIVATE LIMITED",
        "incorporation_date":"2018-05-01",
        "company_address":"601 Mangal Bhavna,, 14th Khar Pali Road Corner AboveJaiJawanRestaurant, Khar West, Mumbai City, Maharashtra, 400052, India,",
        "email":"akshay@q2pay.in",
        "company_class":"PRIV",
        "zip":"400052",
        "directors":
        [{"din_number":"00955589", "director_name":"DEVAKI ABHAY RANGNEKAR"},
        {"din_number":"08123078", "director_name":"AKSHAY ABHAY RANGNEKAR"},
        {"din_number":"09388675", "director_name":"ANKUR ABHAY RANGNEKAR"}],
        "authorized_capital":"200000.0",
        "paid_up_capital":"100000.0",
        "last_agm_date":"2022-09-30",
        "last_bs_date":"2022-03-31",
        "company_status":"Active",
        "listed_status":"Unlisted",
        "created_on":1684389822,
        "last_updated_on":1684389822
      }
    }
  ],
  "title":{
    "records":1, 
    "current_page":1, 
    "total_pages":1, 
    "page_item_count":50
  }
}

This endpoint retrieves all Specific entities.

UAT HTTP Request

GET https://nxt.api.q2pay.co.in/api/entities

PRODUCTION HTTP Request

GET https://nxt.api.q2pay.in/api/entities

Service Details

Service ID Description
VEntity View Specific User entities

Create An Entity

curl -X POST "https://<environmenturl>/api/entities"
-H "X-Api-Key: <your secure token>"
-H "Content-Type: application/json"
-d "{ 
  "entity_id": "xxxxxx",
  "entity_name": "Awesome Enterprises Ltd.",
  "entity_pan": "FTTPK9789",
  "entity_address": "Pune",
  "entity_pincode": "411057",
  "entity_activate_date": "122345566",
  "cin_number": "322243",
  "acquired_by": "Awesome Sales Team",
  "grades": "Approver",
}"
require 'net/http'
require 'uri'
require 'json'

uri = URI.parse("https://<environmenturl>/api/entities") header = {'X-Api-Key' => '<your secure token>', 'Content-Type' => 'application/json'} body = { "entity_id": "xxxxxx", "entity_name": "Awesome Enterprises Ltd.", "entity_pan": "FTTPK9789", "entity_address": "Pune", "entity_pincode": "411057", "entity_activate_date": "122345566", "cin_number": "322243", "acquired_by": "Awesome Sales Team", }

http = Net::HTTP.new(uri.host, uri.port) http.use_ssl = true request = Net::HTTP::Post.new(uri.request_uri, header) request.body = body.to_json response = http.request(request)

const data = {
  "entity_id": "xxxxxx",
  "entity_name": "Awesome Enterprises Ltd.",
  "entity_pan": "FTTPK9789",
  "entity_address": "Pune",
  "entity_pincode": "411057",
  "entity_activate_date": "122345566",
  "cin_number": "322243",
  "acquired_by": "Awesome Sales Team",
};

fetch('https://<environmenturl>/api/entities', { method: 'POST', headers: { 'X-Api-Key': '<your secure token>', 'Content-Type': 'application/json' }, body: JSON.stringify(data) }) .then(response => response.json()) .then(data => console.log(data)) .catch(error => console.error(error));

The below example can be sent as a request to the API.

{
  "entity_id": "xxxxxx",
  "entity_name": "Awesome Enterprises Ltd.",
  "entity_pan": "FTTPK9789",
  "entity_address": "Pune",
  "entity_pincode": "411057",
  "entity_activate_date": "122345566",
  "cin_number": "322243",
  "acquired_by": "Awesome Sales Team",
}

SUCCESS RESPONSE The request returns JSON structured like below on successful Entity creation

{
  "status": true,
  "entities": {
    "entity_id": "xxxxxx",
    "entity_name": "Awesome Enterprises Ltd.",
    "entity_pan": "FTTPK9789",
    "entity_address": "Pune",
    "entity_pincode": "411057",
    "entity_activate_date": "122345566",
    "cin_number": "322243",
    "acquired_by": "Awesome Sales Team",
    "entity_created_by": "Admin",
    "acquired_by": "Awesome Sales Team",
    "grades": "Approver",
  },
  "title": {
    "records": 1,
    "current_page": 1,
    "total_pages": 1,
    "page_item_count": 1
  }
}

ERROR RESPONSE The request returns JSON structured like below for errors related to Entity creation

{
"status": false,
"errors": [
  "EntityID must exist",
  "Entity Name must exist"
  ]
}

This endpoint creates a entities.

UAT HTTP Request

POST https://nxt.api.q2pay.co.in/api/entities

PRODUCTION HTTP Request

POST https://nxt.api.q2pay.in/api/entities

Query Parameters

Parameter Default Description Required Sample
entity_id N.A. Entity ID Yes xxxxxx
entity_name N.A. Registered name of the Entity Yes Awesome Enterprises Ltd.
entity_pan N.A. PAN of Entity No FTTPK9789
entity_address N.A. Complete registered address of the entity No Pune
entity_pincode N.A. Pincode of the address No 411057
entity_activate_date N.A. UNIX Epoch timestamp of entity activation date No 122345566
cin_number N.A. CIN of the Entity No UCHF12234XKCD
acquired_by N.A. Reference of account acquisition No Awesome Sales Team

Service Details

Service ID Description
CEntity To Create Entity

Update An Entity

curl -X PUT "https://<environmenturl>/api/entities/:entity_id"
-H "X-Api-Key: <your secure token>"
-H "Content-Type: application/json"
-d "{ 
  "entity_id": "xxxxxx",
  "entity_name": "Awesome Enterprises Ltd.",
  "entity_pan": "FTTPK9789",
  "entity_address": "Pune",
  "entity_pincode": "411057",
  "entity_activate_date": "122345566",
  "cin_number": "322243",
  "acquired_by": "Awesome Sales Team",
  "grades": "Approver",
}"
require 'net/http'
require 'uri'
require 'json'

uri = URI.parse("https://<environmenturl>/api/entities/:entity_id") header = {'X-Api-Key' => '<your secure token>', 'Content-Type' => 'application/json'} body = { "entity_id": "xxxxxx", "entity_name": "Awesome Enterprises Ltd.", "entity_pan": "FTTPK9789", "entity_address": "Pune", "entity_pincode": "411057", "entity_activate_date": "122345566", "cin_number": "322243", "acquired_by": "Awesome Sales Team", }

http = Net::HTTP.new(uri.host, uri.port) http.use_ssl = true request = Net::HTTP::PUT.new(uri.request_uri, header) request.body = body.to_json response = http.request(request)

const data = {
  "entity_id": "xxxxxx",
  "entity_name": "Awesome Enterprises Ltd.",
  "entity_pan": "FTTPK9789",
  "entity_address": "Pune",
  "entity_pincode": "411057",
  "entity_activate_date": "122345566",
  "cin_number": "322243",
  "acquired_by": "Awesome Sales Team",
};

fetch('https://<environmenturl>/api/entities/:entity_id', { method: 'PUT', headers: { 'X-Api-Key': '<your secure token>', 'Content-Type': 'application/json' }, body: JSON.stringify(data) }) .then(response => response.json()) .then(data => console.log(data)) .catch(error => console.error(error));

The below example can be sent as a request to the API.

{
  "entity_id": "xxxxxx",
  "entity_name": "Awesome Enterprises Ltd.",
  "entity_pan": "FTTPK9789",
  "entity_address": "Pune",
  "entity_pincode": "411057",
  "entity_activate_date": "122345566",
  "cin_number": "322243",
  "acquired_by": "Awesome Sales Team",
}

SUCCESS RESPONSE The request returns JSON structured like below on successful Entity updation

{
  "status": true,
  "entities": {
    "entity_id": "xxxxxx",
    "entity_name": "Awesome Enterprises Ltd.",
    "entity_pan": "FTTPK9789",
    "entity_address": "Pune",
    "entity_pincode": "411057",
    "entity_activate_date": "122345566",
    "cin_number": "322243",
    "acquired_by": "Awesome Sales Team",
    "entity_created_by": "Admin",
    "acquired_by": "Awesome Sales Team",
    "grades": "Approver",
  },
  "title": {
    "records": 1,
    "current_page": 1,
    "total_pages": 1,
    "page_item_count": 1
  }
}

ERROR RESPONSE The request returns JSON structured like below for errors related to Entity updation

{
"status": false,
"errors": [
  "EntityID must exist",
  "Entity Name must exist"
  ]
}

This endpoint creates a entities.

UAT HTTP Request

PUT https://nxt.api.q2pay.co.in/api/entities/:entity_id

PRODUCTION HTTP Request

PUT https://nxt.api.q2pay.in/api/entities/:entity_id

Query Parameters

Parameter Default Description Required Sample
entity_id N.A. Entity ID Yes xxxxxx
entity_name N.A. Registered name of the Entity Yes Awesome Enterprises Ltd.
entity_pan N.A. PAN of Entity No FTTPK9789
entity_address N.A. Complete registered address of the entity No Pune
entity_pincode N.A. Pincode of the address No 411057
entity_activate_date N.A. UNIX Epoch timestamp of entity activation date No 122345566
cin_number N.A. CIN of the Entity No UCHF12234XKCD
acquired_by N.A. Reference of account acquisition No Awesome Sales Team

Service Details

Service ID Description
EEntity To Create Entity

Get Users For Role Assignment

curl -X GET "https://<environmenturl>/api/entities/users_for_role_assignment"
  -H "X-Api-Key: <your secure token>"
  -H "Content-Type: application/json"
require 'net/http'
require 'uri'
require 'json'

uri = URI.parse("https://<environmenturl>/api/entities/users_for_role_assignment") header = {'X-Api-Key' => '<your secure token>', 'Content-Type' => 'application/json'} http = Net::HTTP.new(uri.host, uri.port) http.use_ssl = true request = Net::HTTP::GET.new(uri.request_uri, header) request.body = body.to_json response = http.request(request)

fetch('https://<environmenturl>/api/entities/users_for_role_assignment', {
  method: 'GET',
  headers: {
    'X-Api-Key': '<your secure token>',
    'Content-Type': 'application/json'
  },
  body: JSON.stringify(data)
})
  .then(response => response.json())
  .then(data => console.log(data))
  .catch(error => console.error(error));

SUCCESS RESPONSE The request returns JSON structured like below

 {
  "status": true,
  "employees": [
    {
      "identifier": "xxxxxx",
      "user_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
      "first_name": "user 1",
      "last_name": "last name example",
      "entity_id": "xxxxxx"
    },
    {
      "identifier": "xxxxxx",
      "user_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
      "first_name": "user 2",
      "last_name": "last name example 1",
      "entity_id": "xxxxxx"
    },
    {
      "identifier": "xxxxxx",
      "user_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
      "first_name": "user 3",
      "last_name": "last name example 3",
      "entity_id": "xxxxxx"
    }
  ]
 } 

This endpoint retrieves all Users with add role capability for Specific entities.

UAT HTTP Request

GET https://nxt.api.q2pay.co.in/api/entities/users_for_role_assignment

PRODUCTION HTTP Request

GET https://nxt.api.q2pay.in/api/entities/users_for_role_assignment

Service Details

Service ID Description
PLogin View Users for role assignment

Get Wallet Balance

curl "https://<environmenturl>/api/entities/wallet_balance"
  -H "X-Api-Key: <your secure token>"
  -H "Content-Type: application/json"
  -d "{ 
        "entity_id": "E9898"
    }"
require 'net/http'
require 'uri'
require 'json'

uri = URI.parse("https://<environmenturl>/api/entities/wallet_balance") header = {'X-Api-Key' => '<your secure token>', 'Content-Type' => 'application/json'} body = { "entity_id": "E9898" } http = Net::HTTP.new(uri.host, uri.port) http.use_ssl = true request = Net::HTTP::Get.new(uri.request_uri, header) request.body = body.to_json response = http.request(request)

const data = {
  "entity_id": "E9898"
};

fetch('https://<environmenturl>/api/entities/wallet_balance', { method: 'GET', headers: { 'X-Api-Key': '<your secure token>', 'Content-Type': 'application/json' }, body: JSON.stringify(data) }) .then(response => response.json()) .then(data => console.log(data)) .catch(error => console.error(error));

The below example can be sent as a request to the API.

{
  "entity_id": "E9898"
}

SUCCESS RESPONSE The request returns JSON structured like below

{
  "status": true,
  "balance": "0.0"
}

This endpoint retrieves entity wallet balance.

UAT HTTP Request

GET https://nxt.api.q2pay.co.in/api/entities/wallet_balance

PRODUCTION HTTP Request

GET https://nxt.api.q2pay.in/api/entities/wallet_balance

Query Parameters

Parameter Default Description Required Sample
entity_id N.A. If Admin or MimicEntity services are present then entity required Yes E9898

Service Details

Service ID Description
Admin Admin
MimicEntity View All entities
VEntity View entity balance

Platform Service

Platform service helps you create,update & manage services.

Get All Platform Services

curl -X GET "https://<environmenturl>/api/platform_services"
  -H "X-Api-Key: <your secure token>"
  -H "Content-Type: application/json"
  -d "{
    "page_no": "1",
    "page_size": "2"
    }"
require 'net/http'
require 'uri'
require 'json'

uri = URI.parse("https://<environmenturl>/api/platform_services") header = {'X-Api-Key' => '<your secure token>', 'Content-Type' => 'application/json'} body = { "page_no": "1", "page_size": "2" } http = Net::HTTP.new(uri.host, uri.port) http.use_ssl = true request = Net::HTTP::GET.new(uri.request_uri, header) request.body = body.to_json response = http.request(request)

const data = {
  "page_no": "1",
  "page_size": "2"
};

fetch('https://<environmenturl>/api/platform_services', { method: 'GET', headers: { 'X-Api-Key': '<your secure token>', 'Content-Type': 'application/json' }, body: JSON.stringify(data) }) .then(response => response.json()) .then(data => console.log(data)) .catch(error => console.error(error));

The below example can be sent as a request to the API.

{
  "page_no": "1",
  "page_size": "2"
}

SUCCESS RESPONSE The request returns JSON structured like below on successful view platform services

{
  "status": true,
  "total_count": 2,
  "services": [
     {
      "id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
      "service_id":  "ABCD 12",
      "service_header": "Development",
      "service_name": " Pan Details",
      "service_desc": "To Delete Entity Specified",
      "is_delete": "N",
      "status": "Development Complete",
      "otp_email": "Y",
      "otp_sms": "Y",
      "privilege": "Admin",
      "created_by_name": "Anuj nerkar",
      "created_by": "1",
      "created_on": "xxxxxxxx"
    },
    {
      "id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
      "service_id":  "ABCD 13",
      "service_header": "User",
      "service_name": "View No Details",
      "service_desc": "To View Details",
      "is_delete": "N",
      "status": "Development Complete",
      "otp_email": "Y",
      "otp_sms": "Y",
      "privilege": "Admin",
      "created_by_name": "Anuj nerkar",
      "created_by": "1",
      "created_on": "xxxxxxxx"
    }
  ],
 "title": {
    "records": 2,
    "current_page": 1,
    "total_pages": 68,
    "page_item_count": 2,
    "next_page": 2
  }
}

This endpoint will show all platform services.

UAT HTTP Request

GET https://nxt.api.q2pay.co.in/api/platform_services

PRODUCTION HTTP Request

GET https://nxt.api.q2pay.in/api/platform_services

Query Parameters

Parameter Default Description Required Sample
search_string NA If set to some phrase, the result will include platform_services with service_name / identifier No Abcd
page_size N.A. If set to specific number, the result will include that number of Services No 1
page_no N.A. If set to specific number, the result will include that page of Services No 2

Service Details

Service ID Description
Sup_VService View Platfrom Service

Get Specific Platform Service

curl -X GET "https://<environmenturl>/api/platform_services/:platform_service_id"
  -H "X-Api-Key: <your secure token>"
  -H "Content-Type: application/json"
require 'net/http'
require 'uri'
require 'json'

uri = URI.parse("https://<environmenturl>/api/platform_services/:platform_service_id") header = {'X-Api-Key' => '<your secure token>', 'Content-Type' => 'application/json'} http = Net::HTTP.new(uri.host, uri.port) http.use_ssl = true request = Net::HTTP::GET.new(uri.request_uri, header) request.body = body.to_json response = http.request(request)

fetch('https://<environmenturl>/api/platform_services/:platform_service_id', {
  method: 'GET',
  headers: {
    'X-Api-Key': '<your secure token>',
    'Content-Type': 'application/json'
  },
  body: JSON.stringify(data)
})
  .then(response => response.json())
  .then(data => console.log(data))
  .catch(error => console.error(error));

SUCCESS RESPONSE The request returns JSON structured like below on successful view platform services

{
  "status": true,
  "services": [
    {
      "id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
      "service_id":  "ABCD 13",
      "service_header": "User",
      "service_name": "View No Details",
      "service_desc": "To View Details",
      "is_delete": "N",
      "status": "Development Complete",
      "otp_email": "Y",
      "otp_sms": "Y",
      "privilege": "Admin",
      "created_by_name": "Anuj nerkar",
      "created_by": "1",
      "created_on": "xxxxxxxx"
    }
  ],
  "user_features": [
    {
      "feature_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
      "feature_name": "feature name example",
      "feature_description": "feature description example",
      "feature_header": "feature header"
    },
    {
      "feature_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
      "feature_name": "feature name example",
      "feature_description": "feature description example",
      "feature_header": "feature header"
    }
  ],
  "unassigned_user_features": [
    {
      "feature_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
      "feature_name": "feature name example",
      "feature_description": "feature description example",
      "feature_header": "feature header"
    },
    {
      "feature_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
      "feature_name": "feature name example",
      "feature_description": "feature description example",
      "feature_header": "feature header"
    }
  ],
  "title": {
    "records": 1,
    "current_page": 1,
    "total_pages": 1,
    "page_item_count": 1
  }
}

This endpoint will view specific platform service.

UAT HTTP Request

GET https://nxt.api.q2pay.co.in/api/platform_services/:platform_service_id

PRODUCTION HTTP Request

GET https://nxt.api.q2pay.in/api/platform_services/:platform_service_id

Service Details

Service ID Description
Sup_VService View Platfrom Service

View Headers

curl -X GET "https://<environmenturl>/api/platform_services/view_headers"
  -H "X-Api-Key: <your secure token>"
  -H "Content-Type: application/json"
  -d "{
    "page_no": "1",
    "page_size": "2"
    }"
require 'net/http'
require 'uri'
require 'json'

uri = URI.parse("https://<environmenturl>/api/platform_services/view_headers") header = {'X-Api-Key' => '<your secure token>', 'Content-Type' => 'application/json'} body = { "page_no": "1", "page_size": "2" } http = Net::HTTP.new(uri.host, uri.port) http.use_ssl = true request = Net::HTTP::GET.new(uri.request_uri, header) request.body = body.to_json response = http.request(request)

const data = {
  "page_no": "1",
  "page_size": "2"
};

fetch('https://<environmenturl>/api/platform_services/view_headers', { method: 'GET', headers: { 'X-Api-Key': '<your secure token>', 'Content-Type': 'application/json' }, body: JSON.stringify(data) }) .then(response => response.json()) .then(data => console.log(data)) .catch(error => console.error(error));

The below example can be sent as a request to the API.

{
  "page_no": "1",
  "page_size": "2"
}

SUCCESS RESPONSE The request returns JSON structured like below on successful view headers

{
  "status": true,
  "total_count": 2,
  "services": [
     {
      "id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
      "service_id":  "ABCD 12",
      "service_header": "Development",
      "service_name": " Pan Details",
      "service_desc": "To Delete Entity Specified",
      "is_delete": "N",
      "status": "Development Complete",
      "otp_email": "Y",
      "otp_sms": "Y",
      "privilege": "Admin",
      "created_by_name": "Anuj nerkar",
      "created_by": "1",
      "created_on": "xxxxxxxx"
    },
    {
      "id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
      "service_id":  "ABCD 13",
      "service_header": "User",
      "service_name": "View No Details",
      "service_desc": "To View Details",
      "is_delete": "N",
      "status": "Development Complete",
      "otp_email": "Y",
      "otp_sms": "Y",
      "privilege": "Admin",
      "created_by_name": "Anuj nerkar",
      "created_by": "1",
      "created_on": "xxxxxxxx"
    }
  ],
 "title": {
    "records": 2,
    "current_page": 1,
    "total_pages": 68,
    "page_item_count": 2,
    "next_page": 2
  }
}

This endpoint will used to get header details of services.

UAT HTTP Request

GET https://nxt.api.q2pay.co.in/api/platform_services/view_headers

PRODUCTION HTTP Request

GET https://nxt.api.q2pay.in/api/platform_services/view_headers

Query Parameters

Parameter Default Description Required Sample
page_size N.A. If set to specific number, the result will include that number of Services No 1
page_no N.A. If set to specific number, the result will include that page of Services No 2

Service Details

Service ID Description
Sup_VService View Platfrom Service Headers

Create Platform Service

curl -X POST "https://<environmenturl>/api/platform_services"
  -H "X-Api-Key: <your secure token>"
  -H "Content-Type: application/json"
  -d "{
      "identifier": "ABCD 12",
      "service_header": "testing",
      "service_name": "Testing 3",
      "description": "To Archive any owner account",
      "status": "Development complete",
      "privilege": "ok",
      "checklist": "ok"
    }"
require 'net/http'
require 'uri'
require 'json'

uri = URI.parse("https://<environmenturl>/api/platform_services") header = {'X-Api-Key' => '<your secure token>', 'Content-Type' => 'application/json'} body = { "identifier": "ABCD 12", "service_header": "testing", "service_name": "Testing 3", "description": "To Archive any owner account", "status": "Development complete", "privilege": "ok", "checklist": "ok" } http = Net::HTTP.new(uri.host, uri.port) http.use_ssl = true request = Net::HTTP::Post.new(uri.request_uri, header) request.body = body.to_json response = http.request(request)

const data = {
      "identifier": "ABCD 12",
      "service_header": "testing",
      "service_name": "Testing 3",
      "description": "To Archive any owner account",
      "status": "Development complete",
      "privilege": "ok",
      "checklist": "ok"
};

fetch('https://<environmenturl>/api/platform_services', { method: 'POST', headers: { 'X-Api-Key': '<your secure token>', 'Content-Type': 'application/json' }, body: JSON.stringify(data) }) .then(response => response.json()) .then(data => console.log(data)) .catch(error => console.error(error));

The below example can be sent as a request to the API.

{
      "identifier": "ABCD 12",
      "service_header": "testing",
      "service_name": "Testing 3",
      "description": "To Archive any owner account",
      "status": "Development complete",
      "privilege": "ok",
      "checklist": "ok"
}

SUCCESS RESPONSE The request returns JSON structured like below on successful platform service creation

{
  "status": true,
  "services": [
    {
      "id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
      "service_id":  "ABCD 13",
      "service_header": "User",
      "service_name": "View No Details",
      "service_desc": "To View Details",
      "is_delete": "N",
      "status": "Development Complete",
      "otp_email": "Y",
      "otp_sms": "Y",
      "privilege": "Admin",
      "created_by_name": "Anuj nerkar",
      "created_by": "1",
      "created_on": "xxxxxxxx"
    }
  ],
  "user_features": [],
  "unassigned_user_features": [
    {
      "feature_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
      "feature_name": "feature name example",
      "feature_description": "feature description example",
      "feature_header": "feature header"
    },
    {
      "feature_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
      "feature_name": "feature name example",
      "feature_description": "feature description example",
      "feature_header": "feature header"
    }
  ],
  "title": {
    "records": 1,
    "current_page": 1,
    "total_pages": 1,
    "page_item_count": 1
  }
}

ERROR RESPONSE The request returns JSON structured like below for errors related to service posting

{
  "status": false,
  "errors": {
    "identifier": [
      "Identifier can't be blank"
    ],
    "service_name": [
      "Service name can't be blank"
    ],
    "description": [
      "Description can't be blank"
    ],
    "status": [
      "Status can't be blank"
    ],
    "identifier": [
      "Identifier has already been taken"
    ],
    "service_name": [
      "Service name has already been taken"
    ]
  }
}

ERROR RESPONSE The request returns JSON structured like below for errors related to service posting

{
  "status": false,
  "errors": {
    "identifier": [
      "Identifier is too long (maximum is 100 characters)"
    ],
    "service_name": [
      "Service name is too long (maximum is 100 characters)"
    ],
    "description": [
      "Description is too long (maximum is 100 characters)"
    ],
    "status": [
      "Status is too long (maximum is 100 characters)"
    ],
    "deleted": [
      "Deleted value could be true or false"
    ]
  }
}

This endpoint will create a platform service.

UAT HTTP Request

POST https://nxt.api.q2pay.co.in/api/platform_services

PRODUCTION HTTP Request

POST https://nxt.api.q2pay.in/api/platform_services

Query Parameters

Parameter Default Description Required Sample
identifier N.A. Platform Service identifiers Yes ABCD 12
service_header N.A. Header of Service No testing
service_name N.A. Name of service Yes Testing 5
description N.A. Description of service Yes To Archive any owner account
status N.A. Current Status Of Service Values Yes Development Complete
privilege N.A. Privilege For Service No ok
checklist N.A. checklist of service No ok

Service Details

Service ID Description
Admin Create Platfrom Service
EService Create Platfrom Service

Update Platform Service

curl -X PUT "https://<environmenturl>/api/platform_services/:platform_service_id"
  -H "X-Api-Key: <your secure token>"
  -H "Content-Type: application/json"
  -d "{ 
    "service_name": "update testing"
      }"
require 'net/http'
require 'uri'
require 'json'

uri = URI.parse("https://<environmenturl>/api/platform_services/:platform_service_id") header = {'X-Api-Key' => '<your secure token>', 'Content-Type' => 'application/json'} body = { "service_name": "update testing" } http = Net::HTTP.new(uri.host, uri.port) http.use_ssl = true request = Net::HTTP::PUT.new(uri.request_uri, header) request.body = body.to_json response = http.request(request)

const data = {
              "service_name": "update testing"
             };

fetch('https://<environmenturl>/api/platform_services/:platform_service_id', { method: 'PUT', headers: { 'X-Api-Key': '<your secure token>', 'Content-Type': 'application/json' }, body: JSON.stringify(data) }) .then(response => response.json()) .then(data => console.log(data)) .catch(error => console.error(error));

The below example can be sent as a request to the API.

{
      "service_name": "update testing"
}

SUCCESS RESPONSE The request returns JSON structured like below on successful platform service updation

{
  "status": true,
  "services": [
    {
      "id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
      "service_id":  "ABCD 13",
      "service_header": "User",
      "service_name": "update testing",
      "service_desc": "To View Details",
      "is_delete": "N",
      "status": "Development Complete",
      "otp_email": "Y",
      "otp_sms": "Y",
      "privilege": "Admin",
      "created_by_name": "Anuj nerkar",
      "created_by": "1",
      "created_on": "xxxxxxxx"
    }
  ],
  "user_features": [
    {
      "feature_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
      "feature_name": "feature name example",
      "feature_description": "feature description example",
      "feature_header": "feature header"
    },
    {
      "feature_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
      "feature_name": "feature name example",
      "feature_description": "feature description example",
      "feature_header": "feature header"
    }
  ],
  "unassigned_user_features": [
    {
      "feature_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
      "feature_name": "feature name example",
      "feature_description": "feature description example",
      "feature_header": "feature header"
    },
    {
      "feature_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
      "feature_name": "feature name example",
      "feature_description": "feature description example",
      "feature_header": "feature header"
    }
  ],
  "title": {
    "records": 1,
    "current_page": 1,
    "total_pages": 1,
    "page_item_count": 1
  }
}

ERROR RESPONSE The request returns JSON structured like below for errors related to service updating

{
  "status": false,
  "errors": {
    "identifier": [
      "Identifier can't be blank"
    ],
    "service_name": [
      "Service name can't be blank"
    ],
    "description": [
      "Description can't be blank"
    ],
    "status": [
      "Status can't be blank"
    ],
    "identifier": [
      "Identifier has already been taken"
    ],
    "service_name": [
      "Service name has already been taken"
    ]
  }
}

ERROR RESPONSE The request returns JSON structured like below for errors related to service updating

{
  "status": false,
  "errors": {
    "identifier": [
      "Identifier is too long (maximum is 100 characters)"
    ],
    "service_name": [
      "Service name is too long (maximum is 100 characters)"
    ],
    "description": [
      "Description is too long (maximum is 100 characters)"
    ],
    "status": [
      "Status is too long (maximum is 100 characters)"
    ]
  }
}

This endpoint will update a platform service.

UAT HTTP Request

PUT https://nxt.api.q2pay.co.in/api/platform_services/:platform_service_id

PRODUCTION HTTP Request

PUT https://nxt.api.q2pay.in/api/platform_services/:platform_service_id

Query Parameters

Parameter Default Description Required Sample
identifier N.A. Platform Service identifiers No ABCD 12
service_header N.A. Header of Service No testing
service_name N.A. Name of service No update testing
description N.A. Description of service No Update Testing 12
deleted N available status of platform_service No false
status N.A. Current Status Of Service Values No Update complete
privilege N.A. Privilege For Service No ok
checklist N.A. checklist of service No ok

Service Details

Service ID Description
Admin Admin

Delete Platform Service

curl -X DELETE "https://<environmenturl>/api/platform_services/:platform_service_id"
  -H "X-Api-Key: <your secure token>"
  -H "Content-Type: application/json"

require 'net/http'
require 'uri'
require 'json'

uri = URI.parse("https://<environmenturl>/api/platform_services/:platform_service_id") header = {'X-Api-Key' => '<your secure token>', 'Content-Type' => 'application/json'} http = Net::HTTP.new(uri.host, uri.port) http.use_ssl = true request = Net::HTTP::DELETE.new(uri.request_uri, header) request.body = body.to_json response = http.request(request)


fetch('https://<environmenturl>/api/platform_services/:platform_service_id', {
  method: 'DELETE',
  headers: {
    'X-Api-Key': '<your secure token>',
    'Content-Type': 'application/json'
  },
  body: JSON.stringify(data)
})
  .then(response => response.json())
  .then(data => console.log(data))
  .catch(error => console.error(error));

SUCCESS RESPONSE The request returns JSON structured like below on successful delete platform services

{
  "status": true
}

This endpoint will delete a platform service.

UAT HTTP Request

DELETE https://nxt.api.q2pay.co.in/api/platform_services/:platform_service_id

PRODUCTION HTTP Request

DELETE https://nxt.api.q2pay.in/api/platform_services/:platform_service_id

Service ID Description
DService Delete Platfrom Service

Role

Roles help users manage platform services within their entity

Get All Roles

curl -X GET "https://<environmenturl>/api/roles"
  -H "X-Api-Key: <your secure token>"
  -H "Content-Type: application/json"
  -d { 
        "page_size": 2,
        "page_no": 1
     }
require 'net/http'
require 'uri'
require 'json'

uri = URI.parse("https://<environmenturl>/api/roles") header = {'X-Api-Key' => '<your secure token>', 'Content-Type' => 'application/json'} body = {"page_size" => 2, "page_no" => 1} http = Net::HTTP.new(uri.host, uri.port) http.use_ssl = true request = Net::HTTP::Get.new(uri.request_uri, header) request.body = body.to_json response = http.request(request)

const data = {
  page_size: 2,
  page_no: 1
};

fetch('https://<environmenturl>/api/roles', { method: 'GET', headers: { 'X-Api-Key': '<your secure token>', 'Content-Type': 'application/json' }, body: JSON.stringify(data) }) .then(response => response.json()) .then(data => console.log(data)) .catch(error => console.error(error));

The below example can be sent as a request to the API.

{
  "page_size": 2,
  "page_no": 1
}

SUCCESS RESPONSE The request returns JSON structured like below


 {
   "status": true,
   "total_count": 245,
   "roles": [
    {
      "role_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
      "role_name": "Role",
      "role_desc": "Dec Role",
      "is_deleted": "N",
      "entity_id": "xxxxxx",
      "created_by": "xxxxxx",
      "created_by_name": "A Kamble",
      "created_on": 1698648152,
      "roles_line_items": [
        {
          "id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
          "user_feature_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
          "identifier": "O",
          "description": "O Rights For  Account Functions"
        },
        {
          "id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
          "user_feature_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
          "identifier": "Approve ",
          "description": "Approving Field"
        }
      ]
    },
    {
      "role_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
      "role_name": "Role",
      "role_desc": "Dec Role",
      "is_deleted": "N",
      "entity_id": "xxxxxx",
      "created_by": "xxxxxx",
      "created_by_name": "A Kamble",
      "created_on": 1698648152,
      "roles_line_items": [
        {
          "id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
          "user_feature_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
          "identifier": "O",
          "description": "O Rights For  Account Functions"
        },
        {
          "id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
          "user_feature_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
          "identifier": "Approve ",
          "description": "Approving Field"
        }
      ]
    },
  ],
   "title": {
    "records": 2,
    "current_page": 1,
    "total_pages": 123,
    "page_item_count": 2,
    "next_page": 2
  }
}

This endpoint retrieves all roles.

UAT HTTP Request

GET https://nxt.api.q2pay.co.in/api/roles

PRODUCTION HTTP Request

GET https://nxt.api.q2pay.in/api/roles

Query Parameters

Parameter Default Description Required Sample
search_string NA If set to some phrase, the result will include roles with name / description No Abcd
page_size 50 If set to specific number, the result will include that number of authorization matrices. No
page_no 1 If set to specific number, the result will include that page of authorization matrices. No
entity_id NA If set, entity_id roles for that entity will be returned No ******

Service Details

Service ID Description
Sup_VRole, MimicEntity View Roles

Get Specific Role

curl -X GET "https://<environmenturl>/api/roles/:role_id"
  -H "X-Api-Key: <your secure token>"
  -H "Content-Type: application/json"

require 'net/http'
require 'uri'
require 'json'

uri = URI.parse("https://<environmenturl>/api/roles/:role_id") header = {'X-Api-Key' => '<your secure token>', 'Content-Type' => 'application/json'} http = Net::HTTP.new(uri.host, uri.port) http.use_ssl = true request = Net::HTTP::Get.new(uri.request_uri, header) request.body = body.to_json response = http.request(request)

const data

fetch('https://<environmenturl>/api/roles/:role_id', { method: 'GET', headers: { 'X-Api-Key': '<your secure token>', 'Content-Type': 'application/json' }, body: JSON.stringify(data) }) .then(response => response.json()) .then(data => console.log(data)) .catch(error => console.error(error));

SUCCESS RESPONSE The request returns JSON structured like below

{
  "status": true,
  "roles": [
    {
      "role_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
      "role_name": "AHHSss",
      "role_desc": "AHHSss",
      "is_deleted": "N",
      "entity_id": "xxxxxx",
      "created_by": "xxxxxx",
      "created_by_name": "A Kamble",
      "created_on": 1698648152,
      "roles_line_items": [
        {
          "id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
          "user_feature_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
          "identifier": "Transaction ",
          "description": "Transactions"
        }
      ]
    }
  ],
  "features": [
    {
      "feature_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
      "feature_name": "feature name example",
      "feature_description": "feature description example",
      "feature_header": "feature header"
    }
  ],
  "unassigned_user_features": [
    {
      "feature_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
      "feature_name": "feature name example 1",
      "feature_description": "feature description example 1",
      "feature_header": "feature header 1"
    },
    {
     "feature_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
      "feature_name": "feature name example 2",
      "feature_description": "feature description example 2",
      "feature_header": "feature header 2"
    }
  ],
  "employees": [
    {
      "identifier": "xxxxxx",
      "user_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
      "first_name": "first name example",
      "last_name": "last name example",
      "entity_id": "xxxxxx"
    }
  ],
  "unassigned_employees": [
    {
      "identifier": "xxxxxx",
      "user_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
      "first_name": "first name example 1",
      "last_name": "last name example 1",
      "entity_id": "xxxxxx"
    }
  ],
  "title": {
    "records": 1,
    "current_page": 1,
    "total_pages": 1,
    "page_item_count": 1
  }
}

This endpoint retrieves roles.

UAT HTTP Request

GET https://nxt.api.q2pay.co.in/api/roles/:role_id

PRODUCTION HTTP Request

GET https://nxt.api.q2pay.in/api/roles/:role_id

Service Details

Service ID Description
Sup_VRole View Roles

Create Role

curl -X POST "https://<environmenturl>/api/roles"
  -H "X-Api-Key: <your secure token>"
  -H "Content-Type: application/json"
  -d "{
  "name": "AHHS",
  "description": "TMP",
  "entity_id": "xxxxxx",
  "role_line_items_attributes": [
    {
      "user_feature_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx"
    }
  ]
}"
require 'net/http'
require 'uri'
require 'json'

uri = URI.parse("https://<environmenturl>/api/roles") header = {'X-Api-Key' => '<your secure token>', 'Content-Type' => 'application/json'} body = { "name": "AHHS", "description": "TMP", "entity_id": "xxxxxx", "role_line_items_attributes": [ { "user_feature_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx" } ] }

http = Net::HTTP.new(uri.host, uri.port) http.use_ssl = true request = Net::HTTP::Post.new(uri.request_uri, header) request.body = body.to_json response = http.request(request)

const data ={
  "name": "AHHS",
  "description": "TMP",
  "entity_id": "xxxxxx",
  "role_line_items_attributes": [
    {
      "user_feature_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx"
    }
  ]
};

fetch('https://<environmenturl>/api/roles', { method: 'POST', headers: { 'X-Api-Key': '<your secure token>', 'Content-Type': 'application/json' }, body: JSON.stringify(data) }) .then(response => response.json()) .then(data => console.log(data)) .catch(error => console.error(error));

The below example can be sent as a request to the API.

{
  "name": "AHHS",
  "description": "TMP",
  "entity_id": "xxxxxx",
  "role_line_items_attributes": [
    {
      "user_feature_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx"
    }
  ]
}

SUCCESS RESPONSE The request returns JSON structured like below on successful Role creation

{
  "status": true,
  "roles": [
    {
      "role_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
      "role_name": "AHHSss",
      "role_desc": "AHHSss",
      "is_deleted": "N",
      "entity_id": "xxxxxx",
      "created_by": "xxxxxx",
      "created_by_name": "A Kamble",
      "created_on": 1698648152,
      "roles_line_items": [
        {
          "id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
          "user_feature_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
          "identifier": "Transaction ",
          "description": "Transactions"
        }
      ]
    }
  ],
  "features": [
    {
      "feature_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
      "feature_name": "feature name example",
      "feature_description": "feature description example",
      "feature_header": "feature header"
    }
  ],
  "unassigned_user_features": [
    {
      "feature_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
      "feature_name": "feature name example 1",
      "feature_description": "feature description example 1",
      "feature_header": "feature header 1"
    },
    {
     "feature_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
      "feature_name": "feature name example 2",
      "feature_description": "feature description example 2",
      "feature_header": "feature header 2"
    }
  ],
  "employees": [
    {
      "identifier": "xxxxxx",
      "user_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
      "first_name": "first name example",
      "last_name": "last name example",
      "entity_id": "xxxxxx"
    }
  ],
  "unassigned_employees": [
    {
      "identifier": "xxxxxx",
      "user_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
      "first_name": "first name example 1",
      "last_name": "last name example 1",
      "entity_id": "xxxxxx"
    }
  ],
  "title": {
    "records": 1,
    "current_page": 1,
    "total_pages": 1,
    "page_item_count": 1
  }
}

ERROR RESPONSE The request returns JSON structured like below for errors related to Role creation

{
  "status": false,
  "errors": {
    "entity": [
      "Entity must exist"
    ],
    "name": [
      "Name can't be blank"
    ],
    "description": [
      "Description can't be blank"
    ]
  }
}

This endpoint creates a role.

UAT HTTP Request

POST https://nxt.api.q2pay.co.in/api/roles

PRODUCTION HTTP Request

POST https://nxt.api.q2pay.in/api/roles

Query Parameters

Parameter Default Description Required Sample
name N.A. Role Name Yes Role Name
description N.A. Role description Yes Role Description
entity_id N.A. Entity ID Yes EN4578F

Service Details

Service ID Description
CRole To Create Role

Update Role

curl -X PUT "https://<environmenturl>/api/roles/:role_id"
  -H "X-Api-Key: <your secure token>"
  -H "Content-Type: application/json"
  -d { 
        "name": "Rolp"
    }
require 'net/http'
require 'uri'
require 'json'

uri = URI.parse("https://<environmenturl>/api/roles/:role_id") header = {'X-Api-Key' => '<your secure token>', 'Content-Type' => 'application/json'} body = { "name": "Rolp" } http = Net::HTTP.new(uri.host, uri.port) http.use_ssl = true request = Net::HTTP::PUT.new(uri.request_uri, header) request.body = body.to_json response = http.request(request)

const data = {
        "name": "Rolp"
 };

fetch('https://<environmenturl>/api/roles', { method: 'PUT', headers: { 'X-Api-Key': '<your secure token>', 'Content-Type': 'application/json' }, body: JSON.stringify(data) }) .then(response => response.json()) .then(data => console.log(data)) .catch(error => console.error(error));

The below example can be sent as a request to the API.

{
    "name": "Rolp"
}

SUCCESS RESPONSE The request returns JSON structured like below on successfull updation of role

{
  "status": true,
  "roles": [
    {
      "role_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
      "role_name": "AHHSss",
      "role_desc": "AHHSss",
      "is_deleted": "N",
      "entity_id": "xxxxxx",
      "created_by": "xxxxxx",
      "created_by_name": "A Kamble",
      "created_on": 1698648152,
      "roles_line_items": [
        {
          "id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
          "user_feature_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
          "identifier": "Transaction ",
          "description": "Transactions"
        }
      ]
    }
  ],
  "features": [
    {
      "feature_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
      "feature_name": "feature name example",
      "feature_description": "feature description example",
      "feature_header": "feature header"
    }
  ],
  "unassigned_user_features": [
    {
      "feature_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
      "feature_name": "feature name example 1",
      "feature_description": "feature description example 1",
      "feature_header": "feature header 1"
    },
    {
     "feature_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
      "feature_name": "feature name example 2",
      "feature_description": "feature description example 2",
      "feature_header": "feature header 2"
    }
  ],
  "employees": [
    {
      "identifier": "xxxxxx",
      "user_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
      "first_name": "first name example",
      "last_name": "last name example",
      "entity_id": "xxxxxx"
    }
  ],
  "unassigned_employees": [
    {
      "identifier": "xxxxxx",
      "user_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
      "first_name": "first name example 1",
      "last_name": "last name example 1",
      "entity_id": "xxxxxx"
    }
  ],
  "title": {
    "records": 1,
    "current_page": 1,
    "total_pages": 1,
    "page_item_count": 1
  }
}

ERROR RESPONSE The request returns JSON structured like below for errors related to updation of role

{
  "status": false,
  "errors": {
    "entity": [
      "Entity must exist"
    ],
    "name": [
      "Name can't be blank"
    ],
    "name": [
      "Name has already been taken"
    ],
    "description": [
      "Description can't be blank"
    ],
    "deleted": [
      "Deleted is not included in the list"
    ]
  }
}

This endpoint updates a role.

UAT HTTP Request

PUT https://nxt.api.q2pay.co.in/api/roles/:role_id

PRODUCTION HTTP Request

PUT https://nxt.api.q2pay.in/api/roles/:role_id

Query Parameters

Parameter Default Description Required Sample
name N.A. Role Name No Role Name
description N.A. Role description No Role Description
deleted N.A. Role to be marked as true or false No true / false
entity_id N.A. Entity ID No xxxxxx

Service Details

Service ID Description
Admin To Update Role

Delete Role

curl -X DELETE "https://<environmenturl>/api/roles/:role_id"
  -H "X-Api-Key: <your secure token>"
  -H "Content-Type: application/json"
require 'net/http'
require 'uri'
require 'json'

uri = URI.parse("https://<environmenturl>/api/roles/:role_id") header = {'X-Api-Key' => '<your secure token>', 'Content-Type' => 'application/json'} http = Net::HTTP.new(uri.host, uri.port) http.use_ssl = true request = Net::HTTP::DELETE.new(uri.request_uri, header) request.body = body.to_json response = http.request(request)

fetch('https://<environmenturl>/api/roles/:role_id', {
  method: 'DELETE',
  headers: {
    'X-Api-Key': '<your secure token>',
    'Content-Type': 'application/json'
  },
  body: JSON.stringify(data)
})
  .then(response => response.json())
  .then(data => console.log(data))
  .catch(error => console.error(error));

SUCCESS RESPONSE The request returns JSON structured like below

{
  "status": true
}

This endpoint delete role.

UAT HTTP Request

DELETE https://nxt.api.q2pay.co.in/api/roles/:role_id

PRODUCTION HTTP Request

DELETE https://nxt.api.q2pay.in/api/roles/:role_id

Service Details

Service ID Description
DRole Delete specific Role

Assign User Feature To Role

curl -X POST "https://<environmenturl>/api/role_line_items"
  -H "X-Api-Key: <your secure token>"
  -H "Content-Type: application/json"
  -d {
       "user_feature_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
       "role_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx"
     }
require 'net/http'
require 'uri'
require 'json'

uri = URI.parse("https://<environmenturl>/api/role_line_items") header = {'X-Api-Key' => '<your secure token>', 'Content-Type' => 'application/json'} body = { "user_feature_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx", "role_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx" } http = Net::HTTP.new(uri.host, uri.port) http.use_ssl = true request = Net::HTTP::Post.new(uri.request_uri, header) request.body = body.to_json response = http.request(request)

const data = {
"user_feature_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
"role_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx"
};

fetch('https://<environmenturl>/api/role_line_items', { method: 'POST', headers: { 'X-Api-Key': '<your secure token>', 'Content-Type': 'application/json' }, body: JSON.stringify(data) }) .then(response => response.json()) .then(data => console.log(data)) .catch(error => console.error(error));

The below example can be sent as a request to the API.

{
 "user_feature_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
 "role_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx"
}

SUCCESS RESPONSE The request returns JSON structured like below on successful RoleLineItems creation

{
  "status": true,
  "roles": [
    {
      "role_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
      "role_name": "AHHSss",
      "role_desc": "AHHSss",
      "is_deleted": "N",
      "entity_id": "xxxxxx",
      "created_by": "xxxxxx",
      "created_by_name": "A Kamble",
      "created_on": 1698648152,
      "roles_line_items": [
        {
          "id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
          "user_feature_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
          "identifier": "Transaction ",
          "description": "Transactions"
        }
      ]
    }
  ],
  "features": [
    {
      "feature_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
      "feature_name": "feature name example",
      "feature_description": "feature description example",
      "feature_header": "feature header"
    }
  ],
  "unassigned_user_features": [
    {
      "feature_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
      "feature_name": "feature name example 1",
      "feature_description": "feature description example 1",
      "feature_header": "feature header 1"
    },
    {
     "feature_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
      "feature_name": "feature name example 2",
      "feature_description": "feature description example 2",
      "feature_header": "feature header 2"
    }
  ],
  "employees": [
    {
      "identifier": "xxxxxx",
      "user_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
      "first_name": "first name example",
      "last_name": "last name example",
      "entity_id": "xxxxxx"
    }
  ],
  "unassigned_employees": [
    {
      "identifier": "xxxxxx",
      "user_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
      "first_name": "first name example 1",
      "last_name": "last name example 1",
      "entity_id": "xxxxxx"
    }
  ],
  "title": {
    "records": 1,
    "current_page": 1,
    "total_pages": 1,
    "page_item_count": 1
  }
}

ERROR RESPONSE The request returns JSON structured like below for errors related to RoleLineItems creation

{
  "status": false,
  "errors": {
    "user_feature": [
      "User feature must exist"
    ],
    "role": [
      "Role must exist"
    ]
  }
}

This endpoint creates a role.

UAT HTTP Request

POST https://nxt.api.q2pay.co.in/api/role_line_items

PRODUCTION HTTP Request

POST https://nxt.api.q2pay.in/api/role_line_items

Query Parameters

Parameter Default Description Required Sample
user_feature_id N.A. User Feature Id Yes U4900
role_id N.A. role Service ID Yes P49408

Service Details

Service ID Description
ADD_FEATURE_ROLE_MAPPING Add feature and role services in Feature line items

Remove User Feature From Role

curl -X DELETE "https://<environmenturl>/api/role_line_items/:role_line_item_id"
  -H "X-Api-Key: <your secure token>"
  -H "Content-Type: application/json"
require 'net/http'
require 'uri'
require 'json'

uri = URI.parse("https://<environmenturl>/api/role_line_items/:role_line_item_id") header = {'X-Api-Key' => '<your secure token>', 'Content-Type' => 'application/json'} body = {"page_size" => 2, "page_no" => 1} http = Net::HTTP.new(uri.host, uri.port) http.use_ssl = true request = Net::HTTP::DELETE.new(uri.request_uri, header) request.body = body.to_json response = http.request(request)

const data = {

};

fetch('https://<environmenturl>/api/role_line_items/:role_line_item_id', { method: 'DELETE', headers: { 'X-Api-Key': '<your secure token>', 'Content-Type': 'application/json' }, body: JSON.stringify(data) }) .then(response => response.json()) .then(data => console.log(data)) .catch(error => console.error(error));

The below example can be sent as a request to the API.

SUCCESS RESPONSE The request returns JSON structured like below

{
  "status": true,
  "roles": [
    {
      "role_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
      "role_name": "AHHSss",
      "role_desc": "AHHSss",
      "is_deleted": "N",
      "entity_id": "xxxxxx",
      "created_by": "xxxxxx",
      "created_by_name": "A Kamble",
      "created_on": 1698648152,
      "roles_line_items": [
        {
          "id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
          "user_feature_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
          "identifier": "Transaction ",
          "description": "Transactions"
        }
      ]
    }
  ],
  "features": [
    {
      "feature_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
      "feature_name": "feature name example",
      "feature_description": "feature description example",
      "feature_header": "feature header"
    }
  ],
  "unassigned_user_features": [
    {
      "feature_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
      "feature_name": "feature name example 1",
      "feature_description": "feature description example 1",
      "feature_header": "feature header 1"
    },
    {
     "feature_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
      "feature_name": "feature name example 2",
      "feature_description": "feature description example 2",
      "feature_header": "feature header 2"
    }
  ],
  "employees": [
    {
      "identifier": "xxxxxx",
      "user_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
      "first_name": "first name example",
      "last_name": "last name example",
      "entity_id": "xxxxxx"
    }
  ],
  "unassigned_employees": [
    {
      "identifier": "xxxxxx",
      "user_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
      "first_name": "first name example 1",
      "last_name": "last name example 1",
      "entity_id": "xxxxxx"
    }
  ],
  "title": {
    "records": 1,
    "current_page": 1,
    "total_pages": 1,
    "page_item_count": 1
  }
}

This endpoint destroy roles line items.

UAT HTTP Request

DELETE https://nxt.api.q2pay.co.in/api/role_line_items/:role_line_item_id

PRODUCTION HTTP Request

DELETE https://nxt.api.q2pay.in/api/role_line_items/:role_line_item_id

Service Details

Service ID Description
DELETE_FEATURE_ROLE_MAPPING Destroy Roles Line Items

Transaction Auth Matrix

Transaction Authorization Matrix helps you create, maintain & test transaction authorization matrix for your organization.

Get All Transaction Authorization

curl "https://<environmenturl>/api/transaction_auth_matrix"
  -H "X-Api-Key: <your secure token>"
  -H "Content-Type: application/json"
  -d "{ "page_size": 2,
        "page_no": 1}"
require 'net/http'
require 'uri'
require 'json'

uri = URI.parse("https://<environmenturl>/api/transaction_auth_matrix") header = {'X-Api-Key' => '<your secure token>', 'Content-Type' => 'application/json'} body = {"page_size" => 2, "page_no" => 1} http = Net::HTTP.new(uri.host, uri.port) http.use_ssl = true request = Net::HTTP::Get.new(uri.request_uri, header) request.body = body.to_json response = http.request(request)

const data = {
  page_size: 2,
  page_no: 1
};

fetch('https://<environmenturl>/api/transaction_auth_matrix', { method: 'GET', headers: { 'X-Api-Key': '<your secure token>', 'Content-Type': 'application/json' }, body: JSON.stringify(data) }) .then(response => response.json()) .then(data => console.log(data)) .catch(error => console.error(error));

The below example can be sent as a request to the API.

{
  "page_size": 2,
  "page_no": 1
}

SUCCESS RESPONSE The request returns JSON structured like below

{
  "status": true,
  "total_count": 11,
  "transaction_auth_matrices": [
    {
      "id": 1,
      "entity_id": "xxxxxx",
      "type_of_transaction": "Vendor",
      "lower_amount": "100.01",
      "higher_amount": "10000.0",
      "definition": "Approver~1",
      "notification": "",
      "auto_approved?": false,
      "active": true,
      "activated_by_id": "xxxxxx",
      "activated_at": 1676533730,
      "created_at": 1676533763,
      "updated_at": 1676533763
    },
    {
      "id": 2,
      "entity_id": "xxxxxx",
      "type_of_transaction": "Vendor",
      "lower_amount": "10000.01",
      "higher_amount": "100000.0",
      "definition": "Approver~2<->CFO~1",
      "notification": "",
      "auto_approved?": false,
      "active": true,
      "activated_by_id": "xxxxxx",
      "activated_at": 1676533781,
      "created_at": 1676533783,
      "updated_at": 1676533783
    }
  ],
  "title": {
    "records": 11,
    "current_page": 1,
    "total_pages": 6,
    "page_item_count": 2,
    "next_page": 2
  }
}

This endpoint retrieves all transaction authorization matrices for your entity.

UAT HTTP Request

GET https://nxt.api.q2pay.co.in/api/transaction_auth_matrix

PRODUCTION HTTP Request

GET https://nxt.api.q2pay.in/api/transaction_auth_matrix

Query Parameters

Parameter Default Description Required Sample
page_size 50 If set to specific number, the result will include that number of authorization matrices. No
page_no 1 If set to specific number, the result will include that page of authorization matrices. No
entity_id N.A If set to specific value, the result will include rules for that specific entity No xxxxxx
type_of_transaction N.A If set to specific value, the result will include rules for that specific type of transaction. No vendor
entity_id NA If set, entity_id return Auth Matrix transactions for that entity No ******

Service Details

Service ID Description
VAuth_matrix, MimicEntity View Auth Matrix
Admin Admin

Get Transaction Authorization

curl "https://<environmenturl>/api/transaction_auth_matrix/1"
  -H "X-Api-Key: <your secure token>"
  -H "Content-Type: application/json"
require 'net/http'
require 'uri'
require 'json'

uri = URI.parse("https://<environmenturl>/api/transaction_auth_matrix/1") header = {'X-Api-Key' => '<your secure token>', 'Content-Type' => 'application/json'} http = Net::HTTP.new(uri.host, uri.port) http.use_ssl = true request = Net::HTTP::Get.new(uri.request_uri, header) request.body = body.to_json response = http.request(request)

fetch('https://<environmenturl>/api/transaction_auth_matrix/1', {
  method: 'GET',
  headers: {
    'X-Api-Key': '<your secure token>',
    'Content-Type': 'application/json'
  }
})
  .then(response => response.json())
  .then(data => console.log(data))
  .catch(error => console.error(error));

SUCCESS RESPONSE The request returns JSON structured like below

{
  "status": true,
  "transaction_auth_matrices": {
    "id": 10,
    "entity_id": "xxxxxx",
    "type_of_transaction": "Client",
    "lower_amount": "10000.01",
    "higher_amount": "100000.0",
    "definition": "Approver~2<->CFO~1",
    "notification": "Approver, CFO",
    "auto_approved?": false,
    "active": true,
    "activated_by_id": "xxxxxx",
    "activated_at": 1677072806,
    "created_at": 1677072806,
    "updated_at": 1677072806
  }
} 

This endpoint retrieves specific transaction authorization matrices for your entity.

UAT HTTP Request

GET https://nxt.api.q2pay.co.in/api/transaction_auth_matrix/:ID

PRODUCTION HTTP Request

GET https://nxt.api.q2pay.in/api/transaction_auth_matrix/:ID

Service Details

Service ID Description
VAuth_matrix View Auth Matrix

Create Transaction Authorization Matrix

curl -X POST "https://<environmenturl>/api/transaction_auth_matrix"
  -H "X-Api-Key: <your secure token>"
  -H "Content-Type: application/json"
  -d "{ "entity_id": "xxxxxx",
        "type_of_transaction": "InstaPay",
        "lower_amount": 100000.01,
        "higher_amount": 1000000,
        "auto_approved": false,
        "notification": "Approver, CFO",
        "grades_info": "{\"Approver\": 2, \"CFO\": 1}"
      }"
require 'net/http'
require 'uri'
require 'json'

uri = URI.parse("https://<environmenturl>/api/transaction_auth_matrix") header = {'X-Api-Key' => '<your secure token>', 'Content-Type' => 'application/json'} body = { "entity_id": "xxxxxx", "type_of_transaction": "InstaPay", "lower_amount": 100000.01, "higher_amount": 1000000, "auto_approved": false, "notification": "Approver, CFO", "grades_info": "{\"Approver\": 2, \"CFO\": 1}" } http = Net::HTTP.new(uri.host, uri.port) http.use_ssl = true request = Net::HTTP::Post.new(uri.request_uri, header) request.body = body.to_json response = http.request(request)

const data = {
  entity_id: 'xxxxxx',
  type_of_transaction: 'InstaPay',
  lower_amount: 100000.01,
  higher_amount: 1000000,
  auto_approved: false,
  notification: 'Approver, CFO',
  grades_info: '{"Approver": 2, "CFO": 1}'
};

fetch('https://<environmenturl>/api/transaction_auth_matrix', { method: 'POST', headers: { 'X-Api-Key': '<your secure token>', 'Content-Type': 'application/json' }, body: JSON.stringify(data) }) .then(response => response.json()) .then(data => console.log(data)) .catch(error => console.error(error));

The below example can be sent as a request to the API.

{
  "entity_id": "xxxxxx",
  "type_of_transaction": "InstaPay",
  "lower_amount": 100000.01,
  "higher_amount": 1000000,
  "auto_approved": false,
  "notification": "Approver, CFO",
  "grades_info": "{\"Approver\": 2, \"CFO\": 1}"
}

SUCCESS RESPONSE The request returns JSON structured like below on successful matrix creation

{
  "status": true,
  "transaction_auth_matrices": {
    "id": 12,
    "entity_id": "xxxxxx",
    "type_of_transaction": "InstaPay",
    "lower_amount": "100000.01",
    "higher_amount": "1000000.0",
    "definition": "Approver~2<->CFO~1",
    "notification": "Approver, CFO",
    "auto_approved?": false,
    "active": true,
    "activated_by_id": "xxxxxx",
    "activated_at": 1677223758,
    "created_at": 1677223758,
    "updated_at": 1677223758
  }
}

ERROR RESPONSE The request returns JSON structured like below for errors related to matrix creation

{
  "status": false,
  "errors": [
    "Entity can't be blank",
    "Type of transaction can't be blank",
    "Lower amount can't be blank",
    "Higher amount can't be blank",
    "Notification can't be blank",
    "Definition can't be blank"
    "Entity Transaction authorization rule already exists"
  ]
}

This endpoint creates a transaction authorization matrix for your entity.

UAT HTTP Request

POST https://nxt.api.q2pay.co.in/api/transaction_auth_matrix

PRODUCTION HTTP Request

POST https://nxt.api.q2pay.in/api/transaction_auth_matrix

Query Parameters

Parameter Default Description Required Sample
entity_id N.A. Entity ID Yes xxxxx
type_of_transaction N.A. Type of transaction for rule Yes Client
lower_amount N.A. Lower amount for rule Yes 100000.01
higher_amount N.A. Higher amount for rule Yes 1000000
auto_approved false Auto approval of transactions for rule No "true" / "false"
notification N.A. List of grades to whom notifications to be sent for rule No Approver, CFO
grades_info N.A. List of grades and their their count for rule Yes {"Approver": 2, "CFO": 1}

Service Details

Service ID Description
CAuth_matrix Create Auth Matrix

Test Authorization Matrix

curl -X POST "https://<environmenturl>/api/transaction_auth_matrix/test_matrix"
  -H "X-Api-Key: <your secure token>"
  -H "Content-Type: application/json"
  -d "{ "entity_id": "xxxxxx",
        "type_of_transaction": "Vendor",
        "user_id": "xxxxxxx",
        "user_grade": "Approver",
        "amount": 99999,
        "existing_approvals": {
          "grade_count": {},
          "user_ids": []
        }
      }"
require 'net/http'
require 'uri'
require 'json'

uri = URI.parse("https://<environmenturl>/api/transaction_auth_matrix/test_matrix") header = {'X-Api-Key' => '<your secure token>', 'Content-Type' => 'application/json'} body = { "entity_id": "xxxxxx", "type_of_transaction": "Vendor", "user_id": "xxxxxxx", "user_grade": "Approver", "amount": 99999, "existing_approvals": { "grade_count": {}, "user_ids": [] } } http = Net::HTTP.new(uri.host, uri.port) http.use_ssl = true request = Net::HTTP::Post.new(uri.request_uri, header) request.body = body.to_json response = http.request(request)

const data = { "entity_id": "xxxxxx",
        "type_of_transaction": "Vendor",
        "user_id": "xxxxxxx",
        "user_grade": "Approver",
        "amount": 99999,
        "existing_approvals": {
          "grade_count": {},
          "user_ids": []
        }
      };

fetch('https://<environmenturl>/api/transaction_auth_matrix/test_matrix', { method: 'POST', headers: { 'X-Api-Key': '<your secure token>', 'Content-Type': 'application/json' }, body: JSON.stringify(data) }) .then(response => response.json()) .then(data => console.log(data)) .catch(error => console.error(error));

The below example can be sent as a request to the API.

{
  "entity_id": "xxxxxx",
  "type_of_transaction": "Vendor",
  "user_id": "xxxxxxx",
  "user_grade": "Approver",
  "amount": 99999,
  "existing_approvals": {
    "grade_count": {},
    "user_ids": []
  }
}

SUCCESS RESPONSE The request returns JSON structured like below if auth matrix is valid for transaction

{
  "status": true,
  "transaction_auth_matrix": {
    "user_authorized": true,
    "authorization_rule": "Approver~2<->CFO~1",
    "authorization_rule_id": 2,
    "total_pending_approval_count": null,
    "transaction_final_approved": false,
    "error": false
  }
}

ERROR RESPONSE The request returns JSON structured like below for parameters errors

{
  "status": false,
  "errors": {
    "user_authorized": false,
    "transaction_final_approved": false,
    "reason": "Paramerters are not sufficient to perform authorization",
    "error": true
  }
}

ERROR RESPONSE The request returns JSON structured like below when no authorization rule is found

{
  "status": false,
  "errors": {
    "user_authorized": false,
    "transaction_final_approved": false,
    "reason": "No authorization rule found",
    "error": true
  }
}

ERROR RESPONSE The request returns JSON structured like below when no authorization rule is found

{
  "status": false,
  "errors": {
    "user_authorized": false,
    "transaction_final_approved": false,
    "reason": "No authorization rule found for entity",
    "error": true
  }
}

ERROR RESPONSE The request returns JSON structured like below when user is not authorized

{
  "status": false,
  "errors": {
    "user_authorized": false,
    "transaction_final_approved": false,
    "reason": "User is not authorized to perform this action",
    "error": true
  }
}

ERROR RESPONSE The request returns JSON structured like below when user is processing duplicate approval

{
  "status": false,
  "errors": {
    "user_authorized": false,
    "transaction_final_approved": false,
    "reason": "User is not authorized to approve (duplicate approval)",
    "error": true
  }
}

ERROR RESPONSE The request returns JSON structured like below when multiple valid & overlapping authorization rules are found

{
  "status": false,
  "errors": {
    "user_authorized": false,
    "transaction_final_approved": false,
    "reason": "Ambiguous authorization rules found",
    "error": false
  }
}

This endpoint will retreive the authorization matrix response for a transaction

UAT HTTP Request

POST https://nxt.api.q2pay.co.in/api/transaction_auth_matrix/test_matrix

PRODUCTION HTTP Request

POST https://nxt.api.q2pay.in/api/transaction_auth_matrix/test_matrix

Query Parameters

Parameter Default Description Required Sample
entity_id N.A. Entity ID Yes xxxxxx
type_of_transaction N.A. Type of transaction for rule Yes Client
user_id N.A. User ID Yes xxxxxxx
user_grade N.A. User Grade Yes Approver
amount N.A. Amount Yes 99999
existing_approvals N.A. Existing approvals grades & count Yes { "grade_count": {"Approver": 1, "CFO": 1}, "user_ids": ["xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx", "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx"] }

Service Details

Service ID Description
CAuth_matrix Create Auth Matrix

Test Predicted Approval Grades

curl -X POST "https://<environmenturl>/api/transaction_auth_matrix/test_predicted_approval"
  -H "X-Api-Key: <your secure token>"
  -H "Content-Type: application/json"
  -d "{
        "entity_id": "xxxxxx",
        "type_of_transaction": "Vendor",
        "amount": 99999,
        "existing_approvals_grade_count": "{\"Approver\": 1}"
      }"
require 'net/http'
require 'uri'
require 'json'

uri = URI.parse("https://<environmenturl>/api/transaction_auth_matrix/test_predicted_approval") header = {'X-Api-Key' => '<your secure token>', 'Content-Type' => 'application/json'} body = { "entity_id": "xxxxxx", "type_of_transaction": "Vendor", "amount": 99999, "existing_approvals_grade_count": {"Approver": 1}" } http = Net::HTTP.new(uri.host, uri.port) http.use_ssl = true request = Net::HTTP::Post.new(uri.request_uri, header) request.body = body.to_json response = http.request(request)

const data = { entity_id: 'xxxxxx',
        type_of_transaction: 'Vendor',
        amount: 99999,
        existing_approvals_grade_count: '{'Approver': 1}'
      };

fetch('https://<environmenturl>/api/transaction_auth_matrix/test_predicted_approval', { method: 'POST', headers: { 'X-Api-Key': '<your secure token>', 'Content-Type': 'application/json' }, body: JSON.stringify(data) }) .then(response => response.json()) .then(data => console.log(data)) .catch(error => console.error(error));

The below example can be sent as a request to the API.

{
  "entity_id": "xxxxxx",
  "type_of_transaction": "Vendor",
  "amount": 99999,
  "existing_approvals_grade_count": "{\"Approver\": 1}"
}

SUCCESS RESPONSE The request returns JSON structured like below

{
  "status": true,
  "predicted_approval": {
    "transaction_status": "approval_pending",
    "predicted_approval_grades": [
      "CFO",
      "Director",
      "Approver"
    ],
    "error": false
  }
}

ERROR RESPONSE The request returns JSON structured like below for a transaction that is already approved

{
  "status": false,
  "errors": {
    "transaction_status": "approved",
    "error": false
  }
}

ERROR RESPONSE The request returns JSON structured like below for parameters errors

{
  "status": false,
  "errors": {
    "action_authorized": false,
    "reason": "Paramerters are not sufficient to perform action",
    "error": true
  }
}

This endpoint will retreive predicted approval grades for the relevant authorization matrix for a transaction

UAT HTTP Request

POST https://nxt.api.q2pay.co.in/api/transaction_auth_matrix/test_predicted_approval

PRODUCTION HTTP Request

POST https://nxt.api.q2pay.in/api/transaction_auth_matrix/test_predicted_approval

Query Parameters

Parameter Default Description Required Sample
entity_id N.A. Entity ID Yes xxxxxx
type_of_transaction N.A. Type of transaction for rule Yes Client
amount N.A. Amount of transaction Yes 99999
existing_approvals_grade_count N.A. Existing approvals grade count Yes {"Approver": 1}

Service Details

Service ID Description
CAuth_matrix Create Auth Matrix

Vendor Transaction

Vendor Transaction helps you create, maintain & manage lifecycle of vendor transactions for your organization.

Get All Vendor Transactions

curl "https://<environmenturl>/api/transactions/vendor"
  -H "X-Api-Key: <your secure token>"
  -H "Content-Type: application/json"
  -d "{ "page_size": 2,
        "page_no": 1}"
require 'net/http'
require 'uri'
require 'json'

uri = URI.parse("https://<environmenturl>/api/transactions/vendor") header = {'X-Api-Key' => '<your secure token>', 'Content-Type' => 'application/json'} body = {"page_size" => 2, "page_no" => 1} http = Net::HTTP.new(uri.host, uri.port) http.use_ssl = true request = Net::HTTP::Get.new(uri.request_uri, header) request.body = body.to_json response = http.request(request)

const data = {
  page_size: 2,
  page_no: 1
};

fetch('https://<environmenturl>/api/transactions/vendor', { method: 'GET', headers: { 'X-Api-Key': '<your secure token>', 'Content-Type': 'application/json' }, body: JSON.stringify(data) }) .then(response => response.json()) .then(data => console.log(data)) .catch(error => console.error(error));

The below example can be sent as a request to the API.

{
  "page_size": 2,
  "page_no": 1
}

SUCCESS RESPONSE The request returns JSON structured like below

{
  "status": true,
  "total_count": 19,
  "total_amount": "1848510.0",
  "transactions": [
    {
      "total_count": 1,
      "total_amount": "190005.0",
      "txn_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
      "amount": "190005.0",
      "invoice_no": "INV190005",
      "distribution_remark": "Supplies purchase transaction",
      "txn_initiator": "xxxxxx",
      "lifecycle_status": "pending"
      "approval_status": "N",
      "payment_charge": "0.0",
      "tax_amount": "0.0",
      "entity_id": "xxxxxx",
      "posting_date": 1677235746,
      "is_delete": "N",
      "payment_method": "Vendor Transaction",
      "vendor_id": "xxxxx",
      "txn_initiator_name": "ABCD AAKDM",
      "creator_ip_address": "127.0.0.1",
      "last_updated_user_id": "xxxxxxx",
      "last_updated_status": "Transaction Created",
      "last_updated_timestamp": 1677235746,
      "last_updated_user_name": "ABCD AAKDM"
    },
    {
      "total_count": 1,
      "total_amount": "43589.0",
      "txn_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
      "amount": "43589.0",
      "invoice_no": "INV001",
      "distribution_remark": "First Test Transaction",
      "txn_initiator": "xxxxxx",
      "lifecycle_status": "approved"
      "approval_status": "Y",
      "payment_charge": "0.0",
      "tax_amount": "0.0",
      "entity_id": "xxxxxx",
      "posting_date": 1676898813,
      "is_delete": "N",
      "payment_method": "Vendor Transaction",
      "vendor_id": "xxxxx",
      "txn_initiator_name": "ABCD AAKDM",
      "creator_ip_address": "127.0.0.1",
      "last_updated_user_id": "xxxxxxx",
      "last_updated_status": "Transaction Created",
      "last_updated_timestamp": 1676898813,
      "last_updated_user_name": "ABCD AAKDM"
    }
  ],
  "title": {
    "records": 19,
    "current_page": 1,
    "total_pages": 10,
    "page_item_count": 2,
    "next_page": 2
  }
}

This endpoint retrieves all vendor transactions for your entity.

UAT HTTP Request

GET https://nxt.api.q2pay.co.in/api/transactions/vendor

PRODUCTION HTTP Request

GET https://nxt.api.q2pay.in/api/transactions/vendor

Query Parameters

Parameter Default Description Required Sample
page_size 50 If set to specific number, the result will include that number of transactions. No 10
page_no 1 If set to specific number, the result will include that page of transactions. No 2
txn_id N.A. If set to specific legacy ID, the result will include that specific transaction. No xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx
vendor_id N.A. If set to specific vendor ID, the result will include transactions for that specific vendor. No xxxxx
entity_id NA If set, entity_id all vendor transactions will be returned for that entity No ******

Service Details

Service ID Description
VVendorTxn, MimicEntity View Vendor Transactions

Get Vendor Transactions

curl "https://<environmenturl>/api/transactions/vendor/:ID"
  -H "X-Api-Key: <your secure token>"
  -H "Content-Type: application/json"
  -d "{ "page_size": 2,
        "page_no": 1}"
require 'net/http'
require 'uri'
require 'json'

uri = URI.parse("https://<environmenturl>/api/transactions/vendor/:ID") header = {'X-Api-Key' => '<your secure token>', 'Content-Type' => 'application/json'} body = {"page_size" => 2, "page_no" => 1} http = Net::HTTP.new(uri.host, uri.port) http.use_ssl = true request = Net::HTTP::Get.new(uri.request_uri, header) request.body = body.to_json response = http.request(request)

const data = {
  page_size: 2,
  page_no: 1
};

fetch('https://<environmenturl>/api/transactions/vendor/:ID', { method: 'GET', headers: { 'X-Api-Key': '<your secure token>', 'Content-Type': 'application/json' }, body: JSON.stringify(data) }) .then(response => response.json()) .then(data => console.log(data)) .catch(error => console.error(error));

SUCCESS RESPONSE The request returns JSON structured like below

{
   "status": true,
    "transactions": {
       "txn_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
       "amount": "5645.0",
       "invoice_no": "",
       "distribution_remark": "",
       "txn_initiator": "xxxxxx",
       "lifecycle_status": "approved",
       "approval_status": "Y",
       "payment_charge": "0.0",
       "tax_amount": "0.0",
       "entity_id": "xxxxxx",
       "posting_date": 1680181206,
       "is_delete": "N",
       "payment_method": "Vendor Transaction",
       "vendor_id": "xxxxx",
       "txn_initiator_name": "Test Rahul",
       "creator_ip_address": "13.234.55.90",
       "last_updated_user_id": "xxxxxxx",
       "last_updated_status": "Approved",
       "last_updated_timestamp": 1680187533,
       "last_updated_user_name": "Test Ketan",
       "logs": [
            {
                "action": "Created",
                "user_id": "xxxxxxx",
                "platform": "Web",
                "last_name": "Rahul",
                "last_used": 1680181206,
                "timestamp": "2023-03-30T13:00:06.318Z",
                "first_name": "Test",
                "ip_address": "13.234.55.90",
                "is_primary": false,
                "os_version": "Mac OS X",
                "request_ip": "13.234.55.90",
                "is_verified": true,
                "browser_name": "Google Chrome",
                "logged_in_flag": true,
                "logged_in_time": 1680179094,
                "user_full_name": "Test Rahul"
           },
           {
                "action": "Approved",
                "user_id": "xxxxxxx",
                "platform": "Web",
                "last_name": "Ketan",
                "last_used": 1680183085,
                "timestamp": "2023-03-30T13:31:25.248Z",
                "first_name": "Testt",
                "ip_address": "13.234.55.90",
                "is_primary": false,
                "os_version": "Windows 10",
                "request_ip": "13.234.55.90",
                "is_verified": true,
                "browser_name": "Google Chrome",
                "logged_in_flag": true,
                "logged_in_time": 1680183072,
                "user_full_name": "Testt Ketan",
                "authorization_rule": "< auth rule >"
           },
           {
                "action": "Approved",
                "user_id": "xxxxxxx",
                "platform": "Web",
                "last_name": "Ketan",
                "last_used": 1680187533,
                "timestamp": "2023-03-30T14:45:33.135Z",
                "first_name": "Test",
                "ip_address": "13.234.55.90",
                "is_primary": false,
                "os_version": "Windows 10",
                "request_ip": "13.234.55.90",
                "is_verified": true,
                "browser_name": "Google Chrome",
                "final_approval": true,
                "logged_in_flag": true,
                "logged_in_time": 1680187450,
                "user_full_name": "Test Ketan",
                "authorization_rule": "< auth rule >"
           }
        ]
   }
}

This endpoint retrieves specific vendor transactions for your entity.

UAT HTTP Request

GET https://nxt.api.q2pay.co.in/api/transactions/vendor/:ID

PRODUCTION HTTP Request

GET https://nxt.api.q2pay.in/api/transactions/vendor/:ID

Service Details

Service ID Description
VSinglePay View Vendor Transactions

Create Vendor Transaction

curl -X POST "https://<environmenturl>/api/transactions/vendor"
  -H "X-Api-Key: <your secure token>"
  -H "Content-Type: application/json"
  -d "{ "amount": 190005,
        "distribution_remark": "Supplies purchase transaction",
        "invoice_no": "INV190008",
        "vendor_id": "xxxxx"
      }"
require 'net/http'
require 'uri'
require 'json'

uri = URI.parse("https://<environmenturl>/api/transactions/vendor") header = {'X-Api-Key' => '<your secure token>', 'Content-Type' => 'application/json'} body = { "amount": 190005, "distribution_remark": "Supplies purchase transaction", "invoice_no": "INV190008", "vendor_id": "xxxxx" } http = Net::HTTP.new(uri.host, uri.port) http.use_ssl = true request = Net::HTTP::Post.new(uri.request_uri, header) request.body = body.to_json response = http.request(request)

const data = {
  'amount': 190005,
  'distribution_remark': 'Supplies purchase transaction',
  'invoice_no': 'INV190008',
  'vendor_id': 'xxxxx'
};

fetch('https://<environmenturl>/api/transactions/vendor', { method: 'POST', headers: { 'X-Api-Key': '<your secure token>', 'Content-Type': 'application/json' }, body: JSON.stringify(data) }) .then(response => response.json()) .then(data => console.log(data)) .catch(error => console.error(error));

The below example can be sent as a request to the API.

{
  "amount": 190005,
  "distribution_remark": "Supplies purchase transaction",
  "invoice_no": "INV190008",
  "vendor_id": "xxxxx"
}

SUCCESS RESPONSE The request returns JSON structured like below on successful vendor transaction creation

{
  "status": true,
  "transactions": {
    "total_count": 1,
    "total_amount": "190005.0",
    "txn_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
    "amount": "190005.0",
    "invoice_no": "INV190008",
    "distribution_remark": "Supplies purchase transaction",
    "txn_initiator": "xxxxxx",
    "lifecycle_status": "approved",
    "approval_status": "Y",,
    "payment_charge": "0.0",
    "tax_amount": "0.0",
    "entity_id": "xxxxxx",
    "posting_date": 1677236491,
    "is_delete": "N",
    "payment_method": "Vendor Transaction",
    "vendor_id": "xxxxx",
    "txn_initiator_name": "ABCD AAKDM",
    "creator_ip_address": "127.0.0.1",
    "last_updated_user_id": "xxxxxxx",
    "last_updated_status": "Transaction Created",
    "last_updated_timestamp": 1677236491,
    "last_updated_user_name": "ABCD AAKDM"
  }
}

SUCCESS RESPONSE The request returns JSON structured like below on successful vendor transaction creation which is auto approved

{
  "status": true,
  "transactions": {
    "total_count": 1,
    "total_amount": "190005.0",
    "txn_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
    "amount": "190005.0",
    "invoice_no": "INV190008",
    "distribution_remark": "Supplies purchase transaction",
    "txn_initiator": "xxxxxx",
    "approval_status": "Y",
    "payment_charge": "0.0",
    "tax_amount": "0.0",
    "entity_id": "xxxxxx",
    "posting_date": 1677236491,
    "is_delete": "N",
    "payment_method": "Vendor Transaction",
    "vendor_id": "xxxxx",
    "txn_initiator_name": "ABCD AAKDM",
    "creator_ip_address": "127.0.0.1",
    "last_updated_user_id": "xxxxxxx",
    "last_updated_status": "Transaction Created",
    "last_updated_timestamp": 1677236491,
    "last_updated_user_name": "ABCD AAKDM"
  }
}

ERROR RESPONSE The request returns JSON structured like below for errors related to transaction posting

{
  "status": false,
  "errors": {
    "base":[
    "Entity can't be blank",
    "Created by can't be blank",
    "Creators ip address can't be blank",
    "legacy Txn Id has already been taken",
    "Amount can't be blank",
    "Amount is not a number"
  ]
  }

}

This endpoint creates a vendor transaction for the entity.

UAT HTTP Request

POST https://nxt.api.q2pay.co.in/api/transactions/vendor

PRODUCTION HTTP Request

POST https://nxt.api.q2pay.in/api/transactions/vendor

Query Parameters

Parameter Default Description Required Sample
amount N.A. Amount of transaction Yes 190005.01
vendor_id N.A. Vendor ID for transaction Yes xxxxx
distribution_remark N.A. Distribution remark for transaction No Supplies purchase transaction
invoice_no N.A. Invoice number for transaction No INV190008
legacy_id N.A. Legacy ID for transaction No xxxxx

Service Details

Service ID Description
CVendorTxn Create Vendor Transaction

Delete Vendor Transactions

curl -x DELETE "https://<environmenturl>/api/transactions/vendor/:ID"
  -H "X-Api-Key: <your secure token>"
  -H "Content-Type: application/json"
require 'net/http'
require 'uri'
require 'json'

uri = URI.parse("https://<environmenturl>/api/transactions/vendor/:ID") header = {'X-Api-Key' => '<your secure token>', 'Content-Type' => 'application/json'} http = Net::HTTP.new(uri.host, uri.port) http.use_ssl = true request = Net::HTTP::DELETE.new(uri.request_uri, header) response = http.request(request)

const data = {};

fetch('https://<environmenturl>/api/transactions/vendor/:ID', { method: 'DELETE', headers: { 'X-Api-Key': '<your secure token>', 'Content-Type': 'application/json' }, body: JSON.stringify(data) }) .then(response => response.json()) .then(data => console.log(data)) .catch(error => console.error(error));

SUCCESS RESPONSE The request returns JSON structured like below

{
  "status": true
}

This endpoint deletes specific vendor transaction for your entity.

UAT HTTP Request

DELETE https://nxt.api.q2pay.co.in/api/transactions/vendor/:ID

PRODUCTION HTTP Request

DELETE https://nxt.api.q2pay.in/api/transactions/vendor/:ID

ERROR RESPONSE The request returns JSON structured like below for errors related to delete transaction

{ 
 "status": false,
 "errors": {
  "base": [
     "Transaction cannot be deleted due to current status" 
     ]
  }
}

Service Details

Service ID Description
VSinglePay Delete Vendor Transactions

Approve Vendor Transaction

curl -X POST "https://<environmenturl>/api/transactions/vendor/approve/"
  -H "X-Api-Key: <your secure token>"
  -H "Content-Type: application/json"
  -d "{
        "txn_id":  ["xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx", "xxxxx"]
      }"
require 'net/http'
require 'uri'
require 'json'

uri = URI.parse("https://<environmenturl>/api/transactions/vendor/approve")
header = {'X-Api-Key' => '<your secure token>', 'Content-Type' => 'application/json'}
body = {
        "txn_id":  ["xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx", "xxxxx"]
       }
http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = true
request = Net::HTTP::Post.new(uri.request_uri, header)
request.body = body.to_json
response = http.request(request)
const data = {
  'txn_id':  ["xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx", "xxxxx"]
};

fetch('https://<environmenturl>/api/transactions/vendor/approve', {
  method: 'POST',
  headers: {
    'X-Api-Key': '<your secure token>',
    'Content-Type': 'application/json'
  },
  body: JSON.stringify(data)
})
  .then(response => response.json())
  .then(data => console.log(data))
  .catch(error => console.error(error));

The below example can be sent as a request to the API.

{
  "txn_id":  ["xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx", "xxxxx"]
}

SUCCESS RESPONSE The request returns JSON structured like below on successful approval of all transactions

{
  "status": true,
  "total_count": 2,
  "total_amount": "209007.0",
  "transactions": [
    {
      "total_count": 1,
      "total_amount": "190005.0",
      "txn_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
      "amount": "190005.0",
      "invoice_no": "INV190006",
      "distribution_remark": "Supplies purchase transaction",
      "txn_initiator": "xxxxxx",
      "lifecycle_status": "approved",
      "approval_status": "Y",
      "payment_charge": "0.0",
      "tax_amount": "0.0",
      "entity_id": "xxxxxx",
      "posting_date": 1677236041,
      "is_delete": "N",
      "payment_method": "Vendor Transaction",
      "vendor_id": "xxxxx",
      "txn_initiator_name": "ABCD AAKDM",
      "creator_ip_address": "127.0.0.1",
      "last_updated_user_id": "xxxxxxx",
      "last_updated_status": "Approved",
      "last_updated_timestamp": 1677240223,
      "last_updated_user_name": "ABAC DASAEA"
    },
    {
      "total_count": 1,
      "total_amount": "19002.0",
      "txn_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
      "amount": "19002.0",
      "invoice_no": "INV19002",
      "distribution_remark": "First Test Transaction",
      "txn_initiator": "xxxxxx",
      "approval_status": "N",
      "payment_charge": "0.0",
      "tax_amount": "0.0",
      "entity_id": "QI829",
      "posting_date": 1676959638,
      "is_delete": "N",
      "payment_method": "Vendor Transaction",
      "vendor_id": "xxxxx",
      "txn_initiator_name": "ABCD AAKDM",
      "creator_ip_address": "127.0.0.1",
      "last_updated_user_id": "xxxxxxx",
      "last_updated_status": "Approved",
      "last_updated_timestamp": 1677240223,
      "last_updated_user_name": "ABAC DAFAFA"
    }
  ],
  "title": {
    "records": 2,
    "current_page": 1,
    "total_pages": 1,
    "page_item_count": 50
  }
}

ERROR RESPONSE The request returns JSON structured like below for errors related to transaction posting

{
  "status": false,
  "errors": {
    "base":[
    "Invalid / Insufficient parameters"
    "No transactions found for transaction ids: <as input>"
    "All transactions do not belong to the same entity / Few transactions are already approved or are abandoned"
    "User is not authorized to approve transaction."
    "Invalid parameters for transaction update approval"
   ]
  } 
}

ERROR RESPONSE The request returns JSON structured like below for errors related to double approval

{
  "status": false,
  "errors":{
    "base":[     
      {
        "id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
        "legacy_id": null,
        "errors": [
          {
            "reason": "User is not authorized to approve (duplicate approval)"
          }
        ]
      },
      {
        "id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
        "legacy_id": "xxxxxx",
        "errors": [
          {
            "reason": "User is not authorized to approve (duplicate approval)"
          }
        ]
      }
    ]
  }  
}

This endpoint performs approval for the vendor transactions for the entity.

UAT HTTP Request

POST https://nxt.api.q2pay.co.in/api/transactions/vendor/approve

PRODUCTION HTTP Request

POST https://nxt.api.q2pay.in/api/transactions/vendor/approve

Query Parameters

Parameter Default Description Required Sample
txn_id N.A. Transaction ID or Legacy ID for transaction Yes ["xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx", "xxxxx"]

Service Details

Service ID Description
VSinglePay Approve Vendor Transaction

Reject Vendor Transaction

curl -X POST "https://<environmenturl>/api/transactions/vendor/reject"
  -H "X-Api-Key: <your secure token>"
  -H "Content-Type: application/json"
  -d "{
        "txn_id": ["a368c069-7236-4a8e-9cc3-3a5928b9357b", "19002T"],
        "reason": "Another transaction is already in progress"
      }"
require 'net/http'
require 'uri'
require 'json'

uri = URI.parse("https://<environmenturl>/api/transactions/vendor/reject") header = {'X-Api-Key' => '<your secure token>', 'Content-Type' => 'application/json'} body = { "txn_id": ["xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx", "xxxxx"], "reason": "Another transaction is already in progress" } http = Net::HTTP.new(uri.host, uri.port) http.use_ssl = true request = Net::HTTP::Post.new(uri.request_uri, header) request.body = body.to_json response = http.request(request)

const data = {
        'txn_id': ["xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx", "xxxxx"],
        'reason': 'Another transaction is already in progress'
      };

fetch('https://<environmenturl>/api/transactions/vendor/reject', { method: 'POST', headers: { 'X-Api-Key': '<your secure token>', 'Content-Type': 'application/json' }, body: JSON.stringify(data) }) .then(response => response.json()) .then(data => console.log(data)) .catch(error => console.error(error));

The below example can be sent as a request to the API.

{
  "txn_id": ["xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx", "xxxxx"],
  "reason": "Another transaction is already in progress"
}

SUCCESS RESPONSE The request returns JSON structured like below on successful status updation of all transactions

{
  "status": true,
  "reason": "Another transaction is already in progress",
  "txn_id": [
    "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
    "xxxxx"
  ]
}

ERROR RESPONSE The request returns JSON structured like below when transactions are not found

{
  "status": false,
  "action": "Not performed",
   "errors": {
    "base":[
      "No transactions found for transaction ids: a368c069-7236-4a8e-9cc3-3a5928b9357b, 19002T"
    ]
   }
}

ERROR RESPONSE The request returns JSON structured like below for errors related to duplicate rejection

{
  "status": false,
  "action": "Not performed",
   "errors": {
    "base":
    [
      {
        "id": "a368c069-7236-4a8e-9cc3-3a5928b9357b",
        "legacy_id": null,
        "errors": [
          {
            "reason": "Transaction cannot be updated due to current status"
          }
        ]
      },
      {
        "id": "0b519c04-135c-4aed-8e03-ab9048274325",
        "legacy_id": "19002T",
        "errors": [
          {
            "reason": "Transaction cannot be updated due to current status"
          }
        ]
      }
    ]
  }
}

This endpoint performs rejection for the vendor transactions for the entity.

UAT HTTP Request

POST https://nxt.api.q2pay.co.in/api/transactions/vendor/reject

PRODUCTION HTTP Request

POST https://nxt.api.q2pay.in/api/transactions/vendor/reject

Query Parameters

Parameter Default Description Required Sample
txn_id N.A. Transaction ID or Legacy ID for transaction Yes ["xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx", "xxxxx"]
reason N.A. Rejection reason to be updated for the transaction Yes "Another transaction is already in progress"

Service Details

Service ID Description
ASinglePay Reject Vendor Transaction

Get Actionable Vendor Transactions

curl "https://<environmenturl>/api/transactions/vendor/actionable"
  -H "X-Api-Key: <your secure token>"
  -H "Content-Type: application/json"
  -d "{ "page_size": 2,
        "page_no": 1}"
require 'net/http'
require 'uri'
require 'json'

uri = URI.parse("https://<environmenturl>/api/transactions/vendor/actionable") header = {'X-Api-Key' => '<your secure token>', 'Content-Type' => 'application/json'} body = {"page_size" => 2, "page_no" => 1} http = Net::HTTP.new(uri.host, uri.port) http.use_ssl = true request = Net::HTTP::Get.new(uri.request_uri, header) request.body = body.to_json response = http.request(request)

const data = {
  page_size: 2,
  page_no: 1
};

fetch('https://<environmenturl>/api/transactions/vendor/actionable', { method: 'GET', headers: { 'X-Api-Key': '<your secure token>', 'Content-Type': 'application/json' }, body: JSON.stringify(data) }) .then(response => response.json()) .then(data => console.log(data)) .catch(error => console.error(error));

The below example can be sent as a request to the API.

{
  "page_size": 2,
  "page_no": 1
}

SUCCESS RESPONSE The request returns JSON structured like below

{
  "status": true,
  "transactions": [
    {
      "total_count": 1,
      "total_amount": "43589.0",
      "txn_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
      "amount": "43589.0",
      "invoice_no": "INV001",
      "distribution_remark": "First Test Transaction",
      "txn_initiator": "xxxxxx",
      "lifecycle_status": "approved",
      "approval_status": "Y",
      "payment_charge": "0.0",
      "tax_amount": "0.0",
      "entity_id": "xxxxxx",
      "posting_date": 1676898813,
      "is_delete": "N",
      "payment_method": "Vendor Transaction",
      "vendor_id": "xxxxx",
      "txn_initiator_name": "ABCD AAKDM",
      "creator_ip_address": "127.0.0.1",
      "last_updated_user_id": "xxxxxxx",
      "last_updated_status": "Transaction Created",
      "last_updated_timestamp": 1676898813,
      "last_updated_user_name": "ABCD AAKDM"
    }
  ],
  "title": {
    "records": 1,
    "current_page": 1,
    "total_pages": 1,
    "page_item_count": 50
  }
}

SUCCESS RESPONSE The request returns JSON structured like below as an empty response

{
  "status": true,
  "total_count": 0,
  "total_amount": 0,
  "transactions": [],
  "title": {
    "records": 0
  }
}

This endpoint retrieves all vendor transactions for your entity on which user can take action.

UAT HTTP Request

GET https://nxt.api.q2pay.co.in/api/transactions/vendor/actionable

PRODUCTION HTTP Request

GET https://nxt.api.q2pay.in/api/transactions/vendor/actionable

Query Parameters

Parameter Default Description Required Sample
page_size 50 If set to specific number, the result will include that number of transactions. No 10
page_no 1 If set to specific number, the result will include that page of transactions. No 2

Service Details

Service ID Description
VVendorTxn View Vendor Transactions

Add Status Vendor Transaction

curl -X POST "https://<environmenturl>/api/transactions/vendor/add_status"
  -H "X-Api-Key: <your secure token>"
  -H "Content-Type: application/json"
  -d "{
        "txn_id": ["xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx", "xxxxx"],
        "status": "abandoned"
      }"
require 'net/http'
require 'uri'
require 'json'

uri = URI.parse("https://<environmenturl>/api/transactions/vendor/add_status") header = {'X-Api-Key' => '<your secure token>', 'Content-Type' => 'application/json'} body = { "txn_id": ["xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx", "xxxxx"], "status": "abandoned" } http = Net::HTTP.new(uri.host, uri.port) http.use_ssl = true request = Net::HTTP::Post.new(uri.request_uri, header) request.body = body.to_json response = http.request(request)

const data = {
        'txn_id': ["xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx", "xxxxx"],
        'status': 'abandoned'
      };

fetch('https://<environmenturl>/api/transactions/vendor/add_status', { method: 'POST', headers: { 'X-Api-Key': '<your secure token>', 'Content-Type': 'application/json' }, body: JSON.stringify(data) }) .then(response => response.json()) .then(data => console.log(data)) .catch(error => console.error(error));

The below example can be sent as a request to the API.

{
  "txn_id": ["xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx", "xxxxx"],
  "status": "abandoned"
}

SUCCESS RESPONSE The request returns JSON structured like below on successful status updation of all transactions

{
  "status": "true",
  "lifecycle_status": "abandoned",
  "txn_id": [
    "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
    "xxxxx"
  ]
}

ERROR RESPONSE The request returns JSON structured like below when transactions are not found

{
  "status": false,
  "action": "Not performed",
   "errors": {
    "base":[
      "No transactions found for transaction ids: a368c069-7236-4a8e-9cc3-3a5928b9357b, 19002T"
    ]
   }
}

ERROR RESPONSE The request returns JSON structured like below for errors related to duplicate status

{
  "status": false,
  "action": "Not performed",
  "errors": {
    "base":[
      {
        "id": "a368c069-7236-4a8e-9cc3-3a5928b9357b",
        "legacy_id": null,
        "errors": [
          {
            "reason": "Transaction cannot be updated as it is already having status : abandoned"
          }
        ]
      },
      {
        "id": "0b519c04-135c-4aed-8e03-ab9048274325",
        "legacy_id": "19002T",
        "errors": [
          {
            "reason": "Transaction cannot be updated as it is already having status : abandoned"
          }
        ]
      }
    ]
  }
}

This endpoint performs status updation for the vendor transactions for the entity.

UAT HTTP Request

POST https://nxt.api.q2pay.co.in/api/transactions/vendor/add_status

PRODUCTION HTTP Request

POST https://nxt.api.q2pay.in/api/transactions/vendor/add_status

Query Parameters

Parameter Default Description Required Sample
txn_id N.A. Transaction ID or Legacy ID for transaction Yes ["xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx", "xxxxx"]
status N.A. Predefined status to be updated for the transaction Yes "abandoned"

Service Details

Service ID Description
Admin Add abandoned status

Multi Entity Mapping

Multi Entity Mapping helps you create, maintain & manage lifecycle for your organization.

Get All Multi Entity Mapping

curl "https://<environmenturl>/api/sub_entity_mappings"
  -H "X-Api-Key: <your secure token>"
  -H "Content-Type: application/json"
   -d "{
        "sub_entity_mappings": {
        "primary_entity_id": "ABC12",
        "primary_user_id": "1",
        "sub_entity_id": "xxxxxx",
        "sub_user_id": "xxxxxx",
        "favourite":"Y"
        }
    }"
require 'net/http'
require 'uri'
require 'json'

uri = URI.parse("https://<environmenturl>/api/sub_entity_mappings") header = {'X-Api-Key' => '<your secure token>', 'Content-Type' => 'application/json'} body = { "sub_entity_mappings": { "primary_entity_id": "ABC12", "primary_user_id": "1", "sub_entity_id": "xxxxxx", "sub_user_id": "xxxxxx", "favourite":"Y" } } http = Net::HTTP.new(uri.host, uri.port) http.use_ssl = true request = Net::HTTP::Get.new(uri.request_uri, header) request.body = body.to_json response = http.request(request)

const data = {
  "sub_entity_mappings": {
        "primary_entity_id": "ABC12",
        "primary_user_id": "1",
        "sub_entity_id": "xxxxxx",
        "sub_user_id": "xxxxxx",
        "favourite":"Y"
        }
};

fetch('https://<environmenturl>/api/sub_entity_mappings', { method: 'GET', headers: { 'X-Api-Key': '<your secure token>', 'Content-Type': 'application/json' }, body: JSON.stringify(data) }) .then(response => response.json()) .then(data => console.log(data)) .catch(error => console.error(error));

The below example can be sent as a request to the API.

{
  "sub_entity_mappings": {
        "primary_entity_id": "ABC12",
        "primary_user_id": "1",
        "sub_entity_id": "xxxxxx",
        "sub_user_id": "xxxxxx",
        "favourite":"Y"
        }
}

SUCCESS RESPONSE The request returns JSON structured like below

{
    "status": true,
    "total_count": 1
    "mappings": [
        {
            "id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
            "primary_entity_id": "ABC12",
            "primary_entity_name": "Q2pay Technologies Pvt Ltd",
            "primary_entity_pan": "xxxxxxxx",
            "sub_entity_id": "xxxxxx",
            "sub_entity_name": "Pramod Ratnakar Poojary",
            "sub_entity_pan": "xxxxxxxx",
            "primary_user": "1",
            "sub_user": "xxxxxx",
            "favourite": "N"
        }
    ],
    "title": {
        "records": 1,
        "current_page": 1,
        "total_pages": 1,
        "page_item_count": 50
    }
}

This endpoint will retrieve all multi entity mappings.

UAT HTTP Request

GET https://nxt.api.q2pay.co.in/api/sub_entity_mappings

PRODUCTION HTTP Request

GET https://nxt.api.q2pay.in/api/sub_entity_mappings

Query Parameters

Parameter Default Description Required Sample
primary_entity_id N.A. primary entity id for mapping optional "ABC12"
primary_user_id N.A. primary user id for mapping optional 1
sub_entity_id N.A. sub entity id for mapping optional "PR3356",
sub_user_id N.A. sub user id for mapping optional "Q1P5745"
favourite N.A. favourite for mapping optional "Y","N"

Service Details

Service ID Description
Admin Admin
VMapping User can view multi entity mapping

Add Multi Entity Mapping

curl -X POST "https://<environmenturl>/api/sub_entity_mappings"
-H "X-Api-Key: <your secure token>"
-H "Content-Type: application/json"
-d "{ 
    "sub_entity_mappings": {
        "primary_entity_id": "ABC12",
        "primary_user_id": "1",
        "sub_entity_id": "xxxxxx",
        "sub_user_id": "xxxxxx"
    }
}"
require 'net/http'
require 'uri'
require 'json'

uri = URI.parse("https://<environmenturl>/api/sub_entity_mappings") header = {'X-Api-Key' => '<your secure token>', 'Content-Type' => 'application/json'} body = { "sub_entity_mappings": { "primary_entity_id": "ABC12", "primary_user_id": "1", "sub_entity_id": "xxxxxx", "sub_user_id": "xxxxxx" } }

http = Net::HTTP.new(uri.host, uri.port) http.use_ssl = true request = Net::HTTP::Post.new(uri.request_uri, header) request.body = body.to_json response = http.request(request)

const data = {
   "sub_entity_mappings": {
        "primary_entity_id": "ABC12",
        "primary_user_id": "1",
        "sub_entity_id": "xxxxxx",
        "sub_user_id": "xxxxxx"
    }
};

fetch('https://<environmenturl>/api/sub_entity_mappings', { method: 'POST', headers: { 'X-Api-Key': '<your secure token>', 'Content-Type': 'application/json' }, body: JSON.stringify(data) }) .then(response => response.json()) .then(data => console.log(data)) .catch(error => console.error(error));

The below example can be sent as a request to the API.

{
  "sub_entity_mappings": {
        "primary_entity_id": "ABC12",
        "primary_user_id": "1",
        "sub_entity_id": "xxxxxx",
        "sub_user_id": "xxxxxx"
    }
}

SUCCESS RESPONSE The request returns JSON structured like below on successful Entity creation

{
    "status": true,
    "message": "Sub Entity Mapping Created Sucessfully"
}

ERROR RESPONSE The request returns JSON structured like below for errors related to Entity creation

{
    "status": false,
    "errors": [
        "Primary user is already marked as Sub user in other mapping",
        "Sub user is already marked as Primary user in other mapping"
        "This combination of users already exists in any order",
        "Primary User not found (ID: 2)",
        "Primary Entity not found (ID: Q582)",
        "Sub Entity not found (ID: PR116)",
        "Sub User not found (ID: Q2P545)",
        "Sub user has already been taken"
    ]
}

This endpoint will creates a multi entity mapping.

UAT HTTP Request

POST https://nxt.api.q2pay.co.in/api/sub_entity_mappings

PRODUCTION HTTP Request

POST https://nxt.api.q2pay.in/api/sub_entity_mappings

Query Parameters

Parameter Default Description Required Sample
primary_entity_id N.A. primary entity id for mapping Yes "ABC12"
primary_user_id N.A. primary user id for mapping Yes 1
sub_entity_id N.A. sub entity id for mapping Yes "PR3356",
sub_user_id N.A. sub user id for mapping Yes "Q1P5745"

Service Details

Service ID Description
Admin Admin

Remove Multi Entity Mapping

curl -X DELETE "https://<environmenturl>/api/sub_entity_mappings/:id"
  -H "X-Api-Key: <your secure token>"
  -H "Content-Type: application/json"

require 'net/http'
require 'uri'
require 'json'

uri = URI.parse("https://<environmenturl>/api/sub_entity_mappings/:id") header = {'X-Api-Key' => '<your secure token>', 'Content-Type' => 'application/json'}

http = Net::HTTP.new(uri.host, uri.port) http.use_ssl = true request = Net::HTTP::Post.new(uri.request_uri, header) request.body = body.to_json response = http.request(request)


fetch('https://<environmenturl>/api/sub_entity_mappings/:id', {
  method: 'DELETE',
  headers: {
    'X-Api-Key': '<your secure token>',
    'Content-Type': 'application/json'
  },
  body: JSON.stringify(data)
})
  .then(response => response.json())
  .then(data => console.log(data))
  .catch(error => console.error(error));

SUCCESS RESPONSE The request returns JSON structured like below on successful remove multi entity

{
    "status": true,
    "message": "Sub Entity Mapping Destroyed Sucessfully"
}

ERROR RESPONSE The request returns JSON structured like below for errors related to multi entity mapping

{
    "status": false,
    "errors": [
        "Sub Entity Mapping not found"
    ]
} 

This endpoint remove an multi entity mapping.

UAT HTTP Request

DELETE https://nxt.api.q2pay.co.in/api/sub_entity_mappings/:id

PRODUCTION HTTP Request

DELETE https://nxt.api.q2pay.in/api/sub_entity_mappings/:id

Service Details

Service ID Description
Admin Admin

Add Favourite To Multi Entity Mapping

curl -X PUT "https://<environmenturl>/api/sub_entity_mappings/:id/add_favourite"
  -H "X-Api-Key: <your secure token>"
  -H "Content-Type: application/json"

require 'net/http'
require 'uri'
require 'json'

uri = URI.parse("https://<environmenturl>/api/sub_entity_mappings/:id/add_favourite") header = {'X-Api-Key' => '<your secure token>', 'Content-Type' => 'application/json'} http = Net::HTTP.new(uri.host, uri.port) http.use_ssl = true request = Net::HTTP::Put.new(uri.request_uri, header) request.body = body.to_json response = http.request(request)


fetch('https://<environmenturl>/api/sub_entity_mappings/:id/add_favourite', {
  method: 'PUT',
  headers: {
    'X-Api-Key': '<your secure token>',
    'Content-Type': 'application/json'
  },
  body: JSON.stringify(data)
})
  .then(response => response.json())
  .then(data => console.log(data))
  .catch(error => console.error(error));

SUCCESS RESPONSE The request returns JSON structured like below on successful add favourite multi entity mapping

{
    "status": true,
    "message": "Mapping Marked As Favourite"
}

ERROR RESPONSE The request returns JSON structured like below for errors related add favourite of multi entity mapping

{
    "status": false,
    "errors": {
        "base": [
            "Already Marked As Favourite"
        ],
        "base": [
            "Sub Entity Mapping not found"
        ]
    }
}

This endpoint will add favourite to multi entity mapping.

UAT HTTP Request

PUT https://nxt.api.q2pay.co.in/api/sub_entity_mappings/:id/add_favourite

PRODUCTION HTTP Request

PUT https://nxt.api.q2pay.in/api/sub_entity_mappings/:id/add_favourite

Service Details

Service ID Description
FMapping Add Favourite Multi Entity Mapping

Remove Favourite To Multi Entity Mapping

curl -X PUT "https://<environmenturl>/api/sub_entity_mappings/:id/remove_favourite"
  -H "X-Api-Key: <your secure token>"
  -H "Content-Type: application/json"

require 'net/http'
require 'uri'
require 'json'

uri = URI.parse("https://<environmenturl>/api/sub_entity_mappings/:id/remove_favourite") header = {'X-Api-Key' => '<your secure token>', 'Content-Type' => 'application/json'} http = Net::HTTP.new(uri.host, uri.port) http.use_ssl = true request = Net::HTTP::Put.new(uri.request_uri, header) request.body = body.to_json response = http.request(request)


fetch('https://<environmenturl>/api/sub_entity_mappings/:id/remove_favourite', {
  method: 'PUT',
  headers: {
    'X-Api-Key': '<your secure token>',
    'Content-Type': 'application/json'
  },
  body: JSON.stringify(data)
})
  .then(response => response.json())
  .then(data => console.log(data))
  .catch(error => console.error(error));

SUCCESS RESPONSE The request returns JSON structured like below on successful remove favourite multi entity mapping

{
    "status": true,
    "message": "Mapping Unmark As Favourite"
}

ERROR RESPONSE The request returns JSON structured like below for errors related remove favourite of multi entity mapping

{
    "status": false,
    "errors": {
        "base": [
            "Not Marked As Favourite"
        ],
        "base": [
            "Sub Entity Mapping not found"
        ]
    }
}

This endpoint will remove favourite to multi entity mapping.

UAT HTTP Request

PUT https://nxt.api.q2pay.co.in/api/sub_entity_mappings/:id/remove_favourite

PRODUCTION HTTP Request

PUT https://nxt.api.q2pay.in/api/sub_entity_mappings/:id/remove_favourite

Service Details

Service ID Description
FMapping Remove Favourite Multi Entity Mapping

Owner Account

Owner Accounts helps you create, maintain & manage lifecycle of owner account for your organization.

Get All Owner Account

curl -X GET "https://<environmenturl>/api/accounts/owner"
  -H "X-Api-Key: <your secure token>"
  -H "Content-Type: application/json"

require 'net/http'
require 'uri'
require 'json'

uri = URI.parse("https://<environmenturl>/api/accounts/owner") header = {'X-Api-Key' => '<your secure token>', 'Content-Type' => 'application/json'} http = Net::HTTP.new(uri.host, uri.port) http.use_ssl = true request = Net::HTTP::Get.new(uri.request_uri, header) request.body = body.to_json response = http.request(request)

fetch('https://<environmenturl>/api/accounts/owner', { method: 'GET', headers: { 'X-Api-Key': '<your secure token>', 'Content-Type': 'application/json' }, body: JSON.stringify(data) }) .then(response => response.json()) .then(data => console.log(data)) .catch(error => console.error(error));

SUCCESS RESPONSE The request returns JSON structured like below

{
    "status": true,
    "total_count": 2,
    "total_balance": "1500.0",
    "summary": {
        "approved_accounts_count": 4,
        "pending_accounts_count": 7,
        "connected_banking_count": 7,
        "non_connected_banking_count": 4,
        "available_banks": [
          "Axis Bank",
          "Canara Bank",
          "HDFC Bank",
          "ICICI Bank",
          "IDBI",
          "Jammu and Kashmir Bank",
          "Kotak Mahindra Bank",
          "Punjab National Bank",
          "State Bank of India"
        ],
        "available_tags": [
          "pune",
          "mumbai",
          "gulmarg",
          "nashik",
          "goa"
        ],
        "available_labels":["audit expense", "employee expense", "health expense"]
      },
    "owner_accounts": [
        {
            "id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
            "account_type": "Current Account",
            "entity_id": "ABC12",
            "name": "Q2PAY TECHNOLOGIES P",
            "email_id": "akshay@q2pay.in",
            "bank_acc_no": "az501231981",
            "bank_account_holder_full_name": "SUMAN INDIA",
            "bank_account_holder_legal_name": "Q2PAY TECHNOLOGIES P",
            "ifsc_code": "SBIN0030185",
            "bank_name": "State Bank of India",
            "approval_status": "approved",
            "active_status": "Y",
            "tags":["mumbai", "pune"],
            "labels": ["building expense"],
            "owner_account_balance":"1500.0",
            "owner_account_balance_last_fetched_at":"xxxxxxxx",
            "owner_account_balance_last_fetched_at_in_words":"less than a minute ago",
            "created_by": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
            "created_on": "xxxxxxxx",
            "created_by_name": "Akshay Rangnekar",
            "pan_no": "JXVPS2378A",
            "gstin_detail": "07AANCA1175G2ZO",
            "connected_banking": "N",
            "favourite":"Y"
        },
        {
            "id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
            "account_type": "Current Account",
            "entity_id": "ABC12",
            "name": "Q2PAY TECHNOLOGIES P",
            "email_id": "akshay@q2pay.in",
            "bank_acc_no": "1234567900",
            "bank_account_holder_full_name": "SUMAN INDIA",
            "bank_account_holder_legal_name": "Q2PAY TECHNOLOGIES P",
            "ifsc_code": "IBKL0001960",
            "bank_name": "IDBI",
            "approval_status": "pending",
            "active_status": "N",
            "created_by": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
            "created_on": "xxxxxxxx",
            "created_by_name": "Akshay Rangnekar",
            "pan_no": "JXVPS2378A",
            "gstin_detail": "07AANCA1175G2ZO",
            "connected_banking": "N",
            "favourite":"N"
        }
    ],
    "title": {
        "records": 2,
        "current_page": 1,
        "total_pages": 1,
        "page_item_count": 50
    }
}

This endpoint retrieves all Owner Accounts.

UAT HTTP Request

GET https://nxt.api.q2pay.co.in/api/accounts/owner

PRODUCTION HTTP Request

GET https://nxt.api.q2pay.in/api/accounts/owner

Query Parameters

Parameter Default Description Required Sample
approval_status N.A. approval_status for owner account optional pending
type_of_account N.A. type of account for owner account optional Current Account
connected_banking N.A. connected banking for owner account optional "Y","N"
start_date, end_date N.A. start date and end date for owner account optional xxxxxxxx,xxxxxxxx
bank_account_no N.A. bank account number for owner account optional 1234567897
ifsc N.A. ifsc code for owner account optional IBKL0001957
pan N.A. pan for owner account optional AAACR5055K
search_string N.A. search string for id/name/contact no/email of owner account optional xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx,Q2pay technology,12356789,abc@gmail.com
bank_name N.A. bank name for owner account optional ICICI Bank
active_status N.A. active status for owner account optional "Y","N"
entity_id N.A. entity id for owner account optional ABC12
tag N.A. tag for owner account optional ["Pune","Mumbai"]
sort_by_balance N.A. sort by balance for owner account optional sort_by_balance: { balance: "ascending"} or sort_by_balance: { balance: "descending"}
favourite N.A. favourite for owner account optional "Y","N"
labels N.A. labels for owner account optional ["audit expense"]

Service Details

Service ID Description
VAccount View All Owner Accounts
VAccountBalance View Balance of Owner Account

Get specific Owner Account

curl -X GET "https://<environmenturl>/api/accounts/owner/:id"
  -H "X-Api-Key: <your secure token>"
  -H "Content-Type: application/json"

require 'net/http'
require 'uri'
require 'json'

uri = URI.parse("https://<environmenturl>/api/accounts/owner/:id") header = {'X-Api-Key' => '<your secure token>', 'Content-Type' => 'application/json'} http = Net::HTTP.new(uri.host, uri.port) http.use_ssl = true request = Net::HTTP::Get.new(uri.request_uri, header) request.body = body.to_json response = http.request(request)

fetch('https://<environmenturl>/api/accounts/owner/:id', { method: 'GET', headers: { 'X-Api-Key': '<your secure token>', 'Content-Type': 'application/json' }, body: JSON.stringify(data) }) .then(response => response.json()) .then(data => console.log(data)) .catch(error => console.error(error));

SUCCESS RESPONSE The request returns JSON structured like below

{
    "status": true,
    "total_count": 1,
    "total_balance":"1500.0",
    "owner_accounts": [
        {
            "id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
            "account_type": "Current Account",
            "entity_id": "ABC12",
            "name": "Q2PAY TECHNOLOGIES P",
            "email_id": "abc@q2pay.in",
            "bank_acc_no": "5234567896",
            "bank_account_holder_full_name": "SUMAN INDIA",
            "bank_account_holder_legal_name": "Q2PAY TECHNOLOGIES P",
            "ifsc_code": "HDFC0000229",
            "bank_name": "HDFC Bank",
            "approval_status": "approved",
            "active_status": "Y",
            "min_limit"=>"0.0",
            "max_limit"=>"100.0",
            "tags":["mumbai", "pune"],
            "owner_account_balance":"1500.0",
            "owner_account_balance_last_fetched_at":"xxxxxxxx",
            "owner_account_balance_last_fetched_at_in_words":"less than a minute ago",
            "approved_by": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
            "approved_by_name": "Akshay Rangnekar",
            "approved_on": "xxxxxxxx",
            "created_by": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
            "created_by_name": "Akshay Rangnekar",
            "created_on": "xxxxxxxx",
            "pan_no": "AAACR5055K",
            "gstin_detail": "27AAACR5055K1Z7",
            "connected_banking": "N",
            "favourite":"N"
        }
    ],
    "title": {
        "records": 1,
        "current_page": 1,
        "total_pages": 1,
        "page_item_count": 1
    }
}

This endpoint retrieves Owner Accounts.

UAT HTTP Request

GET https://nxt.api.q2pay.co.in/api/accounts/owner/:id

PRODUCTION HTTP Request

GET https://nxt.api.q2pay.in/api/accounts/owner/:id

Service Details

Service ID Description
VAccount View specific Owner Accounts

Create Owner Account

curl -X POST "https://<environmenturl>/api/accounts/owner"
  -H "X-Api-Key: <your secure token>"
  -H "Content-Type: application/json"
  -d "{ 
       "name":"Q2PAY TECHNOLOGIES P",
       "type_of_account": "Current Account",
       "bank_account_no": "1234567897",
       "ifsc": "IBKL0001957",
       "gstin": "27AAACR5055K1Z7",
       "pan":"AAACR5055K",
       "od_limit":"0.0",
      "min_limit": "2.0",
      "max_limit":"100.0"
      }"
require 'net/http'
require 'uri'
require 'json'

uri = URI.parse("https://<environmenturl>/api/accounts/owner") header = {'X-Api-Key' => '<your secure token>', 'Content-Type' => 'application/json'} body = { "name":"Q2PAY TECHNOLOGIES P", "type_of_account": "Current Account", "bank_account_no": "1234567897", "ifsc": "IBKL0001957", "gstin": "27AAACR5055K1Z7", "pan":"AAACR5055K", "od_limit":"0.0", "min_limit": "2.0", "max_limit":"100.0" } http = Net::HTTP.new(uri.host, uri.port) http.use_ssl = true request = Net::HTTP::Post.new(uri.request_uri, header) request.body = body.to_json response = http.request(request)

const data = {
       "name":"Q2PAY TECHNOLOGIES P",
       "type_of_account": "Current Account",
       "bank_account_no": "1234567897",
       "ifsc": "IBKL0001957",
       "gstin": "27AAACR5055K1Z7",
       "pan":"AAACR5055K",
       "od_limit":"0.0",
       "min_limit": "2.0",
       "max_limit":"100.0"
};

fetch('https://<environmenturl>/api/accounts/owner', { method: 'POST', headers: { 'X-Api-Key': '<your secure token>', 'Content-Type': 'application/json' }, body: JSON.stringify(data) }) .then(response => response.json()) .then(data => console.log(data)) .catch(error => console.error(error));

The below example can be sent as a request to the API.

{
  "name":"Q2PAY TECHNOLOGIES P",
  "type_of_account": "Current Account",
  "bank_account_no": "1234567897",
  "ifsc": "IBKL0001957",
  "gstin": "27AAACR5055K1Z7",
  "pan":"AAACR5055K",
  "od_limit":"0.0",
  "min_limit": "2.0",
  "max_limit":"100.0"
}

SUCCESS RESPONSE The request returns JSON structured like below on successful owner accounts creation

{
  "status": true,
  "total_count": 1,
  "total_balance": "0.0",
  "owner_accounts": [
    {
      "id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
      "account_type": "Current Account",
      "entity_id": "ABC12",
      "name": "Q2PAY TECHNOLOGIES P",
      "email_id": "abc@q2pay.in",
      "bank_acc_no": "1234567897",
      "bank_account_holder_full_name": "SUMAN INDIA",
      "bank_account_holder_legal_name": "Q2PAY TECHNOLOGIES P",
      "ifsc_code": "IBKL0001957",
      "bank_name": "IDBI",
      "approval_status": "approved",
      "active_status": "Y",
      "labels": ["building expense"],
      "od_limit": "500.0",
      "min_limit":"2.0",
      "max_limit":"100.0",
      "approved_by": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
      "approved_by_name": "Akshay Rangnekar",
      "approved_on": "xxxxxxxx",
      "created_by": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
      "created_by_name": "Akshay Rangnekar",
      "created_on": "xxxxxxxx",
      "pan_no": "AAACR5055K",
      "gstin_detail": "27AAACR5055K1Z7",
      "connected_banking": "N",
      "favourite":"N"
    }
  ],
  "title": {
    "records": 1,
    "current_page": 1,
    "total_pages": 1,
    "page_item_count": 1
  }
}

ERROR RESPONSE The request returns JSON structured like below for errors related owner account

{
    "status":false, 
    "errors":
    {
        "bank_account_number": {
            "base": [
                "Bank Account Number / IFSC cannot be blank",
            ]
        },
        "permanent_account_number": {
            "base": [
                "PAN ID cannot be blank",
                "Invalid format for PAN ID"
            ]
        },
        "type_of_account":
        [
            "Type of account is not included in the list"
        ],
        "gstin_detail":
        [
            "Gstin detail must exist"
        ],
        "bank_account_number": [
            "Bank account number has already been taken"
        ],
        "base":
        [
            "GSTIN is not linked with provided PAN."
        ],
        "bank_account_number":{
            "base":[
                "Full Name / Legal Name is mandatory for Virtual Accounts"
            ]
        },
        "od_limit":
        [
          "Od limit must be greater than 0 for Overdraft Accounts",
          "Od limit should be blank for non-Overdraft Accounts"
        ],
        "min_limit": ["Min limit must be greater than to 0"],
        "max_limit": ["Max limit must be greater than 0"],
        "max_limit": ["Max limit must be greater than the minimum limit"]
    }
}

This endpoint creates a Owner Account.

UAT HTTP Request

POST https://nxt.api.q2pay.co.in/api/accounts/owner

PRODUCTION HTTP Request

POST https://nxt.api.q2pay.in/api/accounts/owner

Query Parameters

Parameter Default Description Required Sample
name N.A. name for owner account (will be updated forcefully) No vendor
type_of_account N.A. type of account for owner account Yes Current Account
bank_account_no N.A. bank account number for owner account Yes 1234567897
ifsc N.A. ifsc for owner account Yes IBKL0001957
pan N.A. pan for owner account No AAACR5055K
gstin N.A. gstin detail for owner account Yes 27AAACR5055K1Z7
contact_no N.A. contact no for owner account No 123456789
labels N.A labels for owner account No ["building expense"]
od_limit 0.0 od limit required for only overdraft owner account No 500.0
min_limit 0.0 Minimum limit required for all owner account No 500.0
max_limit 0.0 Maximum limit required for all owner account No 500.0

Service Details

Service ID Description
CAccount Create Owner Account

Update Owner Account

curl -X PUT "https://<environmenturl>/api/accounts/owner/:id"
  -H "X-Api-Key: <your secure token>"
  -H "Content-Type: application/json"
  -d "{ 
       "name":"Q2PAY TECHNOLOGIES P",
       "type_of_account": "Current Account",
       "bank_account_no": "1234567897",
       "ifsc": "IBKL0001957",
       "gstin": "27AAACR5055K1Z7",
       "pan":"AAACR5055K",
       "od_limit":"0.0",
        "min_limit": "2.0",
        "max_limit":"100.0"
      }"
require 'net/http'
require 'uri'
require 'json'

uri = URI.parse("https://<environmenturl>/api/accounts/owner/:id") header = {'X-Api-Key' => '<your secure token>', 'Content-Type' => 'application/json'} body = { "name":"Q2PAY TECHNOLOGIES P", "type_of_account": "Current Account", "bank_account_no": "1234567897", "ifsc": "IBKL0001957", "gstin": "27AAACR5055K1Z7", "pan":"AAACR5055K", "od_limit":"0.0", "min_limit": "2.0", "max_limit":"100.0" } http = Net::HTTP.new(uri.host, uri.port) http.use_ssl = true request = Net::HTTP::Put.new(uri.request_uri, header) request.body = body.to_json response = http.request(request)

const data = {
       "name":"Q2PAY TECHNOLOGIES P",
       "type_of_account": "Current Account",
       "bank_account_no": "1234567897",
       "ifsc": "IBKL0001957",
       "gstin": "27AAACR5055K1Z7",
       "pan":"AAACR5055K",
       "od_limit":"0.0",
        "min_limit": "2.0",
        "max_limit":"100.0"
};

fetch('https://<environmenturl>/api/accounts/owner/:id', { method: 'PUT', headers: { 'X-Api-Key': '<your secure token>', 'Content-Type': 'application/json' }, body: JSON.stringify(data) }) .then(response => response.json()) .then(data => console.log(data)) .catch(error => console.error(error));

The below example can be sent as a request to the API.

{
  "name":"Q2PAY TECHNOLOGIES P",
  "type_of_account": "Current Account",
  "bank_account_no": "1234567897",
  "ifsc": "IBKL0001957",
  "gstin": "27AAACR5055K1Z7",
  "pan":"AAACR5055K",
  "od_limit":"0.0",
  "min_limit": "2.0",
  "max_limit":"100.0"
}

SUCCESS RESPONSE The request returns JSON structured like below on successful owner accounts update

{
    "status": true,
    "total_count": 1,
    "total_balance":"0.0",
    "owner_accounts": [
        {
            "id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
            "account_type": "Current Account",
            "entity_id": "ABC12",
            "name": "Q2PAY TECHNOLOGIES P",
            "email_id": "abc@q2pay.in",
            "bank_acc_no": "1134567898",
            "bank_account_holder_full_name": "SUMAN INDIA",
            "bank_account_holder_legal_name": "Q2PAY TECHNOLOGIES P",
            "ifsc_code": "HDFC0000231",
            "bank_name": "HDFC Bank",
            "approval_status": "pending",
            "active_status": "N",
            "od_limit":"1000.0",
            "min_limit":"2.0",
            "max_limit":"100.0",
            "created_by": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
            "created_by_name": "Akshay Rangnekar",
            "created_on": "xxxxxxxx",
            "pan_no": "AAACR5055K",
            "gstin_detail": "27AAACR5055K1Z7",
            "connected_banking": "N",
            "favourite":"N"
        }
    ],
    "title": {
        "records": 1,
        "current_page": 1,
        "total_pages": 1,
        "page_item_count": 1
    }
}

ERROR RESPONSE The request returns JSON structured like below for errors related owner account

{
    "status": false,
    "errors": {
        "bank_account_number": [
            "Bank account number has already been taken"
        ],
        "base": [
            "Owner account cannot be edited as it is enabled."
        ],
        "bank_account_number": {
            "base": [
                "Bank Account Number / IFSC cannot be blank",
            ]
        },
        "type_of_account":
        [
            "Type of account is not included in the list"
        ],
        "base":
        [
            "GSTIN is not linked with provided PAN."
        ]
        "od_limit":
        [
          "Od limit must be greater than 0 for Overdraft Accounts",
          "Od limit should be blank for non-Overdraft Accounts"
        ],
        "min_limit": ["Min limit must be greater than to 0"],
        "max_limit": ["Max limit must be greater than 0"],
        "max_limit": ["Max limit must be greater than the minimum limit"]
    }
}

This endpoint updates a Owner Account.

UAT HTTP Request

PUT https://nxt.api.q2pay.co.in/api/accounts/owner/:id

PRODUCTION HTTP Request

PUT https://nxt.api.q2pay.in/api/accounts/owner/:id

Query Parameters

Parameter Default Description Required Sample
name N.A. name for owner account (will be updated forcefully ) optional vendor
type_of_account N.A. type of account for owner account optional Current Account
bank_account_no N.A. bank account number for owner account optional 1234567897
ifsc N.A. ifsc for owner account optional IBKL0001957
pan N.A. pan for owner account optional AAACR5055K
gstin N.A. gstin detail for owner account optional 27AAACR5055K1Z7
od_limit 0.0 od limit required for only overdraft owner account optional 500.0
min_limit 0.0 Minimum limit required for all owner account No 500.0
max_limit 0.0 Maximum limit required for all owner account No 500.0

Service Details

Service ID Description
CAccount Update Owner Account

Deactivate Owner Account

curl -X PUT "https://<environmenturl>/api/accounts/owner/:id/deactivate"
  -H "X-Api-Key: <your secure token>"
  -H "Content-Type: application/json"

require 'net/http'
require 'uri'
require 'json'

uri = URI.parse("https://<environmenturl>/api/accounts/owner/:id/deactivate") header = {'X-Api-Key' => '<your secure token>', 'Content-Type' => 'application/json'} http = Net::HTTP.new(uri.host, uri.port) http.use_ssl = true request = Net::HTTP::Put.new(uri.request_uri, header) request.body = body.to_json response = http.request(request)


fetch('https://<environmenturl>/api/accounts/owner/:id/deactivate', {
  method: 'PUT',
  headers: {
    'X-Api-Key': '<your secure token>',
    'Content-Type': 'application/json'
  },
  body: JSON.stringify(data)
})
  .then(response => response.json())
  .then(data => console.log(data))
  .catch(error => console.error(error));

SUCCESS RESPONSE The request returns JSON structured like below on successful Owner account deactivate

{
  "status":true,
  "total_count":1,
  "total_balance":"0.0",
  "owner_accounts":[
    {
      "id":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
      "account_type":"Other",
      "entity_id":"ABC12",
      "name":"Q2PAY TECHNOLOGIES P",
      "bank_acc_no":"1234567890",
      "bank_account_holder_full_name":"Q2PAY TECHNOLOGIES P",
      "bank_account_holder_legal_name":"Q2PAY TECHNOLOGIES P",
      "ifsc_code":"HDFC0000133",
      "bank_name":"HDFC Bank",
      "approval_status":"deactivated",
      "active_status":"N",
      "created_by":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
      "created_by_name":"Ashish Wadekar",
      "created_on":"xxxxxxxx",
      "pan_no":"WASED4729K",
      "gstin_detail":"48AAACQ0519P2FG",
      "connected_banking":"N",
      "favourite":"N"
    }
  ],
  "title":{
    "records":1, 
    "current_page":1, 
    "total_pages":1, 
    "page_item_count":1
  }
}

This endpoint deactivate a Owner Account.

UAT HTTP Request

PUT https://nxt.api.q2pay.co.in/api/accounts/owner/:id/deactivate

PRODUCTION HTTP Request

PUT https://nxt.api.q2pay.in/api/accounts/owner/:id/deactivate

Service Details

Service ID Description
CAccount Create Owner Account

Enable Connected Banking Owner Account

curl -X PUT "https://<environmenturl>/api/accounts/owner/:id/enable_connected_banking"
  -H "X-Api-Key: <your secure token>"
  -H "Content-Type: application/json"
  -d "{ 
      "banking_credential_id": 1
      }"
require 'net/http'
require 'uri'
require 'json'

uri = URI.parse("https://<environmenturl>/api/accounts/owner/:id/enable_connected_banking") header = {'X-Api-Key' => '<your secure token>', 'Content-Type' => 'application/json'} body = { "banking_credential_id": 1 } http = Net::HTTP.new(uri.host, uri.port) http.use_ssl = true request = Net::HTTP::Put.new(uri.request_uri, header) request.body = body.to_json response = http.request(request)

const data = {
       "banking_credential_id": 1
};

fetch('https://<environmenturl>/api/accounts/owner/:id/enable_connected_banking', { method: 'PUT', headers: { 'X-Api-Key': '<your secure token>', 'Content-Type': 'application/json' }, body: JSON.stringify(data) }) .then(response => response.json()) .then(data => console.log(data)) .catch(error => console.error(error));

The below example can be sent as a request to the API.

{
  "banking_credential_id": 1
}

SUCCESS RESPONSE The request returns JSON structured like below on successful owner accounts enable connected banking

{
    "status": true,
    "total_count": 1,
    "total_balance":"0.0",
    "owner_accounts": [
        {
            "id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
            "account_type": "Current Account",
            "entity_id": "ABC12",
            "name": "Q2PAY TECHNOLOGIES P",
            "email_id": "abc@q2pay.in",
            "bank_acc_no": "6234567895",
            "bank_account_holder_full_name": "SUMAN INDIA",
            "bank_account_holder_legal_name": "Q2PAY TECHNOLOGIES P",
            "ifsc_code": "ICIC0000228",
            "bank_name": "ICICI Bank",
            "approval_status": "approved",
            "active_status": "Y",
            "approved_by": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
            "approved_by_name": "Akshay Rangnekar",
            "approved_on": "xxxxxxxx",
            "created_by": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
            "created_by_name": "Akshay Rangnekar",
            "created_on": "xxxxxxxx",
            "pan_no": "AAACR5055K",
            "gstin_detail": "27AAACR5055K1Z7",
            "connected_banking": "Y",
            "favourite":"N"
        }
    ],
    "title": {
        "records": 1,
        "current_page": 1,
        "total_pages": 1,
        "page_item_count": 1
    }
}

ERROR RESPONSE The request returns JSON structured like below for errors related owner account

{
    "status":false, 
    "errors":{
        "owner_account":[
            "Owner account Banking creditional id must be exit",
            "Owner account which is pending cannot be enabled",
            "Owner account cannot be enabled as it is already enabled."
        ],
        "base":[
            "Banking credentials do not belong to Owner Account entity"
        ]
    }
}

This endpoint enable connected banking a Owner Account.

UAT HTTP Request

PUT https://nxt.api.q2pay.co.in/api/accounts/owner/:id/enable_connected_banking

PRODUCTION HTTP Request

PUT https://nxt.api.q2pay.in/api/accounts/owner/:id/enable_connected_banking

Query Parameters

Parameter Default Description Required Sample
banking_credential_id N.A. banking credential id for owner account Yes 1

Service Details

Service ID Description
Admin Admin

Disable Connected Banking Owner Account

curl -X PUT "https://<environmenturl>/api/accounts/owner/:id/disable_connected_banking"
  -H "X-Api-Key: <your secure token>"
  -H "Content-Type: application/json"

require 'net/http'
require 'uri'
require 'json'

uri = URI.parse("https://<environmenturl>/api/accounts/owner/:id/disable_connected_banking") header = {'X-Api-Key' => '<your secure token>', 'Content-Type' => 'application/json'}

http = Net::HTTP.new(uri.host, uri.port) http.use_ssl = true request = Net::HTTP::Put.new(uri.request_uri, header) request.body = body.to_json response = http.request(request)

fetch('https://<environmenturl>/api/accounts/owner/:id/disable_connected_banking', { method: 'PUT', headers: { 'X-Api-Key': '<your secure token>', 'Content-Type': 'application/json' }, body: JSON.stringify(data) }) .then(response => response.json()) .then(data => console.log(data)) .catch(error => console.error(error));

SUCCESS RESPONSE The request returns JSON structured like below on successful owner accounts disable connected banking

{
    "status": true,
    "total_count": 1,
    "total_balance":"0.0",
    "owner_accounts": [
        {
            "id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
            "account_type": "Current Account",
            "entity_id": "ABC12",
            "name": "Q2PAY TECHNOLOGIES P",
            "email_id": "abc@q2pay.in",
            "bank_acc_no": "6234567895",
            "bank_account_holder_full_name": "SUMAN INDIA",
            "bank_account_holder_legal_name": "Q2PAY TECHNOLOGIES P",
            "ifsc_code": "ICIC0000228",
            "bank_name": "ICICI Bank",
            "approval_status": "approved",
            "active_status": "Y",
            "approved_by": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
            "approved_by_name": "Akshay Rangnekar",
            "approved_on": "xxxxxxxx",
            "created_by": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
            "created_by_name": "Akshay Rangnekar",
            "created_on": "xxxxxxxx",
            "pan_no": "AAACR5055K",
            "gstin_detail": "27AAACR5055K1Z7",
            "connected_banking": "N",
            "favourite":"N"
        }
    ],
    "title": {
        "records": 1,
        "current_page": 1,
        "total_pages": 1,
        "page_item_count": 1
    }
}

ERROR RESPONSE The request returns JSON structured like below for errors related owner account

{
    "status":false, 
    "errors":{
        "owner_account":[
            "Owner account can not be disabled"
        ]
} }

This endpoint disable connected banking a Owner Account.

UAT HTTP Request

PUT https://nxt.api.q2pay.co.in/api/accounts/owner/:id/disable_connected_banking

PRODUCTION HTTP Request

PUT https://nxt.api.q2pay.in/api/accounts/owner/:id/disable_connected_banking

Service Details

Service ID Description
Admin Admin

Get Balance Owner Account

curl -X PUT "https://<environmenturl>/api/accounts/owner/:id/balance"
  -H "X-Api-Key: <your secure token>"
  -H "Content-Type: application/json"

require 'net/http'
require 'uri'
require 'json'

uri = URI.parse("https://<environmenturl>/api/accounts/owner/:id/balance") header = {'X-Api-Key' => '<your secure token>', 'Content-Type' => 'application/json'} http = Net::HTTP.new(uri.host, uri.port) http.use_ssl = true request = Net::HTTP::Put.new(uri.request_uri, header) request.body = body.to_json response = http.request(request)


fetch('https://<environmenturl>/api/accounts/owner/:id/balance', {
  method: 'PUT',
  headers: {
    'X-Api-Key': '<your secure token>',
    'Content-Type': 'application/json'
  },
  body: JSON.stringify(data)
})
  .then(response => response.json())
  .then(data => console.log(data))
  .catch(error => console.error(error));

SUCCESS RESPONSE The request returns JSON structured like below on successful Owner accounts balance

{
    "status":true,
    "total_count":1,
    "owner_accounts":[
        {
            "owner_account_id":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
            "owner_account_bank_acc_no":"123456788993",
            "owner_account_ifsc_code":"ICIC0000112",
            "owner_account_bank_name":"ICICI Bank",
            "owner_account_type":"Other",
            "owner_account_balance":"1500.0",
            "owner_account_balance_last_fetched_at":"xxxxxxxx",
            "owner_account_balance_last_fetched_at_in_words":"less than a minute ago"
        }
    ],
    "title":{
        "records":1,
        "current_page":1, 
        "total_pages":1,
        "page_item_count":1
    }
}

ERROR RESPONSE The request returns JSON structured like below for errors related Owner account

{
    "status":false,
    "errors":{
        "base":[
            "Connected Banking is not enabled for this account. Kindly contact support!"
        ]
    }
}

This endpoint fetch current account balance for Owner Account.

UAT HTTP Request

PUT https://nxt.api.q2pay.co.in/api/accounts/owner/:id/balance

PRODUCTION HTTP Request

PUT https://nxt.api.q2pay.in/api/accounts/owner/:id/balance

Service Details

Service ID Description
Admin Admin
VAccountBalance View Balance of Owner Account

Display Statement of Owner Account

curl -X PUT "https://<environmenturl>/api/accounts/owner/:id/display_statement"
  -H "X-Api-Key: <your secure token>"
  -H "Content-Type: application/json"
  -d "{ 
       "start_date": "15 Mar 2023",
       "end_date": "30 Apr 2023",
       "credit_debit":"credit",
       "start_amount": 888.1,
       "end_amount": 1000,
       "entry_source": true
      }"
require 'net/http'
require 'uri'
require 'json'

uri = URI.parse("https://<environmenturl>/api/accounts/owner/:id/display_statement") header = {'X-Api-Key' => '<your secure token>', 'Content-Type' => 'application/json'} body = { "start_date": "15 Mar 2023", "end_date": "30 Apr 2023", "credit_debit":"credit", "start_amount": 888.1, "end_amount": 1000, "entry_source": true } http = Net::HTTP.new(uri.host, uri.port) http.use_ssl = true request = Net::HTTP::Put.new(uri.request_uri, header) request.body = body.to_json response = http.request(request)

const data = {
       "start_date": "15 Mar 2023",
       "end_date": "30 Apr 2023",
       "credit_debit":"credit",
       "start_amount": 888.1,
       "end_amount": 1000,
       "entry_source": true
};

fetch('https://<environmenturl>/api/accounts/owner/:id/display_statement', { method: 'PUT', headers: { 'X-Api-Key': '<your secure token>', 'Content-Type': 'application/json' }, body: JSON.stringify(data) }) .then(response => response.json()) .then(data => console.log(data)) .catch(error => console.error(error));

The below example can be sent as a request to the API

{
  "start_date": "15 Mar 2023",
  "end_date": "30 Apr 2023",
  "credit_debit":"debit",
  "start_amount": 888.1,
  "end_amount": 1000,
  "entry_source": true
}

SUCCESS RESPONSE The request returns JSON structured like below on successful display statement of owner accounts

{
    "status":true,
    "total_count":3,
    "owner_account_details": {
        "owner_bank_account_number":"8009403836",
        "ifsc_code":"ICIC0000303",
        "bank_name":"ICICI Bank",
        "branch":"PUNE - PASHAN",
        "name":"Q2PAY TECHNOLOGIES P",
        "account_type":"OwnerAccount",
        "statement":[
            {
               "account_statement_entry_id": 4, "transaction_date":"2023-03-30T09:07:38.893Z", "value_date":"2023-03-30", "narration":"cash paid from ICICI Bank user", "amount":"50003.0","bank_reference": "PILIMUIN01J74711", "credit_debit":"Credit", "closing_balance":"50003.0", "uploaded": true
            },
            {
               "account_statement_entry_id": 3, "transaction_date":"2023-03-30T09:07:38.893Z", "value_date":"2023-03-30", "narration":"cash paid from ICICI Bank user", "amount":"50003.0","bank_reference": "PILIMUIN01J74711", "credit_debit":"Debit", "closing_balance":"50003.0", "uploaded": true
            },
            {
               "account_statement_entry_id": 2, "transaction_date":"2023-03-30T09:07:38.893Z", "value_date":"2023-03-30", "narration":"cash paid from ICICI Bank user", "amount":"50003.0","bank_reference": "PILIMUIN01J74711", "credit_debit":"Credit", "closing_balance":"50003.0", "uploaded": true
            }
        ]
    },
    "title":{
        "records":3, 
        "current_page":1, 
        "total_pages":1,
        "page_item_count":50
    }
}

ERROR RESPONSE The request returns JSON structured like below for errors related display statement of owner accounts

{
  "status": false,
  "errors": {
    "base": [
      "Kindly check start date or end date for fetching statements."
    ],
    "base":[
      "Start amount and end amount must be numeric."
    ]
  }
}

This endpoint Display Statement of Owner Account.

UAT HTTP Request

PUT https://nxt.api.q2pay.co.in/api/accounts/owner/:id/display_statement

PRODUCTION HTTP Request

PUT https://nxt.api.q2pay.in/api/accounts/owner/:id/display_statement

Query Parameters

Parameter Default Description Required Sample
start_date ,end_date N.A. start date and end date of owner account Yes "15 Mar 2023","30 Apr 2023" or "15/3/2023", "15/5/2023"
credit_debit N.A. credit or debit of owner account Yes "credit","debit"
start_amount,end_amount N.A. start amount and end amount of owner account Yes 200,1000
entry_source Both Determines whether the statement entry originates from uploaded data or bank data. Default returns both types. No true
page_size 50 If set to specific number, the result will include that number of transactions. No 10
page_no 1 If set to specific number, the result will include that page of transactions. No 2

Service Details

Service ID Description
Admin Admin
VAccountBalance View Balance of Owner Account

Display Itemised Statement Of Owner Account

curl -X GET "https://<environmenturl>/api/accounts/owner/:id/display_itemised_statement?from_date=1678818600&to_date=1678818600&credit_debit=credit"
  -H "X-Api-Key: <your secure token>"
  -H "Content-Type: application/json"
require 'net/http'
require 'uri'
require 'json'

uri = URI.parse("https://<environmenturl>/api/accounts/owner/:id/display_itemised_statement")
header = {'X-Api-Key' => '<your secure token>', 'Content-Type' => 'application/json'}
params = {
      "from_date": "1678818600",
      "to_date": "1678818600",
}
http = Net::HTTP.new(uri.host, uri.port)
uri.query = URI.encode_www_form(params)
http.use_ssl = true
request = Net::HTTP::Get.new(uri.request_uri, header)
request.body = body.to_json
response = http.request(request)
const data = {
     "from_date": "1678818600",
     "to_date": "1678818600",
};
const query = new URLSearchParams(data).toString();
fetch('https://<environmenturl>/api/accounts/owner/:id/display_itemised_statement?${query}', {
  method: 'GET',
  headers: {
    'X-Api-Key': '<your secure token>',
    'Content-Type': 'application/json'
  }
})
  .then(response => response.json())
  .then(data => console.log(data))
  .catch(error => console.error(error));

The below example can be sent as a request to the API

{
    "from_date": "1678818600",
    "to_date": "1678818600",
}

SUCCESS RESPONSE The request returns JSON structured like below on successful display itemised report of owner account

{"status": true,
 "total_count": 5,
 "owner_account_details": 
  {"owner_bank_account_number": "0123456789",
   "ifsc_code": "HDFC0000224",
   "bank_name": "HDFC Bank",
   "branch": "ABHYUDAYA NAGAR",
   "name": "Q2PAY TECHNOLOGIES P",
   "account_type": "OwnerAccount",
   "ecollection_callbacks": 
    [{"ecollection_callback_id": "82241185-aad0-47cc-bede-4145c33bb989",
      "owner_account_id": "e2f2281a-bba8-4f39-aef9-b0773445cf41",
      "party_name": "BOM E Payment of Tax",
      "party_ifsc": "MAHB0000588",
      "party_account_number": "6457653969",
      "bank_reference": "MAHBR52025021219643482",
      "transaction_date": 1739298600,
      "value_date": 1739298600,
      "narration": "RTGS Cr-MAHB0000588-BOM E Payment of Tax-THE CLEARING CORPORATION OF INDIA",
      "amount": "123456789.0",
      "credit_debit": "credit"},
     {"ecollection_callback_id": "82241185-aad0-47cc-bede-4145c33bb989",
      "owner_account_id": "e2f2281a-bba8-4f39-aef9-b0773445cf41",
      "party_name": "BOM E Payment of Tax",
      "party_ifsc": "MAHB0000588",
      "party_account_number": "6457653969",
      "bank_reference": "MAHBR52025021219643482",
      "transaction_date": 1752690600,
      "value_date": 1752690600,
      "narration": "RTGS Cr-MAHB0000588-BOM E Payment of Tax-THE CLEARING CORPORATION OF INDIA",
      "amount": "4000.0",
      "credit_debit": "credit"},
     {"ecollection_callback_id": "82241185-aad0-47cc-bede-4145c33bb989",
      "owner_account_id": "e2f2281a-bba8-4f39-aef9-b0773445cf41",
      "party_name": "BOM E Payment of Tax",
      "party_ifsc": "MAHB0000588",
      "party_account_number": "6457653969",
      "bank_reference": "MAHBR52025021219643482",
      "transaction_date": 1749666600,
      "value_date": 1749666600,
      "narration": "RTGS Cr-MAHB0000588-BOM E Payment of Tax-THE CLEARING CORPORATION OF INDIA",
      "amount": "5000.0",
      "credit_debit": "debit"},
     {"ecollection_callback_id": "82241185-aad0-47cc-bede-4145c33bb989",
      "owner_account_id": "e2f2281a-bba8-4f39-aef9-b0773445cf41",
      "party_name": "BOM E Payment of Tax",
      "party_ifsc": "MAHB0000588",
      "party_account_number": "6457653969",
      "bank_reference": "MAHBR52025021219643482",
      "transaction_date": 1739298600,
      "value_date": 1739298600,
      "narration": "RTGS Cr-MAHB0000588-BOM E Payment of Tax-THE CLEARING CORPORATION OF INDIA",
      "amount": "6000.0",
      "credit_debit": "credit"},
     {"ecollection_callback_id": "82241185-aad0-47cc-bede-4145c33bb989",
      "owner_account_id": "e2f2281a-bba8-4f39-aef9-b0773445cf41",
      "party_name": "BOM E Payment of Tax",
      "party_ifsc": "MAHB0000588",
      "party_account_number": "6457653969",
      "bank_reference": "MAHBR52025021219643482",
      "transaction_date": 1739298600,
      "value_date": 1739298600,
      "narration": "RTGS Cr-MAHB0000588-BOM E Payment of Tax-THE CLEARING CORPORATION OF INDIA",
      "amount": "8000.0",
      "credit_debit": "credit"}],
 "title": {"records": 5, "current_page": 1, "total_pages": 1, "page_item_count": 50}}}

ERROR RESPONSE The request returns JSON structured like below for errors related itemised statement of owner account

{
    "status": false,
    "errors": { 
        "base": "'Owner Account not present'"
    } 
}

This endpoint will display itemised statement of owner account.

UAT HTTP Request

GET https://nxt.api.q2pay.co.in/api/accounts/owner/:id/display_itemised_statement

PRODUCTION HTTP Request

GET https://nxt.api.q2pay.in/api/accounts/owner/:id/display_itemised_statement

Query Parameters

Parameter Default Description Required Sample
from_date ,to_date N.A. start date and end date of ecollection No "1678818600", "1678818600"
credit_debit N.A. credit or debit of ecollection_callback No "credit","debit"
min_amount,max_amount N.A. start amount and end amount of ecollection_callback 200,1000
narration N.A narration of ecollection_callback No RTGS
entity_id N.A If Admin wants to filter entity of owner account Yes ( if Admin wants to mimic entity) ABC12
page_size 50 If set to specific number, the result will include that number of transactions. No 10
page_no 1 If set to specific number, the result will include that page of transactions. No 2

Service Details

Service ID Description
Admin Admin
VItemisedStatement View consolidated itemised statement of Owner Account

Add Tag of Owner Account

curl -X PUT "https://<environmenturl>/api/accounts/owner/add_tag"
  -H "X-Api-Key: <your secure token>"
  -H "Content-Type: application/json"
  -d "{
  "owner_id": [
    "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx","xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx"
  ],
  "tags": [
    "Pune",
    "Gulmarg"
  ]
}"
require 'net/http'
require 'uri'
require 'json'

uri = URI.parse("https://<environmenturl>/api/accounts/owner/add_tag") header = {'X-Api-Key' => '<your secure token>', 'Content-Type' => 'application/json'} body = {
"owner_id": [ "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx","xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx" ], "tags": [ "Pune", "Gulmarg" ] } http = Net::HTTP.new(uri.host, uri.port) http.use_ssl = true request = Net::HTTP::Put.new(uri.request_uri, header) request.body = body.to_json response = http.request(request)

const data = {
  "owner_id": [
     "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx","xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx"
  ],
  "tags": [
    "Pune",
    "Gulmarg"
  ]
};

fetch('https://<environmenturl>/api/accounts/owner/add_tag', { method: 'PUT', headers: { 'X-Api-Key': '<your secure token>', 'Content-Type': 'application/json' }, body: JSON.stringify(data) }) .then(response => response.json()) .then(data => console.log(data)) .catch(error => console.error(error));

The below example can be sent as a request to the API.

{
  "owner_id": [
     "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx","xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx"
  ],
  "tags": [
    "Pune",
    "Gulmarg"
  ]
}

SUCCESS RESPONSE The request returns JSON structured like below on successful add tag of owner accounts

{
  "status": true,
  "successful_count": 1,
  "unsuccessful_count": 1,
  "ids": {
    "successful_id": [
      "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx"
    ],
    "unsuccessful_ids": [
      { "id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx", "errors": "tag could not be added due to validation error" }
    ]
  }
}

ERROR RESPONSE The request returns JSON structured like below for errors related add tag of owner accounts

{
  "status": false,
  "errors": {
    "base": [
      "Missing required parameters: owner_account_id and/or tags."
    ],
    "base":[
      "The owner account IDs are not present."
    ],
    "base":[
      "No valid tags to add"
    ]
  }
}

This endpoint Add Tag of Owner Account.

UAT HTTP Request

PUT https://nxt.api.q2pay.co.in/api/accounts/owner/add_tag

PRODUCTION HTTP Request

PUT https://nxt.api.q2pay.in/api/accounts/owner/add_tag

Query Parameters

Parameter Default Description Required Sample
owner_id N.A. owner id of owner account Yes ["xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx","xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx" ]
tags N.A. tags of owner account Yes ["Pune","Gulmarg" ]

Service Details

Service ID Description
COwnerTag Add tag for Owner Account

Remove Tag of Owner Account

curl -X PUT "https://<environmenturl>/api/accounts/owner/remove_tag"
  -H "X-Api-Key: <your secure token>"
  -H "Content-Type: application/json"
  -d "{
  "owner_id": [
    "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx","xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx"
  ],
  "tags": [
    "Pune",
    "Gulmarg"
  ]
}"
require 'net/http'
require 'uri'
require 'json'

uri = URI.parse("https://<environmenturl>/api/accounts/owner/remove_tag") header = {'X-Api-Key' => '<your secure token>', 'Content-Type' => 'application/json'} body = {
"owner_id": [ "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx","xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx" ], "tags": [ "Pune", "Gulmarg" ] } http = Net::HTTP.new(uri.host, uri.port) http.use_ssl = true request = Net::HTTP::Put.new(uri.request_uri, header) request.body = body.to_json response = http.request(request)

const data = {
  "owner_id": [
     "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx","xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx"
  ],
  "tags": [
    "Pune",
    "Gulmarg"
  ]
};

fetch('https://<environmenturl>/api/accounts/owner/remove_tag', { method: 'PUT', headers: { 'X-Api-Key': '<your secure token>', 'Content-Type': 'application/json' }, body: JSON.stringify(data) }) .then(response => response.json()) .then(data => console.log(data)) .catch(error => console.error(error));

The below example can be sent as a request to the API.

{
  "owner_id": [
     "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx","xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx"
  ],
  "tags": [
    "Pune",
    "Gulmarg"
  ]
}

SUCCESS RESPONSE The request returns JSON structured like below on successful remove tag of owner accounts

{
  "status": true,
  "successful_count": 1,
  "unsuccessful_count": 1,
  "ids": {
    "successful_id": [
      "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx"
    ],
    "unsuccessful_ids": [
      { "id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx", "errors": "tag could not be removed due to validation error" }
    ]
  }
}

ERROR RESPONSE The request returns JSON structured like below for errors related remove tag of owner accounts

{
  "status": false,
  "errors": {
    "base": [
      "Missing required parameters: owner_account_id and/or tags."
    ],
    "base":[
      "The owner account IDs are not present."
    ],
    "base":[
      "No valid tags to remove"
    ],
    "base":[
      "Tags are not present in some accounts."
    ]
  }
}

This endpoint Remove Tag of Owner Account.

UAT HTTP Request

PUT https://nxt.api.q2pay.co.in/api/accounts/owner/remove_tag

PRODUCTION HTTP Request

PUT https://nxt.api.q2pay.in/api/accounts/owner/remove_tag

Query Parameters

Parameter Default Description Required Sample
owner_id N.A. owner id of owner account Yes ["xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx","xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx" ]
tags N.A. tags of owner account Yes ["Pune","Gulmarg" ]

Service Details

Service ID Description
DOwnerTag Remove tag for Owner Account

Display Statement Download of Owner Account

curl -X PUT "https://<environmenturl>/api/accounts/owner/:id/display_statement_download.:format"
  -H "X-Api-Key: <your secure token>"
  -H "Content-Type: application/json"
  -d "{ 
       "start_date": "15 Mar 2023",
       "end_date": "30 Apr 2023",
       "credit_debit":"credit",
       "start_amount": 888.1,
       "end_amount": 1000,
       "entry_source": true
      }"
require 'net/http'
require 'uri'
require 'json'

uri = URI.parse("https://<environmenturl>/api/accounts/owner/:id/display_statement_download.:format") header = {'X-Api-Key' => '<your secure token>', 'Content-Type' => 'application/json'} body = { "start_date": "15 Mar 2023", "end_date": "30 Apr 2023", "credit_debit":"credit", "start_amount": 888.1, "end_amount": 1000, "entry_source": true } http = Net::HTTP.new(uri.host, uri.port) http.use_ssl = true request = Net::HTTP::Put.new(uri.request_uri, header) request.body = body.to_json response = http.request(request)

const data = {
       "start_date": "15 Mar 2023",
       "end_date": "30 Apr 2023",
       "credit_debit":"credit",
       "start_amount": 888.1,
       "end_amount": 1000,
       "entry_source": true
};

fetch('https://<environmenturl>/api/accounts/owner/:id/display_statement_download.:format', { method: 'PUT', headers: { 'X-Api-Key': '<your secure token>', 'Content-Type': 'application/json' }, body: JSON.stringify(data) }) .then(response => response.json()) .then(data => console.log(data)) .catch(error => console.error(error));

The below example can be sent as a request to the API

{
  "start_date": "15 Mar 2023",
  "end_date": "30 Apr 2023",
  "credit_debit":"debit",
  "start_amount": 888.1,
  "end_amount": 1000,
   "entry_source": true
}

SUCCESS RESPONSE The request returns JSON structured like below on successful display statement download of owner accounts

{
   "status": 200 
}

ERROR RESPONSE The request returns JSON structured like below for errors related display statement download of owner accounts

{
  "status": false,
  "errors": {
    "base": [
      "Kindly check start date or end date for fetching statements."
    ],
    "base":[
      "Start amount and end amount must be numeric."
    ]
  }
}

ERROR RESPONSE The request returns JSON structured like below for errors related display statement download of owner accounts

{
  "status": false,
  "message": "Unsupported format requested. Please use PDF, CSV, TSV, or XLSX."
}

This endpoint Display Statement Download of Owner Account.

UAT HTTP Request

PUT https://nxt.api.q2pay.co.in/api/accounts/owner/:id/display_statement_download.:format

PRODUCTION HTTP Request

PUT https://nxt.api.q2pay.in/api/accounts/owner/:id/display_statement_download.:format

Query Parameters

Parameter Default Description Required Sample
start_date ,end_date N.A. start date and end date of owner account Yes "15 Mar 2023","30 Apr 2023" or "15/3/2023", "15/5/2023"
credit_debit N.A. credit or debit of owner account Yes "credit","debit"
start_amount,end_amount N.A. start amount and end amount of owner account Yes 200,1000
entry_source Both Determines whether the statement entry originates from uploaded data or bank data. Default returns both types. No true

File Format

Format Default Description Required Sample URL
pdf N.A. pdf format to download statement of owner account Yes https://<environmenturl>/api/accounts/owner/:id/display_statement_download.pdf
csv N.A. csv format to download statement of owner account Yes https://<environmenturl>/api/accounts/owner/:id/display_statement_download.csv
tsv N.A. tsv format to download statement of owner account Yes https://<environmenturl>/api/accounts/owner/:id/display_statement_download.tsv
xlsx N.A. xlsx format to download statement of owner account Yes https://<environmenturl>/api/accounts/owner/:id/display_statement_download.xlsx

Service Details

Service ID Description
Admin Admin
VAccountBalance View Balance of Owner Account

Consolidated Statement of Owner Account

curl -X PUT "https://<environmenturl>/api/accounts/owner/consolidated_statement"
  -H "X-Api-Key: <your secure token>"
  -H "Content-Type: application/json"
  -d "{ 
       "start_date": "15 Mar 2023",
       "end_date": "30 Apr 2023",
       "credit_debit":"credit",
       "start_amount": 888.1,
       "end_amount": 1000,
       "entry_source": true,
       "owner_account_id":["xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx","xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx"]
      }"
require 'net/http'
require 'uri'
require 'json'

uri = URI.parse("https://<environmenturl>/api/accounts/owner/consolidated_statement") header = {'X-Api-Key' => '<your secure token>', 'Content-Type' => 'application/json'} body = { "start_date": "15 Mar 2023", "end_date": "30 Apr 2023", "credit_debit":"credit", "start_amount": 888.1, "end_amount": 1000, "entry_source": true, "owner_account_id":["xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx","xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx"] } http = Net::HTTP.new(uri.host, uri.port) http.use_ssl = true request = Net::HTTP::Put.new(uri.request_uri, header) request.body = body.to_json response = http.request(request)

const data = {
       "start_date": "15 Mar 2023",
       "end_date": "30 Apr 2023",
       "credit_debit":"credit",
       "start_amount": 888.1,
       "end_amount": 1000,
       "entry_source": true,
       "owner_account_id":["xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx","xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx"]
};

fetch('https://<environmenturl>/api/accounts/owner/consolidated_statement', { method: 'PUT', headers: { 'X-Api-Key': '<your secure token>', 'Content-Type': 'application/json' }, body: JSON.stringify(data) }) .then(response => response.json()) .then(data => console.log(data)) .catch(error => console.error(error));

The below example can be sent as a request to the API

{
  "start_date": "15 Mar 2023",
  "end_date": "30 Apr 2023",
  "credit_debit":"debit",
  "start_amount": 888.1,
  "end_amount": 1000,
  "entry_source": true,
  "owner_account_id":["xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx","xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx"]
}

SUCCESS RESPONSE The request returns JSON structured like below on successful consolidated statement of owner accounts

{
    "status": true,
    "total_count": 1,
    "statement": [
        {   "account_statement_entry_id": 4,
            "owner_account_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
            "owner_bank_account_number": "1234567911",
            "ifsc_code": "IBKL0001964",
            "bank_name": "IDBI",
            "name": "prajakta",
            "transaction_date": "2024-09-02T07:38:00.000Z",
            "value_date": "2024-08-11",
            "narration": "light bill",
            "amount": "1100355.0",
            "bank_reference": "PILIMUIN01J74711",
            "credit_debit": "Credit",
            "closing_balance": "61500.0",
            "uploaded": true
        }
    ],
    "title": {
        "records": 1,
        "current_page": 1,
        "total_pages": 1,
        "page_item_count": 50
    }
}

ERROR RESPONSE The request returns JSON structured like below for errors related consolidated statement of owner accounts

{
  "status": false,
  "errors": {
    "base": [
      "Kindly check start date or end date for fetching statements."
    ],
    "base":[
      "Start amount and end amount must be numeric."
    ]
  }
}

This endpoint Consolidated Statement of Owner Account.

UAT HTTP Request

PUT https://nxt.api.q2pay.co.in/api/accounts/owner/consolidated_statement

PRODUCTION HTTP Request

PUT https://nxt.api.q2pay.in/api/accounts/owner/consolidated_statement

Query Parameters

Parameter Default Description Required Sample
start_date ,end_date N.A. start date and end date of owner account Yes "15 Mar 2023","30 Apr 2023" or "15/3/2023", "15/5/2023"
credit_debit N.A. credit or debit of owner account Yes "credit","debit"
start_amount,end_amount N.A. start amount and end amount of owner account Yes 200,1000
owner_account_id N.A Owner account id of owner account Yes ["xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx","xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx"]
entity_id N.A If Admin is present then entity id is required of owner account Yes (Admin) ABC12
entry_source Both Determines whether the statement entry originates from uploaded data or bank data. Default returns both types. No true
page_size 50 If set to specific number, the result will include that number of transactions. No 10
page_no 1 If set to specific number, the result will include that page of transactions. No 2

Service Details

Service ID Description
Admin Admin
VAccountBalance View Balance of Owner Account

Consolidated Itemised Statement of Owner Account

curl -X GET "https://<environmenturl>/api/accounts/owner/consolidated_itemised_statement?from_date=1678818600&to_date=1678818600&credit_debit=credit&min_amount=888.1&max_amount=1000&owner_account_id[]=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx&owner_account_id[]=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx" \
  -H "X-Api-Key: <your secure token>"

require 'net/http'
require 'uri'
require 'json'

uri = URI.parse("https://<environmenturl>/api/accounts/owner/consolidated_itemised_statement")
header = {'X-Api-Key' => '<your secure token>', 'Content-Type' => 'application/json'}
params = {
       "from_date": "1678818600",
       "to_date": "1678818600",
       "min_amount": 888.1,
       "max_amount": 1000,
       "owner_account_id":["xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx","xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx"]
}
http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = true
uri.query = URI.encode_www_form(params)
request = Net::HTTP::Get.new(uri.request_uri, header)
response = http.request(request)
const data = {
       "from_date": "1678818600",
       "to_date": "1678818600",
       "min_amount": 888.1,
       "max_amount": 1000,
       "owner_account_id":["xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx","xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx"]
};
const query = new URLSearchParams(data).toString();
fetch(`https://<environmenturl>/api/accounts/owner/consolidated_itemised_statement?${query}`', {
  method: 'GET',
  headers: {
    'X-Api-Key': '<your secure token>',
    'Content-Type': 'application/json'
  }
})
  .then(response => response.json())
  .then(data => console.log(data))
  .catch(error => console.error(error));

The below example can be sent as a request to the API

{
  "from_date": "1678818600",
  "to_date": "1678818600",
  "min_amount": 888.1,
  "max_amount": 1000,
  "owner_account_id":["xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx","xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx"]
}

SUCCESS RESPONSE The request returns JSON structured like below on successful consolidated itemised statement of owner accounts

{
    "status": true,
    "total_count": 1,
    "ecollection_callbacks": [
         {"ecollection_callback_id": "82241185-aad0-47cc-bede-4145c33bb989",
          "owner_account_id": "1cc0ff08-7885-4fa4-a287-041908e41b3b",
          "owner_bank_account_number": "8482940313",
          "ifsc_code": "HDFC0000224",
          "bank_name": "HDFC Bank",
          "name": "Q3PAY TECHNOLOGIES P",
          "party_name": "BOM E Payment of Tax",
          "party_ifsc": "MAHB0000588",
          "party_account_number": "6457653969",
          "bank_reference": "MAHBR52025021219643482",
          "transaction_date": 1739298600,
          "value_date": 1739298600,
          "narration": "RTGS Cr-MAHB0000588-BOM E Payment of Tax-THE CLEARING CORPORATION OF INDIA",
          "amount": "3000.0",
          "credit_debit": "credit"
          }
    ],
    "title": {
        "records": 1,
        "current_page": 1,
        "total_pages": 1,
        "page_item_count": 50
    }
}

ERROR RESPONSE The request returns JSON structured like below for errors related consolidated itemised statement of owner accounts

{
  "status": false,
  "errors": {
    "base": [
      "'Owner Account not present'"
    ]
  }
}

This endpoint Consolidated Statement of Owner Account. This will only give credit entries.

UAT HTTP Request

GET https://nxt.api.q2pay.co.in/api/accounts/owner/consolidated_itemised_statement

PRODUCTION HTTP Request

GET https://nxt.api.q2pay.in/api/accounts/owner/consolidated_itemised_statement

Query Parameters

Parameter Default Description Required Sample
from_date ,to_date N.A. start date and end date of ecollection No "1678818600", "1678818600"
min_amount,max_amount N.A. start amount and end amount of ecollection_callback 200,1000
owner_account_id N.A Owner account id of ecollection_callback Yes ["xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx","xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx"]
narration N.A narration filter for ecollection_callback [string similar match] No RTGS
entity_id N.A If Admin wants to filter entity of owner account No ( Yes if Admin wants to mimic entity) ABC12
page_size 50 If set to specific number, the result will include that number of transactions. No 10
page_no 1 If set to specific number, the result will include that page of transactions. No 2

Service Details

Service ID Description
Admin Admin
VItemisedStatement View consolidated itemised statement of Owner Account

Consolidated Statement Download of Owner Account

curl -X PUT "https://<environmenturl>/api/accounts/owner/consolidated_statement_download.:format"
  -H "X-Api-Key: <your secure token>"
  -H "Content-Type: application/json"
  -d "{ 
       "start_date": "15 Mar 2023",
       "end_date": "30 Apr 2023",
       "credit_debit":"credit",
       "start_amount": 888.1,
       "end_amount": 1000,
       "entry_source": true,
       "owner_account_id":["xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx","xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx"],
       "filter_columns": ["Amount"]
      }"
require 'net/http'
require 'uri'
require 'json'

uri = URI.parse("https://<environmenturl>/api/accounts/owner/consolidated_statement_download.:format") header = {'X-Api-Key' => '<your secure token>', 'Content-Type' => 'application/json'} body = { "start_date": "15 Mar 2023", "end_date": "30 Apr 2023", "credit_debit":"credit", "start_amount": 888.1, "end_amount": 1000, "entry_source": true, "owner_account_id":["xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx","xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx"], "filter_columns": ["Amount"] } http = Net::HTTP.new(uri.host, uri.port) http.use_ssl = true request = Net::HTTP::Put.new(uri.request_uri, header) request.body = body.to_json response = http.request(request)

const data = {
       "start_date": "15 Mar 2023",
       "end_date": "30 Apr 2023",
       "credit_debit":"credit",
       "start_amount": 888.1,
       "end_amount": 1000,
       "entry_source": true,
       "owner_account_id":["xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx","xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx"],
       "filter_columns": ["Amount"]
};

fetch('https://<environmenturl>/api/accounts/owner/consolidated_statement_download.:format', { method: 'PUT', headers: { 'X-Api-Key': '<your secure token>', 'Content-Type': 'application/json' }, body: JSON.stringify(data) }) .then(response => response.json()) .then(data => console.log(data)) .catch(error => console.error(error));

The below example can be sent as a request to the API

{
  "start_date": "15 Mar 2023",
  "end_date": "30 Apr 2023",
  "credit_debit":"debit",
  "start_amount": 888.1,
  "end_amount": 1000,
  "entry_source": true,
  "owner_account_id":["xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx","xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx"],
  "filter_columns": ["Amount"]
}

SUCCESS RESPONSE The request returns JSON structured like below on successful consolidated statement download of owner accounts

{
   "status": 200 
}

ERROR RESPONSE The request returns JSON structured like below for errors related consolidated statement download of owner accounts

{
  "status": false,
  "errors": {
    "base": [
      "Kindly check start date or end date for fetching statements."
    ],
    "base":[
      "Start amount and end amount must be numeric."
    ]
  }
}

ERROR RESPONSE The request returns JSON structured like below for errors related consolidated statement download of owner accounts

{
  "status": false,
  "message": "Unsupported format requested. Please use PDF, CSV, TSV, or XLSX."
}
{
  "status":false,"errors":"Invalid column(s): Amounts."
}

This endpoint Consolidated Statement Download of Owner Account.

UAT HTTP Request

PUT https://nxt.api.q2pay.co.in/api/accounts/owner/consolidated_statement_download.:format

PRODUCTION HTTP Request

PUT https://nxt.api.q2pay.in/api/accounts/owner/consolidated_statement_download.:format

Query Parameters

Parameter Default Description Required Sample
start_date ,end_date N.A. start date and end date of owner account Yes "15 Mar 2023","30 Apr 2023" or "15/3/2023", "15/5/2023"
credit_debit N.A. credit or debit of owner account Yes "credit","debit"
start_amount,end_amount N.A. start amount and end amount of owner account Yes 200,1000
owner_account_id N.A Owner account id of owner account Yes ["xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx","xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx"]
entity_id N.A If Admin is present then entity id is required of owner account Yes (Admin) ABC12
entry_source Both Determines whether the statement entry originates from uploaded data or bank data. Default returns both types. No true
filter_columns N.A filter columns to download itemised statement No ["Date and Time","Value Date","Bank Reference No.","Narration","Type","Amount","Debit Amount","Credit Amount","Bank Name","Account Number","IFSC Code","Vendor Code","Account Name","Sender A/c Number","Closing Balance"]

File Format

Format Default Description Required Sample URL
pdf N.A. pdf format to download statement of owner account Yes https://<environmenturl>/api/accounts/owner/consolidated_statement_download.pdf
csv N.A. csv format to download statement of owner account Yes https://<environmenturl>/api/accounts/owner/consolidated_statement_download.csv
tsv N.A. tsv format to download statement of owner account Yes https://<environmenturl>/api/accounts/owner/consolidated_statement_download.tsv
xlsx N.A. xlsx format to download statement of owner account Yes https://<environmenturl>/api/accounts/owner/consolidated_statement_download.xlsx

Service Details

Service ID Description
Admin Admin
VAccountBalance View Balance of Owner Account

Consolidated Itemised Statement Download of Owner Account

curl -X PUT "https://<environmenturl>/api/accounts/owner/consolidated_itemised_statement_download.:format"
  -H "X-Api-Key: <your secure token>"
  -H "Content-Type: application/json"
  -d "{ 
       "from_date": "1678818600",
       "to_date": "1678818600",
       "min_amount": 10,
       "max_amount": 100,
       "owner_account_id":["xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx","xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx"],
       "filter_columns": ["bank_name","party_name"]
      }"
require 'net/http'
require 'uri'
require 'json'

uri = URI.parse("https://<environmenturl>/api/accounts/owner/consolidated_itemised_statement_download.:format")
header = {'X-Api-Key' => '<your secure token>', 'Content-Type' => 'application/json'}
body = {
       "from_date": "1678818600",
       "to_date": "1678818600",
       "min_amount": 10,
       "max_amount": 100,
       "owner_account_id":["xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx","xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx"],
       "filter_columns": ["bank_name","party_name"]
}
http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = true
request = Net::HTTP::Put.new(uri.request_uri, header)
request.body = body.to_json
response = http.request(request)
const data = {
       "from_date": "1678818600",
       "to_date": "1678818600",
       "min_amount": 10,
       "max_amount": 100,
       "owner_account_id":["xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx","xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx"],
       "filter_columns": ["bank_name","party_name"]
};

fetch('https://<environmenturl>/api/accounts/owner/consolidated_itemised_statement_download.:format', {
  method: 'PUT',
  headers: {
    'X-Api-Key': '<your secure token>',
    'Content-Type': 'application/json'
  },
  body: JSON.stringify(data)
})
  .then(response => response.json())
  .then(data => console.log(data))
  .catch(error => console.error(error));

The below example can be sent as a request to the API

{
    "from_date": "1678818600",
    "to_date": "1678818600",
    "min_amount": 10,
    "max_amount": 100,
    "owner_account_id":["xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx","xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx"],
    "filter_columns": ["bank_name","party_name"]
}

SUCCESS RESPONSE The request returns JSON structured like below on successful consolidated itemised statement download of owner accounts

{
   "status": 200 
}

ERROR RESPONSE The request returns JSON structured like below for errors related consolidated itemised statement download of owner accounts

{
  "status": false,
  "errors": {
    "base": [
      "'Owner Account not present'"
    ]
  }
}

ERROR RESPONSE The request returns JSON structured like below for errors related consolidated itemised statement download of owner accounts

{
  "status": false,
  "message": "Unsupported format requested. Please use PDF, CSV, TSV, or XLSX."
}

This endpoint Consolidated Itemised Statement Download of Owner Account. This will only give credit entries.

UAT HTTP Request

PUT https://nxt.api.q2pay.co.in/api/accounts/owner/consolidated_itemised_statement_download.:format

PRODUCTION HTTP Request

PUT https://nxt.api.q2pay.in/api/accounts/owner/consolidated_itemised_statement_download.:format

Query Parameters

Parameter Default Description Required Sample
from_date ,to_date N.A. from date and to date of owner account No "1678818600", "1678818600"
start_amount,end_amount N.A. start amount and end amount of owner account No 200,1000
owner_account_id N.A Owner account id of owner account Yes ["xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx","xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx"]
entity_id N.A If Admin wants to filter entity of owner account No ABC12
filter_columns N.A filter columns to download itemised statement No ["owner_bank_account_number","ifsc_code","bank_name","name","party_name","party_ifsc","party_account_number","transaction_date","value_date","narration","amount","bank_reference","credit_debit"]

File Format

Format Default Description Required Sample URL
pdf N.A. pdf format to download itemised statement of owner account Yes https://<environmenturl>/api/accounts/owner/consolidated_itemised_statement_download.pdf
csv N.A. csv format to download itemised statement of owner account Yes https://<environmenturl>/api/accounts/owner/consolidated_itemised_statement_download.csv
tsv N.A. tsv format to download itemised statement of owner account Yes https://<environmenturl>/api/accounts/owner/consolidated_itemised_statement_download.tsv
xlsx N.A. xlsx format to download itemised statement of owner account Yes https://<environmenturl>/api/accounts/owner/consolidated_itemised_statement_download.xlsx

Service Details

Service ID Description
Admin Admin
VItemisedStatement View consolidated itemised statement of Owner Account

Display Balance Report Of Owner Account

curl -X PUT "https://<environmenturl>/api/accounts/owner/:id/display_balance_report"
  -H "X-Api-Key: <your secure token>"
  -H "Content-Type: application/json"
  -d "{ 
       "start_date": "15 Mar 2023",
       "end_date": "30 Apr 2023",
      }"
require 'net/http'
require 'uri'
require 'json'

uri = URI.parse("https://<environmenturl>/api/accounts/owner/:id/display_balance_report") header = {'X-Api-Key' => '<your secure token>', 'Content-Type' => 'application/json'} body = { "start_date": "15 Mar 2023", "end_date": "30 Apr 2023", } http = Net::HTTP.new(uri.host, uri.port) http.use_ssl = true request = Net::HTTP::Put.new(uri.request_uri, header) request.body = body.to_json response = http.request(request)

const data = {
      "start_date": "15 Mar 2023",
      "end_date": "30 Apr 2023",
};

fetch('https://<environmenturl>/api/accounts/owner/:id/display_balance_report', { method: 'PUT', headers: { 'X-Api-Key': '<your secure token>', 'Content-Type': 'application/json' }, body: JSON.stringify(data) }) .then(response => response.json()) .then(data => console.log(data)) .catch(error => console.error(error));

The below example can be sent as a request to the API

{
    "start_date": "15 Mar 2023",
    "end_date": "30 Apr 2023",
}

SUCCESS RESPONSE The request returns JSON structured like below on successful display balance report of owner account

{
  "status":true,
  "total_count":5,
  "owner_account_details":{
    "owner_bank_account_number":"8482940312",
    "ifsc_code":"HDFC0000100",
    "bank_name":"HDFC Bank",
    "branch":"ABHYUDAYA NAGAR",
    "name":"Q3PAY TECHNOLOGIES P",
    "account_type":"Current Account",
    "from_date":"2024-12-16",
    "to_date":"2024-12-21",
    "account_balances_report": [
      {
        "date":"2024-12-16",
        "lowest_balance":13302.23,
        "highest_balance":19552.23,
        "closing_balance":19552.23
      },
      {
        "date":"2024-12-17",
        "lowest_balance":14300.23,
        "highest_balance":20352.23,
        "closing_balance":15802.23
      },
      {
        "date":"2024-12-18",
        "lowest_balance":15352.23,
        "highest_balance":17300.23,
        "closing_balance":17300.23
      },
      {
        "date":"2024-12-19",
        "lowest_balance":9152.23,
        "highest_balance":19800.23,
        "closing_balance":19800.23
      },
      {
        "date":"2024-12-20",
        "lowest_balance":4800.23,
        "highest_balance":14152.23,
        "closing_balance":4800.23
      }
    ]
  }
}

ERROR RESPONSE The request returns JSON structured like below for errors related display balance report of owner account

{
    "status": false,
    "errors": { 
        "base": "Unable to fetch account balance report"
    } 
}

This endpoint will display balance report of owner account.

UAT HTTP Request

PUT https://nxt.api.q2pay.co.in/api/accounts/owner/:id/display_balance_report

PRODUCTION HTTP Request

PUT https://nxt.api.q2pay.in/api/accounts/owner/:id/display_balance_report

Query Parameters

Parameter Default Description Required Sample
start_date, end_date N.A. If start date and end date param not passed then it will fetch last 7 days of lookup data of owner account No "15 Mar 2023", "30 Apr 2023"

Service Details

Service ID Description
Admin Admin
VAccountBalance View Balance of Owner Account

Historic Balance Report Income Of Owner Account

curl -X PUT "https://<environmenturl>/api/accounts/owner/:id/historic_balance_report_income"
  -H "X-Api-Key: <your secure token>"
  -H "Content-Type: application/json"
  -d "{ 
       "start_date": "15 Jan 2023",
       "end_date": "30 Jun 2023",
       "investment_percent": 35.5,
       "interest_rate": 6.5
      }"
require 'net/http'
require 'uri'
require 'json'

uri = URI.parse("https://<environmenturl>/api/accounts/owner/:id/historic_balance_report_income") header = {'X-Api-Key' => '<your secure token>', 'Content-Type' => 'application/json'} body = { "start_date": "15 Jan 2023", "end_date": "30 Jun 2023", "investment_percent": 35.5, "interest_rate": 6.5 } http = Net::HTTP.new(uri.host, uri.port) http.use_ssl = true request = Net::HTTP::Put.new(uri.request_uri, header) request.body = body.to_json response = http.request(request)

const data = {
      "start_date": "15 Jan 2023",
      "end_date": "30 Jun 2023",
      "investment_percent": 35.5,
      "interest_rate": 6.5
};

fetch('https://<environmenturl>/api/accounts/owner/:id/historic_balance_report_income', { method: 'PUT', headers: { 'X-Api-Key': '<your secure token>', 'Content-Type': 'application/json' }, body: JSON.stringify(data) }) .then(response => response.json()) .then(data => console.log(data)) .catch(error => console.error(error));

The below example can be sent as a request to the API

{
    "start_date": "15 Jan 2023",
    "end_date": "30 Jun 2023",
    "investment_percent": 35.5,
    "interest_rate": 6.5
}

SUCCESS RESPONSE The request returns JSON structured like below on successful historic balance report income of owner account

{
    "status":true,
    "total_count":5,
    "investment_percent":100,
    "interest_rate":6.5,
    "owner_account_details":{
        "owner_bank_account_number":"8482940456",
        "ifsc_code":"ICIC0000295",
        "bank_name":"ICICI Bank",
        "branch":"PUNE - PASHAN",
        "name":"Q2PAY TECHNOLOGIES P",
        "account_type":"Current Account",
        "from_date":"2023-01-02",
        "to_date":"2023-07-02",
        "account_balances_report":[
            {
                "date":"2023-03-15", "lowest_balance":50003.0, "highest_balance":50003.0, "closing_balance":50003.0, "daily_interest":8.96604554794524
            },
            {
                "date":"2023-03-30", "lowest_balance":50003.0, "highest_balance":50003.0, "closing_balance":50003.0, "daily_interest":8.96604554794524
            },
            {
                "date":"2023-04-15", "lowest_balance":50003.0, "highest_balance":50003.0, "closing_balance":50003.0, "daily_interest":8.96604554794524
            },
            {
                "date":"2023-04-30", "lowest_balance":50003.0, "highest_balance":50003.0, "closing_balance":50003.0, "daily_interest":8.96604554794524
            },
            {
                "date":"2023-05-15", "lowest_balance":400.0, "highest_balance":1000.23, "closing_balance":1000.23, "daily_interest":0.1896604554794524
            }
        ]
    }
}

ERROR RESPONSE The request returns JSON structured like below for errors related historic balance report income of owner account

{
  "status": false, 
  "errors": {
    "base": [
      "Investment percent must be a valid number."
    ],
    "base": [
      "Investment percent must be between 0 and 100."
    ],
    "base": [
      "Difference between the start_date and end_date should not be greater than 6 months."
    ],
    "base": [
      "Balance report data is unavailable."
    ],
    "base": [
      "Interest rate must be a valid number."
    ],
    "base": [
      "Interest rate must be a positive number."
    ]
  }
}

This endpoint will historic balance report income of owner account.

UAT HTTP Request

PUT https://nxt.api.q2pay.co.in/api/accounts/owner/:id/historic_balance_report_income

PRODUCTION HTTP Request

PUT https://nxt.api.q2pay.in/api/accounts/owner/:id/historic_balance_report_income

Query Parameters

Parameter Default Description Required Sample
start_date, end_date N.A. If start date and end date param not passed then it will fetch last 7 days of lookup data of owner account optional "15 Jan 2023", "30 Jun 2023" or "2023-01-15","2023-06-16"
investment_percent N.A. Investment percent must be between 0 to 100 of owner account optional 35
interest_rate N.A Interest rate by default 6.5 of owner account optional 6.5

Service Details

Service ID Description
Admin Admin
VAccountBalance View Balance of Owner Account

Add Favourite to Owner Account

curl -X PUT "https://<environmenturl>/api/accounts/owner/:id/add_favourite"
  -H "X-Api-Key: <your secure token>"
  -H "Content-Type: application/json"

require 'net/http'
require 'uri'
require 'json'

uri = URI.parse("https://<environmenturl>/api/accounts/owner/:id/add_favourite") header = {'X-Api-Key' => '<your secure token>', 'Content-Type' => 'application/json'} http = Net::HTTP.new(uri.host, uri.port) http.use_ssl = true request = Net::HTTP::Put.new(uri.request_uri, header) request.body = body.to_json response = http.request(request)


fetch('https://<environmenturl>/api/accounts/owner/:id/add_favourite', {
  method: 'PUT',
  headers: {
    'X-Api-Key': '<your secure token>',
    'Content-Type': 'application/json'
  },
  body: JSON.stringify(data)
})
  .then(response => response.json())
  .then(data => console.log(data))
  .catch(error => console.error(error));

SUCCESS RESPONSE The request returns JSON structured like below on successful add favourite owner account

{
  "status":true,
  "total_count":1,
  "total_balance":"0.0",
  "owner_accounts":[
    {
      "id":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
      "account_type":"Current Account",
      "entity_id":"ABC12",
      "name":"Q59PAY TECHNOLOGIES P",
      "email_id":"abc@q2pay.in",
      "bank_acc_no":"8482940369",
      "bank_account_holder_full_name":"Q59PAY TECHNOLOGIES P",
      "bank_account_holder_legal_name":"Q59PAY TECHNOLOGIES P",
      "ifsc_code":"HDFC0000111",
      "bank_name":"HDFC Bank",
      "approval_status":"approved",
      "active_status":"Y",
      "tags":[],
      "approved_by":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
      "approved_by_name":"Ashish Wadekar",
      "approved_on":"xxxxxxxx",
      "created_by":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
      "created_by_name":"Ashish Wadekar",
      "created_on":"xxxxxxxx",
      "pan_no":"YASED47232H",
      "gstin_detail":"18AAACQ0519CTYu",
      "connected_banking":"N",
      "favourite":"Y"
    }
  ],
  "title":{
    "records":1, 
    "current_page":1, 
    "total_pages":1, 
    "page_item_count":1
  }
}

ERROR RESPONSE The request returns JSON structured like below for errors related add favourite of owner accounts

{
  "status":false,
  "errors":{
    "base":[
      "Already marked as favourite"
    ]
  }
}

This endpoint will add favourite of owner account.

UAT HTTP Request

PUT https://nxt.api.q2pay.co.in/api/accounts/owner/:id/add_favourite

PRODUCTION HTTP Request

PUT https://nxt.api.q2pay.in/api/accounts/owner/:id/add_favourite

Service Details

Service ID Description
AFavourite Add Favourite Owner Account

Remove Favourite From Owner Account

curl -X PUT "https://<environmenturl>/api/accounts/owner/:id/remove_favourite"
  -H "X-Api-Key: <your secure token>"
  -H "Content-Type: application/json"

require 'net/http'
require 'uri'
require 'json'

uri = URI.parse("https://<environmenturl>/api/accounts/owner/:id/remove_favourite") header = {'X-Api-Key' => '<your secure token>', 'Content-Type' => 'application/json'} http = Net::HTTP.new(uri.host, uri.port) http.use_ssl = true request = Net::HTTP::Put.new(uri.request_uri, header) request.body = body.to_json response = http.request(request)


fetch('https://<environmenturl>/api/accounts/owner/:id/remove_favourite', {
  method: 'PUT',
  headers: {
    'X-Api-Key': '<your secure token>',
    'Content-Type': 'application/json'
  },
  body: JSON.stringify(data)
})
  .then(response => response.json())
  .then(data => console.log(data))
  .catch(error => console.error(error));

SUCCESS RESPONSE The request returns JSON structured like below on successful remove favourite owner account

{
  "status":true,
  "total_count":1,
  "total_balance":"0.0",
  "owner_accounts":[
    {
      "id":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
      "account_type":"Current Account",
      "entity_id":"ABC12",
      "name":"Q59PAY TECHNOLOGIES P",
      "email_id":"abc@q2pay.in",
      "bank_acc_no":"8482940369",
      "bank_account_holder_full_name":"Q59PAY TECHNOLOGIES P",
      "bank_account_holder_legal_name":"Q59PAY TECHNOLOGIES P",
      "ifsc_code":"HDFC0000111",
      "bank_name":"HDFC Bank",
      "approval_status":"approved",
      "active_status":"Y",
      "tags":[],
      "approved_by":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
      "approved_by_name":"Ashish Wadekar",
      "approved_on":"xxxxxxxx",
      "created_by":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
      "created_by_name":"Ashish Wadekar",
      "created_on":"xxxxxxxx",
      "pan_no":"YASED47232H",
      "gstin_detail":"18AAACQ0519CTYu",
      "connected_banking":"N",
      "favourite":"N"
    }
  ],
  "title":{
    "records":1, 
    "current_page":1, 
    "total_pages":1, 
    "page_item_count":1
  }
}

ERROR RESPONSE The request returns JSON structured like below for errors related remove favourite of owner accounts

{
  "status":false,
  "errors":{
    "base":[
      "Not marked as favourite"
    ]
  }
}

This endpoint will remove favourite of owner account.

UAT HTTP Request

PUT https://nxt.api.q2pay.co.in/api/accounts/owner/:id/remove_favourite

PRODUCTION HTTP Request

PUT https://nxt.api.q2pay.in/api/accounts/owner/:id/remove_favourite

Service Details

Service ID Description
AFavourite Remove Favourite Owner Account

Add Labels of Owner Account

curl -X PUT "https://<environmenturl>/api/accounts/owner/add_label"
  -H "X-Api-Key: <your secure token>"
  -H "Content-Type: application/json"
  -d "{
  "record_ids": [
    "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx","xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx"
  ],
  "labels": [
    "audit expense",
    "Infrastructure"
  ]
}"
require 'net/http'
require 'uri'
require 'json'

uri = URI.parse("https://<environmenturl>/api/accounts/owner/add_label") header = {'X-Api-Key' => '<your secure token>', 'Content-Type' => 'application/json'} body = {
"record_ids": [ "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx","xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx" ], "labels": [ "audit expense", "Infrastructure" ] } http = Net::HTTP.new(uri.host, uri.port) http.use_ssl = true request = Net::HTTP::Put.new(uri.request_uri, header) request.body = body.to_json response = http.request(request)

const data = {
  "record_ids": [
     "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx","xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx"
  ],
  "labels": [
    "audit expense",
     "Infrastructure"
  ]
};

fetch('https://<environmenturl>/api/accounts/owner/add_label', { method: 'PUT', headers: { 'X-Api-Key': '<your secure token>', 'Content-Type': 'application/json' }, body: JSON.stringify(data) }) .then(response => response.json()) .then(data => console.log(data)) .catch(error => console.error(error));

The below example can be sent as a request to the API.

{
  "record_ids": [
     "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx","xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx"
  ],
  "labels": [
    "audit expense",
    "Infrastructure"
  ]
}

SUCCESS RESPONSE The request returns JSON structured like below on successful add labels of owner accounts

{
    "status":true, 
    "successful_count":1,
    "unsuccessful_count":1, 
    "ids":{
        "successful_ids":["xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx"],
        "unsuccessful_ids": [
      { "id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx", "errors": "Label could not be added due to validation error" }
    ]
    }
}

ERROR RESPONSE The request returns JSON structured like below for errors related add labels of owner accounts

{
  "status": false,
  "errors": {
    "base": [
      "Missing required parameters: record_ids and/or labels."
    ],
    "base":[
      "The owner account IDs are not present."
    ]
  }
}

This endpoint Add labels of Owner Account.

UAT HTTP Request

PUT https://nxt.api.q2pay.co.in/api/accounts/owner/add_label

PRODUCTION HTTP Request

PUT https://nxt.api.q2pay.in/api/accounts/owner/add_label

Query Parameters

Parameter Default Description Required Sample
record_ids N.A. record ids of owner account Yes ["xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx","xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx" ]
labels N.A. labels of owner account Yes ["audit expense","Infrastructure"]

Service Details

Service ID Description
ALabel Add labels for Owner Account

Remove Labels of Owner Account

curl -X PUT "https://<environmenturl>/api/accounts/owner/remove_label"
  -H "X-Api-Key: <your secure token>"
  -H "Content-Type: application/json"
  -d "{
  "record_ids": [
    "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx","xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx"
  ],
  "labels": [
    "audit expense",
    "Infrastructure"
  ]
}"
require 'net/http'
require 'uri'
require 'json'

uri = URI.parse("https://<environmenturl>/api/accounts/owner/remove_label") header = {'X-Api-Key' => '<your secure token>', 'Content-Type' => 'application/json'} body = {
"record_ids": [ "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx","xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx" ], "labels": [ "audit expense", "Infrastructure" ] } http = Net::HTTP.new(uri.host, uri.port) http.use_ssl = true request = Net::HTTP::Put.new(uri.request_uri, header) request.body = body.to_json response = http.request(request)

const data = {
  "record_ids": [
     "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx","xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx"
  ],
  "labels": [
    "audit expense",
     "Infrastructure"
  ]
};

fetch('https://<environmenturl>/api/accounts/owner/remove_label', { method: 'PUT', headers: { 'X-Api-Key': '<your secure token>', 'Content-Type': 'application/json' }, body: JSON.stringify(data) }) .then(response => response.json()) .then(data => console.log(data)) .catch(error => console.error(error));

The below example can be sent as a request to the API.

{
  "record_ids": [
     "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx","xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx"
  ],
  "labels": [
    "audit expense",
    "Infrastructure"
  ]
}

SUCCESS RESPONSE The request returns JSON structured like below on successful add labels of owner accounts

{
  "status": true,
  "successful_count": 1,
  "unsuccessful_count": 1,
  "ids": {
    "successful_id": [
      "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx"
    ],
    "unsuccessful_ids": [
      { "id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx", "errors": "Label could not be added due to validation error" }
    ]
  }
}

ERROR RESPONSE The request returns JSON structured like below for errors related add labels of owner accounts

{
  "status": false,
  "errors": {
    "base": [
      "Missing required parameters: record_ids and/or labels."
    ],
    "base":[
      "The owner account IDs are not present."
    ],
    "base":[
      "Labels are not present in some owner accounts."
    ]
  }
}

This endpoint Add labels of Owner Account.

UAT HTTP Request

PUT https://nxt.api.q2pay.co.in/api/accounts/owner/remove_label

PRODUCTION HTTP Request

PUT https://nxt.api.q2pay.in/api/accounts/owner/remove_label

Query Parameters

Parameter Default Description Required Sample
record_ids N.A. records ids of owner account Yes ["xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx","xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx" ]
labels N.A. labels of owner account Yes ["audit expense","Infrastructure"]

Service Details

Service ID Description
RLabel Remove labels for Owner Account

Adds Description in Itemised Statement of Owner Account

curl -X PUT "https://<environmenturl>/api/accounts/owner/itemised_statement_entry/add_description
  -H "X-Api-Key: <your secure token>"
  -H "Content-Type: application/json"
  -d "{
  "id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
  "statement_entry_id": "xxxxxxxx",
  "description": "audit expense"
}"

require 'net/http'
require 'uri'
require 'json'

uri = URI.parse("https://<environmenturl>/api/accounts/owner/itemised_statement_entry/add_description) header = {'X-Api-Key' => '<your secure token>', 'Content-Type' => 'application/json'} body = { "id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx", "statement_entry_id": "xxxxxxxx", "description": "audit expense" } http = Net::HTTP.new(uri.host, uri.port) http.use_ssl = true request = Net::HTTP::Put.new(uri.request_uri, header) request.body = body.to_json response = http.request(request)

const data = {
  "id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
  "statement_entry_id": "xxxxxxxx",
  "description": "audit expense"
};

fetch('https://<environmenturl>/api/accounts/owner/itemised_statement_entry/add_description', { method: 'PUT', headers: { 'X-Api-Key': '<your secure token>', 'Content-Type': 'application/json' }, body: JSON.stringify(data) }) .then(response => response.json()) .then(data => console.log(data)) .catch(error => console.error(error));

The below example can be sent as a request to the API.

{
  "id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
  "statement_entry_id": "xxxxxxxx",
  "description": "audit expense"
}

SUCCESS RESPONSE The request returns JSON structured like below on successful add description in consolidated itemised statement owner account

{
    "status": true,
    "total_count": 1,
    "owner_account_details": {
        "owner_bank_account_number": "1234567899",
        "ifsc_code": "IBKL0001959",
        "bank_name": "IDBI",
        "branch": "MAHARAJGANJ",
        "name": "Q2pay Technologies",
        "account_type": "OwnerAccount",
        "ecollection_callbacks": [
            {
                "ecollection_callback_id": "xxxx-xx-xxx-xxxx-xxxx",
                "owner_account_id": "xxxxx-xxx-xx-xx-xxxx",
                "party_name": "Test User100000",
                "party_ifsc": "IBKL0001959",
                "party_account_number": "1234567899",
                "bank_reference": "0002671281002",
                "transaction_date": 1760553000,
                "value_date": 1739298600,
                "narration": "Payment for services 3",
                "amount": "10200.0",
                "credit_debit": "credit",
                "description": "audit expense"
            }
        ]
    },
    "title": {
        "records": 1,
        "current_page": 1,
        "total_pages": 1,
        "page_item_count": 50
    }
}

ERROR RESPONSE The request returns JSON structured like below for errors related add description in consolidated itemised statement of owner accounts

{
    "status": false,
    "errors": {
        "base": [
            "Owner Account not present"
        ]
    },
    "errors": [
        "Statement entry not found",
        "Description can't be blank"
    ]
}

This endpoint adds description in itemised statement of owner account.

UAT HTTP Request

PUT https://nxt.api.q2pay.co.in/api/accounts/owner/itemised_statement_entry/add_description

PRODUCTION HTTP Request

PUT https://nxt.api.q2pay.in/api/accounts/owner/itemised_statement_entry/add_description

Query Parameters

Parameter Default Description Required Sample
id N.A. owner account id Yes "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx"
statement_entry_id N.A. statement entry id Yes "xxxxxxx"
description N.A. add description in statement Yes "audit expense"

Service Details

Service ID Description
Admin Admin
ADescription Add description in statement

Adds description in statement of Owner Account

curl -X PUT "https://<environmenturl>/api/accounts/owner/statement_entry/add_description
  -H "X-Api-Key: <your secure token>"
  -H "Content-Type: application/json"
  -d "{
  "id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
  "statement_entry_id": "xxxxxxxx",
  "description": "audit expense"
}"

require 'net/http'
require 'uri'
require 'json'

uri = URI.parse("https://<environmenturl>/api/accounts/owner/statement_entry/add_description) header = {'X-Api-Key' => '<your secure token>', 'Content-Type' => 'application/json'} body = { "id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx", "statement_entry_id": "xxxxxxxx", "description": "audit expense" } http = Net::HTTP.new(uri.host, uri.port) http.use_ssl = true request = Net::HTTP::Put.new(uri.request_uri, header) request.body = body.to_json response = http.request(request)

const data = {
  "id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
  "statement_entry_id": "xxxxxxxx",
  "description": "audit expense"
};

fetch('https://<environmenturl>/api/accounts/owner/statement_entry/add_description', { method: 'PUT', headers: { 'X-Api-Key': '<your secure token>', 'Content-Type': 'application/json' }, body: JSON.stringify(data) }) .then(response => response.json()) .then(data => console.log(data)) .catch(error => console.error(error));

The below example can be sent as a request to the API.

{
  "id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
  "statement_entry_id": "xxxxxxxx",
  "description": "audit expense"
}

SUCCESS RESPONSE The request returns JSON structured like below on successful add description in consolidated statement owner account

{
    "status": true,
    "total_count": 1,
    "owner_account_details": {
        "owner_bank_account_number": "1234567893",
        "ifsc_code": "ICIC0001953",
        "bank_name": "ICICI Bank",
        "branch": "VAZHUTHACAUD",
        "name": "Q2pay Technologies",
        "account_type": "OwnerAccount",
        "statement": [
            {
                "account_statement_entry_id": 1,
                "transaction_date": "2025-03-04T00:00:00.000Z",
                "value_date": "2025-03-04",
                "narration": "cash paid from HDFC Bank user",
                "amount": "11892.87",
                "credit_debit": "Debit",
                "closing_balance": "10892.87",
                "description": "audit expense"
            }
        ]
    },
    "title": {
        "records": 1,
        "current_page": 1,
        "total_pages": 1,
        "page_item_count": 50
    }
}

ERROR RESPONSE The request returns JSON structured like below for errors related add description in consolidated statement of owner accounts

{
    "status": false,
    "errors": {
        "base": [
            "Owner Account not present"
        ]
    },
    "errors": [
        "Statement entry not found",
        "Description can't be blank"
    ]
}

This endpoint adds description in statement of owner account.

UAT HTTP Request

PUT https://nxt.api.q2pay.co.in/api/accounts/owner/statement_entry/add_description

PRODUCTION HTTP Request

PUT https://nxt.api.q2pay.in/api/accounts/owner/statement_entry/add_description

Query Parameters

Parameter Default Description Required Sample
id N.A. owner account id Yes "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx"
statement_entry_id N.A. statement entry id Yes "xxxxx"
description N.A. add description in statement Yes "audit expense"

Service Details

Service ID Description
Admin Admin
ADescription Add description in statement

Beneficiary Account

Beneficiary account helps you create,maintain & manage of Beneficary account.

Get All Beneficiary Accounts

curl -X GET "https://<environmenturl>/api/accounts/beneficiary"
  -H "X-Api-Key: <your secure token>"
  -H "Content-Type: application/json"

require 'net/http'
require 'uri'
require 'json'

uri = URI.parse("https://<environmenturl>/api/accounts/beneficiary") header = {'X-Api-Key' => '<your secure token>', 'Content-Type' => 'application/json'} http = Net::HTTP.new(uri.host, uri.port) http.use_ssl = true request = Net::HTTP::Get.new(uri.request_uri, header) request.body = body.to_json response = http.request(request)

fetch('https://<environmenturl>/api/accounts/beneficiary', { method: 'GET', headers: { 'X-Api-Key': '<your secure token>', 'Content-Type': 'application/json' }, body: JSON.stringify(data) }) .then(response => response.json()) .then(data => console.log(data)) .catch(error => console.error(error));

SUCCESS RESPONSE The request returns JSON structured like below

{
    "status":true, 
    "total_count":2,
    "summary": {
        "blocked_accounts_count": 1,
        "archived_accounts_count": 10,
        "pending_accounts_count": 13,
        "rejected_accounts_count": 1,
        "approved_accounts_count": 6,
        "available_labels":["audit expense", "employee expense", "health expense"]
    }, 
    "beneficiary_accounts":[
        {
            "id":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
            "category": "Vendor",
            "entity_id":"ABC12", 
            "name":"Q2pay technology", 
            "contact_no":"9876545676", 
            "email_id":"hgf@gmail.com", 
            "bank_acc_no":"12345678",
            "bank_account_holder_full_name": "SUMAN INDIA",
            "bank_account_holder_legal_name": "Q2PAY TECHNOLOGIES P",
            "ifsc_code":"HDFC0000289", 
            "bank_name":"Abhyudaya Co-operative Bank", 
            "pan_no":"WASED4723H", 
            "gstin_detail":"38AAACQ0519P1CF",
            "approval_status":"approved", 
            "active_status":"Y",
            "labels": ["building expense"],
            "recipient_email": ["q2pay@gmail.co.in"],
            "vendor_payment": "Y",
            "archived":"N", 
            "maintenance":"N",
            "approved_by":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx", 
            "approved_by_name":"Ashish Wadekar", 
            "approved_on":"xxxxxxxx",
            "internal_account":"N",
            "reimbursement_account": "Y", 
            "created_by":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
            "created_by_name":"Ashish Wadekar", 
            "created_on":"xxxxxxxx", 
        },
        {
            "id":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
            "category": "Vendor",
            "entity_id":"ABC12", 
            "name":"Q2pay technology", 
            "contact_no":"9876545676", 
            "email_id":"hgf@gmail.com", 
            "bank_acc_no":"4567893467",
            "bank_account_holder_full_name": "SUMAN INDIA",
            "bank_account_holder_legal_name": "Q2PAY TECHNOLOGIES P",
            "ifsc_code":"HDFC0000212", 
            "bank_name":"Abhyudaya Co-operative Bank", 
            "pan_no":"WASED4723H", 
            "approval_status":"pending", 
            "active_status":"N",
            "vendor_payment":"N",
            "archived":"N", 
            "maintenance":"N",
            "internal_account":"N",
            "reimbursement_account": "N",
            "created_by":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
            "created_by_name":"Ashish Wadekar",
            "created_on":"xxxxxxxx" 
        }
    ], 
    "title":{
        "records":2,
        "current_page":1, 
        "total_pages":1, 
        "page_item_count":1
    }
}

This endpoint retrieves all Beneficiary Accounts.

UAT HTTP Request

GET https://nxt.api.q2pay.co.in/api/accounts/beneficiary

PRODUCTION HTTP Request

GET https://nxt.api.q2pay.in/api/accounts/beneficiary

Query Parameters

Parameter Default Description Required Sample
approval_status N.A. approval status for beneficiary account optional [ pending, approved, archived ]
category N.A. category for beneficiary account optional Vendor
start_date,end_date N.A. start date and end date for beneficiary account optional xxxxxxxx,xxxxxxxx
bank_account_no N.A. bank account number for beneficiary account optional 4567893467
ifsc N.A. ifsc for beneficiary account optional HDFC0000212
pan N.A. pan for beneficiary account optional WASED4723H
search_string N.A. search string for id/name/contact no/email of beneficiary account optional xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx,Q2pay technology,12356789,abc@gmail.com
entity_id N.A. entity id for beneficiary account optional ABC12
labels N.A. labels for beneficiary account optional ["audit expense"]
recipient_email N.A. recipient email for beneficiary account optional q2pay@gmail.co.in

Service Details

Service ID Description
Admin Admin
MimicEntity View All entities
BVAccount View All Beneficiary Accounts

Get specific Beneficiary Accounts

curl -X GET "https://<environmenturl>/api/accounts/beneficiary/:id"
  -H "X-Api-Key: <your secure token>"
  -H "Content-Type: application/json"

require 'net/http'
require 'uri'
require 'json'

uri = URI.parse("https://<environmenturl>/api/accounts/beneficiary/:id") header = {'X-Api-Key' => '<your secure token>', 'Content-Type' => 'application/json'} http = Net::HTTP.new(uri.host, uri.port) http.use_ssl = true request = Net::HTTP::Get.new(uri.request_uri, header) request.body = body.to_json response = http.request(request)

fetch('https://<environmenturl>/api/accounts/beneficiary/:id', { method: 'GET', headers: { 'X-Api-Key': '<your secure token>', 'Content-Type': 'application/json' }, body: JSON.stringify(data) }) .then(response => response.json()) .then(data => console.log(data)) .catch(error => console.error(error));

SUCCESS RESPONSE The request returns JSON structured like below

{
    "status":true, 
    "total_count":1, 
    "beneficiary_accounts":[
        {
            "id":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
            "category": "Salary,Vendor",
            "entity_id":"ABC12", 
            "name":"Q2pay technology", 
            "contact_no":"9876545676", 
            "email_id":"hgf@gmail.com", 
            "bank_acc_no":"12345678",
            "bank_account_holder_full_name": "SUMAN INDIA",
            "bank_account_holder_legal_name": "Q2PAY TECHNOLOGIES P",
            "ifsc_code":"HDFC0000278", 
            "bank_name":"Abhyudaya Co-operative Bank", 
            "pan_no":"WASED4723H", 
            "pan_legal_name": "JITENDRA KIRAN KAKADE",
            "approval_status":"approved",
            "recipient_email": ["xpentra@gmail.co.in"],
            "active_status":"Y",
            "vendor_payment":"Y", 
            "archived":"N", 
            "maintenance":"N", 
            "approved_by":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx", 
            "approved_by_name":"Ashish Wadekar", 
            "approved_on":"xxxxxxxx",
            "internal_account":"N",
            "reimbursement_account": "Y",
            "created_by":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
            "created_by_name":"Ashish Wadekar", 
            "created_on":"xxxxxxxx", 
            "logs":[
                {
                    "brand": "Android",
                    "model": "Android SDK built for x86",
                    "action": "Archived",
                    "user_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
                    "platform": "android",
                    "last_name": "Wadekar",
                    "last_used": "2023-11-25T05:34:28.181Z",
                    "timestamp": "2023-11-25T05:34:28.216Z",
                    "first_name": "Ashish",
                    "ip_address": "127.0.0.1",
                    "is_primary": false,
                    "os_version": "6.0",
                    "is_verified": false,
                    "sdk_version": "23",
                    "manufacturer": "unknown",
                    "serial_number": "EMULATOR32X1X14X0",
                    "logged_in_flag": true,
                    "logged_in_time": "2023-11-25T05:14:02.874Z",
                    "user_full_name": "Ashish Wadekar",
                    "app_version_code": "54",
                    "app_version_name": "1.43"
                }
            ]
        }
    ], 
    "title":{
        "records":1,
        "current_page":1, 
        "total_pages":1, 
        "page_item_count":1
    }
}

This endpoint retrieves specific Beneficiary Accounts.

UAT HTTP Request

GET https://nxt.api.q2pay.co.in/api/accounts/beneficiary/:id

PRODUCTION HTTP Request

GET https://nxt.api.q2pay.in/api/accounts/beneficiary/:id

Service Details

Service ID Description
BVAccount View specific Beneficiary Accounts

Create Beneficiary Account

curl -X POST "https://<environmenturl>/api/accounts/beneficiary"
  -H "X-Api-Key: <your secure token>"
  -H "Content-Type: application/json"
  -d "{ 
    "beneficiary_accounts": {
    "bank_account_no": "12345678",
    "contact_no": "7486756685",
    "email": "abc@gmail.com",
    "ifsc": "HDFC1111237",
    "pan": "WASED4723H",
    "reimbursement_account": true,
    "reimbursement_user_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx", 
    "recipient_email": "q2pay@gmail.com"
    }
}"
require 'net/http'
require 'uri'
require 'json'

uri = URI.parse("https://<environmenturl>/api/accounts/beneficiary") header = {'X-Api-Key' => '<your secure token>', 'Content-Type' => 'application/json'} body = { "beneficiary_accounts": { "bank_account_no": "12345678", "contact_no": "7486756685", "email": "abc@gmail.com", "ifsc": "HDFC1111237", "pan": "WASED4723H", "reimbursement_account": true, "reimbursement_user_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx", "recipient_email": "q2pay@gmail.com" } } http = Net::HTTP.new(uri.host, uri.port) http.use_ssl = true request = Net::HTTP::Post.new(uri.request_uri, header) request.body = body.to_json response = http.request(request)

const data = {
  "beneficiary_accounts": {
    "bank_account_no": "12345678",
    "contact_no": "7486756685",
    "email": "abc@gmail.com",
    "ifsc": "HDFC1111237",
    "pan": "WASED4723H",
    "reimbursement_account": true,
    "reimbursement_user_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx", 
    "recipient_email": "q2pay@gmail.com"
    }
};

fetch('https://<environmenturl>/api/accounts/beneficiary', { method: 'POST', headers: { 'X-Api-Key': '<your secure token>', 'Content-Type': 'application/json' }, body: JSON.stringify(data) }) .then(response => response.json()) .then(data => console.log(data)) .catch(error => console.error(error));

The below example can be sent as a request to the API.

{
   "beneficiary_accounts": {
    "bank_account_no": "12345678",
    "contact_no": "7486756685",
    "email": "abc@gmail.com",
    "ifsc": "HDFC1111237",
    "pan": "WASED4723H",
    "reimbursement_account": true,
    "reimbursement_user_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx", 
    "recipient_email": "q2pay@gmail.com"
    }
}

SUCCESS RESPONSE The request returns JSON structured like below on successful Beneficiary accounts creation

{
    "status": true,
    "total_count": 1,
    "beneficiary_accounts": [
        {
            "id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
            "category": "Salary,Vendor",
            "entity_id": "ABC12",
            "name": "Q2PAY TECHNOLOGIES P",
            "contact_no": "7486756685",
            "email_id": "abc@gmail.com",
            "bank_acc_no": "9234567897",
            "bank_account_holder_full_name": "SUMAN INDIA",
            "bank_account_holder_legal_name": "Q2PAY TECHNOLOGIES P",
            "ifsc_code": "HDFC0000230",
            "bank_name": "HDFC Bank",
            "pan_no": "FTTPK9508Q",
            "pan_legal_name": "JITENDRA KIRAN KAKADE",
            "approval_status": "pending",
            "recipient_email": ["q2pay@gmail.com"],
            "active_status": "N",
            "labels": ["building expense"],
            "vendor_payment": "N",
            "archived": "N",
            "maintenance":"N",
            "internal_account":"N",
            "reimbursement_account": "Y",
            "created_by": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
            "created_by_name": "Akshay Rangnekar",
            "created_on": "xxxxxxxx",
            "logs": [
                {
                    "action": "Created",
                    "user_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
                    "user_full_name": "Akshay Rangnekar",
                    "timestamp": "2023-11-27T04:06:01.340Z",
                    "last_used": "2023-11-27T04:06:01.282Z",
                    "logged_in_flag": true,
                    "logged_in_time": "2023-11-27T04:01:08.120Z",
                    "app_version_name": "1.43",
                    "app_version_code": "54",
                    "platform": "android",
                    "model": "Android SDK built for x86",
                    "manufacturer": "unknown",
                    "brand": "Android",
                    "serial_number": "EMULATOR32X1X14X0",
                    "os_version": "6.0",
                    "sdk_version": "23",
                    "ip_address": "127.0.0.1",
                    "is_primary": false,
                    "is_verified": false,
                    "first_name": "Akshay",
                    "last_name": "Rangnekar"
                }
            ]
        }
    ],
    "title":{
        "records": 1,
        "current_page": 1,
        "total_pages": 1,
        "page_item_count": 1
    }
}

ERROR RESPONSE The request returns JSON structured like below for errors related beneficiary account

{
    "status": false,
    "errors":{
        "bank_account_number":
        [
            "Bank account number this bank account is already linked with an existing beneficiary"
        ],
        "permanent_account_number":
        [
            "Permanent account number is already linked with an existing beneficiary"
        ],
        "category":
        [
            "Category is not valid/active for the account type",
            "Category not found"
        ], 
        "base":
        [
            "Bank Account Number / IFSC cannot be blank"
        ],
        "base":
        [
            "Invalid format for PAN ID"
        ],
        "base":
        [
            "PAN ID cannot be blank"
        ],
        "contact_no":
        [
            "Contact no is not a number", "Contact no can't be blank", "Contact no must be a 10, 11 or 12 digit number"
        ],
        "email":
        [
            "Email can't be blank", "Email invalid", "Email is too short (minimum is 4 characters)"
        ],
        "bank_account_number":{
            "base":[
                "Full Name / Legal Name is mandatory for Virtual Accounts"
            ]
        }
        "recipient_email": [
            "Recipient email contains invalid email: q2paygmail.co",
            "Recipient email cannot be blank or just spaces if provided"
        ],
        "user": [
            "User must exist.",
            "User doesn't belong to your entity."
        ]
    }
}

This endpoint creates a Beneficiary Account.

UAT HTTP Request

POST https://nxt.api.q2pay.co.in/api/accounts/beneficiary

PRODUCTION HTTP Request

POST https://nxt.api.q2pay.in/api/accounts/beneficiary

Query Parameters

Parameter Default Description Required Sample
bank_account_no N.A. Bank account number for beneficiary account Yes 123456
contact_no N.A. contact no for beneficiary account Yes 9867454325
email N.A. email id for beneficiary account Yes abc@gmail.com
ifsc N.A. ifsc for beneficiary account Yes HDFC1234
pan N.A. pan for beneficiary account Yes CGHFG78J
gstin N.A. gstin for beneficiary account No 12AANCA2275G2ZO
name N.A. name for Virtual Account of beneficiary account Yes Q2PAY TECHNOLOGIES P
category N.A. category for beneficiary account No Vendor
address N.A. address for beneficiary account No Pune
labels N.A labels for beneficiary account No ["building expense"]
recipient_email N.A recipient email for beneficiary account No q2pay@gmail.com
reimbursement_account N.A reimbursement account for user No true
reimbursement_user_id N.A user_id for reimbursement account No xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx

Service Details

Service ID Description
BUAccount Create Beneficiary Account

Update Beneficiary Account

curl -X PUT "https://<environmenturl>/api/accounts/beneficiary/:id"
  -H "X-Api-Key: <your secure token>"
  -H "Content-Type: application/json"
  -d "{ 
    "beneficiary_accounts": {
    "bank_account_no": "12345678",
    "ifsc": "HDFC1111237",
    "name":"Q2pay technology"
                           }
      }"
require 'net/http'
require 'uri'
require 'json'

uri = URI.parse("https://<environmenturl>/api/accounts/beneficiary/:id") header = {'X-Api-Key' => '<your secure token>', 'Content-Type' => 'application/json'} body = { "beneficiary_accounts": { "bank_account_no": "12345678", "ifsc": "HDFC1111237", "name":"Q2pay technology" }

} http = Net::HTTP.new(uri.host, uri.port) http.use_ssl = true request = Net::HTTP::Put.new(uri.request_uri, header) request.body = body.to_json response = http.request(request)

const data = {
  "beneficiary_accounts": {
    "bank_account_no": "12345678",
    "ifsc": "HDFC1111237",
    "name":"Q2pay technology"
                           }
};

fetch('https://<environmenturl>/api/accounts/beneficiary/:id', { method: 'PUT', headers: { 'X-Api-Key': '<your secure token>', 'Content-Type': 'application/json' }, body: JSON.stringify(data) }) .then(response => response.json()) .then(data => console.log(data)) .catch(error => console.error(error));

The below example can be sent as a request to the API.

{
  "beneficiary_accounts": {
    "bank_account_no": "12345678",
    "ifsc": "HDFC1111237",
    "name":"Q2pay technology"
                           }
}

SUCCESS RESPONSE The request returns JSON structured like below on successful Beneficiary accounts update

{
    "status":true, 
    "total_count":1,
    "beneficiary_accounts":[
        {
            "id":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
            "category": "Salary,Vendor",
            "entity_id":"ABC12", 
            "name":"Q2pay technology", 
            "contact_no":"9578655641", 
            "email_id":"Q2@pay.com", 
            "bank_acc_no":"12345678",
            "bank_account_holder_full_name": "SUMAN INDIA",
            "bank_account_holder_legal_name": "Q2PAY TECHNOLOGIES P",
            "ifsc_code":"HDFC0000298", 
            "bank_name":"HDFC Bank", 
            "pan_no":"WASED4723H", 
            "pan_legal_name": "JITENDRA KIRAN KAKADE",
            "approval_status":"pending",
            "active_status":"N", 
            "vendor_payment":"N", 
            "archived":"N", 
            "maintenance":"N", 
            "internal_account":"N",
            "created_by":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx", 
            "created_by_name":"Ashish Wadekar", 
            "created_on":"xxxxxxxx", 
            "logs":[
                {
                    "action":"Updated", 
                    "user_id":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
                    "user_full_name":"Ashish Wadekar", 
                    "timestamp": "2023-11-27T04:06:38.602Z",
                    "last_used": "2023-11-27T04:06:38.533Z",
                    "logged_in_flag": true,
                    "logged_in_time": "2023-11-27T04:01:08.120Z",
                    "app_version_name": "1.43",
                    "app_version_code": "54",
                    "platform": "android",
                    "model": "Android SDK built for x86",
                    "manufacturer": "unknown",
                    "brand": "Android",
                    "serial_number": "EMULATOR32X1X14X0",
                    "os_version": "6.0",
                    "sdk_version": "23",
                    "ip_address": "127.0.0.1",
                    "is_primary": false,
                    "is_verified": false,
                    "first_name":"Ashish", 
                    "last_name":"Wadekar"
                }
            ]
        }
    ],
    "title":{
        "records":1, 
        "current_page":1, 
        "total_pages":1, 
        "page_item_count":1
    }
}

ERROR RESPONSE The request returns JSON structured like below for errors related beneficiary account

{
    "status": false,
    "errors":{
        "bank_account_number":
        [
            "Bank account number this bank account is already linked with an existing beneficiary"
        ],
        "base":
        [
            "Bank Account Number / IFSC cannot be blank"
        ],
        "base": [
            "Beneficiary_account cannot be edited as account is archived/blocked"
        ],
        "bank_account_number":{
            "base":[
                "Full Name / Legal Name is mandatory for Virtual Accounts"
            ]
        }
    }
}

This endpoint updates a Beneficiary Account.

UAT HTTP Request

PUT https://nxt.api.q2pay.co.in/api/accounts/beneficiary/:id

PRODUCTION HTTP Request

PUT https://nxt.api.q2pay.in/api/accounts/beneficiary/:id

Query Parameters

Parameter Default Description Required Sample
bank_account_no N.A. Bank account number for beneficiary account Yes 123456
ifsc N.A. ifsc for beneficiary account Yes HDFC1234
name N.A. name for Virtual Account of beneficiary account Yes Q2pay technology

Service Details

Service ID Description
BUAccount Update Beneficiary Account

Approve Beneficiary Account

curl -X PUT "https://<environmenturl>/api/accounts/beneficiary/:id/approve"
  -H "X-Api-Key: <your secure token>"
  -H "Content-Type: application/json"

require 'net/http'
require 'uri'
require 'json'

uri = URI.parse("https://<environmenturl>/api/accounts/beneficiary/:id/approve") header = {'X-Api-Key' => '<your secure token>', 'Content-Type' => 'application/json'} http = Net::HTTP.new(uri.host, uri.port) http.use_ssl = true request = Net::HTTP::Put.new(uri.request_uri, header) request.body = body.to_json response = http.request(request)


fetch('https://<environmenturl>/api/accounts/beneficiary/:id/approve', {
  method: 'PUT',
  headers: {
    'X-Api-Key': '<your secure token>',
    'Content-Type': 'application/json'
  },
  body: JSON.stringify(data)
})
  .then(response => response.json())
  .then(data => console.log(data))
  .catch(error => console.error(error));

SUCCESS RESPONSE The request returns JSON structured like below on successful Beneficiary accounts approve

{
    "status":true, 
    "total_count":1, 
    "beneficiary_accounts":[
        {
            "id":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
            "category": "Salary,Vendor",
            "entity_id":"ABC12", 
            "name":"Q2pay technology", 
            "contact_no":"9876545676", 
            "email_id":"hgf@gmail.com", 
            "bank_acc_no":"12345678",
            "bank_account_holder_full_name": "SUMAN INDIA",
            "bank_account_holder_legal_name": "Q2PAY TECHNOLOGIES P",
            "ifsc_code":"HDFC000296", 
            "bank_name":"Abhyudaya Co-operative Bank", 
            "pan_no":"CQSED4723H", 
            "pan_legal_name": "JITENDRA KIRAN KAKADE",
            "approval_status":"approved", 
            "active_status":"Y",
            "vendor_payment":"Y",
            "archived":"N", 
            "maintenance":"N",
            "approved_by":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx", 
            "approved_by_name":"Ashish Wadekar", 
            "approved_on":"xxxxxxxx",
            "internal_account":"N",
            "created_by":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
            "created_by_name":"Ashish Wadekar",
            "created_on":"xxxxxxxx", 
            "logs":[
                {
                    "action": "Approved",
                    "user_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
                    "user_full_name": "Akshay Rangnekar",
                    "timestamp": "2023-11-27T04:06:56.304Z",
                    "last_used": "2023-11-27T04:06:56.254Z",
                    "logged_in_flag": true,
                    "logged_in_time": "2023-11-27T04:01:08.120Z",
                    "app_version_name": "1.43",
                    "app_version_code": "54",
                    "platform": "android",
                    "model": "Android SDK built for x86",
                    "manufacturer": "unknown",
                    "brand": "Android",
                    "serial_number": "EMULATOR32X1X14X0",
                    "os_version": "6.0",
                    "sdk_version": "23",
                    "ip_address": "127.0.0.1",
                    "is_primary": false,
                    "is_verified": false,
                    "first_name":"Ashish",
                    "last_name":"Wadekar"
                }
            ]
        }
    ], 
    "title":{
        "records":1,
        "current_page":1, 
        "total_pages":1, 
        "page_item_count":1
    }
}

ERROR RESPONSE The request returns JSON structured like below for errors related beneficiary account

{
    "status":false, 
    "errors":
    {
        "beneficiary_account":
        [
            "Beneficiary account can't be approved"
        ],
        [
            "Beneficiary account already approved"
        ],
        [
            "Beneficiary account can not be approved as there are queued transactions associated with this account",
        ],
        [
            "Beneficiary account can not be approved as there are queued distribution transactions associated with this account"
        ]
    }
}

This endpoint approve a Beneficiary Account.

UAT HTTP Request

PUT https://nxt.api.q2pay.co.in/api/accounts/beneficiary/:id/approve

PRODUCTION HTTP Request

PUT https://nxt.api.q2pay.in/api/accounts/beneficiary/:id/approve

Service Details

Service ID Description
BAAccount Approve Beneficiary Account

Archive Beneficiary Account

curl -X PUT "https://<environmenturl>/api/accounts/beneficiary/:id/archive"
  -H "X-Api-Key: <your secure token>"
  -H "Content-Type: application/json"

require 'net/http'
require 'uri'
require 'json'

uri = URI.parse("https://<environmenturl>/api/accounts/beneficiary/:id/archive") header = {'X-Api-Key' => '<your secure token>', 'Content-Type' => 'application/json'} http = Net::HTTP.new(uri.host, uri.port) http.use_ssl = true request = Net::HTTP::Put.new(uri.request_uri, header) request.body = body.to_json response = http.request(request)

fetch('https://<environmenturl>/api/accounts/beneficiary/:id/archive, { method: 'PUT', headers: { 'X-Api-Key': '<your secure token>', 'Content-Type': 'application/json' }, body: JSON.stringify(data) }) .then(response => response.json()) .then(data => console.log(data)) .catch(error => console.error(error));

SUCCESS RESPONSE The request returns JSON structured like below on successful Beneficiary accounts archive

{
    "status":true, 
    "total_count":1, 
    "beneficiary_accounts":[
        {
            "id":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
            "category": "Salary,Vendor",
            "entity_id":"ABC12", 
            "name":"Q2pay technology", 
            "contact_no":"9876545676", 
            "email_id":"hgf@gmail.com", 
            "bank_acc_no":"12345678",
            "bank_account_holder_full_name": "SUMAN INDIA",
            "bank_account_holder_legal_name": "Q2PAY TECHNOLOGIES P",
            "ifsc_code":"HDFC01233237", 
            "bank_name":"Abhyudaya Co-operative Bank", 
            "pan_no":"WASED4723H", 
            "pan_legal_name": "JITENDRA KIRAN KAKADE",
            "approval_status":"archived", 
            "active_status":"N", 
            "vendor_payment": "N",
            "archived":"Y", 
            "maintenance":"N",
            "archived_by":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx", 
            "archived_by_name":"Ashish Wadekar", 
            "archived_on":"xxxxxxxx",
            "internal_account":"N",
            "created_by":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
            "created_by_name":"Ashish Wadekar",
            "created_on":"xxxxxxxx", 
            "logs":[
                {
                    "action": "Archived",
                    "user_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
                    "user_full_name": "Akshay Rangnekar",
                    "timestamp": "2023-11-27T04:07:07.978Z",
                    "last_used": "2023-11-27T04:07:07.935Z",
                    "logged_in_flag": true,
                    "logged_in_time": "2023-11-27T04:01:08.120Z",
                    "app_version_name": "1.43",
                    "app_version_code": "54",
                    "platform": "android",
                    "model": "Android SDK built for x86",
                    "manufacturer": "unknown",
                    "brand": "Android",
                    "serial_number": "EMULATOR32X1X14X0",
                    "os_version": "6.0",
                    "sdk_version": "23",
                    "ip_address": "127.0.0.1",
                    "is_primary": false,
                    "is_verified": false,
                    "first_name":"Ashish",
                    "last_name":"Wadekar"
                }
            ]
        }
    ], 
    "title":{
        "records":1,
        "current_page":1, 
        "total_pages":1, 
        "page_item_count":1
    }
}

ERROR RESPONSE The request returns JSON structured like below for errors related beneficiary account

{
    "status":false, 
    "errors":
    {
        "beneficiary_account":
        [
            "Beneficiary account can't be archived"
        ],
        [
            "Beneficiary account already archived"
        ],
        [
            "Beneficiary account can not be archived as there are queued transactions associated with this account",
        ],
        [
            "Beneficiary account can not be archived as there are queued distribution transactions associated with this account"
        ]
    }
}

This endpoint archive a Beneficiary Account.

UAT HTTP Request

PUT https://nxt.api.q2pay.co.in/api/accounts/beneficiary/:id/archive

PRODUCTION HTTP Request

PUT https://nxt.api.q2pay.in/api/accounts/beneficiary/:id/archive

Service Details

Service ID Description
BAAccountArchive Archive Beneficiary Account

Unarchive Beneficiary Account

curl -X PUT "https://<environmenturl>/api/accounts/beneficiary/:id/unarchive"
  -H "X-Api-Key: <your secure token>"
  -H "Content-Type: application/json"

require 'net/http'
require 'uri'
require 'json'

uri = URI.parse("https://<environmenturl>/api/accounts/beneficiary/:id/unarchive") header = {'X-Api-Key' => '<your secure token>', 'Content-Type' => 'application/json'} http = Net::HTTP.new(uri.host, uri.port) http.use_ssl = true request = Net::HTTP::Put.new(uri.request_uri, header) request.body = body.to_json response = http.request(request)

fetch('https://<environmenturl>/api/accounts/beneficiary/:id/unarchive, { method: 'PUT', headers: { 'X-Api-Key': '<your secure token>', 'Content-Type': 'application/json' }, body: JSON.stringify(data) }) .then(response => response.json()) .then(data => console.log(data)) .catch(error => console.error(error));

SUCCESS RESPONSE The request returns JSON structured like below on successful Beneficiary accounts unarchive

{
    "status":true, 
    "total_count":1, 
    "beneficiary_accounts":[
        {
            "id":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
            "category": "Salary,Vendor",
            "entity_id":"ABC12", 
            "name":"Q2pay technology", 
            "contact_no":"9876545676", 
            "email_id":"hgf@gmail.com", 
            "bank_acc_no":"12345678",
            "bank_account_holder_full_name": "SUMAN INDIA",
            "bank_account_holder_legal_name": "Q2PAY TECHNOLOGIES P",
            "ifsc_code":"HDFC01233237", 
            "bank_name":"Abhyudaya Co-operative Bank", 
            "pan_no":"WASED4723H", 
            "pan_legal_name": "JITENDRA KIRAN KAKADE",
            "approval_status":"pending", 
            "active_status":"N", 
            "vendor_payment": "N",
            "archived":"N", 
            "maintenance":"N", 
            "unarchived_by":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx", 
            "unarchived_by_name":"Ashish Wadekar", 
            "unarchived_on":"xxxxxxxx",
            "internal_account":"N",
            "created_by":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
            "created_by_name":"Ashish Wadekar", 
            "created_on":"xxxxxxxx", 
            "logs":[
                {
                    "action": "Unarchived",
                    "user_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
                    "user_full_name": "Akshay Rangnekar",
                    "timestamp": "2023-11-27T04:07:07.978Z",
                    "last_used": "2023-11-27T04:07:07.935Z",
                    "logged_in_flag": true,
                    "logged_in_time": "2023-11-27T04:01:08.120Z",
                    "app_version_name": "1.43",
                    "app_version_code": "54",
                    "platform": "android",
                    "model": "Android SDK built for x86",
                    "manufacturer": "unknown",
                    "brand": "Android",
                    "serial_number": "EMULATOR32X1X14X0",
                    "os_version": "6.0",
                    "sdk_version": "23",
                    "ip_address": "127.0.0.1",
                    "is_primary": false,
                    "is_verified": false,
                    "first_name":"Ashish",
                    "last_name":"Wadekar"
                }
            ]
        }
    ], 
    "title":{
        "records":1,
        "current_page":1, 
        "total_pages":1, 
        "page_item_count":1
    }
}

ERROR RESPONSE The request returns JSON structured like below for errors related beneficiary account

{
    "status":false, 
    "errors":
    {
        "beneficiary_account":
        [
            "Beneficiary account can't be unarchived"
        ],
        [
            "Beneficiary account already unarchived"
        ]
    }
}

This endpoint unarchive a Beneficiary Account.

UAT HTTP Request

PUT https://nxt.api.q2pay.co.in/api/accounts/beneficiary/:id/unarchive

PRODUCTION HTTP Request

PUT https://nxt.api.q2pay.in/api/accounts/beneficiary/:id/unarchive

Service Details

Service ID Description
BAAccountArchive Unarchive Beneficiary Account

Block Beneficiary Account

curl -X PUT "https://<environmenturl>/api/accounts/beneficiary/:id/block"
  -H "X-Api-Key: <your secure token>"
  -H "Content-Type: application/json"

require 'net/http'
require 'uri'
require 'json'

uri = URI.parse("https://<environmenturl>/api/accounts/beneficiary/:id/block") header = {'X-Api-Key' => '<your secure token>', 'Content-Type' => 'application/json'} http = Net::HTTP.new(uri.host, uri.port) http.use_ssl = true request = Net::HTTP::Put.new(uri.request_uri, header) request.body = body.to_json response = http.request(request)

fetch('https://<environmenturl>/api/accounts/beneficiary/:id/block, { method: 'PUT', headers: { 'X-Api-Key': '<your secure token>', 'Content-Type': 'application/json' }, body: JSON.stringify(data) }) .then(response => response.json()) .then(data => console.log(data)) .catch(error => console.error(error));

SUCCESS RESPONSE The request returns JSON structured like below on successful Beneficiary accounts block

 {
    "status":true, 
    "total_count":1, 
    "beneficiary_accounts":[
        {
            "id":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
            "category": "Salary,Vendor",
            "entity_id":"ABC12", 
            "name":"Q2pay technology", 
            "contact_no":"9876545676", 
            "email_id":"hgf@gmail.com", 
            "bank_acc_no":"12345678",
            "bank_account_holder_full_name": "SUMAN INDIA",
            "bank_account_holder_legal_name": "Q2PAY TECHNOLOGIES P",
            "ifsc_code":"HDFC55555237", 
            "bank_name":"Abhyudaya Co-operative Bank", 
            "pan_no":"WASED4723H", 
            "pan_legal_name": "JITENDRA KIRAN KAKADE",
            "approval_status":"blocked", 
            "active_status":"N",
            "vendor_payment": "N",
            "archived":"N", 
            "maintenance":"Y", 
            "blocked_by":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx", 
            "blocked_by_name":"Ashish Wadekar", 
            "blocked_on":"xxxxxxxx",
            "internal_account":"N",
            "created_by":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
            "created_by_name":"Ashish Wadekar", 
            "created_on":"xxxxxxxx", 
            "logs":[
                {
                    "action":"Blocked",
                    "user_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
                    "user_full_name": "Akshay Rangnekar",
                    "timestamp": "2023-11-27T04:07:07.978Z",
                    "last_used": "2023-11-27T04:07:07.935Z",
                    "logged_in_flag": true,
                    "logged_in_time": "2023-11-27T04:01:08.120Z",
                    "app_version_name": "1.43",
                    "app_version_code": "54",
                    "platform": "android",
                    "model": "Android SDK built for x86",
                    "manufacturer": "unknown",
                    "brand": "Android",
                    "serial_number": "EMULATOR32X1X14X0",
                    "os_version": "6.0",
                    "sdk_version": "23",
                    "ip_address": "127.0.0.1",
                    "is_primary": false,
                    "is_verified": false,
                    "first_name":"Ashish",
                    "last_name":"Wadekar"
                }
            ]
        }
    ], 
    "title":{
        "records":1,
        "current_page":1, 
        "total_pages":1, 
        "page_item_count":1
    }
}

ERROR RESPONSE The request returns JSON structured like below for errors related beneficiary account

{
    "status":false, 
    "errors":
    {
        "beneficiary_account":
        [
            "Beneficiary account can't be blocked"
        ],
        [
            "Beneficiary account already blocked"
        ],
        [
            "Beneficiary account can not be  blocked as there are queued transactions associated with this account",
        ],
        [
            "Beneficiary account can not be blocked as there are queued distribution transactions associated with this account"
        ]
    }
}

This endpoint blocked a Beneficiary Account.

UAT HTTP Request

PUT https://nxt.api.q2pay.co.in/api/accounts/beneficiary/:id/block

PRODUCTION HTTP Request

PUT https://nxt.api.q2pay.in/api/accounts/beneficiary/:id/block

Service Details

Service ID Description
BAAccountBlock Block Beneficiary Account

Reject Beneficiary Account

curl -X PUT "https://<environmenturl>/api/accounts/beneficiary/:id/reject"
  -H "X-Api-Key: <your secure token>"
  -H "Content-Type: application/json"
  -d "{ 
     "rejection_reason": "rejected account"
      }"
require 'net/http'
require 'uri'
require 'json'

uri = URI.parse("https://<environmenturl>/api/accounts/beneficiary/:id/reject") header = {'X-Api-Key' => '<your secure token>', 'Content-Type' => 'application/json'} body = { "rejection_reason": "rejected account" } http = Net::HTTP.new(uri.host, uri.port) http.use_ssl = true request = Net::HTTP::Put.new(uri.request_uri, header) request.body = body.to_json response = http.request(request)

const data = {
   "rejection_reason": "rejected account"
};

fetch('https://<environmenturl>/api/accounts/beneficiary/:id/reject, { method: 'PUT', headers: { 'X-Api-Key': '<your secure token>', 'Content-Type': 'application/json' }, body: JSON.stringify(data) }) .then(response => response.json()) .then(data => console.log(data)) .catch(error => console.error(error));

The below example can be sent as a request to the API.

{
   "rejection_reason": "rejected account"
}

SUCCESS RESPONSE The request returns JSON structured like below on successful Beneficiary accounts reject

{
  "status": true,
  "total_count": 1,
  "beneficiary_accounts": [
    {
      "id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
      "category": "Salary,Vendor,Cat_test",
      "entity_id": "ABC12",
      "name": "Q2PAY TECHNOLOGIES P",
      "contact_no": "8698111627",
      "email_id": "anuj@gmail.com",
      "bank_acc_no": "1234567890",
      "bank_account_holder_full_name": "SUMAN INDIA",
      "bank_account_holder_legal_name": "Q2PAY TECHNOLOGIES P",
      "ifsc_code": "HDFC000296",
      "bank_name": "HDFC Bank",
      "pan_no": "AAJCQ0511P",
      "pan_legal_name": "QUEST 2 TRAVEL.COM INDIA PRIVATE LIMITED",
      "approval_status": "rejected",
      "active_status": "N",
      "vendor_payment": "N",
      "archived": "N",
      "maintenance": "N",
      "rejection_reason": "rejected account",
      "rejected_by": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
      "rejected_by_name": "Akshay Rangnekar",
      "rejected_on": "xxxxxxxx",
      "internal_account": "N",
      "created_by": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
      "created_by_name": "Akshay Rangnekar",
      "created_on": "xxxxxxxx",
      "logs": [
        {
          "action": "Rejected",
          "user_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
          "user_full_name": "Akshay Rangnekar",
          "timestamp": "2024-07-03T11:33:54.523Z",
          "last_used": "2024-07-03T11:33:54.490Z",
          "logged_in_flag": true,
          "logged_in_time": "2024-07-03T11:30:11.971Z",
          "app_version_name": "1.43",
          "app_version_code": "54",
          "platform": "android",
          "model": "Android SDK built for x86",
          "manufacturer": "unknown",
          "brand": "Android",
          "serial_number": "EMULATOR32X1X14X0",
          "os_version": "6.0",
          "sdk_version": "23",
          "ip_address": "127.0.0.1",
          "is_primary": false,
          "is_verified": false,
          "first_name": "Akshay",
          "last_name": "Rangnekar"
        }
      ]
    }
  ],
  "title": {
    "records": 1,
    "current_page": 1,
    "total_pages": 1,
    "page_item_count": 1
  }
}              

ERROR RESPONSE The request returns JSON structured like below for errors related beneficiary account

{
    "status":false, 
    "errors":
    {
        "beneficiary_account":
        [
            "Beneficiary account can't be rejected"
        ],
        [
            "Beneficiary account already rejected"
        ],
        [
            "Beneficiary account can not be rejected as there are queued transactions associated with this account",
        ],
        [
            "Beneficiary account can not be rejected as there are queued distribution transactions associated with this account"
        ],
        [
            "Beneficiary account rejection reason is mandatory"
        ],
        "base":
        [
            "rejection reason must be at least 10 characters"
        ]
    }
}

This endpoint reject a Beneficiary Account.

UAT HTTP Request

PUT https://nxt.api.q2pay.co.in/api/accounts/beneficiary/:id/reject

PRODUCTION HTTP Request

PUT https://nxt.api.q2pay.in/api/accounts/beneficiary/:id/reject

Query Parameters

Parameter Default Description Required Sample
rejection_reason N.A. rejection reason for beneficiary account Yes rejected account

Service Details

Service ID Description
BAAccount Reject Beneficary Account

Get Lookup Beneficiary Account

curl -X GET "https://<environmenturl>/api/accounts/beneficiary/lookup"
  -H "X-Api-Key: <your secure token>"
  -H "Content-Type: application/json"
  -d "{ 
       "bank_account_no": "1234567890",
       "ifsc": "IBKL0002000",
}"
require 'net/http'
require 'uri'
require 'json'

uri = URI.parse("https://<environmenturl>/api/accounts/beneficiary/lookup") header = {'X-Api-Key' => '<your secure token>', 'Content-Type' => 'application/json'} body = { "bank_account_no": "1234567890", "ifsc": "IBKL0002000", } http = Net::HTTP.new(uri.host, uri.port) http.use_ssl = true request = Net::HTTP::Get.new(uri.request_uri, header) request.body = body.to_json response = http.request(request)

const data = {
  "bank_account_no": "1234567890",
  "ifsc": "IBKL0002000",
};

fetch('https://<environmenturl>/api/accounts/beneficiary/lookup', { method: 'GET', headers: { 'X-Api-Key': '<your secure token>', 'Content-Type': 'application/json' }, body: JSON.stringify(data) }) .then(response => response.json()) .then(data => console.log(data)) .catch(error => console.error(error));

The below example can be sent as a request to the API.

{
  "bank_account_no": "1234567890",
  "ifsc": "IBKL0002000",
}

The below example can be sent as a request to the API.

{
  "pan": "EPTPK9508Q"
}

SUCCESS RESPONSE The request returns JSON structured like below

{
    "status":true, 
    "total_count":2, 
    "beneficiary_accounts":[
        {
            "id":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
            "category": "Vendor",
            "entity_id":"ABC12", 
            "name":"Q2pay technology", 
            "contact_no":"9876545676", 
            "email_id":"hgf@gmail.com", 
            "bank_acc_no":"12345678",
            "bank_account_holder_full_name": "SUMAN INDIA",
            "bank_account_holder_legal_name": "Q2PAY TECHNOLOGIES P",
            "ifsc_code":"HDFC0000289", 
            "bank_name":"Abhyudaya Co-operative Bank", 
            "pan_no":"WASED4723H", 
            "gstin_detail":"38AAACQ0519P1CF",
            "approval_status":"approved", 
            "active_status":"Y",
            "vendor_payment": "Y",
            "archived":"N", 
            "maintenance":"N", 
            "approved_by":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx", 
            "approved_by_name":"Ashish Wadekar", 
            "approved_on":"xxxxxxxx",
            "internal_account":"N",
            "created_by":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
            "created_by_name":"Ashish Wadekar", 
            "created_on":"xxxxxxxx"
        },
        {
            "id":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
            "category": "Vendor",
            "entity_id":"ABC12", 
            "name":"Q2pay technology", 
            "contact_no":"9876545676", 
            "email_id":"hgf@gmail.com", 
            "bank_acc_no":"4567893467",
            "bank_account_holder_full_name": "SUMAN INDIA",
            "bank_account_holder_legal_name": "Q2PAY TECHNOLOGIES P",
            "ifsc_code":"HDFC0000212", 
            "bank_name":"Abhyudaya Co-operative Bank", 
            "pan_no":"WASED4723H", 
            "approval_status":"pending", 
            "active_status":"N",
            "vendor_payment":"N",
            "archived":"N", 
            "maintenance":"N", 
            "internal_account":"N",
            "created_by":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
            "created_by_name":"Ashish Wadekar", 
            "created_on":"xxxxxxxx", 
        } 
    ],
    "title":{
        "records":2,
        "current_page":1, 
        "total_pages":1, 
        "page_item_count":1
    }
}

ERROR RESPONSE The request returns JSON structured like below for errors related beneficiary account

{
    "status":false, 
    "errors":{
        "base":[
            "Bank Account Number / IFSC / Permanent Account Number not provided"
        ],
        "base":[
            "Bank Account Number / IFSC / Permanent Account Number cannot be processed together"
        ],
        "base":[
            "Invalid / Insufficient parameters"
        ],
        "base":[
            "Invalid format for Bank Account Number"
        ],
        "base":[
            "Invalid format for IFSC"
        ],
        "base":[
            "No Bank Account Number found for: 8482940354"
        ],
        "base":[
            "No beneficiary data for Bank Account Number: 8482940354"
        ],
        "base":[
            "Invalid format for PAN ID"
        ],
        "base":[
            "No PAN found for : AAACQ0519P"
        ],
        "base":[
            "No beneficiary data for PAN ID: AAACQ0519P"
        ]
    }
}

This endpoint get lookup of Beneficiary Account.

UAT HTTP Request

GET https://nxt.api.q2pay.co.in/api/accounts/beneficiary/lookup

PRODUCTION HTTP Request

GET https://nxt.api.q2pay.in/api/accounts/beneficiary/lookup

Query Parameters

Parameter Default Description Required Sample
bank_account_no N.A. Bank account number for beneficiary account Yes 1234567890
ifsc N.A. ifsc for beneficiary account Yes IBKL0002000"

Query Parameters

Parameter Default Description Required Sample
pan N.A. pan for beneficiary account Yes EPTPK9508Q

Service Details

Service ID Description
BVAccount Get Lookup Beneficiary Account

Edit Other Details Beneficiary Account

curl -X PUT "https://<environmenturl>/api/accounts/beneficiary/:id/edit_other_details"
  -H "X-Api-Key: <your secure token>"
  -H "Content-Type: application/json"
  -d "{ 
    "beneficiary_accounts": {
    "contact_no": "7486756685",
    "email": "abc@gmail.com",
    "pan": "MASED4723H",
    "gstin": "12AANCA2275G2ZO",
    "name": "Q2pay technology",
    "category": "Salary",
    "recipient_email": "q2pay@gmail.com"
    "reimbursement_account": true,
    "reimbursement_user_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx"
    }
 }"
require 'net/http'
require 'uri'
require 'json'

uri = URI.parse("https://<environmenturl>/api/accounts/beneficiary/:id/edit_other_details") header = {'X-Api-Key' => '<your secure token>', 'Content-Type' => 'application/json'} body = { "beneficiary_accounts": { "contact_no": "7486756685", "email": "abc@gmail.com", "pan": "MASED4723H", "gstin": "12AANCA2275G2ZO", "name": "Q2pay technology", "category": "Salary", "recipient_email": "q2pay@gmail.com" "reimbursement_account": true, "reimbursement_user_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx" } } http = Net::HTTP.new(uri.host, uri.port) http.use_ssl = true request = Net::HTTP::Put.new(uri.request_uri, header) request.body = body.to_json response = http.request(request)

const data = {
  "beneficiary_accounts": {
    "contact_no": "7486756685",
    "email": "abc@gmail.com",
    "pan": "MASED4723H",
    "gstin": "12AANCA2275G2ZO",
    "name": "Q2pay technology",
    "category": "Salary",
    "recipient_email": "q2pay@gmail.com"
    "reimbursement_account": true,
    "reimbursement_user_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx"
    }
};

fetch('https://<environmenturl>/api/accounts/beneficiary/:id/edit_other_details', { method: 'PUT', headers: { 'X-Api-Key': '<your secure token>', 'Content-Type': 'application/json' }, body: JSON.stringify(data) }) .then(response => response.json()) .then(data => console.log(data)) .catch(error => console.error(error));

The below example can be sent as a request to the API.

{
  "beneficiary_accounts": {
    "contact_no": "7486756685",
    "email": "abc@gmail.com",
    "pan": "MASED4723H",
    "gstin": "12AANCA2275G2ZO",
    "name": "Q2pay technology",
    "category": "Salary",
    "recipient_email": "q2pay@gmail.com"
    "reimbursement_account": true,
    "reimbursement_user_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx"
    }
}

SUCCESS RESPONSE The request returns JSON structured like below on successful Beneficiary accounts edit other details

{
    "status":true, 
    "total_count":1,
    "beneficiary_accounts":[
        {
            "id":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
            "category": "Salary,Vendor",
            "entity_id":"ABC12", 
            "name":"Q2pay technology", 
            "contact_no":"9578655641", 
            "email_id":"Q2@pay.com", 
            "bank_acc_no":"12345678",
            "bank_account_holder_full_name": "SUMAN INDIA",
            "bank_account_holder_legal_name": "Q2PAY TECHNOLOGIES P",
            "ifsc_code":"HDFC0000298", 
            "bank_name":"HDFC Bank", 
            "pan_no":"WASED4723H", 
            "pan_legal_name": "JITENDRA KIRAN KAKADE",
            "approval_status":"pending",
            "recipient_email": ["q2pay@gmail.com"],
            "active_status":"N", 
            "vendor_payment":"N", 
            "archived":"N", 
            "maintenance":"N", 
            "internal_account":"N",
            "reimbursement_account": "Y",
            "created_by":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx", 
            "created_by_name":"Ashish Wadekar", 
            "created_on":"xxxxxxxx", 
            "logs":[
                {
                    "action":"Updated", 
                    "user_id":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
                    "user_full_name":"Ashish Wadekar", 
                    "timestamp": "2023-11-27T04:06:38.602Z",
                    "last_used": "2023-11-27T04:06:38.533Z",
                    "logged_in_flag": true,
                    "logged_in_time": "2023-11-27T04:01:08.120Z",
                    "app_version_name": "1.43",
                    "app_version_code": "54",
                    "platform": "android",
                    "model": "Android SDK built for x86",
                    "manufacturer": "unknown",
                    "brand": "Android",
                    "serial_number": "EMULATOR32X1X14X0",
                    "os_version": "6.0",
                    "sdk_version": "23",
                    "ip_address": "127.0.0.1",
                    "is_primary": false,
                    "is_verified": false,
                    "first_name":"Ashish", 
                    "last_name":"Wadekar"
                }
            ]
        }
    ],
    "title":{
        "records":1, 
        "current_page":1, 
        "total_pages":1, 
        "page_item_count":1
    }
}

ERROR RESPONSE The request returns JSON structured like below for errors related beneficiary account

{
    "status": false,
    "errors":{
        "permanent_account_number":
        [
            "Permanent account number is already linked with an existing beneficiary"
        ],
        "category":
        [
            "Category is not valid/active for the account type"
        ], 
        "base":
        [
            "Invalid format for PAN ID"
        ],
        "base":
        [
            "PAN ID cannot be blank"
        ],
        "contact_no":
        [
            "Contact no is not a number", "Contact no can't be blank", "Contact no must be a 10, 11 or 12 digit number"
        ],
        "email":
        [
            "Email can't be blank", "Email invalid", "Email is too short (minimum is 4 characters)"
        ],
        "base":
        [
            "Beneficiary_account cannot be edited as account is archived/blocked"
        ],
        "base":
        [
            "GSTIN is not linked with provided PAN."
        ],
        "recipient_email": [
            "Recipient email contains invalid email: xxxxxxxx.xxx"
        ],
        "user": [
            "User must exist.",
            "User doesn't belong to your entity."
        ]
    }
}

This endpoint edit other details a Beneficiary Account.

UAT HTTP Request

PUT https://nxt.api.q2pay.co.in/api/accounts/beneficiary/:id/edit_other_details

PRODUCTION HTTP Request

PUT https://nxt.api.q2pay.in/api/accounts/beneficiary/:id/edit_other_details

Query Parameters

Parameter Default Description Required Sample
contact_no N.A. contact no for beneficiary account optional 9867454325
email N.A. email id for beneficiary account optional abc@gmail.com
pan N.A. pan for beneficiary account optional CGHFG78J
gstin N.A. gstin for beneficiary account optional 12AANCA2275G2ZO
name N.A. name for beneficiary account optional Q2PAY TECHNOLOGIES P
category N.A. category for beneficiary account optional Vendor
address N.A. address for beneficiary account optional Pune
recipient_email N.A recipient email for beneficiary account optional q2pay@gmail.com
reimbursement_account N.A reimbursement account for user optional true
reimbursement_user_id N.A user_id for reimbursement account optional xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx

Service Details

Service ID Description
BUAccount Edit Details of Beneficiary Account

Add Labels of Beneficiary Account

curl -X PUT "https://<environmenturl>/api/accounts/beneficiary/add_label"
  -H "X-Api-Key: <your secure token>"
  -H "Content-Type: application/json"
  -d "{
  "record_ids": [
    "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx","xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx"
  ],
  "labels": [
    "audit expense",
    "Infrastructure"
  ]
}"
require 'net/http'
require 'uri'
require 'json'

uri = URI.parse("https://<environmenturl>/api/accounts/beneficiary/add_label") header = {'X-Api-Key' => '<your secure token>', 'Content-Type' => 'application/json'} body = {
"record_ids": [ "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx","xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx" ], "labels": [ "audit expense", "Infrastructure" ] } http = Net::HTTP.new(uri.host, uri.port) http.use_ssl = true request = Net::HTTP::Put.new(uri.request_uri, header) request.body = body.to_json response = http.request(request)

const data = {
  "record_ids": [
     "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx","xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx"
  ],
  "labels": [
    "audit expense",
     "Infrastructure"
  ]
};

fetch('https://<environmenturl>/api/accounts/beneficiary/add_label', { method: 'PUT', headers: { 'X-Api-Key': '<your secure token>', 'Content-Type': 'application/json' }, body: JSON.stringify(data) }) .then(response => response.json()) .then(data => console.log(data)) .catch(error => console.error(error));

The below example can be sent as a request to the API.

{
  "record_ids": [
     "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx","xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx"
  ],
  "labels": [
    "audit expense",
    "Infrastructure"
  ]
}

SUCCESS RESPONSE The request returns JSON structured like below on successful add labels of beneficiary accounts

{
    "status":true, 
    "successful_count":1,
    "unsuccessful_count":1, 
    "ids":{
        "successful_ids":["xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx"],
        "unsuccessful_ids": [
      { "id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx", "errors": "Label could not be added due to validation error" }
    ]
    }
}

ERROR RESPONSE The request returns JSON structured like below for errors related add labels of beneficiary accounts

{
  "status": false,
  "errors": {
    "base": [
      "Missing required parameters: record_ids and/or labels."
    ],
    "base":[
      "The beneficiary account IDs are not present."
    ]
  }
}

This endpoint Add labels of Beneficiary Account.

UAT HTTP Request

PUT https://nxt.api.q2pay.co.in/api/accounts/beneficiary/add_label

PRODUCTION HTTP Request

PUT https://nxt.api.q2pay.in/api/accounts/beneficiary/add_label

Query Parameters

Parameter Default Description Required Sample
record_ids N.A. record ids of beneficiary account Yes ["xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx","xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx" ]
labels N.A. labels of beneficiary account Yes ["audit expense","Infrastructure"]

Service Details

Service ID Description
ALabel Add labels for Beneficiary Account

Remove Labels of Beneficiary Account

curl -X PUT "https://<environmenturl>/api/accounts/beneficiary/remove_label"
  -H "X-Api-Key: <your secure token>"
  -H "Content-Type: application/json"
  -d "{
  "record_ids": [
    "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx","xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx"
  ],
  "labels": [
    "audit expense",
    "Infrastructure"
  ]
}"
require 'net/http'
require 'uri'
require 'json'

uri = URI.parse("https://<environmenturl>/api/accounts/beneficiary/remove_label") header = {'X-Api-Key' => '<your secure token>', 'Content-Type' => 'application/json'} body = {
"record_ids": [ "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx","xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx" ], "labels": [ "audit expense", "Infrastructure" ] } http = Net::HTTP.new(uri.host, uri.port) http.use_ssl = true request = Net::HTTP::Put.new(uri.request_uri, header) request.body = body.to_json response = http.request(request)

const data = {
  "record_ids": [
     "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx","xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx"
  ],
  "labels": [
    "audit expense",
     "Infrastructure"
  ]
};

fetch('https://<environmenturl>/api/accounts/beneficiary/remove_label', { method: 'PUT', headers: { 'X-Api-Key': '<your secure token>', 'Content-Type': 'application/json' }, body: JSON.stringify(data) }) .then(response => response.json()) .then(data => console.log(data)) .catch(error => console.error(error));

The below example can be sent as a request to the API.

{
  "record_ids": [
     "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx","xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx"
  ],
  "labels": [
    "audit expense",
    "Infrastructure"
  ]
}

SUCCESS RESPONSE The request returns JSON structured like below on successful remove labels of beneficiary accounts

{
  "status": true,
  "successful_count": 1,
  "unsuccessful_count": 1,
  "ids": {
    "successful_id": [
      "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx"
    ],
    "unsuccessful_ids": [
      { "id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx", "errors": "Label could not be added due to validation error" }
    ]
  }
}

ERROR RESPONSE The request returns JSON structured like below for errors related remove labels of beneficiary accounts

{
  "status": false,
  "errors": {
    "base": [
      "Missing required parameters: record_ids and/or labels."
    ],
    "base":[
      "The beneficiary account IDs are not present."
    ],
    "base":[
      "Labels are not present in some beneficiary accounts."
    ]
  }
}

This endpoint Remove labels of Beneficiary Account.

UAT HTTP Request

PUT https://nxt.api.q2pay.co.in/api/accounts/beneficiary/remove_label

PRODUCTION HTTP Request

PUT https://nxt.api.q2pay.in/api/accounts/beneficiary/remove_label

Query Parameters

Parameter Default Description Required Sample
record_ids N.A. record ids of beneficiary account Yes ["xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx","xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx" ]
labels N.A. labels of beneficiary account Yes ["audit expense","Infrastructure"]

Service Details

Service ID Description
RLabel Remove labels for Beneficiary Account

Internal Account

Internal account helps you create,maintain & manage of Internal account.

Get All Internal Account

curl -X GET "https://<environmenturl>/api/accounts/internal"
  -H "X-Api-Key: <your secure token>"
  -H "Content-Type: application/json"

require 'net/http'
require 'uri'
require 'json'

uri = URI.parse("https://<environmenturl>/api/accounts/internal") header = {'X-Api-Key' => '<your secure token>', 'Content-Type' => 'application/json'} http = Net::HTTP.new(uri.host, uri.port) http.use_ssl = true request = Net::HTTP::Get.new(uri.request_uri, header) request.body = body.to_json response = http.request(request)

fetch('https://<environmenturl>/api/accounts/internal', { method: 'GET', headers: { 'X-Api-Key': '<your secure token>', 'Content-Type': 'application/json' }, body: JSON.stringify(data) }) .then(response => response.json()) .then(data => console.log(data)) .catch(error => console.error(error));

SUCCESS RESPONSE The request returns JSON structured like below

{
    "status":true, 
    "total_count":2,
    "summary": {
        "blocked_accounts_count": 1,
        "archived_accounts_count": 10,
        "pending_accounts_count": 13,
        "rejected_accounts_count": 1,
        "approved_accounts_count": 6,
        "available_labels":["audit expense", "employee expense", "health expense"]
    }, 
    "internal_accounts":[
        {
            "id":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
            "category": "Vendor,Internal",
            "entity_id":"ABC12", 
            "name":"Q2pay technology", 
            "contact_no":"9876545676", 
            "email_id":"hgf@gmail.com", 
            "bank_acc_no":"12345678",
            "bank_account_holder_full_name": "SUMAN INDIA",
            "bank_account_holder_legal_name": "Q2PAY TECHNOLOGIES P",
            "ifsc_code":"HDFC0000289", 
            "bank_name":"Abhyudaya Co-operative Bank", 
            "pan_no":"WASED4723H", 
            "gstin_detail":"38AAACQ0519P1CF",
            "approval_status":"approved", 
            "active_status":"Y",
            "labels": ["building expense"],
            "recipient_email": ["q2pay@gmail.co.in"],
            "vendor_payment": "Y",
            "archived":"N", 
            "maintenance":"N",
            "approved_by":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx", 
            "approved_by_name":"Ashish Wadekar", 
            "approved_on":"xxxxxxxx",
            "internal_account":"Y",
            "reimbursement_account": "Y", 
            "created_by":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
            "created_by_name":"Ashish Wadekar", 
            "created_on":"xxxxxxxx", 
        },
        {
            "id":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
            "category": "Vendor,Internal",
            "entity_id":"ABC12", 
            "name":"Q2pay technology", 
            "contact_no":"9876545676", 
            "email_id":"hgf@gmail.com", 
            "bank_acc_no":"4567893467",
            "bank_account_holder_full_name": "SUMAN INDIA",
            "bank_account_holder_legal_name": "Q2PAY TECHNOLOGIES P",
            "ifsc_code":"HDFC0000212", 
            "bank_name":"Abhyudaya Co-operative Bank", 
            "pan_no":"WASED4723H", 
            "approval_status":"pending", 
            "active_status":"N",
            "vendor_payment":"N",
            "archived":"N", 
            "maintenance":"N",
            "internal_account":"Y",
            "reimbursement_account": "N",
            "created_by":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
            "created_by_name":"Ashish Wadekar",
            "created_on":"xxxxxxxx" 
        }
    ], 
    "title":{
        "records":2,
        "current_page":1, 
        "total_pages":1, 
        "page_item_count":1
    }
}

This endpoint retrieves all Internal Accounts.

UAT HTTP Request

GET https://nxt.api.q2pay.co.in/api/accounts/internal

PRODUCTION HTTP Request

GET https://nxt.api.q2pay.in/api/accounts/internal

Query Parameters

Parameter Default Description Required Sample
approval_status N.A. approval status for internal account optional [ pending, approved, archived ]
category N.A. category for internal account optional Internal
start_date,end_date N.A. start date and end date for internal account optional xxxxxxxx,xxxxxxxx
bank_account_no N.A. bank account number for internal account optional 4567893467
ifsc N.A. ifsc for internal account optional HDFC0000212
pan N.A. pan for internal account optional WASED4723H
search_string N.A. search string for id/name/contact no/email of internal account optional xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx,Q2pay technology,12356789,abc@gmail.com
entity_id N.A. entity id for internal account optional ABC12
labels N.A. labels for internal account optional ["audit expense"]
recipient_email N.A. recipient email for internal account optional q2pay@gmail.co.in

Service Details

Service ID Description
Admin Admin
MimicEntity View All entities
IVAccount View All Internal Accounts

Get Specific Internal Account

curl -X GET "https://<environmenturl>/api/accounts/internal/:id"
  -H "X-Api-Key: <your secure token>"
  -H "Content-Type: application/json"

require 'net/http'
require 'uri'
require 'json'

uri = URI.parse("https://<environmenturl>/api/accounts/internal/:id") header = {'X-Api-Key' => '<your secure token>', 'Content-Type' => 'application/json'} http = Net::HTTP.new(uri.host, uri.port) http.use_ssl = true request = Net::HTTP::Get.new(uri.request_uri, header) request.body = body.to_json response = http.request(request)

fetch('https://<environmenturl>/api/accounts/internal/:id', { method: 'GET', headers: { 'X-Api-Key': '<your secure token>', 'Content-Type': 'application/json' }, body: JSON.stringify(data) }) .then(response => response.json()) .then(data => console.log(data)) .catch(error => console.error(error));

SUCCESS RESPONSE The request returns JSON structured like below

{
    "status":true, 
    "total_count":1, 
    "internal_accounts":[
        {
            "id":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
            "category": "Salary,Vendor,Internal",
            "entity_id":"ABC12", 
            "name":"Q2pay technology", 
            "contact_no":"9876545676", 
            "email_id":"hgf@gmail.com", 
            "bank_acc_no":"12345678",
            "bank_account_holder_full_name": "SUMAN INDIA",
            "bank_account_holder_legal_name": "Q2PAY TECHNOLOGIES P",
            "ifsc_code":"HDFC0000278", 
            "bank_name":"Abhyudaya Co-operative Bank", 
            "pan_no":"WASED4723H", 
            "pan_legal_name": "JITENDRA KIRAN KAKADE",
            "approval_status":"approved", 
            "active_status":"Y",
            "vendor_payment":"Y", 
            "archived":"N", 
            "maintenance":"N", 
            "approved_by":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx", 
            "approved_by_name":"Ashish Wadekar", 
            "approved_on":"xxxxxxxx",
            "internal_account":"Y",
            "reimbursement_account": "Y", 
            "created_by":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
            "created_by_name":"Ashish Wadekar", 
            "created_on":"xxxxxxxx", 
            "logs":[
                {
                    "brand": "Android",
                    "model": "Android SDK built for x86",
                    "action": "Archived",
                    "user_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
                    "platform": "android",
                    "last_name": "Wadekar",
                    "last_used": "2023-11-25T05:34:28.181Z",
                    "timestamp": "2023-11-25T05:34:28.216Z",
                    "first_name": "Ashish",
                    "ip_address": "127.0.0.1",
                    "is_primary": false,
                    "os_version": "6.0",
                    "is_verified": false,
                    "sdk_version": "23",
                    "manufacturer": "unknown",
                    "serial_number": "EMULATOR32X1X14X0",
                    "logged_in_flag": true,
                    "logged_in_time": "2023-11-25T05:14:02.874Z",
                    "user_full_name": "Ashish Wadekar",
                    "app_version_code": "54",
                    "app_version_name": "1.43"
                }
            ]
        }
    ], 
    "title":{
        "records":1,
        "current_page":1, 
        "total_pages":1, 
        "page_item_count":1
    }
}

This endpoint retrieves specific Internal Accounts.

UAT HTTP Request

GET https://nxt.api.q2pay.co.in/api/accounts/internal/:id

PRODUCTION HTTP Request

GET https://nxt.api.q2pay.in/api/accounts/internal/:id

Service Details

Service ID Description
IVAccount View specific Internal Accounts

Approve Internal Account

curl -X PUT "https://<environmenturl>/api/accounts/internal/:id/approve"
  -H "X-Api-Key: <your secure token>"
  -H "Content-Type: application/json"

require 'net/http'
require 'uri'
require 'json'

uri = URI.parse("https://<environmenturl>/api/accounts/internal/:id/approve") header = {'X-Api-Key' => '<your secure token>', 'Content-Type' => 'application/json'} http = Net::HTTP.new(uri.host, uri.port) http.use_ssl = true request = Net::HTTP::Put.new(uri.request_uri, header) request.body = body.to_json response = http.request(request)


fetch('https://<environmenturl>/api/accounts/internal/:id/approve', {
  method: 'PUT',
  headers: {
    'X-Api-Key': '<your secure token>',
    'Content-Type': 'application/json'
  },
  body: JSON.stringify(data)
})
  .then(response => response.json())
  .then(data => console.log(data))
  .catch(error => console.error(error));

SUCCESS RESPONSE The request returns JSON structured like below on successful Internal accounts approve

{
    "status":true, 
    "total_count":1, 
    "internal_accounts":[
        {
            "id":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
            "category": "Salary,Vendor,Internal",
            "entity_id":"ABC12", 
            "name":"Q2pay technology", 
            "contact_no":"9876545676", 
            "email_id":"hgf@gmail.com", 
            "bank_acc_no":"12345678",
            "bank_account_holder_full_name": "SUMAN INDIA",
            "bank_account_holder_legal_name": "Q2PAY TECHNOLOGIES P",
            "ifsc_code":"HDFC000296", 
            "bank_name":"Abhyudaya Co-operative Bank", 
            "pan_no":"CQSED4723H", 
            "pan_legal_name": "JITENDRA KIRAN KAKADE",
            "approval_status":"approved", 
            "active_status":"Y",
            "vendor_payment":"Y",
            "archived":"N", 
            "maintenance":"N",
            "approved_by":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx", 
            "approved_by_name":"Ashish Wadekar", 
            "approved_on":"xxxxxxxx",
            "internal_account":"Y",
            "created_by":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
            "created_by_name":"Ashish Wadekar",
            "created_on":"xxxxxxxx", 
            "logs":[
                {
                    "action": "Approved",
                    "user_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
                    "user_full_name": "Akshay Rangnekar",
                    "timestamp": "2023-11-27T04:06:56.304Z",
                    "last_used": "2023-11-27T04:06:56.254Z",
                    "logged_in_flag": true,
                    "logged_in_time": "2023-11-27T04:01:08.120Z",
                    "app_version_name": "1.43",
                    "app_version_code": "54",
                    "platform": "android",
                    "model": "Android SDK built for x86",
                    "manufacturer": "unknown",
                    "brand": "Android",
                    "serial_number": "EMULATOR32X1X14X0",
                    "os_version": "6.0",
                    "sdk_version": "23",
                    "ip_address": "127.0.0.1",
                    "is_primary": false,
                    "is_verified": false,
                    "first_name":"Ashish",
                    "last_name":"Wadekar"
                }
            ]
        }
    ], 
    "title":{
        "records":1,
        "current_page":1, 
        "total_pages":1, 
        "page_item_count":1
    }
}

ERROR RESPONSE The request returns JSON structured like below for errors related internal account

{
    "status":false, 
    "errors":
    {
        "internal_account":
        [
            "Internal account can't be approved"
        ],
        [
            "Internal account already approved"
        ],
        [
            "Internal account can not be approved as there are queued transactions associated with this account",
        ],
        [
            "Internal account can not be approved as there are queued distribution transactions associated with this account"
        ],
        "base":
        [
            "Internal Account not present"
        ]
    }
}

This endpoint approve a Internal Account.

UAT HTTP Request

PUT https://nxt.api.q2pay.co.in/api/accounts/internal/:id/approve

PRODUCTION HTTP Request

PUT https://nxt.api.q2pay.in/api/accounts/internal/:id/approve

Service Details

Service ID Description
IAAccount Approve Internal Account

Block Internal Account

curl -X PUT "https://<environmenturl>/api/accounts/internal/:id/block"
  -H "X-Api-Key: <your secure token>"
  -H "Content-Type: application/json"

require 'net/http'
require 'uri'
require 'json'

uri = URI.parse("https://<environmenturl>/api/accounts/internal/:id/block") header = {'X-Api-Key' => '<your secure token>', 'Content-Type' => 'application/json'} http = Net::HTTP.new(uri.host, uri.port) http.use_ssl = true request = Net::HTTP::Put.new(uri.request_uri, header) request.body = body.to_json response = http.request(request)

fetch('https://<environmenturl>/api/accounts/internal/:id/block, { method: 'PUT', headers: { 'X-Api-Key': '<your secure token>', 'Content-Type': 'application/json' }, body: JSON.stringify(data) }) .then(response => response.json()) .then(data => console.log(data)) .catch(error => console.error(error));

SUCCESS RESPONSE The request returns JSON structured like below on successful internal accounts block

 {
    "status":true, 
    "total_count":1, 
    "internal_accounts":[
        {
            "id":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
            "category": "Salary,Vendor,Internal",
            "entity_id":"ABC12", 
            "name":"Q2pay technology", 
            "contact_no":"9876545676", 
            "email_id":"hgf@gmail.com", 
            "bank_acc_no":"12345678",
            "bank_account_holder_full_name": "SUMAN INDIA",
            "bank_account_holder_legal_name": "Q2PAY TECHNOLOGIES P",
            "ifsc_code":"HDFC55555237", 
            "bank_name":"Abhyudaya Co-operative Bank", 
            "pan_no":"WASED4723H", 
            "pan_legal_name": "JITENDRA KIRAN KAKADE",
            "approval_status":"blocked", 
            "active_status":"N",
            "vendor_payment": "N",
            "archived":"N", 
            "maintenance":"Y", 
            "blocked_by":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx", 
            "blocked_by_name":"Ashish Wadekar", 
            "blocked_on":"xxxxxxxx",
            "internal_account":"Y",
            "created_by":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
            "created_by_name":"Ashish Wadekar", 
            "created_on":"xxxxxxxx", 
            "logs":[
                {
                    "action": "Created",
                    "message": "System Generated Beneficiary Account",
                    "user_id": "51acb1b1-3b3a-489c-bcd3-ed8013f61892",
                    "user_full_name": "Akshay Rangnekar",
                    "user_platform_details": {
                        "brand": "Android",
                        "model": "Android SDK built for x86",
                        "platform": "android",
                        "last_name": "Rangnekar",
                        "last_used": "2025-01-23T11:57:07.611Z",
                        "first_name": "Akshay",
                        "ip_address": "::1",
                        "is_primary": false,
                        "os_version": "6.0",
                        "is_verified": false,
                        "sdk_version": "23",
                        "manufacturer": "unknown",
                        "serial_number": "EMULATOR32X1X14X0",
                        "logged_in_flag": false,
                        "logged_in_time": "2025-01-23T11:54:37.744Z",
                        "app_version_code": "54",
                        "app_version_name": "1.43"
                    }
                }
            ]
        }
    ], 
    "title":{
        "records":1,
        "current_page":1, 
        "total_pages":1, 
        "page_item_count":1
    }
}

ERROR RESPONSE The request returns JSON structured like below for errors related internal account

{
    "status":false, 
    "errors":
    {
        "internal_account":
        [
            "Internal account can't be blocked"
        ],
        [
            "Internal account already blocked"
        ],
        [
            "Internal account can not be  blocked as there are queued transactions associated with this account",
        ],
        [
            "Internal account can not be blocked as there are queued distribution transactions associated with this account"
        ],
        "base":
        [
            "Internal Account not present"
        ]
    }
}

This endpoint blocked a Internal Account.

UAT HTTP Request

PUT https://nxt.api.q2pay.co.in/api/accounts/internal/:id/block

PRODUCTION HTTP Request

PUT https://nxt.api.q2pay.in/api/accounts/internal/:id/block

Service Details

Service ID Description
IAAccountBlock Block Internal Account

Reject Internal Account

curl -X PUT "https://<environmenturl>/api/accounts/internal/:id/reject"
  -H "X-Api-Key: <your secure token>"
  -H "Content-Type: application/json"
  -d "{ 
     "rejection_reason": "rejected account"
      }"
require 'net/http'
require 'uri'
require 'json'

uri = URI.parse("https://<environmenturl>/api/accounts/internal/:id/reject") header = {'X-Api-Key' => '<your secure token>', 'Content-Type' => 'application/json'} body = { "rejection_reason": "rejected account" } http = Net::HTTP.new(uri.host, uri.port) http.use_ssl = true request = Net::HTTP::Put.new(uri.request_uri, header) request.body = body.to_json response = http.request(request)

const data = {
   "rejection_reason": "rejected account"
};

fetch('https://<environmenturl>/api/accounts/internal/:id/reject, { method: 'PUT', headers: { 'X-Api-Key': '<your secure token>', 'Content-Type': 'application/json' }, body: JSON.stringify(data) }) .then(response => response.json()) .then(data => console.log(data)) .catch(error => console.error(error));

The below example can be sent as a request to the API.

{
   "rejection_reason": "rejected account"
}

SUCCESS RESPONSE The request returns JSON structured like below on successful internal accounts reject

{
  "status": true,
  "total_count": 1,
  "internal_accounts": [
    {
      "id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
      "category": "Salary,Vendor,Cat_test,Internal",
      "entity_id": "ABC12",
      "name": "Q2PAY TECHNOLOGIES P",
      "contact_no": "8698111627",
      "email_id": "anuj@gmail.com",
      "bank_acc_no": "1234567890",
      "bank_account_holder_full_name": "SUMAN INDIA",
      "bank_account_holder_legal_name": "Q2PAY TECHNOLOGIES P",
      "ifsc_code": "HDFC000296",
      "bank_name": "HDFC Bank",
      "pan_no": "AAJCQ0511P",
      "pan_legal_name": "QUEST 2 TRAVEL.COM INDIA PRIVATE LIMITED",
      "approval_status": "rejected",
      "active_status": "N",
      "vendor_payment": "N",
      "archived": "N",
      "maintenance": "N",
      "rejection_reason": "rejected account",
      "rejected_by": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
      "rejected_by_name": "Akshay Rangnekar",
      "rejected_on": "xxxxxxxx",
      "internal_account": "Y",
      "created_by": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
      "created_by_name": "Akshay Rangnekar",
      "created_on": "xxxxxxxx",
      "logs": [
        {
          "action": "Rejected",
          "user_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
          "user_full_name": "Akshay Rangnekar",
          "timestamp": "2024-07-03T11:33:54.523Z",
          "last_used": "2024-07-03T11:33:54.490Z",
          "logged_in_flag": true,
          "logged_in_time": "2024-07-03T11:30:11.971Z",
          "app_version_name": "1.43",
          "app_version_code": "54",
          "platform": "android",
          "model": "Android SDK built for x86",
          "manufacturer": "unknown",
          "brand": "Android",
          "serial_number": "EMULATOR32X1X14X0",
          "os_version": "6.0",
          "sdk_version": "23",
          "ip_address": "127.0.0.1",
          "is_primary": false,
          "is_verified": false,
          "first_name": "Akshay",
          "last_name": "Rangnekar"
        }
      ]
    }
  ],
  "title": {
    "records": 1,
    "current_page": 1,
    "total_pages": 1,
    "page_item_count": 1
  }
}              

ERROR RESPONSE The request returns JSON structured like below for errors related Internal account

{
    "status":false, 
    "errors":
    {
        "internal_account":
        [
            "Internal account can't be rejected"
        ],
        [
            "Internal account already rejected"
        ],
        [
            "Internal account can not be rejected as there are queued transactions associated with this account",
        ],
        [
            "Internal account can not be rejected as there are queued distribution transactions associated with this account"
        ],
        [
            "Internal account rejection reason is mandatory"
        ],
        "base":
        [
            "rejection reason must be at least 10 characters"
        ],
        "base":
        [
            "Internal Account not present"
        ]
    }
}

This endpoint reject a Internal Account.

UAT HTTP Request

PUT https://nxt.api.q2pay.co.in/api/accounts/internal/:id/reject

PRODUCTION HTTP Request

PUT https://nxt.api.q2pay.in/api/accounts/internal/:id/reject

Query Parameters

Parameter Default Description Required Sample
rejection_reason N.A. rejection reason for internal account Yes rejected account

Service Details

Service ID Description
IAAccount Reject Internal Account

Edit Other Details Internal Account

curl -X PUT "https://<environmenturl>/api/accounts/internal/:id/edit_other_details"
  -H "X-Api-Key: <your secure token>"
  -H "Content-Type: application/json"
  -d "{ 
    "internal_accounts": {
    "contact_no": "7486756685",
    "email": "abc@gmail.com",
    "name": "Q2pay technology",
    "recipient_email": "q2pay@gmail.com"
                           }
      }"
require 'net/http'
require 'uri'
require 'json'

uri = URI.parse("https://<environmenturl>/api/accounts/internal/:id/edit_other_details") header = {'X-Api-Key' => '<your secure token>', 'Content-Type' => 'application/json'} body = { "internal_accounts": { "contact_no": "7486756685", "email": "abc@gmail.com", "name": "Q2pay technology", "recipient_email": "q2pay@gmail.com" }

} http = Net::HTTP.new(uri.host, uri.port) http.use_ssl = true request = Net::HTTP::Put.new(uri.request_uri, header) request.body = body.to_json response = http.request(request)

const data = {
  "internal_accounts": {
    "contact_no": "7486756685",
    "email": "abc@gmail.com",
    "name": "Q2pay technology",
    "recipient_email": "q2pay@gmail.com"
                           }
};

fetch('https://<environmenturl>/api/accounts/internal/:id/edit_other_details', { method: 'PUT', headers: { 'X-Api-Key': '<your secure token>', 'Content-Type': 'application/json' }, body: JSON.stringify(data) }) .then(response => response.json()) .then(data => console.log(data)) .catch(error => console.error(error));

The below example can be sent as a request to the API.

{
  "internal_accounts": {
    "contact_no": "7486756685",
    "email": "abc@gmail.com",
    "name": "Q2pay technology",
    "recipient_email": "q2pay@gmail.com"
                           }
}

SUCCESS RESPONSE The request returns JSON structured like below on successful internal accounts edit other details

{
    "status":true, 
    "total_count":1,
    "internal_accounts":[
        {
            "id":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
            "category": "Salary,Vendor,Internal",
            "entity_id":"ABC12", 
            "name":"Q2pay technology", 
            "contact_no":"9578655641", 
            "email_id":"Q2@pay.com", 
            "bank_acc_no":"12345678",
            "bank_account_holder_full_name": "SUMAN INDIA",
            "bank_account_holder_legal_name": "Q2PAY TECHNOLOGIES P",
            "ifsc_code":"HDFC0000298", 
            "bank_name":"HDFC Bank", 
            "pan_no":"WASED4723H", 
            "pan_legal_name": "JITENDRA KIRAN KAKADE",
            "approval_status":"pending",
            "recipient_email": ["q2pay@gmail.com"],
            "active_status":"N", 
            "vendor_payment":"N", 
            "archived":"N", 
            "maintenance":"N", 
            "internal_account":"Y",
            "created_by":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx", 
            "created_by_name":"Ashish Wadekar", 
            "created_on":"xxxxxxxx", 
            "logs":[
                {
                    "action":"Updated", 
                    "user_id":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
                    "user_full_name":"Ashish Wadekar", 
                    "timestamp": "2023-11-27T04:06:38.602Z",
                    "last_used": "2023-11-27T04:06:38.533Z",
                    "logged_in_flag": true,
                    "logged_in_time": "2023-11-27T04:01:08.120Z",
                    "app_version_name": "1.43",
                    "app_version_code": "54",
                    "platform": "android",
                    "model": "Android SDK built for x86",
                    "manufacturer": "unknown",
                    "brand": "Android",
                    "serial_number": "EMULATOR32X1X14X0",
                    "os_version": "6.0",
                    "sdk_version": "23",
                    "ip_address": "127.0.0.1",
                    "is_primary": false,
                    "is_verified": false,
                    "first_name":"Ashish", 
                    "last_name":"Wadekar"
                }
            ]
        }
    ],
    "title":{
        "records":1, 
        "current_page":1, 
        "total_pages":1, 
        "page_item_count":1
    }
}

ERROR RESPONSE The request returns JSON structured like below for errors related internal account

{
    "status": false,
    "errors":{
        "contact_no":
        [
            "Contact no is not a number", "Contact no can't be blank", "Contact no must be a 10, 11 or 12 digit number"
        ],
        "email":
        [
            "Email can't be blank", "Email invalid", "Email is too short (minimum is 4 characters)"
        ],
        "base":
        [
            "Internal_account cannot be edited as account is archived/blocked"
        ],
        "recipient_email": [
            "Recipient email contains invalid email: xxxxxxxx.xxx"
        ]
    }
}

This endpoint edit other details a internal Account.

UAT HTTP Request

PUT https://nxt.api.q2pay.co.in/api/accounts/internal/:id/edit_other_details

PRODUCTION HTTP Request

PUT https://nxt.api.q2pay.in/api/accounts/internal/:id/edit_other_details

Query Parameters

Parameter Default Description Required Sample
contact_no N.A. contact no for internal account optional 9867454325
email N.A. email id for internal account optional abc@gmail.com
name N.A. name for internal account optional Q2PAY TECHNOLOGIES P
recipient_email N.A recipient email for internal account optional q2pay@gmail.com

Service Details

Service ID Description
IUAccount Edit Details of internal Account

Add Labels of Internal Account

curl -X PUT "https://<environmenturl>/api/accounts/internal/add_label"
  -H "X-Api-Key: <your secure token>"
  -H "Content-Type: application/json"
  -d "{
  "record_ids": [
    "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx","xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx"
  ],
  "labels": [
    "audit expense",
    "Infrastructure"
  ]
}"
require 'net/http'
require 'uri'
require 'json'

uri = URI.parse("https://<environmenturl>/api/accounts/internal/add_label") header = {'X-Api-Key' => '<your secure token>', 'Content-Type' => 'application/json'} body = {
"record_ids": [ "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx","xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx" ], "labels": [ "audit expense", "Infrastructure" ] } http = Net::HTTP.new(uri.host, uri.port) http.use_ssl = true request = Net::HTTP::Put.new(uri.request_uri, header) request.body = body.to_json response = http.request(request)

const data = {
  "record_ids": [
     "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx","xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx"
  ],
  "labels": [
    "audit expense",
     "Infrastructure"
  ]
};

fetch('https://<environmenturl>/api/accounts/internal/add_label', { method: 'PUT', headers: { 'X-Api-Key': '<your secure token>', 'Content-Type': 'application/json' }, body: JSON.stringify(data) }) .then(response => response.json()) .then(data => console.log(data)) .catch(error => console.error(error));

The below example can be sent as a request to the API.

{
  "record_ids": [
     "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx","xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx"
  ],
  "labels": [
    "audit expense",
    "Infrastructure"
  ]
}

SUCCESS RESPONSE The request returns JSON structured like below on successful add labels of internal accounts

{
    "status":true, 
    "successful_count":1,
    "unsuccessful_count":1, 
    "ids":{
        "successful_ids":["xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx"],
        "unsuccessful_ids": [
      { "id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx", "errors": "Label could not be added due to validation error" }
    ]
    }
}

ERROR RESPONSE The request returns JSON structured like below for errors related add labels of internal accounts

{
  "status": false,
  "errors": {
    "base": [
      "Missing required parameters: record_ids and/or labels."
    ],
    "base":[
      "The internal account IDs are not present."
    ]
  }
}

This endpoint Add labels of Internal Account.

UAT HTTP Request

PUT https://nxt.api.q2pay.co.in/api/accounts/internal/add_label

PRODUCTION HTTP Request

PUT https://nxt.api.q2pay.in/api/accounts/internal/add_label

Query Parameters

Parameter Default Description Required Sample
record_ids N.A. record ids of internal account Yes ["xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx","xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx" ]
labels N.A. labels of internal account Yes ["audit expense","Infrastructure"]

Service Details

Service ID Description
ALabel Add labels for Internal Account

Remove Labels of Internal Account

curl -X PUT "https://<environmenturl>/api/accounts/internal/remove_label"
  -H "X-Api-Key: <your secure token>"
  -H "Content-Type: application/json"
  -d "{
  "record_ids": [
    "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx","xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx"
  ],
  "labels": [
    "audit expense",
    "Infrastructure"
  ]
}"
require 'net/http'
require 'uri'
require 'json'

uri = URI.parse("https://<environmenturl>/api/accounts/internal/remove_label") header = {'X-Api-Key' => '<your secure token>', 'Content-Type' => 'application/json'} body = {
"record_ids": [ "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx","xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx" ], "labels": [ "audit expense", "Infrastructure" ] } http = Net::HTTP.new(uri.host, uri.port) http.use_ssl = true request = Net::HTTP::Put.new(uri.request_uri, header) request.body = body.to_json response = http.request(request)

const data = {
  "record_ids": [
     "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx","xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx"
  ],
  "labels": [
    "audit expense",
     "Infrastructure"
  ]
};

fetch('https://<environmenturl>/api/accounts/internal/remove_label', { method: 'PUT', headers: { 'X-Api-Key': '<your secure token>', 'Content-Type': 'application/json' }, body: JSON.stringify(data) }) .then(response => response.json()) .then(data => console.log(data)) .catch(error => console.error(error));

The below example can be sent as a request to the API.

{
  "record_ids": [
     "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx","xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx"
  ],
  "labels": [
    "audit expense",
    "Infrastructure"
  ]
}

SUCCESS RESPONSE The request returns JSON structured like below on successful remove labels of internal accounts

{
  "status": true,
  "successful_count": 1,
  "unsuccessful_count": 1,
  "ids": {
    "successful_id": [
      "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx"
    ],
    "unsuccessful_ids": [
      { "id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx", "errors": "Label could not be added due to validation error" }
    ]
  }
}

ERROR RESPONSE The request returns JSON structured like below for errors related remove labels of internal accounts

{
  "status": false,
  "errors": {
    "base": [
      "Missing required parameters: record_ids and/or labels."
    ],
    "base":[
      "The internal account IDs are not present."
    ],
    "base":[
      "Labels are not present in some internal accounts."
    ]
  }
}

This endpoint Remove labels of Internal Account.

UAT HTTP Request

PUT https://nxt.api.q2pay.co.in/api/accounts/internal/remove_label

PRODUCTION HTTP Request

PUT https://nxt.api.q2pay.in/api/accounts/internal/remove_label

Query Parameters

Parameter Default Description Required Sample
record_ids N.A. record ids of internal account Yes ["xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx","xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx" ]
labels N.A. labels of internal account Yes ["audit expense","Infrastructure"]

Service Details

Service ID Description
RLabel Remove labels for Internal Account

Beneficary Transaction

Beneficiary transaction helps you create, maintain & manage lifecycle of beneficiary transactions for your organization

Get All Beneficiary Transactions

curl -X GET "https://<environmenturl>/api/transactions/beneficiary"
  -H "X-Api-Key: <your secure token>"
  -H "Content-Type: application/json"

require 'net/http'
require 'uri'
require 'json'

uri = URI.parse("https://<environmenturl>/api/transactions/beneficiary") header = {'X-Api-Key' => '<your secure token>', 'Content-Type' => 'application/json'} http = Net::HTTP.new(uri.host, uri.port) http.use_ssl = true request = Net::HTTP::Get.new(uri.request_uri, header) request.body = body.to_json response = http.request(request)

fetch('https://<environmenturl>/api/transactions/beneficiary', { method: 'GET', headers: { 'X-Api-Key': '<your secure token>', 'Content-Type': 'application/json' }, body: JSON.stringify(data) }) .then(response => response.json()) .then(data => console.log(data)) .catch(error => console.error(error));

SUCCESS RESPONSE The request returns JSON structured like below

{
  "status": true,
  "total_count": 2,
  "total_amount": "2000.0",
  "summary": {
     "pending_transaction_count": 84,
     "abandoned_transaction_count": 11,
     "approved_transaction_count": 219,
     "rejected_transaction_count": 43,
     "actionable_transaction_count": 84,
     "created_distribution_transaction_count": 198,
     "awaiting_funds_distribution_transaction_count": 12,
     "distribution_initiated_distribution_transaction_count": 4,
     "distribution_complete_distribution_transaction_count": 1,
     "rejected_distribution_transaction_count": 4,
     "abandoned_distribution_transaction_count": 3,
     "confidential_transaction_count": 2,
     "available_labels": [
          "audit expense",
          "building expenses",
          "test expense"
      ]
  },
  "transactions": [
    {
      "total_amount": "1000.0",
      "txn_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
      "amount": "1000.0",
      "category": "Beneficiary",
      "internal_transaction": false,
      "lifecycle_status": "approved",
      "distribution_lifecycle_status": "created",
      "payment_method":"RTGS",
      "txn_initiator": "Priya jawale",
      "approved": "Y",
      "confidential_transaction": "Y",
      "approved_at": "xxxxxxxx",
      "payment_charge": "0.0",
      "tax_amount": "0.0",
      "entity_id": "ABC12",
      "rejected": false,
      "refactored": false,
      "beneficiary_account_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
      "beneficiary_account_name": "JITENDRA KIRAN KAKDE",
      "beneficiary_account_bank_acc_no": "12345678",
      "beneficiary_account_ifsc_code": "BKID0010670",
      "beneficiary_account_bank_name": "Bank of India",
      "beneficiary_account_approval_status": "approved",
      "owner_account_id":"xxxxxxxx-xxxx-xxxx-xxxxxx",
      "owner_account_bank_acc_no":"9482940300",
      "owner_account_ifsc_code":"ICIC0000112",
      "owner_account_bank_name":"ICICI Bank",
      "owner_account_type":"Current Account",
      "owner_account_balance":"1500.0",
      "owner_account_balance_last_fetched_at":"xxxxxxxx",
      "owner_account_balance_last_fetched_at_in_words":"less than a minute ago",
      "created_via": "Scheduled Transaction",
      "additional_data": {
        "data": [
          {
            "name": "month",
            "position": 1,
            "data_type": "string",
            "mandatory": "Y",
            "value": "Mon"
          },
          {
            "name": "leaves",
            "position": 2,
            "data_type": "numeric",
            "mandatory": "Y",
            "value": 1233
          },
          {
            "name": "PAN",
            "position": 3,
            "data_type": "string",
            "mandatory": "N",
            "value": "Pan no"
          },
          {
            "data": [
              "Pradeep",
              "Sachin",
              "Sewaram"
            ],
            "name": "Accountants",
            "position": 4,
            "data_type": "list",
            "mandatory": "N",
            "value": "Pradeep"
          },
          {
            "name": "month 1",
            "position": 5,
            "data_type": "time",
            "mandatory": "Y",
            "value": "09:34"
          },
          {
            "name": "Day",
            "position": 6,
            "data_type": "day",
            "mandatory": "Y",
            "value": "Monday"
          },
          {
            "name": "Dummy",
            "position": 7,
            "data_type": "toggle",
            "mandatory": "Y",
            "value": true
          },
          {
            "name": "Month",
            "position": 8,
            "data_type": "month",
            "mandatory": "Y",
            "value": "March"
          },
          {
            "name": "Hyperlink",
            "position": 9,
            "data_type": "hyperlink",
            "mandatory": "Y",
            "value": "https://nxt.api.q2pay.co.in/api/transaction_auth_matrix.json",
            },
            {
              "name": "File",
              "position": 10,
              "data_type": "upload",
              "mandatory": "Y",
                "value": {
                  "id": "c68cc4e7d54381cc46384f194c09ce2c.png",
                  "storage": "cache",
                  "metadata": {
                    "filename": "favicon.png",
                    "size": 62260,
                    "mime_type": "image/png"
                  },
                  "file_url": "https://your-bucket.s3.amazonaws.com/store/c68cc4e7d54381cc46384f194c09ce2c.png"
                }
              },
          {
            "name": "Date",
            "position": 11,
            "data_type": "date",
            "mandatory": "Y",
            "value": "23/04/2023"
          },
          {
            "name": "Year",
            "position": 12,
            "data_type": "year",
            "mandatory": "Y",
            "value": "2024"
          },
          {
            "name": "Month_Year",
            "position": 13,
            "data_type": "month_year",
            "mandatory": "Y",
            "value": "12/2024"
          },
          {
            "name": "Multiselect",
            "position": 14,
            "data_type": "multi_select_list",
            "mandatory": "Y",
            "data": [
              "ab",
              "abc",
              "abcd"
            ],
            "value": [
               "ab",
               "abc"
            ]
          },
          {
            "name": "Quantity",
            "position": 15,
            "data_type": "quantity",
            "mandatory": "Y",
            "value": 5
          },
          {
            "name": "DateRange",
            "position": 16,
            "data_type": "date_range",
            "mandatory": "Y",
            "value": {
              "start_date": "21/08/2023",
              "end_date": "21/10/2024"
            }
          },
          {
            "name": "YearRange",
            "position": 17,
            "data_type": "from_year_to_year",
            "mandatory": "Y",
            "value": {
              "from": 2030,
              "to": 2034
            }
          }
        ]
      },
      "created_on": "xxxxxxxx",
      "last_updated_user_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
      "last_updated_status": "Created",
      "last_updated_timestamp": "xxxxxxxx",
      "last_updated_user_name": "Akshay Rangnekar"
    },
    {
      "total_amount": "1000.0",
      "txn_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
      "amount": "1000.0",
      "category": "Beneficiary",
      "lifecycle_status": "pending",
      "payment_method":"RTGS",
      "txn_initiator": "Priya jawale",
      "approved": "N",
      "approved_at": "0",
      "payment_charge": "0.0",
      "tax_amount": "0.0",
      "entity_id": "ABC12",
      "rejected": false,
      "refactored": false,
      "beneficiary_account_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
      "beneficiary_account_name": "Mr AKASH PRAMOD BAGUL",
      "beneficiary_account_bank_acc_no": "12345678",
      "beneficiary_account_ifsc_code": "SBIN0031199",
      "beneficiary_account_bank_name": "State Bank of India",
      "beneficiary_account_approval_status": "archived",
      "owner_account_id":"xxxxxxxx-xxxx-xxxx-xxxxxx",
      "owner_account_bank_acc_no":"9482940300",
      "owner_account_ifsc_code":"ICIC0000112",
      "owner_account_bank_name":"ICICI Bank",
      "owner_account_type":"Current Account",
      "additional_data": {
        "data": [
          {
            "name": "month",
            "position": 1,
            "data_type": "string",
            "mandatory": "Y",
            "value": "Mon"
          },
          {
            "name": "leaves",
            "position": 2,
            "data_type": "numeric",
            "mandatory": "N"
          },
          {
            "name": "PAN",
            "position": 3,
            "data_type": "string",
            "mandatory": "N"
          },
          {
            "name": "Accountants",
            "position": 4,
            "data_type": "list",
            "mandatory": "N",
            "data": [
              "Pradeep",
              "Sachin",
              "Sewaram"
            ]
          }
        ]
      }, 
      "created_on": "xxxxxxxx",
      "last_updated_user_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
      "last_updated_status": "Created",
      "last_updated_timestamp": "xxxxxxxx",
      "last_updated_user_name": "Akshay Rangnekar"
    }
  ],
  "title": {
    "records": 2,
    "current_page": 1,
    "total_pages": 1,
    "page_item_count": 50
  }
}

This endpoint retrieves all Beneficiary Transactions.

UAT HTTP Request

GET https://nxt.api.q2pay.co.in/api/transactions/beneficiary

PRODUCTION HTTP Request

GET https://nxt.api.q2pay.in/api/transactions/beneficiary

Query Parameters

Parameter Default Description Required Sample
amount N.A. amount for beneficiary transaction optional 67000.0
lifecycle_status N.A. lifecycle status for beneficiary transaction optional pending, approved, rejected, abandoned
payment_method N.A. payment method for beneficiary transaction optional RTGS/NEFT/IMPS
beneficiary_account_id N.A. beneficiary account id for beneficiary transaction optional "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxx"
owner_account_id N.A. owner account id for beneficiary transaction optional "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxx"
beneficiary_account_ids N.A. beneficiary account ids for beneficiary transaction optional [xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxx ,xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxx]
owner_account_ids N.A. owner account ids for beneficiary transaction optional [xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxx ,xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxx]
start_date,end_date N.A. start date and end date for beneficiary transaction optional xxxxxxxx,xxxxxxxx
txn_id N.A. transaction id is used to search id of beneficiary transaction optional [xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxx ,xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxx]
entity_id N.A. entity id for beneficiary transaction optional ABC12
category N.A. category for beneficiary transaction optional Vendor
bank_identifier N.A. bank_identifier/settlement_id for distribution transaction of beneficiary transaction optional xxxxxxxxxxxxxxxx
distribution_lifecycle_status N.A. distribution lifecycle status of beneficiary transaction optional created, awaiting_funds, distribution_initiated, distribution_complete, rejected, abandoned, failed
additional_data N.A. additional data for beneficiary transaction optional "Mon"
confidential_transaction N.A. confidential transaction for beneficiary transaction optional "Y","N"
category_name, category_value N.A category name and category value is filter on additional data of name and value of beneficiary transaction optional name, month or value, Mon
category_label N.A. category label for beneficiary transaction optional Vendor
refactor N.A refactor for filter beneficiary transaction optional true, false
labels N.A. labels for beneficiary transaction optional ["audit expense"]

Service Details

Service ID Description
VBeneficiaryTxn View All Beneficiary Transactions
VAccountBalance View Balance of Owner Account
VConfidentialTxn View Confidential Transactions

Get specific Beneficiary Transactions

curl -X GET "https://<environmenturl>/api/transactions/beneficiary/:id"
  -H "X-Api-Key: <your secure token>"
  -H "Content-Type: application/json"

require 'net/http'
require 'uri'
require 'json'

uri = URI.parse("https://<environmenturl>/api/transactions/beneficiary/:id") header = {'X-Api-Key' => '<your secure token>', 'Content-Type' => 'application/json'} http = Net::HTTP.new(uri.host, uri.port) http.use_ssl = true request = Net::HTTP::Get.new(uri.request_uri, header) request.body = body.to_json response = http.request(request)

fetch('https://<environmenturl>/api/transactions/beneficiary/:id', { method: 'GET', headers: { 'X-Api-Key': '<your secure token>', 'Content-Type': 'application/json' }, body: JSON.stringify(data) }) .then(response => response.json()) .then(data => console.log(data)) .catch(error => console.error(error));

SUCCESS RESPONSE The request returns JSON structured like below

{
  "status": true,
  "total_count": 1,
  "total_amount": "512.0",
  "transaction": [
    {
      "total_amount": "512.0",
      "txn_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
      "amount": "512.0",
      "category": "Salary",
      "internal_transaction": false,
      "lifecycle_status": "approved",
      "payment_method":"RTGS",
      "txn_initiator": "Akshay Rangnekar",
      "approved": "Y",
      "confidential_transaction": "Y",
      "approved_at": "xxxxxxxx",
      "payment_charge": "0.0",
      "tax_amount": "0.0",
      "entity_id": "ABC12",
      "rejected": false,
      "refactored": false,
      "beneficiary_account_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
      "beneficiary_account_name": "Q2PAY TECHNOLOGIES P",
      "beneficiary_account_bank_acc_no": "123456789",
      "beneficiary_account_ifsc_code": "HDFC0000233",
      "beneficiary_account_bank_name": "HDFC Bank",
      "beneficiary_account_approval_status": "approved",
      "owner_account_id":"xxxxxxxx-xxxx-xxxx-xxxxxx",
      "owner_account_bank_acc_no":"9482940300",
      "owner_account_ifsc_code":"ICIC0000112",
      "owner_account_bank_name":"ICICI Bank",
      "owner_account_type":"Current Account",
      "owner_account_balance":"1500.0",
      "owner_account_balance_last_fetched_at":"xxxxxxxx",
      "owner_account_balance_last_fetched_at_in_words":"less than a minute ago"
      "additional_data": {
        "data": [
          {
            "name": "month",
            "position": 1,
            "data_type": "string",
            "mandatory": "Y",
            "value": "Mon"
          },
          {
            "name": "leaves",
            "position": 2,
            "data_type": "numeric",
            "mandatory": "Y",
            "value": 1233
          },
          {
            "name": "PAN",
            "position": 3,
            "data_type": "string",
            "mandatory": "N",
            "value": "Pan no"
          },
          {
            "data": [
              "Pradeep",
              "Sachin",
              "Sewaram"
            ],
            "name": "Accountants",
            "position": 4,
            "data_type": "list",
            "mandatory": "N",
            "value": "Pradeep"
          },
          {
            "name": "month 1",
            "position": 5,
            "data_type": "time",
            "mandatory": "Y",
            "value": "09:34"
          },
          {
            "name": "Day",
            "position": 6,
            "data_type": "day",
            "mandatory": "Y",
            "value": "Monday"
          },
          {
            "name": "Dummy",
            "position": 7,
            "data_type": "toggle",
            "mandatory": "Y",
            "value": true
          },
          {
            "name": "Month",
            "position": 8,
            "data_type": "month",
            "mandatory": "Y",
            "value": "March"
          },
          {
            "name": "Hyperlink",
            "position": 9,
            "data_type": "hyperlink",
            "mandatory": "Y",
            "value": "https://nxt.api.q2pay.co.in/api/transaction_auth_matrix.json"
            },
            {
              "name": "File",
              "position": 10,
              "data_type": "upload",
              "mandatory": "Y",
                "value": {
                  "id": "c68cc4e7d54381cc46384f194c09ce2c.png",
                  "storage": "cache",
                  "metadata": {
                    "filename": "favicon.png",
                    "size": 62260,
                    "mime_type": "image/png"
                  },
                  "file_url": "https://your-bucket.s3.amazonaws.com/store/c68cc4e7d54381cc46384f194c09ce2c.png"
                }
              },
          {
            "name": "Date",
            "position": 11,
            "data_type": "date",
            "mandatory": "Y",
            "value": "23/04/2023"
          },
          {
            "name": "Year",
            "position": 12,
            "data_type": "year",
            "mandatory": "Y",
            "value": "2024"
          },
          {
            "name": "Month_Year",
            "position": 13,
            "data_type": "month_year",
            "mandatory": "Y",
            "value": "12/2024"
          },
          {
            "name": "Multiselect",
            "position": 14,
            "data_type": "multi_select_list",
            "mandatory": "Y",
            "data": [
              "ab",
              "abc",
              "abcd"
            ],
            "value": [
               "ab",
               "abc"
            ]
          },
          {
            "name": "Quantity",
            "position": 15,
            "data_type": "quantity",
            "mandatory": "Y",
            "value": 5
          },
          {
            "name": "DateRange",
            "position": 16,
            "data_type": "date_range",
            "mandatory": "Y",
            "value": {
              "start_date": "21/08/2023",
              "end_date": "21/10/2024"
            }
          },
          {
            "name": "YearRange",
            "position": 17,
            "data_type": "from_year_to_year",
            "mandatory": "Y",
            "value": {
              "from": 2030,
              "to": 2034
            }
          }
        ]
      },
      "created_on": "xxxxxxxx",
      "last_updated_user_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
      "last_updated_status": "Approved",
      "last_updated_timestamp": "xxxxxxxx",
      "last_updated_user_name": "Akshay Rangnekar",
      "distribution_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
      "distribution_identifier": "xxxxxxxxxxxxxxxxxxxxxxxx",
      "distribution_settlement_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
      "distribution_bank": "HDFC Bank",
      "distribution_amount": "512.0",
      "distribution_mode_of_payment": "NEFT",
      "distribution_lifecycle_status": "awaiting_funds",
      "distribution_utr": "xxxxxxx",
      "distribution_initiated_at": "xxxxxxx",
      "distribution_credited_at": "xxxxxxx",
      "distribution_credit_remarks": "xxxxxxx",
      "distribution_approved": true,
      "distribution_approved_at": "2024-01-12T10:27:20.033Z",
      "distribution_approved_by": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
      "distribution_approval_strategy": "user",
      "distribution_logs": [
        {
          "action": "Created",
          "user_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
          "timestamp": "2024-01-12T10:09:53.886Z",
          "user_full_name": "Akshay Rangnekar"
        },
        {
          "brand": "Android",
          "model": "Android SDK built for x86",
          "action": "Approved",
          "user_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
          "platform": "android",
          "last_name": "Rangnekar",
          "last_used": "2024-01-12T10:27:19.963Z",
          "timestamp": "2024-01-12T10:27:20.044Z",
          "first_name": "Akshay",
          "ip_address": "127.0.0.1",
          "is_primary": false,
          "os_version": "6.0",
          "request_ip": "127.0.0.1",
          "user_grade": "Director",
          "is_verified": false,
          "sdk_version": "23",
          "manufacturer": "unknown",
          "serial_number": "EMULATOR32X1X14X0",
          "final_approval": true,
          "logged_in_flag": true,
          "logged_in_time": "2024-01-11T10:27:49.369Z",
          "user_full_name": "Akshay Rangnekar",
          "app_version_code": "54",
          "app_version_name": "1.43"
        }
      ],
      "logs": [
        {
          "brand": "Android",
          "model": "Android SDK built for x86",
          "action": "Created",
          "user_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
          "platform": "android",
          "last_name": "Rangnekar",
          "last_used": "2024-01-12T10:09:53.679Z",
          "timestamp": "2024-01-12T10:09:53.714Z",
          "first_name": "Akshay",
          "ip_address": "127.0.0.1",
          "is_primary": false,
          "os_version": "6.0",
          "request_ip": "127.0.0.1",
          "is_verified": false,
          "sdk_version": "23",
          "manufacturer": "unknown",
          "serial_number": "EMULATOR32X1X14X0",
          "logged_in_flag": true,
          "logged_in_time": "2024-01-11T10:27:49.369Z",
          "user_full_name": "Akshay Rangnekar",
          "app_version_code": "54",
          "app_version_name": "1.43"
        },
        {
          "brand": "Android",
          "model": "Android SDK built for x86",
          "action": "Approved",
          "user_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
          "platform": "android",
          "last_name": "Rangnekar",
          "last_used": "2024-01-12T10:09:53.679Z",
          "timestamp": "2024-01-12T10:09:53.734Z",
          "first_name": "Akshay",
          "ip_address": "127.0.0.1",
          "is_primary": false,
          "os_version": "6.0",
          "request_ip": "127.0.0.1",
          "is_verified": false,
          "sdk_version": "23",
          "manufacturer": "unknown",
          "serial_number": "EMULATOR32X1X14X0",
          "final_approval": true,
          "logged_in_flag": true,
          "logged_in_time": "2024-01-11T10:27:49.369Z",
          "user_full_name": "Akshay Rangnekar",
          "app_version_code": "54",
          "app_version_name": "1.43",
          "authorization_rule": "Director~1"
        }
      ]
    }
  ],
  "title": {
    "records": 1,
    "current_page": 1,
    "total_pages": 1,
    "page_item_count": 1
  }
}

This endpoint retrieves specific Beneficiary Transactions.

UAT HTTP Request

GET https://nxt.api.q2pay.co.in/api/transactions/beneficiary/:id

PRODUCTION HTTP Request

GET https://nxt.api.q2pay.in/api/transactions/beneficiary/:id

Service Details

Service ID Description
VBeneficiaryTxn View specific Beneficiary Transactions

Create Beneficiary Transactions

curl -X POST "https://<environmenturl>/api/transactions/beneficiary"
  -H "X-Api-Key: <your secure token>"
  -H "Content-Type: application/json"
  -d "{ 
    "amount" : "67000.0",
    "owner_account_id":"xxxxxxxx-xxxx-xxxx-xxxxxx",
    "beneficiary_account_id" :"xxxxxxxx-xxxx-xxxx-xxxxxx",
    "payment_method":"RTGS",
    "category": "Beneficiary",
    "labels": ["building expenses"],
    "confidential_transaction": "true",
    "additional_data": {
    "data": [
      {
        "name": "month",
        "position": 1,
        "data_type": "string",
        "mandatory": "Y",
        "value": "Mon"
      },
      {
        "name": "leaves",
        "position": 2,
        "data_type": "numeric",
        "mandatory": "Y",
        "value": 1233
      },
      {
        "name": "PAN",
        "position": 3,
        "data_type": "string",
        "mandatory": "N",
        "value": "Pan no"
      },
      {
        "data": [
          "Pradeep",
          "Sachin",
          "Sewaram"
        ],
        "name": "Accountants",
        "position": 4,
        "data_type": "list",
        "mandatory": "N",
        "value": "Pradeep"
      },
      {
        "name": "month 1",
        "position": 5,
        "data_type": "time",
        "mandatory": "Y",
        "value": "09:34"
      },
      {
        "name": "Day",
        "position": 6,
        "data_type": "day",
        "mandatory": "Y",
        "value": "Monday"
      },
      {
        "name": "Dummy",
        "position": 7,
        "data_type": "toggle",
        "mandatory": "Y",
        "value": true
      },
      {
        "name": "Month",
        "position": 8,
        "data_type": "month",
        "mandatory": "Y",
        "value": "March"
      },
      {
        "name": "Hyperlink",
        "position": 9,
        "data_type": "hyperlink",
        "mandatory": "Y",
        "value": "https://nxt.api.q2pay.co.in/api/transaction_auth_matrix.json"
      },
      {
        "name": "File",
        "position": 10,
        "data_type": "upload",
        "mandatory": "Y",
        "value": {
          "id": "c68cc4e7d54381cc46384f194c09ce2c.png",
          "storage": "cache",
          "metadata": {
            "filename": "favicon.png",
            "size": 62260,
            "mime_type": "image/png"
          }
        }
      },
      {
        "name": "Date",
        "position": 11,
        "data_type": "date",
        "mandatory": "Y",
        "value": "23/04/2023"
      },
      {
        "name": "Year",
        "position": 12,
        "data_type": "year",
        "mandatory": "Y",
        "value": "2024"
      },
      {
        "name": "Month_Year",
        "position": 13,
        "data_type": "month_year",
        "mandatory": "Y",
        "value": "12/2024"
      },
      {
        "name": "Multiselect",
        "position": 14,
        "data_type": "multi_select_list",
        "mandatory": "Y",
        "data": [
          "ab",
          "abc",
          "abcd"
        ],
        "value": [
          "ab",
          "abc"
        ]
      },
      {
        "name": "Quantity",
        "position": 15,
        "data_type": "quantity",
        "mandatory": "Y",
        "value": 5
      },
      {
        "name": "DateRange",
        "position": 16,
        "data_type": "date_range",
        "mandatory": "Y",
        "value": {
          "start_date": "21/08/2023",
          "end_date": "21/10/2024"
        }
      },
      {
        "name": "YearRange",
        "position": 17,
        "data_type": "from_year_to_year",
        "mandatory": "Y",
        "value": {
          "from": 2030,
          "to": 2034
        }
      }
    ]
  }
 }"
require 'net/http'
require 'uri'
require 'json'

uri = URI.parse("https://<environmenturl>/api/transactions/beneficiary") header = {'X-Api-Key' => '<your secure token>', 'Content-Type' => 'application/json'} body = { "amount" : "67000.0", "owner_account_id":"xxxxxxxx-xxxx-xxxx-xxxxxx", "beneficiary_account_id" :"xxxxxxxx-xxxx-xxxx-xxxxxx", "payment_method":"RTGS", "category": "Beneficiary", "labels": ["building expenses"], "confidential_transaction": "true", "additional_data": { "data": [ { "name": "month", "position": 1, "data_type": "string", "mandatory": "Y", "value": "Mon" }, { "name": "leaves", "position": 2, "data_type": "numeric", "mandatory": "Y", "value": 1233 }, { "name": "PAN", "position": 3, "data_type": "string", "mandatory": "N", "value": "Pan no" }, { "data": [ "Pradeep", "Sachin", "Sewaram" ], "name": "Accountants", "position": 4, "data_type": "list", "mandatory": "N", "value": "Pradeep" }, { "name": "month 1", "position": 5, "data_type": "time", "mandatory": "Y", "value": "09:34" }, { "name": "Day", "position": 6, "data_type": "day", "mandatory": "Y", "value": "Monday" }, { "name": "Dummy", "position": 7, "data_type": "toggle", "mandatory": "Y", "value": true }, { "name": "Month", "position": 8, "data_type": "month", "mandatory": "Y", "value": "March" }, { "name": "Hyperlink", "position": 9, "data_type": "hyperlink", "mandatory": "Y", "value": "https://nxt.api.q2pay.co.in/api/transaction_auth_matrix.json" }, { "name": "File", "position": 10, "data_type": "upload", "mandatory": "Y", "value": { "id": "c68cc4e7d54381cc46384f194c09ce2c.png", "storage": "cache", "metadata": { "filename": "favicon.png", "size": 62260, "mime_type": "image/png" } } }, { "name": "Date", "position": 11, "data_type": "date", "mandatory": "Y", "value": "23/04/2023" }, { "name": "Year", "position": 12, "data_type": "year", "mandatory": "Y", "value": "2024" }, { "name": "Month_Year", "position": 13, "data_type": "month_year", "mandatory": "Y", "value": "12/2024" }, { "name": "Multiselect", "position": 14, "data_type": "multi_select_list", "mandatory": "Y", "data": [ "ab", "abc", "abcd" ], "value": [ "ab", "abc" ] }, { "name": "Quantity", "position": 15, "data_type": "quantity", "mandatory": "Y", "value": 5 }, { "name": "DateRange", "position": 16, "data_type": "date_range", "mandatory": "Y", "value": { "start_date": "21/08/2023", "end_date": "21/10/2024" } }, { "name": "YearRange", "position": 17, "data_type": "from_year_to_year", "mandatory": "Y", "value": { "from": 2030, "to": 2034 } } ] } } http = Net::HTTP.new(uri.host, uri.port) http.use_ssl = true request = Net::HTTP::Post.new(uri.request_uri, header) request.body = body.to_json response = http.request(request)

const data = {
    "amount" : "67000.0",
    "owner_account_id":"xxxxxxxx-xxxx-xxxx-xxxxxx",
    "beneficiary_account_id" :"xxxxxxxx-xxxx-xxxx-xxxxxx",
    "payment_method":"RTGS",
    "category": "Beneficiary",
    "labels": ["building expenses"],
    "confidential_transaction": "true",
    "additional_data": {
    "data": [
      {
        "name": "month",
        "position": 1,
        "data_type": "string",
        "mandatory": "Y",
        "value": "Mon"
      },
      {
        "name": "leaves",
        "position": 2,
        "data_type": "numeric",
        "mandatory": "Y",
        "value": 1233
      },
      {
        "name": "PAN",
        "position": 3,
        "data_type": "string",
        "mandatory": "N",
        "value": "Pan no"
      },
      {
        "data": [
          "Pradeep",
          "Sachin",
          "Sewaram"
        ],
        "name": "Accountants",
        "position": 4,
        "data_type": "list",
        "mandatory": "N",
        "value": "Pradeep"
      },
      {
        "name": "month 1",
        "position": 5,
        "data_type": "time",
        "mandatory": "Y",
        "value": "09:34"
      },
      {
        "name": "Day",
        "position": 6,
        "data_type": "day",
        "mandatory": "Y",
        "value": "Monday"
      },
      {
        "name": "Dummy",
        "position": 7,
        "data_type": "toggle",
        "mandatory": "Y",
        "value": true
      },
      {
        "name": "Month",
        "position": 8,
        "data_type": "month",
        "mandatory": "Y",
        "value": "March"
      },
      {
        "name": "Hyperlink",
        "position": 9,
        "data_type": "hyperlink",
        "mandatory": "Y",
        "value": "https://nxt.api.q2pay.co.in/api/transaction_auth_matrix.json"
      },
      {
        "name": "File",
        "position": 10,
        "data_type": "upload",
        "mandatory": "Y",
        "value": {
          "id": "c68cc4e7d54381cc46384f194c09ce2c.png",
          "storage": "cache",
          "metadata": {
            "filename": "favicon.png",
            "size": 62260,
            "mime_type": "image/png"
          }
        }
      },
      {
        "name": "Date",
        "position": 11,
        "data_type": "date",
        "mandatory": "Y",
        "value": "23/04/2023"
      },
      {
        "name": "Year",
        "position": 12,
        "data_type": "year",
        "mandatory": "Y",
        "value": "2024"
      },
      {
        "name": "Month_Year",
        "position": 13,
        "data_type": "month_year",
        "mandatory": "Y",
        "value": "12/2024"
      },
      {
        "name": "Multiselect",
        "position": 14,
        "data_type": "multi_select_list",
        "mandatory": "Y",
        "data": [
          "ab",
          "abc",
          "abcd"
        ],
        "value": [
          "ab",
          "abc"
        ]
      },
      {
        "name": "Quantity",
        "position": 15,
        "data_type": "quantity",
        "mandatory": "Y",
        "value": 5
      },
      {
        "name": "DateRange",
        "position": 16,
        "data_type": "date_range",
        "mandatory": "Y",
        "value": {
          "start_date": "21/08/2023",
          "end_date": "21/10/2024"
        }
      },
      {
        "name": "YearRange",
        "position": 17,
        "data_type": "from_year_to_year",
        "mandatory": "Y",
        "value": {
          "from": 2030,
          "to": 2034
        }
      }
    ]
  }
};

fetch('https://<environmenturl>/api/transactions/beneficiary', { method: 'POST', headers: { 'X-Api-Key': '<your secure token>', 'Content-Type': 'application/json' }, body: JSON.stringify(data) }) .then(response => response.json()) .then(data => console.log(data)) .catch(error => console.error(error));

The below example can be sent as a request to the API.

{
    "amount" : "67000.0",
    "owner_account_id":"xxxxxxxx-xxxx-xxxx-xxxxxx",
    "beneficiary_account_id" :"xxxxxxxx-xxxx-xxxx-xxxxxx",
    "payment_method":"RTGS",
    "category": "Beneficiary",
    "labels": ["building expenses"],
    "confidential_transaction": "true",
    "additional_data": {
    "data": [
      {
        "name": "month",
        "position": 1,
        "data_type": "string",
        "mandatory": "Y",
        "value": "Mon"
      },
      {
        "name": "leaves",
        "position": 2,
        "data_type": "numeric",
        "mandatory": "Y",
        "value": 1233
      },
      {
        "name": "PAN",
        "position": 3,
        "data_type": "string",
        "mandatory": "N",
        "value": "Pan no"
      },
      {
        "data": [
          "Pradeep",
          "Sachin",
          "Sewaram"
        ],
        "name": "Accountants",
        "position": 4,
        "data_type": "list",
        "mandatory": "N",
        "value": "Pradeep"
      },
      {
        "name": "month 1",
        "position": 5,
        "data_type": "time",
        "mandatory": "Y",
        "value": "09:34"
      },
      {
        "name": "Day",
        "position": 6,
        "data_type": "day",
        "mandatory": "Y",
        "value": "Monday"
      },
      {
        "name": "Dummy",
        "position": 7,
        "data_type": "toggle",
        "mandatory": "Y",
        "value": true
      },
      {
        "name": "Month",
        "position": 8,
        "data_type": "month",
        "mandatory": "Y",
        "value": "March"
      },
      {
        "name": "Hyperlink",
        "position": 9,
        "data_type": "hyperlink",
        "mandatory": "Y",
        "value": "https://nxt.api.q2pay.co.in/api/transaction_auth_matrix.json"
      },
      {
        "name": "File",
        "position": 10,
        "data_type": "upload",
        "mandatory": "Y",
        "value": {
          "id": "c68cc4e7d54381cc46384f194c09ce2c.png",
          "storage": "cache",
          "metadata": {
            "filename": "favicon.png",
            "size": 62260,
            "mime_type": "image/png"
          }
        }
      },
      {
        "name": "Date",
        "position": 11,
        "data_type": "date",
        "mandatory": "Y",
        "value": "23/04/2023"
      },
      {
        "name": "Year",
        "position": 12,
        "data_type": "year",
        "mandatory": "Y",
        "value": "2024"
      },
      {
        "name": "Month_Year",
        "position": 13,
        "data_type": "month_year",
        "mandatory": "Y",
        "value": "12/2024"
      },
      {
        "name": "Multiselect",
        "position": 14,
        "data_type": "multi_select_list",
        "mandatory": "Y",
        "data": [
          "ab",
          "abc",
          "abcd"
        ],
        "value": [
          "ab",
          "abc"
        ]
      },
      {
        "name": "Quantity",
        "position": 15,
        "data_type": "quantity",
        "mandatory": "Y",
        "value": 5
      },
      {
        "name": "DateRange",
        "position": 16,
        "data_type": "date_range",
        "mandatory": "Y",
        "value": {
          "start_date": "21/08/2023",
          "end_date": "21/10/2024"
        }
      },
      {
        "name": "YearRange",
        "position": 17,
        "data_type": "from_year_to_year",
        "mandatory": "Y",
        "value": {
          "from": 2030,
          "to": 2034
        }
      }
    ]
  }
}

SUCCESS RESPONSE The request returns JSON structured like below on successful Beneficiary transactions creation

{
  "status": true,
  "total_count": 1,
  "total_amount": "512.0",
  "transaction": [
    {
      "total_amount": "512.0",
      "txn_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
      "amount": "512.0",
      "category": "Salary",
      "internal_transaction": false,
      "lifecycle_status": "pending",
      "payment_method":"RTGS",
      "txn_initiator": "Akshay Rangnekar",
      "approved": "N",
      "labels": ["building expenses"],
      "confidential_transaction": "Y",
      "approved_at": 0,
      "payment_charge": "0.0",
      "tax_amount": "0.0",
      "entity_id": "ABC12",
      "rejected": false,
      "refactored": false,
      "beneficiary_account_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
      "beneficiary_account_name": "Q2PAY TECHNOLOGIES P",
      "beneficiary_account_bank_acc_no": "12345678",
      "beneficiary_account_ifsc_code": "HDFC0000231",
      "beneficiary_account_bank_name": "HDFC Bank",
      "beneficiary_account_approval_status": "approved",
      "owner_account_id":"xxxxxxxx-xxxx-xxxx-xxxxxx",
      "owner_account_bank_acc_no":"9482940300",
      "owner_account_ifsc_code":"ICIC0000112",
      "owner_account_bank_name":"ICICI Bank",
      "owner_account_type":"Current Account",
      "owner_account_balance":"1500.0",
      "owner_account_balance_last_fetched_at":"xxxxxxxx",
      "owner_account_balance_last_fetched_at_in_words":"less than a minute ago"
      "additional_data": {
        "data": [
          {
            "name": "month",
            "position": 1,
            "data_type": "string",
            "mandatory": "Y",
            "value": "Mon"
          },
          {
            "name": "leaves",
            "position": 2,
            "data_type": "numeric",
            "mandatory": "Y",
            "value": 1233
          },
          {
            "name": "PAN",
            "position": 3,
            "data_type": "string",
            "mandatory": "N",
            "value": "Pan no"
          },
          {
            "data": [
              "Pradeep",
              "Sachin",
              "Sewaram"
            ],
            "name": "Accountants",
            "position": 4,
            "data_type": "list",
            "mandatory": "N",
            "value": "Pradeep"
          },
          {
            "name": "month 1",
            "position": 5,
            "data_type": "time",
            "mandatory": "Y",
            "value": "09:34"
          },
          {
            "name": "Day",
            "position": 6,
            "data_type": "day",
            "mandatory": "Y",
            "value": "Monday"
          },
          {
            "name": "Dummy",
            "position": 7,
            "data_type": "toggle",
            "mandatory": "Y",
            "value": true
          },
          {
            "name": "Month",
            "position": 8,
            "data_type": "month",
            "mandatory": "Y",
            "value": "March"
          },
          {
            "name": "Hyperlink",
            "position": 9,
            "data_type": "hyperlink",
            "mandatory": "Y",
            "value": "https://nxt.api.q2pay.co.in/api/transaction_auth_matrix.json"
            },
            {
              "name": "File",
              "position": 10,
              "data_type": "upload",
              "mandatory": "Y",
                "value": {
                  "id": "c68cc4e7d54381cc46384f194c09ce2c.png",
                  "storage": "cache",
                  "metadata": {
                    "filename": "favicon.png",
                    "size": 62260,
                    "mime_type": "image/png"
                  },
                  "file_url": "https://your-bucket.s3.amazonaws.com/store/c68cc4e7d54381cc46384f194c09ce2c.png"
                }
              },
          {
            "name": "Date",
            "position": 11,
            "data_type": "date",
            "mandatory": "Y",
            "value": "23/04/2023"
          },
          {
            "name": "Year",
            "position": 12,
            "data_type": "year",
            "mandatory": "Y",
            "value": "2024"
          },
          {
            "name": "Month_Year",
            "position": 13,
            "data_type": "month_year",
            "mandatory": "Y",
            "value": "12/2024"
          },
          {
            "name": "Multiselect",
            "position": 14,
            "data_type": "multi_select_list",
            "mandatory": "Y",
            "data": [
              "ab",
              "abc",
              "abcd"
            ],
            "value": [
               "ab",
               "abc"
            ]
          },
          {
            "name": "Quantity",
            "position": 15,
            "data_type": "quantity",
            "mandatory": "Y",
            "value": 5
          },
          {
            "name": "DateRange",
            "position": 16,
            "data_type": "date_range",
            "mandatory": "Y",
            "value": {
              "start_date": "21/08/2023",
              "end_date": "21/10/2024"
            }
          },
          {
            "name": "YearRange",
            "position": 17,
            "data_type": "from_year_to_year",
            "mandatory": "Y",
            "value": {
              "from": 2030,
              "to": 2034
            }
          }
        ]
      },
      "created_on": "xxxxxxxx",
      "last_updated_user_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
      "last_updated_status": "Approved",
      "last_updated_timestamp": "xxxxxxxx",
      "last_updated_user_name": "Akshay Rangnekar",
      "distribution_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
      "distribution_identifier": "xxxxxxxxxxxxxxxxxxxxxxxx",
      "distribution_settlement_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
      "distribution_bank": "HDFC Bank",
      "distribution_amount": "512.0",
      "distribution_mode_of_payment": "NEFT",
      "distribution_lifecycle_status": "created",
      "distribution_approved": false,
      "distribution_approval_strategy": "system",
      "distribution_logs": [
        {
          "action": "Created",
          "user_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
          "timestamp": "2024-01-12T10:09:53.886Z",
          "user_full_name": "Akshay Rangnekar"
        }
      ],
      "logs": [
        {
          "action": "Created",
          "user_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
          "user_full_name": "Akshay Rangnekar",
          "timestamp": "2024-01-12T10:09:53.714Z",
          "request_ip": "127.0.0.1",
          "last_used": "2024-01-12T10:09:53.679Z",
          "logged_in_flag": true,
          "logged_in_time": "2024-01-11T10:27:49.369Z",
          "app_version_name": "1.43",
          "app_version_code": "54",
          "platform": "android",
          "model": "Android SDK built for x86",
          "manufacturer": "unknown",
          "brand": "Android",
          "serial_number": "EMULATOR32X1X14X0",
          "os_version": "6.0",
          "sdk_version": "23",
          "ip_address": "127.0.0.1",
          "is_primary": false,
          "is_verified": false,
          "first_name": "Akshay",
          "last_name": "Rangnekar"
        },
        {
          "action": "Approved",
          "user_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
          "user_full_name": "Akshay Rangnekar",
          "authorization_rule": "Director~1",
          "final_approval": true,
          "timestamp": "2024-01-12T10:09:53.734Z",
          "request_ip": "127.0.0.1",
          "last_used": "2024-01-12T10:09:53.679Z",
          "logged_in_flag": true,
          "logged_in_time": "2024-01-11T10:27:49.369Z",
          "app_version_name": "1.43",
          "app_version_code": "54",
          "platform": "android",
          "model": "Android SDK built for x86",
          "manufacturer": "unknown",
          "brand": "Android",
          "serial_number": "EMULATOR32X1X14X0",
          "os_version": "6.0",
          "sdk_version": "23",
          "ip_address": "127.0.0.1",
          "is_primary": false,
          "is_verified": false,
          "first_name": "Akshay",
          "last_name": "Rangnekar"
        }
      ]
    }
  ],
  "title": {
    "records": 1,
    "current_page": 1,
    "total_pages": 1,
    "page_item_count": 1
  }
}

ERROR RESPONSE The request returns JSON structured like below for errors related beneficiary transaction

{
    "status":false, 
    "errors":{
        "beneficiary_account":[
            "Beneficiary account is not approved"
        ],
        "beneficiary_account": [
            "Beneficiary account must exist",
            "Beneficiary account is not valid for the transaction"
        ], 
        "base":[
            "Internal category is not valid for the beneficiary transaction"
        ],
        "owner_account": [
            "Owner account must exist"
        ],
        "amount":[
            "Amount can't be blank"
        ],
        "base":[
            "Amount is not valid for RTGS transaction"
        ],
        "base":[
            "Amount is not valid for NEFT transaction"
        ],
        "base":[
            "Amount is not valid for IMPS transaction"
        ],
        "category":[
            "Category can't be blank", 
            "Category  is not valid/active for the transaction type",
            "Category  is not valid for the transaction type",
            "Category not found"
        ],
        "base":[
            "Beneficiary Account is not yet activated for disbursement. Kindly contact support"
        ],
        "base":[
            "Beneficiary Account is archived. Transaction cannot be created. Kindly contact support"
        ],
        "base":[
            "No Auth Matrix Rule found for the transaction"
        ],
        "base": [
            "Connected banking not active for owner account. Transaction cannot be created. Kindly contact support"
        ],
        "base": [
            "Beneficiary Account doesn't belongs to your entity."
        ],
        "base": [
            "Owner Account doesn't belongs to your entity."
        ],
        "base": [
            "Owner Account is pending. Transaction cannot be created. Kindly contact support"
        ],
        "base": [
            "Owner & Beneficiary Bank Account number are same. Transaction cannot be created. Kindly contact support"
        ],
        "payment_method": [
            "Payment method is not included in the list"
        ],
        "additional_data":
        [
            "Additional data Data data when supplied cannot be blank",
            "Additional data has settings declared under data key/s",
            "Additional data cannot be sent blank for the 'Beneficiary' transaction category",
            "Additional data should be sent blank for the 'Mobile Bill' transaction category",
            "Additional data 'data' is malformed",
            "Additional data configuration is missing / unknown for 'name' key",
            "Additional data 'data' must have position as 1, 2, 3, 4, ...",
            "Additional data 'data' must have unique position in array",
            "Additional data 'data' cannot be declared as empty",
            "Additional data 'data' must have unique value for each name field in array",
            "Additional data 'data' : {\"hello\"=>\"abc\"} must have name, data_type, mandatory and position keys in each hash",
            "Additional data 'data' : {\"name\"=>\"month\", \"value\"=>10, \"position\"=>1, \"data_type\"=>\"string\", \"mandatory\"=>\"Y\"} must have matching value as string as declared in transaction category configuration",
            "Additional data 'data' : {\"name\"=>\"month\", \"position\"=>\"1\", \"data_type\"=>\"string\", \"mandatory\"=>\"Y\", \"value\"=>\"Mon\"} must have position as an integer",
            "Additional data 'data' : {\"name\"=>\"month\", \"position\"=>1, \"data_type\"=>\"list\", \"mandatory\"=>\"Y\", \"value\"=>\"Wed\", \"data\"=>[\"Mon\", \"Tue\"]} must have value as an array of strings",
            "Additional data 'data' : {\"name\"=>\"Accountants\", \"position\"=>4, \"data_type\"=>\"list\", \"mandatory\"=>\"N\", \"value\"=>\"Pradeep, Sachin, Sewaram\"} must have data as an array of strings",
            "Additional data 'data' : {\"name\"=>\"Accountants\", \"position\"=>4, \"data_type\"=>\"list\", \"mandatory\"=>\"N\", \"value\"=>\"Pradeep, Sachin, Sewaram\"} must have value from '[\"Pradeep\", \"Sachin\", \"Sewaram\"]' which is declared in the category configuration",
            "Additional data 'data' : {\"name\"=>\"month\", \"position\"=>1, \"data_type\"=>\"problem\", \"mandatory\"=>\"Y\", \"value\"=>\"Mon\"} must have data_type as one of the following: string, numeric, list, date, year, month_year, time, day, toggle, month, hyperlink, upload, multi_select_list, quantity, date_range, from_year_to_year",
            "Additional data 'data' : {\"name\"=>\"Accountants\", \"position\"=>4, \"data_type\"=>\"list\", \"mandatory\"=>\"N\", \"data\"=>[\"Pradeep\", \"Sachin\", \"Sewaram\"]} must have name, data_type, mandatory, value and position keys in each hash",
            "Additional data 'data' : {\"name\"=>\"leaves\", \"position\"=>2, \"data_type\"=>\"numeric\", \"mandatory\"=>\"N\", \"value\"=>12} must have matching value as numeric as declared in transaction category configuration",
            "Additional data 'data' : {\"name\"=>\"month\", \"position\"=>1, \"data_type\"=>\"problem\", \"mandatory\"=>\"Y\", \"value\"=>\"Mon\"} must have data_type 'string' as declared in category configuration",
            "Additional data 'data' : {\"name\"=>\"month\", \"position\"=>1, \"data_type\"=>\"string\", \"mandatory\"=>\"Y\"} must have a value as it is a mandatory field",
            "Additional data 'data' : {\"name\"=>\"month\", \"position\"=>1, \"data_type\"=>\"string\", \"problem\"=>\"Y\", \"value\"=>\"Mon\"} must have name, data_type, mandatory and position keys in each hash",
            "Additional data 'data' : {\"name\"=>\"month\", \"position\"=>1, \"data_type\"=>\"string\", \"mandatory\"=>\"Y\", \"value\"=>1234} must have matching value as string as declared in transaction category configuration",
            "Additional data 'data' : {\"name\"=>\"month\", \"position\"=>1, \"data_type\"=>\"string\", \"problem\"=>\"Y\", \"value\"=>\"Mon\"} must have mandatory as one of the following: Y, N",
            "Additional data 'data' : {\"name\"=>\"month\", \"position\"=>1, \"data_type\"=>\"string\", \"problem\"=>\"Y\", \"value\"=>\"Mon\"} must have mandatory 'Y' as declared in category configuration",
            "Additional data 'data' : {\"name\"=>\"yearly bill\", \"position\"=>3, \"data_type\"=>\"year\", \"mandatory\"=>\"Y\", \"value\"=>\"24\"} must have matching value as year as declared in transaction category configuration",
            "Additional data 'data' : {\"name\"=>\"Mothly bill\", \"position\"=>1, \"data_type\"=>\"month_year\", \"mandatory\"=>\"Y\", \"value\"=>\"Dec 2024\"} must have matching value as year as declared in transaction category configuration",
            "Additional data 'data' : {\"name\"=>\"yearly bill\", \"position\"=>3, \"data_type\"=>\"year\", \"mandatory\"=>\"Y\"} must have a value as it is a mandatory field",
            "Additional data [\"id\", \"storage\", \"metadata\"] cannot be declared as empty",
            "Additional data [\"filename\", \"size\", \"mime_type\"] must be as declared in transaction category configuration",
            "Additional data 'data' : {\"name\"=>\"Multiselect\", \"position\"=>7, \"data_type\"=>\"multi_select_list\", \"mandatory\"=>\"Y\", \"value\"=>\"[\n          test, \n          2\n        ]\"} must have matching value as multi select as declared in transaction category configuration",
            "Additional data 'data' : {\"name\"=>\"Quantity\", \"position\"=>8, \"data_type\"=>\"quantity\", \"mandatory\"=>\"Y\", \"value\"=>5.0} must have matching value as quantity as declared in transaction category configuration",
            "Additional data 'data' : {\"name\"=>\"DateRange\", \"position\"=>9, \"data_type\"=>\"date_range\", \"mandatory\"=>\"Y\", \"value\"=>\"21/09/2024\"} must have matching value as date_range as declared in transaction category configuration",
            "Additional data 'data' : {\"name\"=>\"DateRange\", \"position\"=>9, \"data_type\"=>\"date_range\", \"mandatory\"=>\"Y\", \"value\"=>{}} must have a value as it is a mandatory field",
            "Additional data [\"start_date\", \"end_date\"] must be as declared in transaction category configuration",
            "Additional data {\"start_date\"=>\" \", \"end_date\"=>\"21/09/2024\"} must have matching value as date_range as declared in transaction category configuration",
            "Additional data {\"from\"=>\"2023\", \"to\"=>\"2024\"} must have matching value as from_year_to_year as declared in transaction category configuration",
            "Additional data [\"from\", \"to\"] must be as declared in transaction category configuration"
        ]
} }

This endpoint creates a Beneficiary Transaction.

UAT HTTP Request

POST https://nxt.api.q2pay.co.in/api/transactions/beneficiary

PRODUCTION HTTP Request

POST https://nxt.api.q2pay.in/api/transactions/beneficiary

Query Parameters

Parameter Default Description Required Sample
amount N.A. amount for beneficiary transaction Yes 67000.0
beneficiary_account_id N.A. beneficiary account id for beneficiary transaction Yes xxxxxxxx-xxxx-xxxx-xxxxxx
owner_account_id N.A. owner account id for beneficiary transaction Yes xxxxxxxx-xxxx-xxxx-xxxxxx
category N.A. category for beneficiary transaction Yes Beneficiary
additional_data N.A. Additional data for beneficiary transaction Yes "data": [ {"name": "month", "position": 1,"data_type": "string","mandatory": "Y", "value": "Mon"}]
distribution_remark N.A. distribution remark for beneficiary transaction No dec month
payment_method N.A. payment method for beneficiary transaction optional RTGS
confidential_transaction N.A. confidential transaction for beneficiary transaction optional true, false
labels N.A labels for owner account No ["building expense"]

Service Details

Service ID Description
CBeneficiaryTxn Create Beneficiary Transaction

Approve Beneficiary Transaction

curl -X PUT "https://<environmenturl>/api/transactions/beneficiary/approve"
  -H "X-Api-Key: <your secure token>"
  -H "Content-Type: application/json"
  -d "{ 
    "txn_id":  ["xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx"]
      }"

require 'net/http'
require 'uri'
require 'json'

uri = URI.parse("https://<environmenturl>/api/transactions/beneficiary/approve") header = {'X-Api-Key' => '<your secure token>', 'Content-Type' => 'application/json'} body = { "txn_id": ["xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx"] } http = Net::HTTP.new(uri.host, uri.port) http.use_ssl = true request = Net::HTTP::Put.new(uri.request_uri, header) request.body = body.to_json response = http.request(request)

const data = {
   "txn_id":  ["xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx"]
};

fetch('https://<environmenturl>/api/transactions/beneficiary/approve', { method: 'PUT', headers: { 'X-Api-Key': '<your secure token>', 'Content-Type': 'application/json' }, body: JSON.stringify(data) }) .then(response => response.json()) .then(data => console.log(data)) .catch(error => console.error(error));

The below example can be sent as a request to the API.

{
  "txn_id":  ["xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx"]
}

The below example can be sent as a request to the API for multiple transaction id.

{
  "txn_id":  ["xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx","xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx"]
}

SUCCESS RESPONSE The request returns JSON structured like below on successful Beneficiary transaction approve

{
  "status": true,
  "total_count": 1,
  "total_amount": "25.0",
  "transactions": [
    {
      "total_amount": "25.0",
      "txn_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
      "amount": "25.0",
      "category": "Mobile Bill",
      "internal_transaction": false,
      "lifecycle_status": "approved",
      "distribution_remark": "Testing",
      "txn_initiator": "Sneha Gaikwad",
      "approved": "Y",
      "confidential_transaction": "Y",
      "approved_at": "xxxxxxxx",
      "payment_charge": "0.0",
      "tax_amount": "0.0",
      "entity_id": "ABC12",
      "rejected": false,
      "refactored": false,
      "beneficiary_account_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
      "beneficiary_account_name": "ANKITA ANIL GAYKAR",
      "beneficiary_account_bank_acc_no": "123456789",
      "beneficiary_account_ifsc_code": "SBIN0012346",
      "beneficiary_account_bank_name": "State Bank of India",
      "beneficiary_account_approval_status": "approved",
      "owner_account_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
      "owner_account_bank_acc_no": "000198765434",
      "owner_account_ifsc_code": "HDFC0000220",
      "owner_account_bank_name": "HDFC Bank",
      "owner_account_type": "Current Account",
      "owner_account_balance": "0.0",
      "owner_account_balance_last_fetched_at": "xxxxxxxx",
      "owner_account_balance_last_fetched_at_in_words": "about 4 hours ago",
      "additional_data": {
        "data": [
          {
            "name": "month",
            "position": 1,
            "data_type": "string",
            "mandatory": "Y",
            "value": "Mon"
          },
          {
            "name": "leaves",
            "position": 2,
            "data_type": "numeric",
            "mandatory": "Y",
            "value": 1233
          },
          {
            "name": "PAN",
            "position": 3,
            "data_type": "string",
            "mandatory": "N",
            "value": "Pan no"
          },
          {
            "data": [
              "Pradeep",
              "Sachin",
              "Sewaram"
            ],
            "name": "Accountants",
            "position": 4,
            "data_type": "list",
            "mandatory": "N",
            "value": "Pradeep"
          },
          {
            "name": "month 1",
            "position": 5,
            "data_type": "time",
            "mandatory": "Y",
            "value": "09:34"
          },
          {
            "name": "Day",
            "position": 6,
            "data_type": "day",
            "mandatory": "Y",
            "value": "Monday"
          },
          {
            "name": "Dummy",
            "position": 7,
            "data_type": "toggle",
            "mandatory": "Y",
            "value": true
          },
          {
            "name": "Month",
            "position": 8,
            "data_type": "month",
            "mandatory": "Y",
            "value": "March"
          },
          {
            "name": "Hyperlink",
            "position": 9,
            "data_type": "hyperlink",
            "mandatory": "Y",
            "value": "https://nxt.api.q2pay.co.in/api/transaction_auth_matrix.json"
            },
            {
              "name": "File",
              "position": 10,
              "data_type": "upload",
              "mandatory": "Y",
                "value": {
                  "id": "c68cc4e7d54381cc46384f194c09ce2c.png",
                  "storage": "cache",
                  "metadata": {
                    "filename": "favicon.png",
                    "size": 62260,
                    "mime_type": "image/png"
                  },
                  "file_url": "https://your-bucket.s3.amazonaws.com/store/c68cc4e7d54381cc46384f194c09ce2c.png"
                }
              },
          {
            "name": "Date",
            "position": 11,
            "data_type": "date",
            "mandatory": "Y",
            "value": "23/04/2023"
          },
          {
            "name": "Year",
            "position": 12,
            "data_type": "year",
            "mandatory": "Y",
            "value": "2024"
          },
          {
            "name": "Month_Year",
            "position": 13,
            "data_type": "month_year",
            "mandatory": "Y",
            "value": "12/2024"
          },
          {
            "name": "Multiselect",
            "position": 14,
            "data_type": "multi_select_list",
            "mandatory": "Y",
            "data": [
              "ab",
              "abc",
              "abcd"
            ],
            "value": [
               "ab",
               "abc"
            ]
          },
          {
            "name": "Quantity",
            "position": 15,
            "data_type": "quantity",
            "mandatory": "Y",
            "value": 5
          },
          {
            "name": "DateRange",
            "position": 16,
            "data_type": "date_range",
            "mandatory": "Y",
            "value": {
              "start_date": "21/08/2023",
              "end_date": "21/10/2024"
            }
          },
          {
            "name": "YearRange",
            "position": 17,
            "data_type": "from_year_to_year",
            "mandatory": "Y",
            "value": {
              "from": 2030,
              "to": 2034
            }
          }
        ]
      },
      "created_on": "xxxxxxxx",
      "last_updated_user_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
      "last_updated_status": "Approved",
      "last_updated_timestamp": "xxxxxxxx",
      "last_updated_user_name": "sidharth shukla",
      "distribution_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
      "distribution_identifier": "xxxxxxxxxxxxxxxxxxxxxxxx",
      "distribution_settlement_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
      "distribution_bank": "State Bank of India",
      "distribution_amount": "25.0",
      "distribution_mode_of_payment": "NEFT",
      "distribution_lifecycle_status": "created",
      "distribution_approved": false,
      "distribution_approval_strategy": "system",
      "distribution_logs": [
        {
          "action": "Created",
          "user_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
          "timestamp": "2024-04-10T09:55:17.671Z",
          "user_full_name": "sidharth shukla",
          "user_platform_details": null
        }
      ],
      "logs": [
        {
          "action": "Created",
          "user_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
          "platform": "web",
          "last_name": "Gaikwad",
          "last_used": "2024-04-10T09:51:29.895Z",
          "timestamp": "2024-04-10T09:51:29.923Z",
          "first_name": "Sneha",
          "ip_address": "103.212.154.226",
          "is_primary": false,
          "os_version": "Windows 10",
          "request_ip": "103.212.154.226",
          "is_verified": false,
          "browser_name": "google chrome",
          "logged_in_flag": true,
          "logged_in_time": "2024-04-10T09:48:56.117Z",
          "user_full_name": "Sneha Gaikwad"
        },
        {
          "action": "Approved",
          "user_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
          "platform": "web",
          "last_name": "shukla",
          "last_used": "2024-04-10T09:55:17.533Z",
          "timestamp": "2024-04-10T09:55:17.604Z",
          "first_name": "sidharth",
          "ip_address": "103.212.154.226",
          "is_primary": false,
          "os_version": "Windows 10",
          "request_ip": "103.212.154.226",
          "is_verified": false,
          "browser_name": "google chrome",
          "final_approval": true,
          "logged_in_flag": true,
          "logged_in_time": "2024-04-10T09:55:06.039Z",
          "user_full_name": "sidharth shukla",
          "authorization_rule": "Approver~1"
        }
      ]
    }
  ],
  "title": {
    "records": 1,
    "current_page": 1,
    "total_pages": 1,
    "page_item_count": 50
  }
}

ERROR RESPONSE The request returns JSON structured like below for errors related beneficiary transaction

{
    "status":false,
    "action":"Not performed",
    "errors":{
        "base":[
            "Invalid / Insufficient parameters"
        ],
        "base":[
            "No transactions found for transaction ids: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx"
        ],
"base":[ "All transactions do not belong to the same entity / Few transactions are already approved or are abandoned/cancelled" ],
"base":[ { "id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx", "reason":[ "User is not authorized to approve transaction." ] } ], "base": [ { "id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx", "errors": "Beneficiary account is not approved" } ], "base":[ { "id":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx", "errors":[ { "reason":"User is not authorized to approve (duplicate approval)" } ] } ]
} }

This endpoint approve a Beneficiary Transaction.

UAT HTTP Request

PUT https://nxt.api.q2pay.co.in/api/transactions/beneficiary/approve

PRODUCTION HTTP Request

PUT https://nxt.api.q2pay.in/api/transactions/beneficiary/approve

Query Parameters

Parameter Default Description Required Sample
txn_id N.A. txn id for beneficiary transaction Yes [xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxx ,xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxx]

Service Details

Service ID Description
ABeneficiaryTxn Approve Beneficiary Transaction

Reject Beneficiary Transaction

curl -X PUT "https://<environmenturl>/api/transactions/beneficiary/reject"
  -H "X-Api-Key: <your secure token>"
  -H "Content-Type: application/json"
  -d "{ 
    "txn_id":  ["xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx"],
    "reason" : "Another transaction is already in progress"
      }"

require 'net/http'
require 'uri'
require 'json'

uri = URI.parse("https://<environmenturl>/api/transactions/beneficiary/reject") header = {'X-Api-Key' => '<your secure token>', 'Content-Type' => 'application/json'} body = { "txn_id": ["xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx"], "reason" : "Another transaction is already in progress" } http = Net::HTTP.new(uri.host, uri.port) http.use_ssl = true request = Net::HTTP::Put.new(uri.request_uri, header) request.body = body.to_json response = http.request(request)

const data = {
   "txn_id":  ["xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx"],
   "reason" : "Another transaction is already in progress"
};

fetch('https://<environmenturl>/api/transactions/beneficiary/reject', { method: 'PUT', headers: { 'X-Api-Key': '<your secure token>', 'Content-Type': 'application/json' }, body: JSON.stringify(data) }) .then(response => response.json()) .then(data => console.log(data)) .catch(error => console.error(error));

The below example can be sent as a request to the API.

{
  "txn_id":  ["xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx"],
  "reason" : "Another transaction is already in progress"
}

The below example can be sent as a request to the API for multiple transaction id.

{
  "txn_id":  ["xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx","xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx"],
  "reason" : "Another transaction is already in progress"
}

SUCCESS RESPONSE The request returns JSON structured like below on successful Beneficiary transaction reject

{
  "status": true,
  "total_count": 1,
  "total_amount": "25.0",
  "transactions": [
    {
      "total_amount": "25.0",
      "txn_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
      "amount": "25.0",
      "category": "Mobile Bill",
      "internal_transaction": false,
      "lifecycle_status": "rejected",
      "distribution_remark": "Testing",
      "txn_initiator": "Sneha Gaikwad",
      "approved": "N",
      "confidential_transaction": "N",
      "approved_at": 0,
      "payment_charge": "0.0",
      "tax_amount": "0.0",
      "entity_id": "ABC12",
      "rejected": true,
      "rejection_reason": "update transaction method",
      "rejected_by": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
      "rejected_at": "2024-04-10T10:18:09.447Z",
      "refactored": false,
      "beneficiary_account_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
      "beneficiary_account_name": "ANKITA ANIL GAYKAR",
      "beneficiary_account_bank_acc_no": "1234567899",
      "beneficiary_account_ifsc_code": "SBIN2333445",
      "beneficiary_account_bank_name": "State Bank of India",
      "beneficiary_account_approval_status": "approved",
      "owner_account_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
      "owner_account_bank_acc_no": "1111999876544",
      "owner_account_ifsc_code": "HDFC0000223",
      "owner_account_bank_name": "HDFC Bank",
      "owner_account_type": "Current Account",
      "owner_account_balance": "0.0",
      "owner_account_balance_last_fetched_at": "xxxxxxxx",
      "owner_account_balance_last_fetched_at_in_words": "about 4 hours ago",
      "additional_data": {
        "data": [
          {
            "name": "month",
            "position": 1,
            "data_type": "string",
            "mandatory": "Y",
            "value": "Mon"
          },
          {
            "name": "leaves",
            "position": 2,
            "data_type": "numeric",
            "mandatory": "Y",
            "value": 1233
          },
          {
            "name": "PAN",
            "position": 3,
            "data_type": "string",
            "mandatory": "N",
            "value": "Pan no"
          },
          {
            "data": [
              "Pradeep",
              "Sachin",
              "Sewaram"
            ],
            "name": "Accountants",
            "position": 4,
            "data_type": "list",
            "mandatory": "N",
            "value": "Pradeep"
          },
          {
            "name": "month 1",
            "position": 5,
            "data_type": "time",
            "mandatory": "Y",
            "value": "09:34"
          },
          {
            "name": "Day",
            "position": 6,
            "data_type": "day",
            "mandatory": "Y",
            "value": "Monday"
          },
          {
            "name": "Dummy",
            "position": 7,
            "data_type": "toggle",
            "mandatory": "Y",
            "value": true
          },
          {
            "name": "Month",
            "position": 8,
            "data_type": "month",
            "mandatory": "Y",
            "value": "March"
          },
          {
            "name": "Hyperlink",
            "position": 9,
            "data_type": "hyperlink",
            "mandatory": "Y",
            "value": "https://nxt.api.q2pay.co.in/api/transaction_auth_matrix.json"
          },
            {
              "name": "File",
              "position": 10,
              "data_type": "upload",
              "mandatory": "Y",
                "value": {
                  "id": "c68cc4e7d54381cc46384f194c09ce2c.png",
                  "storage": "cache",
                  "metadata": {
                    "filename": "favicon.png",
                    "size": 62260,
                    "mime_type": "image/png"
                  },
                  "file_url": "https://your-bucket.s3.amazonaws.com/store/c68cc4e7d54381cc46384f194c09ce2c.png"
                }
              },
          {
            "name": "Date",
            "position": 11,
            "data_type": "date",
            "mandatory": "Y",
            "value": "23/04/2023"
          },
          {
            "name": "Year",
            "position": 12,
            "data_type": "year",
            "mandatory": "Y",
            "value": "2024"
          },
          {
            "name": "Month_Year",
            "position": 13,
            "data_type": "month_year",
            "mandatory": "Y",
            "value": "12/2024"
          },
          {
            "name": "Multiselect",
            "position": 14,
            "data_type": "multi_select_list",
            "mandatory": "Y",
            "data": [
              "ab",
              "abc",
              "abcd"
            ],
            "value": [
               "ab",
               "abc"
            ]
          },
          {
            "name": "Quantity",
            "position": 15,
            "data_type": "quantity",
            "mandatory": "Y",
            "value": 5
          },
          {
            "name": "DateRange",
            "position": 16,
            "data_type": "date_range",
            "mandatory": "Y",
            "value": {
              "start_date": "21/08/2023",
              "end_date": "21/10/2024"
            }
          },
          {
            "name": "YearRange",
            "position": 17,
            "data_type": "from_year_to_year",
            "mandatory": "Y",
            "value": {
              "from": 2030,
              "to": 2034
            }
          }
        ]
      },
      "created_on": "xxxxxxxx",
      "last_updated_user_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
      "last_updated_status": "Rejected",
      "last_updated_timestamp": "xxxxxxxx",
      "last_updated_user_name": "Sneha Gaikwad",
      "logs": [
        {
          "action": "Created",
          "user_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
          "platform": "web",
          "last_name": "Gaikwad",
          "last_used": "2024-04-10T10:17:46.130Z",
          "timestamp": "2024-04-10T10:17:46.159Z",
          "first_name": "Neha",
          "ip_address": "182.79.233.142",
          "is_primary": false,
          "os_version": "Windows 10",
          "request_ip": "182.79.233.142",
          "is_verified": false,
          "browser_name": "google chrome",
          "logged_in_flag": true,
          "logged_in_time": "2024-04-10T10:15:42.396Z",
          "user_full_name": "Sneha Gaikwad"
        },
        {
          "action": "Rejected",
          "user_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
          "platform": "web",
          "last_name": "Gaikwad",
          "last_used": "2024-04-10T10:18:09.398Z",
          "timestamp": "2024-04-10T10:18:09.454Z",
          "first_name": "Sneha",
          "ip_address": "103.212.154.226",
          "is_primary": false,
          "os_version": "Windows 10",
          "request_ip": "103.212.154.226",
          "is_verified": false,
          "browser_name": "google chrome",
          "logged_in_flag": true,
          "logged_in_time": "2024-04-10T10:15:42.396Z",
          "user_full_name": "Sneha Gaikwad",
          "rejection_reason": "update transaction method"
        }
      ]
    }
  ],
  "title": {
    "records": 1,
    "current_page": 1,
    "total_pages": 1,
    "page_item_count": 50
  }
}

ERROR RESPONSE The request returns JSON structured like below for errors related beneficiary transaction

{
    "status":false,
    "action":"Not performed",
    "errors":{
        "base":[
            "Invalid / Insufficient parameters"
        ],
        "base":
        [
            "No transactions found for transaction ids: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx"
        ],
        "base":
        [
            "All transactions do not belong to the same entity"
        ],
        "base":[
            {
                "id":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx", 
                "errors":[
                    "Reason must be at least 10 characters"
                ]
            }
        ],
        "base":[
            {
                "id":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
                "errors":"Transaction cannot be rejected due to current status"
            }
        ]
} }

This endpoint reject a Beneficiary Transaction.

UAT HTTP Request

PUT https://nxt.api.q2pay.co.in/api/transactions/beneficiary/reject

PRODUCTION HTTP Request

PUT https://nxt.api.q2pay.in/api/transactions/beneficiary/reject

Query Parameters

Parameter Default Description Required Sample
txn_id N.A. txn id for beneficiary transaction Yes [xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxx ,xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxx]
reason N.A. reason for beneficiary transaction Yes Another transaction is already in progress

Service Details

Service ID Description
ABeneficiaryTxn Reject Beneficiary Transaction

Actionable Beneficiary Transaction

curl -X GET "https://<environmenturl>/api/transactions/beneficiary/actionable"
  -H "X-Api-Key: <your secure token>"
  -H "Content-Type: application/json"
  -d "{ 
       "entity_id" : "ABC12",
       "category": "Beneficiary"
      }"

require 'net/http'
require 'uri'
require 'json'

uri = URI.parse("https://<environmenturl>/api/transactions/beneficiary/actionable") header = {'X-Api-Key' => '<your secure token>', 'Content-Type' => 'application/json'} body = { "entity_id" : "ABC12", "category": "Beneficiary" } http = Net::HTTP.new(uri.host, uri.port) http.use_ssl = true request = Net::HTTP::Get.new(uri.request_uri, header) request.body = body.to_json response = http.request(request)

const data = {
  "entity_id" : "ABC12",
  "category": "Beneficiary"
};

fetch('https://<environmenturl>/api/transactions/beneficiary/actionable', { method: 'GET', headers: { 'X-Api-Key': '<your secure token>', 'Content-Type': 'application/json' }, body: JSON.stringify(data) }) .then(response => response.json()) .then(data => console.log(data)) .catch(error => console.error(error));

The below example can be sent as a request to the API.

{
 "entity_id" : "ABC12",
 "category": "Beneficiary"
}

SUCCESS RESPONSE The request returns JSON structured like below on successful Beneficiary transaction actionable

{
  "status": true,
  "total_count": 1,
  "total_amount": "2000.0",
  "transactions": [
    {
      "total_amount": "1000.0",
      "txn_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
      "amount": "1000.0",
      "category": "Beneficiary",
      "internal_transaction": false,
      "lifecycle_status": "pending",
      "txn_initiator": "Priya jawale",
      "approved": "N",
      "confidential_transaction": "N",
      "approved_at": 0,
      "payment_charge": "0.0",
      "tax_amount": "0.0",
      "entity_id": "ABC12",
      "rejected": false,
      "refactored": false,
      "beneficiary_account_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
      "beneficiary_account_name": "Mr AKASH PRAMOD BAGUL",
      "beneficiary_account_bank_acc_no": "12345678",
      "beneficiary_account_ifsc_code": "SBIN0031200",
      "beneficiary_account_bank_name": "State Bank of India",
      "beneficiary_account_approval_status": "approved",
      "owner_account_id":"xxxxxxxx-xxxx-xxxx-xxxxxx",
      "owner_account_bank_acc_no":"9482940300",
      "owner_account_ifsc_code":"ICIC0000112",
      "owner_account_bank_name":"ICICI Bank",
      "owner_account_type":"Current Account",
      "owner_account_balance":"1500.0",
      "owner_account_balance_last_fetched_at":"xxxxxxxx",
      "owner_account_balance_last_fetched_at_in_words":"less than a minute ago"
      "additional_data": {
        "data": [
          {
            "name": "month",
            "position": 1,
            "data_type": "string",
            "mandatory": "Y",
            "value": "Mon"
          },
          {
            "name": "leaves",
            "position": 2,
            "data_type": "numeric",
            "mandatory": "Y",
            "value": 1233
          },
          {
            "name": "PAN",
            "position": 3,
            "data_type": "string",
            "mandatory": "N",
            "value": "Pan no"
          },
          {
            "data": [
              "Pradeep",
              "Sachin",
              "Sewaram"
            ],
            "name": "Accountants",
            "position": 4,
            "data_type": "list",
            "mandatory": "N",
            "value": "Pradeep"
          },
          {
            "name": "month 1",
            "position": 5,
            "data_type": "time",
            "mandatory": "Y",
            "value": "09:34"
          },
          {
            "name": "Day",
            "position": 6,
            "data_type": "day",
            "mandatory": "Y",
            "value": "Monday"
          },
          {
            "name": "Dummy",
            "position": 7,
            "data_type": "toggle",
            "mandatory": "Y",
            "value": true
          },
          {
            "name": "Month",
            "position": 8,
            "data_type": "month",
            "mandatory": "Y",
            "value": "March"
          },
          {
            "name": "Hyperlink",
            "position": 9,
            "data_type": "hyperlink",
            "mandatory": "Y",
            "value": "https://nxt.api.q2pay.co.in/api/transaction_auth_matrix.json"
            },
            {
              "name": "File",
              "position": 10,
              "data_type": "upload",
              "mandatory": "Y",
                "value": {
                  "id": "c68cc4e7d54381cc46384f194c09ce2c.png",
                  "storage": "cache",
                  "metadata": {
                    "filename": "favicon.png",
                    "size": 62260,
                    "mime_type": "image/png"
                  },
                  "file_url": "https://your-bucket.s3.amazonaws.com/store/c68cc4e7d54381cc46384f194c09ce2c.png"
                }
              },
          {
            "name": "Date",
            "position": 11,
            "data_type": "date",
            "mandatory": "Y",
            "value": "23/04/2023"
          },
          {
            "name": "Year",
            "position": 12,
            "data_type": "year",
            "mandatory": "Y",
            "value": "2024"
          },
          {
            "name": "Month_Year",
            "position": 13,
            "data_type": "month_year",
            "mandatory": "Y",
            "value": "12/2024"
          },
          {
            "name": "Multiselect",
            "position": 14,
            "data_type": "multi_select_list",
            "mandatory": "Y",
            "data": [
              "ab",
              "abc",
              "abcd"
            ],
            "value": [
               "ab",
               "abc"
            ]
          },
          {
            "name": "Quantity",
            "position": 15,
            "data_type": "quantity",
            "mandatory": "Y",
            "value": 5
          },
          {
            "name": "DateRange",
            "position": 16,
            "data_type": "date_range",
            "mandatory": "Y",
            "value": {
              "start_date": "21/08/2023",
              "end_date": "21/10/2024"
            }
          },
          {
            "name": "YearRange",
            "position": 17,
            "data_type": "from_year_to_year",
            "mandatory": "Y",
            "value": {
              "from": 2030,
              "to": 2034
            }
          }
        ]
      },
      "created_on": "xxxxxxxx",
      "last_updated_user_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
      "last_updated_status": "Created",
      "last_updated_timestamp": "xxxxxxxx",
      "last_updated_user_name": "Akshay Rangnekar"
    }
  ],
  "title": {
    "records": 1,
    "current_page": 1,
    "total_pages": 1,
    "page_item_count": 50
  }
}

This endpoint actionable a Beneficiary Transaction.

UAT HTTP Request

GET https://nxt.api.q2pay.co.in/api/transactions/beneficiary/actionable

PRODUCTION HTTP Request

GET https://nxt.api.q2pay.in/api/transactions/beneficiary/actionable

Query Parameters

Parameter Default Description Required Sample
entity_id N.A. entity id for beneficiary transaction Yes (Admin) ABC12
category N.A. category for beneficiary transaction No Beneficiary
labels N.A. labels for beneficiary transaction No ["audit expense"]

Service Details

Service ID Description
VBeneficiaryTxn Actionable Beneficiary Transaction

Add Status Beneficiary Transaction

curl -X PUT "https://<environmenturl>/api/transactions/beneficiary/add_status"
  -H "X-Api-Key: <your secure token>"
  -H "Content-Type: application/json"
  -d "{ 
    "txn_id":  ["xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx"],
    "status": "abandoned"
      }"

require 'net/http'
require 'uri'
require 'json'

uri = URI.parse("https://<environmenturl>/api/transactions/beneficiary/add_status") header = {'X-Api-Key' => '<your secure token>', 'Content-Type' => 'application/json'} body = { "txn_id": ["xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx"], "status": "abandoned" } http = Net::HTTP.new(uri.host, uri.port) http.use_ssl = true request = Net::HTTP::Put.new(uri.request_uri, header) request.body = body.to_json response = http.request(request)

const data = {
   "txn_id":  ["xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx"],
   "status": "abandoned"
};

fetch('https://<environmenturl>/api/transactions/beneficiary/add_status', { method: 'PUT', headers: { 'X-Api-Key': '<your secure token>', 'Content-Type': 'application/json' }, body: JSON.stringify(data) }) .then(response => response.json()) .then(data => console.log(data)) .catch(error => console.error(error));

The below example can be sent as a request to the API.

{
  "txn_id":  ["xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx"],
  "status": "abandoned"
}

The below example can be sent as a request to the API for multiple transaction id.

{
  "txn_id":  ["xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx","xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx"],
  "status": "abandoned"
}

SUCCESS RESPONSE The request returns JSON structured like below on successful Beneficiary transaction add status

{
    "status":true,
    "lifecycle_status":"abandoned", 
    "txn_id":[
        "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx"
        ]
}

ERROR RESPONSE The request returns JSON structured like below for errors related beneficiary transaction

{
    "status":false,
    "action":"Not performed", 
    "errors":{
        "base":[
            "Invalid / Insufficient parameters"
        ],
        "base":[
            "Unqualified status: pending"
        ],
        "base":[
            "Unqualified status: "
        ],
        "base":[
            "All transactions do not belong to the same entity"
        ], 
        "base":[
            {
                "id":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
                "reason":[
                    "Transaction cannot be updated as it is already having status : abandoned"
                ]
            }
        ],
        "base":[
            "No transactions found for transaction ids: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx"
        ]
    }
}

This endpoint add status a Beneficiary Transaction.

UAT HTTP Request

PUT https://nxt.api.q2pay.co.in/api/transactions/beneficiary/add_status

PRODUCTION HTTP Request

PUT https://nxt.api.q2pay.in/api/transactions/beneficiary/add_status

Query Parameters

Parameter Default Description Required Sample
txn_id N.A. txn id for beneficiary transaction Yes [xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxx ,xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxx]
status N.A. status for beneficiary transaction Yes abandoned

Service Details

Service ID Description
Admin add status Beneficiary Transaction

Change Category Beneficiary Transaction

curl -X PUT "https://<environmenturl>/api/transactions/beneficiary/change_category"
  -H "X-Api-Key: <your secure token>"
  -H "Content-Type: application/json"
  -d "{ 
    "txn_id":  ["xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx"],
    "category_label": "Salary"
      }"

require 'net/http'
require 'uri'
require 'json'

uri = URI.parse("https://<environmenturl>/api/transactions/beneficiary/change_category") header = {'X-Api-Key' => '<your secure token>', 'Content-Type' => 'application/json'} body = { "txn_id": ["xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx"], "category_label": "Salary" } http = Net::HTTP.new(uri.host, uri.port) http.use_ssl = true request = Net::HTTP::Put.new(uri.request_uri, header) request.body = body.to_json response = http.request(request)

const data = {
   "txn_id":  ["xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx"],
   "category_label": "Salary"
};

fetch('https://<environmenturl>/api/transactions/beneficiary/change_category', { method: 'PUT', headers: { 'X-Api-Key': '<your secure token>', 'Content-Type': 'application/json' }, body: JSON.stringify(data) }) .then(response => response.json()) .then(data => console.log(data)) .catch(error => console.error(error));

The below example can be sent as a request to the API.

{
  "txn_id":  ["xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx"],
  "category_label": "Salary"
}

The below example can be sent as a request to the API for multiple transaction id.

{
  "txn_id":  ["xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx","xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx"],
  "category_label": "Salary"
}

SUCCESS RESPONSE The request returns JSON structured like below on successful Beneficiary transaction change category

{
    "status": true,
    "category_label": "Salary",
    "txn_id": [
        "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx"
    ]
}

ERROR RESPONSE The request returns JSON structured like below for errors related beneficiary transaction

{
    "status":false,
    "action":"Not performed", 
    "errors":{
        "base":[
            "Invalid / Insufficient parameters"
        ],
        "base":[
            "All transactions do not belong to the same entity"
        ], 
        "base":[
            "All transactions already have the specified category label."
        ],
        "base":[
            "No transactions found for transaction ids: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx"
        ]
    }
}

This endpoint will change category a Beneficiary Transaction.

UAT HTTP Request

PUT https://nxt.api.q2pay.co.in/api/transactions/beneficiary/change_category

PRODUCTION HTTP Request

PUT https://nxt.api.q2pay.in/api/transactions/beneficiary/change_category

Query Parameters

Parameter Default Description Required Sample
txn_id N.A. txn id for beneficiary transaction Yes [xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxx ,xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxx]
category_label N.A. category label for beneficiary transaction Yes Salary

Service Details

Service ID Description
Admin Change Category Beneficiary Transactions

Refactor Beneficiary Transaction

curl -X PUT "https://<environmenturl>/api/transactions/beneficiary/refactor"
  -H "X-Api-Key: <your secure token>"
  -H "Content-Type: application/json"
  -d "{ 
    "txn_id":  ["xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx"]
      }"

require 'net/http'
require 'uri'
require 'json'

uri = URI.parse("https://<environmenturl>/api/transactions/beneficiary/refactor") header = {'X-Api-Key' => '<your secure token>', 'Content-Type' => 'application/json'} body = { "txn_id": ["xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx"] } http = Net::HTTP.new(uri.host, uri.port) http.use_ssl = true request = Net::HTTP::Put.new(uri.request_uri, header) request.body = body.to_json response = http.request(request)

const data = {
   "txn_id":  ["xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx"]
};

fetch('https://<environmenturl>/api/transactions/beneficiary/refactor', { method: 'PUT', headers: { 'X-Api-Key': '<your secure token>', 'Content-Type': 'application/json' }, body: JSON.stringify(data) }) .then(response => response.json()) .then(data => console.log(data)) .catch(error => console.error(error));

The below example can be sent as a request to the API.

{
  "txn_id":  ["xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx"]
}

The below example can be sent as a request to the API for multiple transaction id.

{
  "txn_id":  ["xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx","xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx"]
}

SUCCESS RESPONSE The request returns JSON structured like below on successful Beneficiary transaction refactor

{
  "status": true,
  "total_count": 1,
  "total_amount": "25.0",
  "transactions": [
    {
      "total_amount": "25.0",
      "txn_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
      "amount": "25.0",
      "category": "Mobile Bill",
      "internal_transaction": false,
      "lifecycle_status": "rejected",
      "distribution_remark": "Testing",
      "txn_initiator": "Sneha Gaikwad",
      "approved": "N",
      "confidential_transaction": "N",
      "approved_at": 0,
      "payment_charge": "0.0",
      "tax_amount": "0.0",
      "entity_id": "ABC12",
      "rejected": true,
      "rejected_by": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
      "rejected_at": "2024-04-10T10:18:09.447Z",
      "refactored": true,
      "refactored_by": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
      "refactored_at": "2024-04-10T10:18:09.447Z",
      "beneficiary_account_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
      "beneficiary_account_name": "ANKITA ANIL GAYKAR",
      "beneficiary_account_bank_acc_no": "1234567899",
      "beneficiary_account_ifsc_code": "SBIN2333445",
      "beneficiary_account_bank_name": "State Bank of India",
      "beneficiary_account_approval_status": "approved",
      "owner_account_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
      "owner_account_bank_acc_no": "1111999876544",
      "owner_account_ifsc_code": "HDFC0000223",
      "owner_account_bank_name": "HDFC Bank",
      "owner_account_type": "Current Account",
      "owner_account_balance": "0.0",
      "owner_account_balance_last_fetched_at": "xxxxxxxx",
      "owner_account_balance_last_fetched_at_in_words": "about 4 hours ago",
      "additional_data": {
        "data": [
          {
            "name": "month",
            "position": 1,
            "data_type": "string",
            "mandatory": "Y",
            "value": "Mon"
          },
          {
            "name": "leaves",
            "position": 2,
            "data_type": "numeric",
            "mandatory": "Y",
            "value": 1233
          },
          {
            "name": "PAN",
            "position": 3,
            "data_type": "string",
            "mandatory": "N",
            "value": "Pan no"
          },
          {
            "data": [
              "Pradeep",
              "Sachin",
              "Sewaram"
            ],
            "name": "Accountants",
            "position": 4,
            "data_type": "list",
            "mandatory": "N",
            "value": "Pradeep"
          },
          {
            "name": "month 1",
            "position": 5,
            "data_type": "time",
            "mandatory": "Y",
            "value": "09:34"
          },
          {
            "name": "Day",
            "position": 6,
            "data_type": "day",
            "mandatory": "Y",
            "value": "Monday"
          },
          {
            "name": "Dummy",
            "position": 7,
            "data_type": "toggle",
            "mandatory": "Y",
            "value": true
          },
          {
            "name": "Month",
            "position": 8,
            "data_type": "month",
            "mandatory": "Y",
            "value": "March"
          },
          {
            "name": "Hyperlink",
            "position": 9,
            "data_type": "hyperlink",
            "mandatory": "Y",
            "value": "https://nxt.api.q2pay.co.in/api/transaction_auth_matrix.json"
           },
            {
              "name": "File",
              "position": 10,
              "data_type": "upload",
              "mandatory": "Y",
                "value": {
                  "id": "c68cc4e7d54381cc46384f194c09ce2c.png",
                  "storage": "cache",
                  "metadata": {
                    "filename": "favicon.png",
                    "size": 62260,
                    "mime_type": "image/png"
                  },
                  "file_url": "https://your-bucket.s3.amazonaws.com/store/c68cc4e7d54381cc46384f194c09ce2c.png"
                }
              },
          {
            "name": "Date",
            "position": 11,
            "data_type": "date",
            "mandatory": "Y",
            "value": "23/04/2023"
          },
          {
            "name": "Year",
            "position": 12,
            "data_type": "year",
            "mandatory": "Y",
            "value": "2024"
          },
          {
            "name": "Month_Year",
            "position": 13,
            "data_type": "month_year",
            "mandatory": "Y",
            "value": "12/2024"
          },
          {
            "name": "Multiselect",
            "position": 14,
            "data_type": "multi_select_list",
            "mandatory": "Y",
            "data": [
              "ab",
              "abc",
              "abcd"
            ],
            "value": [
               "ab",
               "abc"
            ]
          },
          {
            "name": "Quantity",
            "position": 15,
            "data_type": "quantity",
            "mandatory": "Y",
            "value": 5
          },
          {
            "name": "DateRange",
            "position": 16,
            "data_type": "date_range",
            "mandatory": "Y",
            "value": {
              "start_date": "21/08/2023",
              "end_date": "21/10/2024"
            }
          },
          {
            "name": "YearRange",
            "position": 17,
            "data_type": "from_year_to_year",
            "mandatory": "Y",
            "value": {
              "from": 2030,
              "to": 2034
            }
          }
        ]
      },
      "created_on": "xxxxxxxx",
      "last_updated_user_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
      "last_updated_status": "Refactored",
      "last_updated_timestamp": "xxxxxxxx",
      "last_updated_user_name": "Sneha Gaikwad",
      "logs": [
        {
          "action": "Created",
          "user_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
          "platform": "web",
          "last_name": "Gaikwad",
          "last_used": "2024-04-10T10:17:46.130Z",
          "timestamp": "2024-04-10T10:17:46.159Z",
          "first_name": "Neha",
          "ip_address": "182.79.233.142",
          "is_primary": false,
          "os_version": "Windows 10",
          "request_ip": "182.79.233.142",
          "is_verified": false,
          "browser_name": "google chrome",
          "logged_in_flag": true,
          "logged_in_time": "2024-04-10T10:15:42.396Z",
          "user_full_name": "Sneha Gaikwad"
        },
        {
          "action": "Rejected",
          "user_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
          "platform": "web",
          "last_name": "Gaikwad",
          "last_used": "2024-04-10T10:18:09.398Z",
          "timestamp": "2024-04-10T10:18:09.454Z",
          "first_name": "Sneha",
          "ip_address": "103.212.154.226",
          "is_primary": false,
          "os_version": "Windows 10",
          "request_ip": "103.212.154.226",
          "is_verified": false,
          "browser_name": "google chrome",
          "logged_in_flag": true,
          "logged_in_time": "2024-04-10T10:15:42.396Z",
          "user_full_name": "Sneha Gaikwad",
          "rejection_reason": "update transaction method"
        },
        {
          "action": "Refactored",
          "user_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
          "platform": "web",
          "last_name": "Gaikwad",
          "last_used": "2024-04-10T10:18:09.398Z",
          "timestamp": "2024-04-10T10:18:09.454Z",
          "first_name": "Sneha",
          "ip_address": "103.212.154.226",
          "is_primary": false,
          "os_version": "Windows 10",
          "request_ip": "103.212.154.226",
          "is_verified": false,
          "browser_name": "google chrome",
          "logged_in_flag": true,
          "logged_in_time": "2024-04-10T10:15:42.396Z",
          "user_full_name": "Sneha Gaikwad"
        }
      ]
    }
  ],
  "title": {
    "records": 1,
    "current_page": 1,
    "total_pages": 1,
    "page_item_count": 50
  }
}

ERROR RESPONSE The request returns JSON structured like below for errors related beneficiary transaction

{
    "status":false,
    "action":"Not performed",
    "errors":{
        "base":[
            "Invalid / Insufficient parameters"
        ],
        "base":
        [
            "No transactions found for transaction ids: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx"
        ],
        "base":
        [
            "All transactions do not belong to the same entity"
        ],
        "base":[
            {
                "id":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
                "errors":"Only rejected transactions can be refactored"
            }
        ]
} }

This endpoint refactor a Beneficiary Transaction.

UAT HTTP Request

PUT https://nxt.api.q2pay.co.in/api/transactions/beneficiary/refactor

PRODUCTION HTTP Request

PUT https://nxt.api.q2pay.in/api/transactions/beneficiary/refactor

Query Parameters

Parameter Default Description Required Sample
txn_id N.A. txn id for beneficiary transaction Yes [xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxx ,xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxx]

Service Details

Service ID Description
CBeneficiaryTxn Refactor Beneficiary Transaction

Add Labels of Beneficiary Transactions

curl -X PUT "https://<environmenturl>/api/transactions/beneficiary/add_label"
  -H "X-Api-Key: <your secure token>"
  -H "Content-Type: application/json"
  -d "{
  "record_ids": [
    "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx","xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx"
  ],
  "labels": [
    "audit expense",
    "Infrastructure"
  ]
}"
require 'net/http'
require 'uri'
require 'json'

uri = URI.parse("https://<environmenturl>/api/transactions/beneficiary/add_label") header = {'X-Api-Key' => '<your secure token>', 'Content-Type' => 'application/json'} body = {
"record_ids": [ "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx","xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx" ], "labels": [ "audit expense", "Infrastructure" ] } http = Net::HTTP.new(uri.host, uri.port) http.use_ssl = true request = Net::HTTP::Put.new(uri.request_uri, header) request.body = body.to_json response = http.request(request)

const data = {
  "record_ids": [
     "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx","xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx"
  ],
  "labels": [
    "audit expense",
     "Infrastructure"
  ]
};

fetch('https://<environmenturl>/api/transactions/beneficiary/add_label', { method: 'PUT', headers: { 'X-Api-Key': '<your secure token>', 'Content-Type': 'application/json' }, body: JSON.stringify(data) }) .then(response => response.json()) .then(data => console.log(data)) .catch(error => console.error(error));

The below example can be sent as a request to the API.

{
  "record_ids": [
     "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx","xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx"
  ],
  "labels": [
    "audit expense",
    "Infrastructure"
  ]
}

SUCCESS RESPONSE The request returns JSON structured like below on successful add labels of beneficiary transactions

{
    "status":true, 
    "successful_count":1,
    "unsuccessful_count":1, 
    "ids":{
        "successful_ids":["xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx"],
        "unsuccessful_ids": [
      { "id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx", "errors": "Label could not be added due to validation error" }
    ]
    }
}

ERROR RESPONSE The request returns JSON structured like below for errors related add labels of beneficiary transactions

{
  "status": false,
  "errors": {
    "base": [
      "Missing required parameters: record_ids and/or labels."
    ],
    "base":[
      "The beneficiary transaction IDs are not present."
    ]
  }
}

This endpoint Add labels of Beneficiary Transaction.

UAT HTTP Request

PUT https://nxt.api.q2pay.co.in/api/transactions/beneficiary/add_label

PRODUCTION HTTP Request

PUT https://nxt.api.q2pay.in/api/transactions/beneficiary/add_label

Query Parameters

Parameter Default Description Required Sample
record_ids N.A. record ids of beneficiary transaction Yes ["xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx","xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx" ]
labels N.A. labels of beneficiary transaction Yes ["audit expense","Infrastructure"]

Service Details

Service ID Description
ALabel Add labels for Beneficiary Transaction

Remove Labels of Beneficiary Transactions

curl -X PUT "https://<environmenturl>/api/transactions/beneficiary/remove_label"
  -H "X-Api-Key: <your secure token>"
  -H "Content-Type: application/json"
  -d "{
  "record_ids": [
    "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx","xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx"
  ],
  "labels": [
    "audit expense",
    "Infrastructure"
  ]
}"
require 'net/http'
require 'uri'
require 'json'

uri = URI.parse("https://<environmenturl>/api/transactions/beneficiary/remove_label") header = {'X-Api-Key' => '<your secure token>', 'Content-Type' => 'application/json'} body = {
"record_ids": [ "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx","xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx" ], "labels": [ "audit expense", "Infrastructure" ] } http = Net::HTTP.new(uri.host, uri.port) http.use_ssl = true request = Net::HTTP::Put.new(uri.request_uri, header) request.body = body.to_json response = http.request(request)

const data = {
  "record_ids": [
     "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx","xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx"
  ],
  "labels": [
    "audit expense",
     "Infrastructure"
  ]
};

fetch('https://<environmenturl>/api/transactions/beneficiary/remove_label', { method: 'PUT', headers: { 'X-Api-Key': '<your secure token>', 'Content-Type': 'application/json' }, body: JSON.stringify(data) }) .then(response => response.json()) .then(data => console.log(data)) .catch(error => console.error(error));

The below example can be sent as a request to the API.

{
  "record_ids": [
     "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx","xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx"
  ],
  "labels": [
    "audit expense",
    "Infrastructure"
  ]
}

SUCCESS RESPONSE The request returns JSON structured like below on successful add labels of beneficiary transactions

{
  "status": true,
  "successful_count": 1,
  "unsuccessful_count": 1,
  "ids": {
    "successful_id": [
      "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx"
    ],
    "unsuccessful_ids": [
      { "id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx", "errors": "Label could not be added due to validation error" }
    ]
  }
}

ERROR RESPONSE The request returns JSON structured like below for errors related add labels of beneficiary transactions

{
  "status": false,
  "errors": {
    "base": [
      "Missing required parameters: record_ids and/or labels."
    ],
    "base":[
      "The beneficiary transaction IDs are not present."
    ],
    "base":[
      "Labels are not present in some beneficiary transactions."
    ]
  }
}

This endpoint Add labels of Beneficiary Transaction.

UAT HTTP Request

PUT https://nxt.api.q2pay.co.in/api/transactions/beneficiary/remove_label

PRODUCTION HTTP Request

PUT https://nxt.api.q2pay.in/api/transactions/beneficiary/remove_label

Query Parameters

Parameter Default Description Required Sample
record_ids N.A. records ids of beneficiary transaction Yes ["xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx","xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx" ]
labels N.A. labels of beneficiary transaction Yes ["audit expense","Infrastructure"]

Service Details

Service ID Description
RLabel Remove labels for Beneficiary Transaction

Internal Transaction

Internal transaction helps you create, maintain & manage lifecycle for your organization

Get All Internal Transactions

curl -X GET "https://<environmenturl>/api/transactions/internal"
  -H "X-Api-Key: <your secure token>"
  -H "Content-Type: application/json"

require 'net/http'
require 'uri'
require 'json'

uri = URI.parse("https://<environmenturl>/api/transactions/internal") header = {'X-Api-Key' => '<your secure token>', 'Content-Type' => 'application/json'} http = Net::HTTP.new(uri.host, uri.port) http.use_ssl = true request = Net::HTTP::Get.new(uri.request_uri, header) request.body = body.to_json response = http.request(request)

fetch('https://<environmenturl>/api/transactions/internal', { method: 'GET', headers: { 'X-Api-Key': '<your secure token>', 'Content-Type': 'application/json' }, body: JSON.stringify(data) }) .then(response => response.json()) .then(data => console.log(data)) .catch(error => console.error(error));

SUCCESS RESPONSE The request returns JSON structured like below

{
  "status": true,
  "total_count": 2,
  "total_amount": "2000.0",
  "summary": {
     "pending_transaction_count": 84,
     "abandoned_transaction_count": 11,
     "approved_transaction_count": 219,
     "rejected_transaction_count": 43,
     "actionable_transaction_count": 84,
     "created_distribution_transaction_count": 198,
     "awaiting_funds_distribution_transaction_count": 12,
     "distribution_initiated_distribution_transaction_count": 4,
     "distribution_complete_distribution_transaction_count": 1,
     "rejected_distribution_transaction_count": 4,
     "abandoned_distribution_transaction_count": 3,
     "confidential_transaction_count": 2,
     "available_labels": [
          "audit expense",
          "building expenses",
          "test expense"
      ]
  },
  "transactions": [
    {
      "total_amount": "1000.0",
      "txn_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
      "amount": "1000.0",
      "category": "Internal",
      "lifecycle_status": "approved",
      "internal_transaction": true,
      "confidential_transaction": "Y",
      "distribution_lifecycle_status": "created",
      "payment_method":"RTGS",
      "txn_initiator": "Priya jawale",
      "approved": "Y",
      "approved_at": "xxxxxxxx",
      "payment_charge": "0.0",
      "tax_amount": "0.0",
      "entity_id": "ABC12",
      "rejected": false,
      "refactored": false,
      "internal_account_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
      "internal_account_name": "JITENDRA KIRAN KAKDE",
      "internal_account_bank_acc_no": "12345678",
      "internal_account_ifsc_code": "BKID0010670",
      "internal_account_bank_name": "Bank of India",
      "internal_account_approval_status": "approved",
      "owner_account_id":"xxxxxxxx-xxxx-xxxx-xxxxxx",
      "owner_account_bank_acc_no":"9482940300",
      "owner_account_ifsc_code":"ICIC0000112",
      "owner_account_bank_name":"ICICI Bank",
      "owner_account_type":"Current Account",
      "owner_account_balance":"1500.0",
      "owner_account_balance_last_fetched_at":"xxxxxxxx",
      "owner_account_balance_last_fetched_at_in_words":"less than a minute ago",
      "created_via": "Scheduled Transaction",
      "additional_data": {
        "data": [
          {
            "name": "month",
            "position": 1,
            "data_type": "string",
            "mandatory": "Y",
            "value": "Mon"
          },
          {
            "name": "leaves",
            "position": 2,
            "data_type": "numeric",
            "mandatory": "Y",
            "value": 1233
          },
          {
            "name": "PAN",
            "position": 3,
            "data_type": "string",
            "mandatory": "N",
            "value": "Pan no"
          },
          {
            "data": [
              "Pradeep",
              "Sachin",
              "Sewaram"
            ],
            "name": "Accountants",
            "position": 4,
            "data_type": "list",
            "mandatory": "N",
            "value": "Pradeep"
          },
          {
            "name": "month 1",
            "position": 5,
            "data_type": "time",
            "mandatory": "Y",
            "value": "09:34"
          },
          {
            "name": "Day",
            "position": 6,
            "data_type": "day",
            "mandatory": "Y",
            "value": "Monday"
          },
          {
            "name": "Dummy",
            "position": 7,
            "data_type": "toggle",
            "mandatory": "Y",
            "value": true
          },
          {
            "name": "Month",
            "position": 8,
            "data_type": "month",
            "mandatory": "Y",
            "value": "March"
          },
          {
            "name": "Hyperlink",
            "position": 9,
            "data_type": "hyperlink",
            "mandatory": "Y",
            "value": "https://nxt.api.q2pay.co.in/api/transaction_auth_matrix.json"
          },
          {
            "name": "File",
            "position": 10,
            "data_type": "upload",
            "mandatory": "Y",
              "value": {
                "id": "c68cc4e7d54381cc46384f194c09ce2c.png",
                "storage": "cache",
                "metadata": {
                  "filename": "favicon.png",
                  "size": 62260,
                  "mime_type": "image/png"
                },
                "file_url": "https://your-bucket.s3.amazonaws.com/store/c68cc4e7d54381cc46384f194c09ce2c.png"
              }
            },
          {
            "name": "Date",
            "position": 11,
            "data_type": "date",
            "mandatory": "Y",
            "value": "23/04/2023"
          },
          {
            "name": "Year",
            "position": 12,
            "data_type": "year",
            "mandatory": "Y",
            "value": "2024"
          },
          {
            "name": "Month_Year",
            "position": 13,
            "data_type": "month_year",
            "mandatory": "Y",
            "value": "12/2024"
          },
          {
            "name": "Multiselect",
            "position": 14,
            "data_type": "multi_select_list",
            "mandatory": "Y",
            "data": [
              "ab",
              "abc",
              "abcd"
            ],
            "value": [
               "ab",
               "abc"
            ]
          },
          {
            "name": "Quantity",
            "position": 15,
            "data_type": "quantity",
            "mandatory": "Y",
            "value": 5
          },
          {
            "name": "DateRange",
            "position": 16,
            "data_type": "date_range",
            "mandatory": "Y",
            "value": {
              "start_date": "21/08/2023",
              "end_date": "21/10/2024"
            }
          },
          {
            "name": "YearRange",
            "position": 17,
            "data_type": "from_year_to_year",
            "mandatory": "Y",
            "value": {
              "from": 2030,
              "to": 2034
            }
          }
        ]
      },
      "created_on": "xxxxxxxx",
      "last_updated_user_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
      "last_updated_status": "Created",
      "last_updated_timestamp": "xxxxxxxx",
      "last_updated_user_name": "Akshay Rangnekar"
    },
    {
      "total_amount": "1000.0",
      "txn_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
      "amount": "1000.0",
      "category": "Beneficiary",
      "lifecycle_status": "pending",
      "payment_method":"RTGS",
      "txn_initiator": "Priya jawale",
      "approved": "N",
      "approved_at": "0",
      "payment_charge": "0.0",
      "tax_amount": "0.0",
      "entity_id": "ABC12",
      "rejected": false,
      "refactored": false,
      "internal_account_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
      "internal_account_name": "Mr AKASH PRAMOD BAGUL",
      "internal_account_bank_acc_no": "12345678",
      "internal_account_ifsc_code": "SBIN0031199",
      "internal_account_bank_name": "State Bank of India",
      "internal_account_approval_status": "archived",
      "owner_account_id":"xxxxxxxx-xxxx-xxxx-xxxxxx",
      "owner_account_bank_acc_no":"9482940300",
      "owner_account_ifsc_code":"ICIC0000112",
      "owner_account_bank_name":"ICICI Bank",
      "owner_account_type":"Current Account",
      "additional_data": {
        "data": [
          {
            "name": "month",
            "position": 1,
            "data_type": "string",
            "mandatory": "Y",
            "value": "Mon"
          },
          {
            "name": "leaves",
            "position": 2,
            "data_type": "numeric",
            "mandatory": "N"
          },
          {
            "name": "PAN",
            "position": 3,
            "data_type": "string",
            "mandatory": "N"
          },
          {
            "name": "Accountants",
            "position": 4,
            "data_type": "list",
            "mandatory": "N",
            "data": [
              "Pradeep",
              "Sachin",
              "Sewaram"
            ]
          }
        ]
      }, 
      "created_on": "xxxxxxxx",
      "last_updated_user_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
      "last_updated_status": "Created",
      "last_updated_timestamp": "xxxxxxxx",
      "last_updated_user_name": "Akshay Rangnekar"
    }
  ],
  "title": {
    "records": 2,
    "current_page": 1,
    "total_pages": 1,
    "page_item_count": 50
  }
}

This endpoint retrieves all Internal Transactions.

UAT HTTP Request

GET https://nxt.api.q2pay.co.in/api/transactions/internal

PRODUCTION HTTP Request

GET https://nxt.api.q2pay.in/api/transactions/internal

Query Parameters

Parameter Default Description Required Sample
amount N.A. amount for internal transaction optional 67000.0
lifecycle_status N.A. lifecycle status for internal transaction optional pending, approved, rejected, abandoned
payment_method N.A. payment method for internal transaction optional RTGS/NEFT/IMPS
internal_account_id N.A. internal account id for internal transaction optional "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxx"
owner_account_id N.A. owner account id for internal transaction optional "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxx"
internal_account_ids N.A. internal account ids for internal transaction optional [xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxx ,xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxx]
owner_account_ids N.A. owner account ids for internal transaction optional [xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxx ,xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxx]
start_date,end_date N.A. start date and end date for internal transaction optional xxxxxxxx,xxxxxxxx
txn_id N.A. transaction id is used to search id of internal transaction optional [xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxx ,xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxx]
entity_id N.A. entity id for internal transaction optional ABC12
category N.A. category for internal transaction optional Internal
bank_identifier N.A. bank_identifier/settlement_id for distribution transaction of internal transaction optional xxxxxxxxxxxxxxxx
distribution_lifecycle_status N.A. distribution lifecycle status of internal transaction optional created, awaiting_funds, distribution_initiated, distribution_complete, rejected, abandoned, failed
additional_data N.A. additional data for internal transaction optional "Mon"
confidential_transaction N.A. confidential transaction for internal transaction optional "Y","N"
category_name, category_value N.A category name and category value is filter on additional data of name and value of internal transaction optional name, month or value, Mon
refactor N.A refactor for filter internal transaction optional true, false
labels N.A. labels for internal transaction optional ["audit expense"]

Service Details

Service ID Description
VInternalTxn View All Internal Transactions
VAccountBalance View Balance of Owner Account
VConfidentialTxn View Confidential Transactions

Get Specific Internal Transactions

curl -X GET "https://<environmenturl>/api/transactions/internal/:id"
  -H "X-Api-Key: <your secure token>"
  -H "Content-Type: application/json"

require 'net/http'
require 'uri'
require 'json'

uri = URI.parse("https://<environmenturl>/api/transactions/internal/:id") header = {'X-Api-Key' => '<your secure token>', 'Content-Type' => 'application/json'} http = Net::HTTP.new(uri.host, uri.port) http.use_ssl = true request = Net::HTTP::Get.new(uri.request_uri, header) request.body = body.to_json response = http.request(request)

fetch('https://<environmenturl>/api/transactions/internal/:id', { method: 'GET', headers: { 'X-Api-Key': '<your secure token>', 'Content-Type': 'application/json' }, body: JSON.stringify(data) }) .then(response => response.json()) .then(data => console.log(data)) .catch(error => console.error(error));

SUCCESS RESPONSE The request returns JSON structured like below

{
  "status": true,
  "total_count": 1,
  "total_amount": "512.0",
  "transaction": [
    {
      "total_amount": "512.0",
      "txn_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
      "amount": "512.0",
      "category": "Internal",
      "internal_transaction": true,
      "confidential_transaction": "Y",
      "lifecycle_status": "approved",
      "payment_method":"RTGS",
      "txn_initiator": "Akshay Rangnekar",
      "approved": "Y",
      "approved_at": "xxxxxxxx",
      "payment_charge": "0.0",
      "tax_amount": "0.0",
      "entity_id": "ABC12",
      "rejected": false,
      "refactored": false,
      "internal_account_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
      "internal_account_name": "Q2PAY TECHNOLOGIES P",
      "internal_account_bank_acc_no": "123456789",
      "internal_account_ifsc_code": "HDFC0000233",
      "internal_account_bank_name": "HDFC Bank",
      "internal_account_approval_status": "approved",
      "owner_account_id":"xxxxxxxx-xxxx-xxxx-xxxxxx",
      "owner_account_bank_acc_no":"9482940300",
      "owner_account_ifsc_code":"ICIC0000112",
      "owner_account_bank_name":"ICICI Bank",
      "owner_account_type":"Current Account",
      "owner_account_balance":"1500.0",
      "owner_account_balance_last_fetched_at":"xxxxxxxx",
      "owner_account_balance_last_fetched_at_in_words":"less than a minute ago"
      "additional_data": {
        "data": [
          {
            "name": "month",
            "position": 1,
            "data_type": "string",
            "mandatory": "Y",
            "value": "Mon"
          },
          {
            "name": "leaves",
            "position": 2,
            "data_type": "numeric",
            "mandatory": "Y",
            "value": 1233
          },
          {
            "name": "PAN",
            "position": 3,
            "data_type": "string",
            "mandatory": "N",
            "value": "Pan no"
          },
          {
            "data": [
              "Pradeep",
              "Sachin",
              "Sewaram"
            ],
            "name": "Accountants",
            "position": 4,
            "data_type": "list",
            "mandatory": "N",
            "value": "Pradeep"
          },
          {
            "name": "month 1",
            "position": 5,
            "data_type": "time",
            "mandatory": "Y",
            "value": "09:34"
          },
          {
            "name": "Day",
            "position": 6,
            "data_type": "day",
            "mandatory": "Y",
            "value": "Monday"
          },
          {
            "name": "Dummy",
            "position": 7,
            "data_type": "toggle",
            "mandatory": "Y",
            "value": true
          },
          {
            "name": "Month",
            "position": 8,
            "data_type": "month",
            "mandatory": "Y",
            "value": "March"
          },
          {
            "name": "Hyperlink",
            "position": 9,
            "data_type": "hyperlink",
            "mandatory": "Y",
            "value": "https://nxt.api.q2pay.co.in/api/transaction_auth_matrix.json"
          },
          {
            "name": "File",
            "position": 10,
            "data_type": "upload",
            "mandatory": "Y",
              "value": {
                "id": "c68cc4e7d54381cc46384f194c09ce2c.png",
                "storage": "cache",
                "metadata": {
                  "filename": "favicon.png",
                  "size": 62260,
                  "mime_type": "image/png"
                },
                "file_url": "https://your-bucket.s3.amazonaws.com/store/c68cc4e7d54381cc46384f194c09ce2c.png"
              }
            },
          {
            "name": "Date",
            "position": 11,
            "data_type": "date",
            "mandatory": "Y",
            "value": "23/04/2023"
          },
          {
            "name": "Year",
            "position": 12,
            "data_type": "year",
            "mandatory": "Y",
            "value": "2024"
          },
          {
            "name": "Month_Year",
            "position": 13,
            "data_type": "month_year",
            "mandatory": "Y",
            "value": "12/2024"
          },
          {
            "name": "Multiselect",
            "position": 14,
            "data_type": "multi_select_list",
            "mandatory": "Y",
            "data": [
              "ab",
              "abc",
              "abcd"
            ],
            "value": [
               "ab",
               "abc"
            ]
          },
          {
            "name": "Quantity",
            "position": 15,
            "data_type": "quantity",
            "mandatory": "Y",
            "value": 5
          },
          {
            "name": "DateRange",
            "position": 16,
            "data_type": "date_range",
            "mandatory": "Y",
            "value": {
              "start_date": "21/08/2023",
              "end_date": "21/10/2024"
            }
          },
          {
            "name": "YearRange",
            "position": 17,
            "data_type": "from_year_to_year",
            "mandatory": "Y",
            "value": {
              "from": 2030,
              "to": 2034
            }
          }
        ]
      },
      "created_on": "xxxxxxxx",
      "last_updated_user_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
      "last_updated_status": "Approved",
      "last_updated_timestamp": "xxxxxxxx",
      "last_updated_user_name": "Akshay Rangnekar",
      "distribution_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
      "distribution_identifier": "xxxxxxxxxxxxxxxxxxxxxxxx",
      "distribution_settlement_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
      "distribution_bank": "HDFC Bank",
      "distribution_amount": "512.0",
      "distribution_mode_of_payment": "NEFT",
      "distribution_lifecycle_status": "awaiting_funds",
      "distribution_utr": "xxxxxxx",
      "distribution_initiated_at": "xxxxxxx",
      "distribution_credited_at": "xxxxxxx",
      "distribution_credit_remarks": "xxxxxxx",
      "distribution_approved": true,
      "distribution_approved_at": "2024-01-12T10:27:20.033Z",
      "distribution_approved_by": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
      "distribution_approval_strategy": "user",
      "distribution_logs": [
        {
          "action": "Created",
          "user_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
          "timestamp": "2024-01-12T10:09:53.886Z",
          "user_full_name": "Akshay Rangnekar"
        },
        {
          "brand": "Android",
          "model": "Android SDK built for x86",
          "action": "Approved",
          "user_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
          "platform": "android",
          "last_name": "Rangnekar",
          "last_used": "2024-01-12T10:27:19.963Z",
          "timestamp": "2024-01-12T10:27:20.044Z",
          "first_name": "Akshay",
          "ip_address": "127.0.0.1",
          "is_primary": false,
          "os_version": "6.0",
          "request_ip": "127.0.0.1",
          "user_grade": "Director",
          "is_verified": false,
          "sdk_version": "23",
          "manufacturer": "unknown",
          "serial_number": "EMULATOR32X1X14X0",
          "final_approval": true,
          "logged_in_flag": true,
          "logged_in_time": "2024-01-11T10:27:49.369Z",
          "user_full_name": "Akshay Rangnekar",
          "app_version_code": "54",
          "app_version_name": "1.43"
        }
      ],
      "logs": [
        {
          "brand": "Android",
          "model": "Android SDK built for x86",
          "action": "Created",
          "user_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
          "platform": "android",
          "last_name": "Rangnekar",
          "last_used": "2024-01-12T10:09:53.679Z",
          "timestamp": "2024-01-12T10:09:53.714Z",
          "first_name": "Akshay",
          "ip_address": "127.0.0.1",
          "is_primary": false,
          "os_version": "6.0",
          "request_ip": "127.0.0.1",
          "is_verified": false,
          "sdk_version": "23",
          "manufacturer": "unknown",
          "serial_number": "EMULATOR32X1X14X0",
          "logged_in_flag": true,
          "logged_in_time": "2024-01-11T10:27:49.369Z",
          "user_full_name": "Akshay Rangnekar",
          "app_version_code": "54",
          "app_version_name": "1.43"
        },
        {
          "brand": "Android",
          "model": "Android SDK built for x86",
          "action": "Approved",
          "user_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
          "platform": "android",
          "last_name": "Rangnekar",
          "last_used": "2024-01-12T10:09:53.679Z",
          "timestamp": "2024-01-12T10:09:53.734Z",
          "first_name": "Akshay",
          "ip_address": "127.0.0.1",
          "is_primary": false,
          "os_version": "6.0",
          "request_ip": "127.0.0.1",
          "is_verified": false,
          "sdk_version": "23",
          "manufacturer": "unknown",
          "serial_number": "EMULATOR32X1X14X0",
          "final_approval": true,
          "logged_in_flag": true,
          "logged_in_time": "2024-01-11T10:27:49.369Z",
          "user_full_name": "Akshay Rangnekar",
          "app_version_code": "54",
          "app_version_name": "1.43",
          "authorization_rule": "Director~1"
        }
      ]
    }
  ],
  "title": {
    "records": 1,
    "current_page": 1,
    "total_pages": 1,
    "page_item_count": 1
  }
}

This endpoint retrieves specific Internal Transactions.

UAT HTTP Request

GET https://nxt.api.q2pay.co.in/api/transactions/internal/:id

PRODUCTION HTTP Request

GET https://nxt.api.q2pay.in/api/transactions/internal/:id

Service Details

Service ID Description
VInternalTxn View Specific Internal Transactions

Create Internal Transactions

curl -X POST "https://<environmenturl>/api/transactions/internal"
  -H "X-Api-Key: <your secure token>"
  -H "Content-Type: application/json"
  -d "{ 
    "amount" : "67000.0",
    "owner_account_id":"xxxxxxxx-xxxx-xxxx-xxxxxx",
    "internal_account_id" :"xxxxxxxx-xxxx-xxxx-xxxxxx",
    "payment_method":"RTGS",
    "category": "Internal",
    "labels": ["building expenses"],
    "confidential_transaction": "true",
    "additional_data": {
    "data": [
      {
        "name": "month",
        "position": 1,
        "data_type": "string",
        "mandatory": "Y",
        "value": "Mon"
      },
      {
        "name": "leaves",
        "position": 2,
        "data_type": "numeric",
        "mandatory": "Y",
        "value": 1233
      },
      {
        "name": "PAN",
        "position": 3,
        "data_type": "string",
        "mandatory": "N",
        "value": "Pan no"
      },
      {
        "data": [
          "Pradeep",
          "Sachin",
          "Sewaram"
        ],
        "name": "Accountants",
        "position": 4,
        "data_type": "list",
        "mandatory": "N",
        "value": "Pradeep"
      },
      {
        "name": "month 1",
        "position": 5,
        "data_type": "time",
        "mandatory": "Y",
        "value": "09:34"
      },
      {
        "name": "Day",
        "position": 6,
        "data_type": "day",
        "mandatory": "Y",
        "value": "Monday"
      },
      {
        "name": "Dummy",
        "position": 7,
        "data_type": "toggle",
        "mandatory": "Y",
        "value": true
      },
      {
        "name": "Month",
        "position": 8,
        "data_type": "month",
        "mandatory": "Y",
        "value": "March"
      },
      {
        "name": "Hyperlink",
        "position": 9,
        "data_type": "hyperlink",
        "mandatory": "Y",
        "value": "https://nxt.api.q2pay.co.in/api/transaction_auth_matrix.json"
      },
      {
        "name": "File",
        "position": 10,
        "data_type": "upload",
        "mandatory": "Y",
        "value": {
          "id": "c68cc4e7d54381cc46384f194c09ce2c.png",
          "storage": "cache",
          "metadata": {
            "filename": "favicon.png",
            "size": 62260,
            "mime_type": "image/png"
          }
        }
      },
      {
        "name": "Date",
        "position": 11,
        "data_type": "date",
        "mandatory": "Y",
        "value": "23/04/2023"
      },
      {
        "name": "Year",
        "position": 12,
        "data_type": "year",
        "mandatory": "Y",
        "value": "2024"
      },
      {
        "name": "Month_Year",
        "position": 13,
        "data_type": "month_year",
        "mandatory": "Y",
        "value": "12/2024"
      },
      {
        "name": "Multiselect",
        "position": 14,
        "data_type": "multi_select_list",
        "mandatory": "Y",
        "data": [
          "ab",
          "abc",
          "abcd"
        ],
        "value": [
          "ab",
          "abc"
        ]
      },
      {
        "name": "Quantity",
        "position": 15,
        "data_type": "quantity",
        "mandatory": "Y",
        "value": 5
      },
      {
        "name": "DateRange",
        "position": 16,
        "data_type": "date_range",
        "mandatory": "Y",
        "value": {
          "start_date": "21/08/2023",
          "end_date": "21/10/2024"
        }
      },
      {
        "name": "YearRange",
        "position": 17,
        "data_type": "from_year_to_year",
        "mandatory": "Y",
        "value": {
          "from": 2030,
          "to": 2034
        }
      }
    ]
  }
 }"
require 'net/http'
require 'uri'
require 'json'

uri = URI.parse("https://<environmenturl>/api/transactions/internal") header = {'X-Api-Key' => '<your secure token>', 'Content-Type' => 'application/json'} body = { "amount" : "67000.0", "owner_account_id":"xxxxxxxx-xxxx-xxxx-xxxxxx", "internal_account_id" :"xxxxxxxx-xxxx-xxxx-xxxxxx", "payment_method":"RTGS", "category": "Internal", "labels": ["building expenses"], "confidential_transaction": "true", "additional_data": { "data": [ { "name": "month", "position": 1, "data_type": "string", "mandatory": "Y", "value": "Mon" }, { "name": "leaves", "position": 2, "data_type": "numeric", "mandatory": "Y", "value": 1233 }, { "name": "PAN", "position": 3, "data_type": "string", "mandatory": "N", "value": "Pan no" }, { "data": [ "Pradeep", "Sachin", "Sewaram" ], "name": "Accountants", "position": 4, "data_type": "list", "mandatory": "N", "value": "Pradeep" }, { "name": "month 1", "position": 5, "data_type": "time", "mandatory": "Y", "value": "09:34" }, { "name": "Day", "position": 6, "data_type": "day", "mandatory": "Y", "value": "Monday" }, { "name": "Dummy", "position": 7, "data_type": "toggle", "mandatory": "Y", "value": true }, { "name": "Month", "position": 8, "data_type": "month", "mandatory": "Y", "value": "March" }, { "name": "Hyperlink", "position": 9, "data_type": "hyperlink", "mandatory": "Y", "value": "https://nxt.api.q2pay.co.in/api/transaction_auth_matrix.json" }, { "name": "File", "position": 10, "data_type": "upload", "mandatory": "Y", "value": { "id": "c68cc4e7d54381cc46384f194c09ce2c.png", "storage": "cache", "metadata": { "filename": "favicon.png", "size": 62260, "mime_type": "image/png" } } }, { "name": "Date", "position": 11, "data_type": "date", "mandatory": "Y", "value": "23/04/2023" }, { "name": "Year", "position": 12, "data_type": "year", "mandatory": "Y", "value": "2024" }, { "name": "Month_Year", "position": 13, "data_type": "month_year", "mandatory": "Y", "value": "12/2024" }, { "name": "Multiselect", "position": 14, "data_type": "multi_select_list", "mandatory": "Y", "data": [ "ab", "abc", "abcd" ], "value": [ "ab", "abc" ] }, { "name": "Quantity", "position": 15, "data_type": "quantity", "mandatory": "Y", "value": 5 }, { "name": "DateRange", "position": 16, "data_type": "date_range", "mandatory": "Y", "value": { "start_date": "21/08/2023", "end_date": "21/10/2024" } }, { "name": "YearRange", "position": 17, "data_type": "from_year_to_year", "mandatory": "Y", "value": { "from": 2030, "to": 2034 } } ] } } http = Net::HTTP.new(uri.host, uri.port) http.use_ssl = true request = Net::HTTP::Post.new(uri.request_uri, header) request.body = body.to_json response = http.request(request)

const data = {
    "amount" : "67000.0",
    "owner_account_id":"xxxxxxxx-xxxx-xxxx-xxxxxx",
    "internal_account_id" :"xxxxxxxx-xxxx-xxxx-xxxxxx",
    "payment_method":"RTGS",
    "category": "Internal",
    "confidential_transaction": "true",
    "additional_data": {
    "data": [
      {
        "name": "month",
        "position": 1,
        "data_type": "string",
        "mandatory": "Y",
        "value": "Mon"
      },
      {
        "name": "leaves",
        "position": 2,
        "data_type": "numeric",
        "mandatory": "Y",
        "value": 1233
      },
      {
        "name": "PAN",
        "position": 3,
        "data_type": "string",
        "mandatory": "N",
        "value": "Pan no"
      },
      {
        "data": [
          "Pradeep",
          "Sachin",
          "Sewaram"
        ],
        "name": "Accountants",
        "position": 4,
        "data_type": "list",
        "mandatory": "N",
        "value": "Pradeep"
      },
      {
        "name": "month 1",
        "position": 5,
        "data_type": "time",
        "mandatory": "Y",
        "value": "09:34"
      },
      {
        "name": "Day",
        "position": 6,
        "data_type": "day",
        "mandatory": "Y",
        "value": "Monday"
      },
      {
        "name": "Dummy",
        "position": 7,
        "data_type": "toggle",
        "mandatory": "Y",
        "value": true
      },
      {
        "name": "Month",
        "position": 8,
        "data_type": "month",
        "mandatory": "Y",
        "value": "March"
      },
      {
        "name": "Hyperlink",
        "position": 9,
        "data_type": "hyperlink",
        "mandatory": "Y",
        "value": "https://nxt.api.q2pay.co.in/api/transaction_auth_matrix.json"
      },
      {
        "name": "File",
        "position": 10,
        "data_type": "upload",
        "mandatory": "Y",
        "value": {
          "id": "c68cc4e7d54381cc46384f194c09ce2c.png",
          "storage": "cache",
          "metadata": {
            "filename": "favicon.png",
            "size": 62260,
            "mime_type": "image/png"
          }
        }
      },
      {
        "name": "Date",
        "position": 11,
        "data_type": "date",
        "mandatory": "Y",
        "value": "23/04/2023"
      },
      {
        "name": "Year",
        "position": 12,
        "data_type": "year",
        "mandatory": "Y",
        "value": "2024"
      },
      {
        "name": "Month_Year",
        "position": 13,
        "data_type": "month_year",
        "mandatory": "Y",
        "value": "12/2024"
      },
      {
        "name": "Multiselect",
        "position": 14,
        "data_type": "multi_select_list",
        "mandatory": "Y",
        "data": [
          "ab",
          "abc",
          "abcd"
        ],
        "value": [
          "ab",
          "abc"
        ]
      },
      {
        "name": "Quantity",
        "position": 15,
        "data_type": "quantity",
        "mandatory": "Y",
        "value": 5
      },
      {
        "name": "DateRange",
        "position": 16,
        "data_type": "date_range",
        "mandatory": "Y",
        "value": {
          "start_date": "21/08/2023",
          "end_date": "21/10/2024"
        }
      },
      {
        "name": "YearRange",
        "position": 17,
        "data_type": "from_year_to_year",
        "mandatory": "Y",
        "value": {
          "from": 2030,
          "to": 2034
        }
      }
    ]
  }
};

fetch('https://<environmenturl>/api/transactions/internal', { method: 'POST', headers: { 'X-Api-Key': '<your secure token>', 'Content-Type': 'application/json' }, body: JSON.stringify(data) }) .then(response => response.json()) .then(data => console.log(data)) .catch(error => console.error(error));

The below example can be sent as a request to the API.

{
    "amount" : "67000.0",
    "owner_account_id":"xxxxxxxx-xxxx-xxxx-xxxxxx",
    "internal_account_id" :"xxxxxxxx-xxxx-xxxx-xxxxxx",
    "payment_method":"RTGS",
    "category": "Internal",
    "labels": ["building expenses"],
    "confidential_transaction": "true",
    "additional_data": {
    "data": [
      {
        "name": "month",
        "position": 1,
        "data_type": "string",
        "mandatory": "Y",
        "value": "Mon"
      },
      {
        "name": "leaves",
        "position": 2,
        "data_type": "numeric",
        "mandatory": "Y",
        "value": 1233
      },
      {
        "name": "PAN",
        "position": 3,
        "data_type": "string",
        "mandatory": "N",
        "value": "Pan no"
      },
      {
        "data": [
          "Pradeep",
          "Sachin",
          "Sewaram"
        ],
        "name": "Accountants",
        "position": 4,
        "data_type": "list",
        "mandatory": "N",
        "value": "Pradeep"
      },
      {
        "name": "month 1",
        "position": 5,
        "data_type": "time",
        "mandatory": "Y",
        "value": "09:34"
      },
      {
        "name": "Day",
        "position": 6,
        "data_type": "day",
        "mandatory": "Y",
        "value": "Monday"
      },
      {
        "name": "Dummy",
        "position": 7,
        "data_type": "toggle",
        "mandatory": "Y",
        "value": true
      },
      {
        "name": "Month",
        "position": 8,
        "data_type": "month",
        "mandatory": "Y",
        "value": "March"
      },
      {
        "name": "Hyperlink",
        "position": 9,
        "data_type": "hyperlink",
        "mandatory": "Y",
        "value": "https://nxt.api.q2pay.co.in/api/transaction_auth_matrix.json"
      },
      {
        "name": "File",
        "position": 10,
        "data_type": "upload",
        "mandatory": "Y",
        "value": {
          "id": "c68cc4e7d54381cc46384f194c09ce2c.png",
          "storage": "cache",
          "metadata": {
            "filename": "favicon.png",
            "size": 62260,
            "mime_type": "image/png"
          }
        }
      },
      {
        "name": "Date",
        "position": 11,
        "data_type": "date",
        "mandatory": "Y",
        "value": "23/04/2023"
      },
      {
        "name": "Year",
        "position": 12,
        "data_type": "year",
        "mandatory": "Y",
        "value": "2024"
      },
      {
        "name": "Month_Year",
        "position": 13,
        "data_type": "month_year",
        "mandatory": "Y",
        "value": "12/2024"
      },
      {
        "name": "Multiselect",
        "position": 14,
        "data_type": "multi_select_list",
        "mandatory": "Y",
        "data": [
          "ab",
          "abc",
          "abcd"
        ],
        "value": [
          "ab",
          "abc"
        ]
      },
      {
        "name": "Quantity",
        "position": 15,
        "data_type": "quantity",
        "mandatory": "Y",
        "value": 5
      },
      {
        "name": "DateRange",
        "position": 16,
        "data_type": "date_range",
        "mandatory": "Y",
        "value": {
          "start_date": "21/08/2023",
          "end_date": "21/10/2024"
        }
      },
      {
        "name": "YearRange",
        "position": 17,
        "data_type": "from_year_to_year",
        "mandatory": "Y",
        "value": {
          "from": 2030,
          "to": 2034
        }
      }
    ]
  }
}

SUCCESS RESPONSE The request returns JSON structured like below on successful internal transactions creation

{
  "status": true,
  "total_count": 1,
  "total_amount": "512.0",
  "transaction": [
    {
      "total_amount": "512.0",
      "txn_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
      "amount": "512.0",
      "category": "Internal",
      "internal_transaction": true,
      "confidential_transaction": "Y",
      "lifecycle_status": "pending",
      "payment_method":"RTGS",
      "txn_initiator": "Akshay Rangnekar",
      "approved": "N",
      "labels": ["building expenses"],
      "approved_at": 0,
      "payment_charge": "0.0",
      "tax_amount": "0.0",
      "entity_id": "ABC12",
      "rejected": false,
      "refactored": false,
      "internal_account_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
      "internal_account_name": "Q2PAY TECHNOLOGIES P",
      "internal_account_bank_acc_no": "12345678",
      "internal_account_ifsc_code": "HDFC0000231",
      "internal_account_bank_name": "HDFC Bank",
      "internal_account_approval_status": "approved",
      "owner_account_id":"xxxxxxxx-xxxx-xxxx-xxxxxx",
      "owner_account_bank_acc_no":"9482940300",
      "owner_account_ifsc_code":"ICIC0000112",
      "owner_account_bank_name":"ICICI Bank",
      "owner_account_type":"Current Account",
      "owner_account_balance":"1500.0",
      "owner_account_balance_last_fetched_at":"xxxxxxxx",
      "owner_account_balance_last_fetched_at_in_words":"less than a minute ago"
      "additional_data": {
        "data": [
          {
            "name": "month",
            "position": 1,
            "data_type": "string",
            "mandatory": "Y",
            "value": "Mon"
          },
          {
            "name": "leaves",
            "position": 2,
            "data_type": "numeric",
            "mandatory": "Y",
            "value": 1233
          },
          {
            "name": "PAN",
            "position": 3,
            "data_type": "string",
            "mandatory": "N",
            "value": "Pan no"
          },
          {
            "data": [
              "Pradeep",
              "Sachin",
              "Sewaram"
            ],
            "name": "Accountants",
            "position": 4,
            "data_type": "list",
            "mandatory": "N",
            "value": "Pradeep"
          },
          {
            "name": "month 1",
            "position": 5,
            "data_type": "time",
            "mandatory": "Y",
            "value": "09:34"
          },
          {
            "name": "Day",
            "position": 6,
            "data_type": "day",
            "mandatory": "Y",
            "value": "Monday"
          },
          {
            "name": "Dummy",
            "position": 7,
            "data_type": "toggle",
            "mandatory": "Y",
            "value": true
          },
          {
            "name": "Month",
            "position": 8,
            "data_type": "month",
            "mandatory": "Y",
            "value": "March"
          },
          {
            "name": "Hyperlink",
            "position": 9,
            "data_type": "hyperlink",
            "mandatory": "Y",
          },
          {
            "name": "File",
            "position": 10,
            "data_type": "upload",
            "mandatory": "Y",
              "value": {
                "id": "c68cc4e7d54381cc46384f194c09ce2c.png",
                "storage": "cache",
                "metadata": {
                  "filename": "favicon.png",
                  "size": 62260,
                  "mime_type": "image/png"
                },
                "file_url": "https://your-bucket.s3.amazonaws.com/store/c68cc4e7d54381cc46384f194c09ce2c.png"
              },
          {
            "name": "Date",
            "position": 11,
            "data_type": "date",
            "mandatory": "Y",
            "value": "23/04/2023"
          },
          {
            "name": "Year",
            "position": 12,
            "data_type": "year",
            "mandatory": "Y",
            "value": "2024"
          },
          {
            "name": "Month_Year",
            "position": 13,
            "data_type": "month_year",
            "mandatory": "Y",
            "value": "12/2024"
          },
          {
            "name": "Multiselect",
            "position": 14,
            "data_type": "multi_select_list",
            "mandatory": "Y",
            "data": [
              "ab",
              "abc",
              "abcd"
            ],
            "value": [
               "ab",
               "abc"
            ]
          },
          {
            "name": "Quantity",
            "position": 15,
            "data_type": "quantity",
            "mandatory": "Y",
            "value": 5
          },
          {
            "name": "DateRange",
            "position": 16,
            "data_type": "date_range",
            "mandatory": "Y",
            "value": {
              "start_date": "21/08/2023",
              "end_date": "21/10/2024"
            }
          },
          {
            "name": "YearRange",
            "position": 17,
            "data_type": "from_year_to_year",
            "mandatory": "Y",
            "value": {
              "from": 2030,
              "to": 2034
            }
          }
        ]
      },
      "created_on": "xxxxxxxx",
      "last_updated_user_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
      "last_updated_status": "Approved",
      "last_updated_timestamp": "xxxxxxxx",
      "last_updated_user_name": "Akshay Rangnekar",
      "distribution_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
      "distribution_identifier": "xxxxxxxxxxxxxxxxxxxxxxxx",
      "distribution_settlement_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
      "distribution_bank": "HDFC Bank",
      "distribution_amount": "512.0",
      "distribution_mode_of_payment": "NEFT",
      "distribution_lifecycle_status": "created",
      "distribution_approved": false,
      "distribution_approval_strategy": "system",
      "distribution_logs": [
        {
          "action": "Created",
          "user_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
          "timestamp": "2024-01-12T10:09:53.886Z",
          "user_full_name": "Akshay Rangnekar"
        }
      ],
      "logs": [
        {
          "action": "Created",
          "user_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
          "user_full_name": "Akshay Rangnekar",
          "timestamp": "2024-01-12T10:09:53.714Z",
          "request_ip": "127.0.0.1",
          "last_used": "2024-01-12T10:09:53.679Z",
          "logged_in_flag": true,
          "logged_in_time": "2024-01-11T10:27:49.369Z",
          "app_version_name": "1.43",
          "app_version_code": "54",
          "platform": "android",
          "model": "Android SDK built for x86",
          "manufacturer": "unknown",
          "brand": "Android",
          "serial_number": "EMULATOR32X1X14X0",
          "os_version": "6.0",
          "sdk_version": "23",
          "ip_address": "127.0.0.1",
          "is_primary": false,
          "is_verified": false,
          "first_name": "Akshay",
          "last_name": "Rangnekar"
        },
        {
          "action": "Approved",
          "user_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
          "user_full_name": "Akshay Rangnekar",
          "authorization_rule": "Director~1",
          "final_approval": true,
          "timestamp": "2024-01-12T10:09:53.734Z",
          "request_ip": "127.0.0.1",
          "last_used": "2024-01-12T10:09:53.679Z",
          "logged_in_flag": true,
          "logged_in_time": "2024-01-11T10:27:49.369Z",
          "app_version_name": "1.43",
          "app_version_code": "54",
          "platform": "android",
          "model": "Android SDK built for x86",
          "manufacturer": "unknown",
          "brand": "Android",
          "serial_number": "EMULATOR32X1X14X0",
          "os_version": "6.0",
          "sdk_version": "23",
          "ip_address": "127.0.0.1",
          "is_primary": false,
          "is_verified": false,
          "first_name": "Akshay",
          "last_name": "Rangnekar"
        }
      ]
    }
  ],
  "title": {
    "records": 1,
    "current_page": 1,
    "total_pages": 1,
    "page_item_count": 1
  }
}

ERROR RESPONSE The request returns JSON structured like below for errors related internal transaction

{
    "status":false, 
    "errors":{
        "internal_account":[
            "Internal account is not approved"
        ],
        "internal_account": [
            "Internal account must exist",
            "Internal account is not valid for the transaction"
        ], 
        "base":[
            "Internal category is not valid for the beneficiary transaction"
        ],
        "owner_account": [
            "Owner account must exist"
        ],
        "amount":[
            "Amount can't be blank"
        ],
        "base":[
            "Amount is not valid for RTGS transaction"
        ],
        "base":[
            "Amount is not valid for NEFT transaction"
        ],
        "base":[
            "Amount is not valid for IMPS transaction"
        ],
        "category":[
            "Category can't be blank", 
            "Category  is not valid/active for the transaction type",
            "Category  is not valid for the transaction type",
            "Category not found"
        ],
        "base":[
            "Internal Account is not yet activated for disbursement. Kindly contact support"
        ],
        "base":[
            "Internal Account is archived. Transaction cannot be created. Kindly contact support"
        ],
        "base":[
            "No Auth Matrix Rule found for the transaction"
        ],
        "base": [
            "Connected banking not active for owner account. Transaction cannot be created. Kindly contact support"
        ],
        "base": [
            "Internal Account doesn't belongs to your entity."
        ],
        "base": [
            "Owner Account doesn't belongs to your entity."
        ],
        "base": [
            "Owner Account is pending. Transaction cannot be created. Kindly contact support"
        ],
        "base": [
            "Owner & Internal Bank Account number are same. Transaction cannot be created. Kindly contact support"
        ],
        "payment_method": [
            "Payment method is not included in the list"
        ],
        "additional_data":
        [
            "Additional data Data data when supplied cannot be blank",
            "Additional data has settings declared under data key/s",
            "Additional data cannot be sent blank for the 'Internal' transaction category",
            "Additional data should be sent blank for the 'Mobile Bill' transaction category",
            "Additional data 'data' is malformed",
            "Additional data configuration is missing / unknown for 'name' key",
            "Additional data 'data' must have position as 1, 2, 3, 4, ...",
            "Additional data 'data' must have unique position in array",
            "Additional data 'data' cannot be declared as empty",
            "Additional data 'data' must have unique value for each name field in array",
            "Additional data 'data' : {\"hello\"=>\"abc\"} must have name, data_type, mandatory and position keys in each hash",
            "Additional data 'data' : {\"name\"=>\"month\", \"value\"=>10, \"position\"=>1, \"data_type\"=>\"string\", \"mandatory\"=>\"Y\"} must have matching value as string as declared in transaction category configuration",
            "Additional data 'data' : {\"name\"=>\"month\", \"position\"=>\"1\", \"data_type\"=>\"string\", \"mandatory\"=>\"Y\", \"value\"=>\"Mon\"} must have position as an integer",
            "Additional data 'data' : {\"name\"=>\"month\", \"position\"=>1, \"data_type\"=>\"list\", \"mandatory\"=>\"Y\", \"value\"=>\"Wed\", \"data\"=>[\"Mon\", \"Tue\"]} must have value as an array of strings",
            "Additional data 'data' : {\"name\"=>\"Accountants\", \"position\"=>4, \"data_type\"=>\"list\", \"mandatory\"=>\"N\", \"value\"=>\"Pradeep, Sachin, Sewaram\"} must have data as an array of strings",
            "Additional data 'data' : {\"name\"=>\"Accountants\", \"position\"=>4, \"data_type\"=>\"list\", \"mandatory\"=>\"N\", \"value\"=>\"Pradeep, Sachin, Sewaram\"} must have value from '[\"Pradeep\", \"Sachin\", \"Sewaram\"]' which is declared in the category configuration",
            "Additional data 'data' : {\"name\"=>\"month\", \"position\"=>1, \"data_type\"=>\"problem\", \"mandatory\"=>\"Y\", \"value\"=>\"Mon\"} must have data_type as one of the following: string, numeric, list, date, year, month_year, time, day, toggle, month, hyperlink, upload, multi_select_list, quantity, date_range, from_year_to_year",
            "Additional data 'data' : {\"name\"=>\"Accountants\", \"position\"=>4, \"data_type\"=>\"list\", \"mandatory\"=>\"N\", \"data\"=>[\"Pradeep\", \"Sachin\", \"Sewaram\"]} must have name, data_type, mandatory, value and position keys in each hash",
            "Additional data 'data' : {\"name\"=>\"leaves\", \"position\"=>2, \"data_type\"=>\"numeric\", \"mandatory\"=>\"N\", \"value\"=>12} must have matching value as numeric as declared in transaction category configuration",
            "Additional data 'data' : {\"name\"=>\"month\", \"position\"=>1, \"data_type\"=>\"problem\", \"mandatory\"=>\"Y\", \"value\"=>\"Mon\"} must have data_type 'string' as declared in category configuration",
            "Additional data 'data' : {\"name\"=>\"month\", \"position\"=>1, \"data_type\"=>\"string\", \"mandatory\"=>\"Y\"} must have a value as it is a mandatory field",
            "Additional data 'data' : {\"name\"=>\"month\", \"position\"=>1, \"data_type\"=>\"string\", \"problem\"=>\"Y\", \"value\"=>\"Mon\"} must have name, data_type, mandatory and position keys in each hash",
            "Additional data 'data' : {\"name\"=>\"month\", \"position\"=>1, \"data_type\"=>\"string\", \"mandatory\"=>\"Y\", \"value\"=>1234} must have matching value as string as declared in transaction category configuration",
            "Additional data 'data' : {\"name\"=>\"month\", \"position\"=>1, \"data_type\"=>\"string\", \"problem\"=>\"Y\", \"value\"=>\"Mon\"} must have mandatory as one of the following: Y, N",
            "Additional data 'data' : {\"name\"=>\"month\", \"position\"=>1, \"data_type\"=>\"string\", \"problem\"=>\"Y\", \"value\"=>\"Mon\"} must have mandatory 'Y' as declared in category configuration",
            "Additional data 'data' : {\"name\"=>\"yearly bill\", \"position\"=>3, \"data_type\"=>\"year\", \"mandatory\"=>\"Y\", \"value\"=>\"24\"} must have matching value as year as declared in transaction category configuration",
            "Additional data 'data' : {\"name\"=>\"Mothly bill\", \"position\"=>1, \"data_type\"=>\"month_year\", \"mandatory\"=>\"Y\", \"value\"=>\"Dec 2024\"} must have matching value as year as declared in transaction category configuration",
            "Additional data 'data' : {\"name\"=>\"yearly bill\", \"position\"=>3, \"data_type\"=>\"year\", \"mandatory\"=>\"Y\"} must have a value as it is a mandatory field",
            "Additional data [\"id\", \"storage\", \"metadata\"] cannot be declared as empty",
            "Additional data [\"filename\", \"size\", \"mime_type\"] must be as declared in transaction category configuration",
            "Additional data 'data' : {\"name\"=>\"Multiselect\", \"position\"=>7, \"data_type\"=>\"multi_select_list\", \"mandatory\"=>\"Y\", \"value\"=>\"[\n          test, \n          2\n        ]\"} must have matching value as multi select as declared in transaction category configuration",
            "Additional data 'data' : {\"name\"=>\"Quantity\", \"position\"=>8, \"data_type\"=>\"quantity\", \"mandatory\"=>\"Y\", \"value\"=>5.0} must have matching value as quantity as declared in transaction category configuration",
            "Additional data 'data' : {\"name\"=>\"DateRange\", \"position\"=>9, \"data_type\"=>\"date_range\", \"mandatory\"=>\"Y\", \"value\"=>\"21/09/2024\"} must have matching value as date_range as declared in transaction category configuration",
            "Additional data 'data' : {\"name\"=>\"DateRange\", \"position\"=>9, \"data_type\"=>\"date_range\", \"mandatory\"=>\"Y\", \"value\"=>{}} must have a value as it is a mandatory field",
            "Additional data [\"start_date\", \"end_date\"] must be as declared in transaction category configuration",
            "Additional data {\"start_date\"=>\" \", \"end_date\"=>\"21/09/2024\"} must have matching value as date_range as declared in transaction category configuration",
            "Additional data {\"from\"=>\"2023\", \"to\"=>\"2024\"} must have matching value as from_year_to_year as declared in transaction category configuration",
            "Additional data [\"from\", \"to\"] must be as declared in transaction category configuration"
        ]
} }

This endpoint creates a Internal Transaction.

UAT HTTP Request

POST https://nxt.api.q2pay.co.in/api/transactions/internal

PRODUCTION HTTP Request

POST https://nxt.api.q2pay.in/api/transactions/internal

Query Parameters

Parameter Default Description Required Sample
amount N.A. amount for internal transaction Yes 67000.0
internal_account_id N.A. internal account id for internal transaction Yes xxxxxxxx-xxxx-xxxx-xxxxxx
owner_account_id N.A. owner account id for internal transaction Yes xxxxxxxx-xxxx-xxxx-xxxxxx
category N.A. category for internal transaction Yes Internal
additional_data N.A. additional data for internal transaction Yes "data": [ {"name": "month", "position": 1,"data_type": "string","mandatory": "Y", "value": "Mon"}]
distribution_remark N.A. distribution remark for internal transaction No dec month
payment_method N.A. payment method for internal transaction optional RTGS
confidential_transaction N.A. confidential transaction for internal transaction optional true, false
labels N.A labels for owner account No ["building expense"]

Service Details

Service ID Description
CInternalTxn Create Internal Transaction

Approve Internal Transaction

curl -X PUT "https://<environmenturl>/api/transactions/internal/approve"
  -H "X-Api-Key: <your secure token>"
  -H "Content-Type: application/json"
  -d "{ 
    "txn_id":  ["xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx"]
      }"

require 'net/http'
require 'uri'
require 'json'

uri = URI.parse("https://<environmenturl>/api/transactions/internal/approve") header = {'X-Api-Key' => '<your secure token>', 'Content-Type' => 'application/json'} body = { "txn_id": ["xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx"] } http = Net::HTTP.new(uri.host, uri.port) http.use_ssl = true request = Net::HTTP::Put.new(uri.request_uri, header) request.body = body.to_json response = http.request(request)

const data = {
   "txn_id":  ["xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx"]
};

fetch('https://<environmenturl>/api/transactions/internal/approve', { method: 'PUT', headers: { 'X-Api-Key': '<your secure token>', 'Content-Type': 'application/json' }, body: JSON.stringify(data) }) .then(response => response.json()) .then(data => console.log(data)) .catch(error => console.error(error));

The below example can be sent as a request to the API.

{
  "txn_id":  ["xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx"]
}

The below example can be sent as a request to the API for multiple transaction id.

{
  "txn_id":  ["xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx","xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx"]
}

SUCCESS RESPONSE The request returns JSON structured like below on successful internal transaction approve

{
  "status": true,
  "total_count": 1,
  "total_amount": "25.0",
  "transactions": [
    {
      "total_amount": "25.0",
      "txn_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
      "amount": "25.0",
      "category": "Internal",
      "internal_transaction": true,
      "confidential_transaction": "Y",
      "lifecycle_status": "approved",
      "distribution_remark": "Testing",
      "txn_initiator": "Sneha Gaikwad",
      "approved": "Y",
      "approved_at": "xxxxxxxx",
      "payment_charge": "0.0",
      "tax_amount": "0.0",
      "entity_id": "ABC12",
      "rejected": false,
      "refactored": false,
      "internal_account_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
      "internal_account_name": "ANKITA ANIL GAYKAR",
      "internal_account_bank_acc_no": "123456789",
      "internal_account_ifsc_code": "SBIN0012346",
      "internal_account_bank_name": "State Bank of India",
      "internal_account_approval_status": "approved",
      "owner_account_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
      "owner_account_bank_acc_no": "000198765434",
      "owner_account_ifsc_code": "HDFC0000220",
      "owner_account_bank_name": "HDFC Bank",
      "owner_account_type": "Current Account",
      "owner_account_balance": "0.0",
      "owner_account_balance_last_fetched_at": "xxxxxxxx",
      "owner_account_balance_last_fetched_at_in_words": "about 4 hours ago",
      "additional_data": {
        "data": [
          {
            "name": "month",
            "position": 1,
            "data_type": "string",
            "mandatory": "Y",
            "value": "Mon"
          },
          {
            "name": "leaves",
            "position": 2,
            "data_type": "numeric",
            "mandatory": "Y",
            "value": 1233
          },
          {
            "name": "PAN",
            "position": 3,
            "data_type": "string",
            "mandatory": "N",
            "value": "Pan no"
          },
          {
            "data": [
              "Pradeep",
              "Sachin",
              "Sewaram"
            ],
            "name": "Accountants",
            "position": 4,
            "data_type": "list",
            "mandatory": "N",
            "value": "Pradeep"
          },
          {
            "name": "month 1",
            "position": 5,
            "data_type": "time",
            "mandatory": "Y",
            "value": "09:34"
          },
          {
            "name": "Day",
            "position": 6,
            "data_type": "day",
            "mandatory": "Y",
            "value": "Monday"
          },
          {
            "name": "Dummy",
            "position": 7,
            "data_type": "toggle",
            "mandatory": "Y",
            "value": true
          },
          {
            "name": "Month",
            "position": 8,
            "data_type": "month",
            "mandatory": "Y",
            "value": "March"
          },
          {
            "name": "Hyperlink",
            "position": 9,
            "data_type": "hyperlink",
            "mandatory": "Y",
            "value": "https://nxt.api.q2pay.co.in/api/transaction_auth_matrix.json"
          },
            {
              "name": "File",
              "position": 10,
              "data_type": "upload",
              "mandatory": "Y",
                "value": {
                  "id": "c68cc4e7d54381cc46384f194c09ce2c.png",
                  "storage": "cache",
                  "metadata": {
                    "filename": "favicon.png",
                    "size": 62260,
                    "mime_type": "image/png"
                  },
                  "file_url": "https://your-bucket.s3.amazonaws.com/store/c68cc4e7d54381cc46384f194c09ce2c.png"
                }
              },
          {
            "name": "Date",
            "position": 11,
            "data_type": "date",
            "mandatory": "Y",
            "value": "23/04/2023"
          },
          {
            "name": "Year",
            "position": 12,
            "data_type": "year",
            "mandatory": "Y",
            "value": "2024"
          },
          {
            "name": "Month_Year",
            "position": 13,
            "data_type": "month_year",
            "mandatory": "Y",
            "value": "12/2024"
          },
          {
            "name": "Multiselect",
            "position": 14,
            "data_type": "multi_select_list",
            "mandatory": "Y",
            "data": [
              "ab",
              "abc",
              "abcd"
            ],
            "value": [
               "ab",
               "abc"
            ]
          },
          {
            "name": "Quantity",
            "position": 15,
            "data_type": "quantity",
            "mandatory": "Y",
            "value": 5
          },
          {
            "name": "DateRange",
            "position": 16,
            "data_type": "date_range",
            "mandatory": "Y",
            "value": {
              "start_date": "21/08/2023",
              "end_date": "21/10/2024"
            }
          },
          {
            "name": "YearRange",
            "position": 17,
            "data_type": "from_year_to_year",
            "mandatory": "Y",
            "value": {
              "from": 2030,
              "to": 2034
            }
          }
        ]
      },
      "created_on": "xxxxxxxx",
      "last_updated_user_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
      "last_updated_status": "Approved",
      "last_updated_timestamp": "xxxxxxxx",
      "last_updated_user_name": "sidharth shukla",
      "distribution_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
      "distribution_identifier": "xxxxxxxxxxxxxxxxxxxxxxxx",
      "distribution_settlement_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
      "distribution_bank": "State Bank of India",
      "distribution_amount": "25.0",
      "distribution_mode_of_payment": "NEFT",
      "distribution_lifecycle_status": "created",
      "distribution_approved": false,
      "distribution_approval_strategy": "system",
      "distribution_logs": [
        {
          "action": "Created",
          "user_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
          "timestamp": "2024-04-10T09:55:17.671Z",
          "user_full_name": "sidharth shukla",
          "user_platform_details": null
        }
      ],
      "logs": [
        {
          "action": "Created",
          "user_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
          "platform": "web",
          "last_name": "Gaikwad",
          "last_used": "2024-04-10T09:51:29.895Z",
          "timestamp": "2024-04-10T09:51:29.923Z",
          "first_name": "Sneha",
          "ip_address": "103.212.154.226",
          "is_primary": false,
          "os_version": "Windows 10",
          "request_ip": "103.212.154.226",
          "is_verified": false,
          "browser_name": "google chrome",
          "logged_in_flag": true,
          "logged_in_time": "2024-04-10T09:48:56.117Z",
          "user_full_name": "Sneha Gaikwad"
        },
        {
          "action": "Approved",
          "user_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
          "platform": "web",
          "last_name": "shukla",
          "last_used": "2024-04-10T09:55:17.533Z",
          "timestamp": "2024-04-10T09:55:17.604Z",
          "first_name": "sidharth",
          "ip_address": "103.212.154.226",
          "is_primary": false,
          "os_version": "Windows 10",
          "request_ip": "103.212.154.226",
          "is_verified": false,
          "browser_name": "google chrome",
          "final_approval": true,
          "logged_in_flag": true,
          "logged_in_time": "2024-04-10T09:55:06.039Z",
          "user_full_name": "sidharth shukla",
          "authorization_rule": "Approver~1"
        }
      ]
    }
  ],
  "title": {
    "records": 1,
    "current_page": 1,
    "total_pages": 1,
    "page_item_count": 50
  }
}

ERROR RESPONSE The request returns JSON structured like below for errors related internal transaction

{
    "status":false,
    "action":"Not performed",
    "errors":{
        "base":[
            "Invalid / Insufficient parameters"
        ],
        "base":[
            "No transactions found for transaction ids: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx"
        ],
"base":[ "All transactions do not belong to the same entity / Few transactions are already approved or are abandoned/cancelled" ],
"base":[ { "id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx", "reason":[ "User is not authorized to approve transaction." ] } ], "base": [ { "id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx", "errors": "Internal account is not approved" } ], "base":[ { "id":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx", "errors":[ { "reason":"User is not authorized to approve (duplicate approval)" } ] } ]
} }

This endpoint approve a Internal Transaction.

UAT HTTP Request

PUT https://nxt.api.q2pay.co.in/api/transactions/internal/approve

PRODUCTION HTTP Request

PUT https://nxt.api.q2pay.in/api/transactions/internal/approve

Query Parameters

Parameter Default Description Required Sample
txn_id N.A. txn id for internal transaction Yes [xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxx ,xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxx]

Service Details

Service ID Description
AInternalTxn Approve Internal Transaction

Reject Internal Transaction

curl -X PUT "https://<environmenturl>/api/transactions/internal/reject"
  -H "X-Api-Key: <your secure token>"
  -H "Content-Type: application/json"
  -d "{ 
    "txn_id":  ["xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx"],
    "reason" : "Another transaction is already in progress"
      }"

require 'net/http'
require 'uri'
require 'json'

uri = URI.parse("https://<environmenturl>/api/transactions/internal/reject") header = {'X-Api-Key' => '<your secure token>', 'Content-Type' => 'application/json'} body = { "txn_id": ["xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx"], "reason" : "Another transaction is already in progress" } http = Net::HTTP.new(uri.host, uri.port) http.use_ssl = true request = Net::HTTP::Put.new(uri.request_uri, header) request.body = body.to_json response = http.request(request)

const data = {
   "txn_id":  ["xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx"],
   "reason" : "Another transaction is already in progress"
};

fetch('https://<environmenturl>/api/transactions/internal/reject', { method: 'PUT', headers: { 'X-Api-Key': '<your secure token>', 'Content-Type': 'application/json' }, body: JSON.stringify(data) }) .then(response => response.json()) .then(data => console.log(data)) .catch(error => console.error(error));

The below example can be sent as a request to the API.

{
  "txn_id":  ["xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx"],
  "reason" : "Another transaction is already in progress"
}

The below example can be sent as a request to the API for multiple transaction id.

{
  "txn_id":  ["xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx","xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx"],
  "reason" : "Another transaction is already in progress"
}

SUCCESS RESPONSE The request returns JSON structured like below on successful internal transaction reject

{
  "status": true,
  "total_count": 1,
  "total_amount": "25.0",
  "transactions": [
    {
      "total_amount": "25.0",
      "txn_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
      "amount": "25.0",
      "category": "Internal",
      "internal_transaction": true,
      "confidential_transaction": "N",
      "lifecycle_status": "rejected",
      "distribution_remark": "Testing",
      "txn_initiator": "Sneha Gaikwad",
      "approved": "N",
      "approved_at": 0,
      "payment_charge": "0.0",
      "tax_amount": "0.0",
      "entity_id": "ABC12",
      "rejected": true,
      "rejection_reason": "update transaction method",
      "rejected_by": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
      "rejected_at": "2024-04-10T10:18:09.447Z",
      "refactored": false,
      "internal_account_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
      "internal_account_name": "ANKITA ANIL GAYKAR",
      "internal_account_bank_acc_no": "1234567899",
      "internal_account_ifsc_code": "SBIN2333445",
      "internal_account_bank_name": "State Bank of India",
      "internal_account_approval_status": "approved",
      "owner_account_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
      "owner_account_bank_acc_no": "1111999876544",
      "owner_account_ifsc_code": "HDFC0000223",
      "owner_account_bank_name": "HDFC Bank",
      "owner_account_type": "Current Account",
      "owner_account_balance": "0.0",
      "owner_account_balance_last_fetched_at": "xxxxxxxx",
      "owner_account_balance_last_fetched_at_in_words": "about 4 hours ago",
      "additional_data": {
        "data": [
          {
            "name": "month",
            "position": 1,
            "data_type": "string",
            "mandatory": "Y",
            "value": "Mon"
          },
          {
            "name": "leaves",
            "position": 2,
            "data_type": "numeric",
            "mandatory": "Y",
            "value": 1233
          },
          {
            "name": "PAN",
            "position": 3,
            "data_type": "string",
            "mandatory": "N",
            "value": "Pan no"
          },
          {
            "data": [
              "Pradeep",
              "Sachin",
              "Sewaram"
            ],
            "name": "Accountants",
            "position": 4,
            "data_type": "list",
            "mandatory": "N",
            "value": "Pradeep"
          },
          {
            "name": "month 1",
            "position": 5,
            "data_type": "time",
            "mandatory": "Y",
            "value": "09:34"
          },
          {
            "name": "Day",
            "position": 6,
            "data_type": "day",
            "mandatory": "Y",
            "value": "Monday"
          },
          {
            "name": "Dummy",
            "position": 7,
            "data_type": "toggle",
            "mandatory": "Y",
            "value": true
          },
          {
            "name": "Month",
            "position": 8,
            "data_type": "month",
            "mandatory": "Y",
            "value": "March"
          },
          {
            "name": "Hyperlink",
            "position": 9,
            "data_type": "hyperlink",
            "mandatory": "Y",
            "value": "https://nxt.api.q2pay.co.in/api/transaction_auth_matrix.json"
          },
          {
            "name": "File",
            "position": 10,
            "data_type": "upload",
            "mandatory": "Y",
              "value": {
                "id": "c68cc4e7d54381cc46384f194c09ce2c.png",
                "storage": "cache",
                "metadata": {
                  "filename": "favicon.png",
                  "size": 62260,
                  "mime_type": "image/png"
                },
                "file_url": "https://your-bucket.s3.amazonaws.com/store/c68cc4e7d54381cc46384f194c09ce2c.png"
              }
            },
          {
            "name": "Date",
            "position": 11,
            "data_type": "date",
            "mandatory": "Y",
            "value": "23/04/2023"
          },
          {
            "name": "Year",
            "position": 12,
            "data_type": "year",
            "mandatory": "Y",
            "value": "2024"
          },
          {
            "name": "Month_Year",
            "position": 13,
            "data_type": "month_year",
            "mandatory": "Y",
            "value": "12/2024"
          },
          {
            "name": "Multiselect",
            "position": 14,
            "data_type": "multi_select_list",
            "mandatory": "Y",
            "data": [
              "ab",
              "abc",
              "abcd"
            ],
            "value": [
               "ab",
               "abc"
            ]
          },
          {
            "name": "Quantity",
            "position": 15,
            "data_type": "quantity",
            "mandatory": "Y",
            "value": 5
          },
          {
            "name": "DateRange",
            "position": 16,
            "data_type": "date_range",
            "mandatory": "Y",
            "value": {
              "start_date": "21/08/2023",
              "end_date": "21/10/2024"
            }
          },
          {
            "name": "YearRange",
            "position": 17,
            "data_type": "from_year_to_year",
            "mandatory": "Y",
            "value": {
              "from": 2030,
              "to": 2034
            }
          }
        ]
      },
      "created_on": "xxxxxxxx",
      "last_updated_user_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
      "last_updated_status": "Rejected",
      "last_updated_timestamp": "xxxxxxxx",
      "last_updated_user_name": "Sneha Gaikwad",
      "logs": [
        {
          "action": "Created",
          "user_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
          "platform": "web",
          "last_name": "Gaikwad",
          "last_used": "2024-04-10T10:17:46.130Z",
          "timestamp": "2024-04-10T10:17:46.159Z",
          "first_name": "Neha",
          "ip_address": "182.79.233.142",
          "is_primary": false,
          "os_version": "Windows 10",
          "request_ip": "182.79.233.142",
          "is_verified": false,
          "browser_name": "google chrome",
          "logged_in_flag": true,
          "logged_in_time": "2024-04-10T10:15:42.396Z",
          "user_full_name": "Sneha Gaikwad"
        },
        {
          "action": "Rejected",
          "user_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
          "platform": "web",
          "last_name": "Gaikwad",
          "last_used": "2024-04-10T10:18:09.398Z",
          "timestamp": "2024-04-10T10:18:09.454Z",
          "first_name": "Sneha",
          "ip_address": "103.212.154.226",
          "is_primary": false,
          "os_version": "Windows 10",
          "request_ip": "103.212.154.226",
          "is_verified": false,
          "browser_name": "google chrome",
          "logged_in_flag": true,
          "logged_in_time": "2024-04-10T10:15:42.396Z",
          "user_full_name": "Sneha Gaikwad",
          "rejection_reason": "update transaction method"
        }
      ]
    }
  ],
  "title": {
    "records": 1,
    "current_page": 1,
    "total_pages": 1,
    "page_item_count": 50
  }
}

ERROR RESPONSE The request returns JSON structured like below for errors related internal transaction

{
    "status":false,
    "action":"Not performed",
    "errors":{
        "base":[
            "Invalid / Insufficient parameters"
        ],
        "base":
        [
            "No transactions found for transaction ids: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx"
        ],
        "base":
        [
            "All transactions do not belong to the same entity"
        ],
        "base":[
            {
                "id":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx", 
                "errors":[
                    "Reason must be at least 10 characters"
                ]
            }
        ],
        "base":[
            {
                "id":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
                "errors":"Transaction cannot be rejected due to current status"
            }
        ]
} }

This endpoint reject a Internal Transaction.

UAT HTTP Request

PUT https://nxt.api.q2pay.co.in/api/transactions/internal/reject

PRODUCTION HTTP Request

PUT https://nxt.api.q2pay.in/api/transactions/internal/reject

Query Parameters

Parameter Default Description Required Sample
txn_id N.A. txn id for internal transaction Yes [xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxx ,xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxx]
reason N.A. reason for internal transaction Yes Another transaction is already in progress

Service Details

Service ID Description
AInternalTxn Reject Internal Transaction

Add Status Internal Transaction

curl -X PUT "https://<environmenturl>/api/transactions/internal/add_status"
  -H "X-Api-Key: <your secure token>"
  -H "Content-Type: application/json"
  -d "{ 
    "txn_id":  ["xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx"],
    "status": "abandoned"
      }"

require 'net/http'
require 'uri'
require 'json'

uri = URI.parse("https://<environmenturl>/api/transactions/internal/add_status") header = {'X-Api-Key' => '<your secure token>', 'Content-Type' => 'application/json'} body = { "txn_id": ["xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx"], "status": "abandoned" } http = Net::HTTP.new(uri.host, uri.port) http.use_ssl = true request = Net::HTTP::Put.new(uri.request_uri, header) request.body = body.to_json response = http.request(request)

const data = {
   "txn_id":  ["xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx"],
   "status": "abandoned"
};

fetch('https://<environmenturl>/api/transactions/internal/add_status', { method: 'PUT', headers: { 'X-Api-Key': '<your secure token>', 'Content-Type': 'application/json' }, body: JSON.stringify(data) }) .then(response => response.json()) .then(data => console.log(data)) .catch(error => console.error(error));

The below example can be sent as a request to the API.

{
  "txn_id":  ["xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx"],
  "status": "abandoned"
}

The below example can be sent as a request to the API for multiple transaction id.

{
  "txn_id":  ["xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx","xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx"],
  "status": "abandoned"
}

SUCCESS RESPONSE The request returns JSON structured like below on successful internal transaction add status

{
    "status":true,
    "lifecycle_status":"abandoned", 
    "txn_id":[
        "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx"
        ]
}

ERROR RESPONSE The request returns JSON structured like below for errors related internal transaction

{
    "status":false,
    "action":"Not performed", 
    "errors":{
        "base":[
            "Invalid / Insufficient parameters"
        ],
        "base":[
            "Unqualified status: pending"
        ],
        "base":[
            "Unqualified status: "
        ],
        "base":[
            "All transactions do not belong to the same entity"
        ], 
        "base":[
            {
                "id":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
                "reason":[
                    "Transaction cannot be updated as it is already having status : abandoned"
                ]
            }
        ],
        "base":[
            "No transactions found for transaction ids: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx"
        ]
    }
}

This endpoint add status a Internal Transaction.

UAT HTTP Request

PUT https://nxt.api.q2pay.co.in/api/transactions/internal/add_status

PRODUCTION HTTP Request

PUT https://nxt.api.q2pay.in/api/transactions/internal/add_status

Query Parameters

Parameter Default Description Required Sample
txn_id N.A. txn id for internal transaction Yes [xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxx ,xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxx]
status N.A. status for internal transaction Yes abandoned

Service Details

Service ID Description
Admin Add status Internal Transaction

Actionable Internal Transaction

curl -X GET "https://<environmenturl>/api/transactions/internal/actionable"
  -H "X-Api-Key: <your secure token>"
  -H "Content-Type: application/json"
  -d "{ 
       "entity_id" : "QABC12",
       "category": "Internal"
      }"

require 'net/http'
require 'uri'
require 'json'

uri = URI.parse("https://<environmenturl>/api/transactions/internal/actionable") header = {'X-Api-Key' => '<your secure token>', 'Content-Type' => 'application/json'} body = { "entity_id" : "QABC12", "category": "Internal" } http = Net::HTTP.new(uri.host, uri.port) http.use_ssl = true request = Net::HTTP::Get.new(uri.request_uri, header) request.body = body.to_json response = http.request(request)

const data = {
  "entity_id" : "QABC12",
  "category": "Internal"
};

fetch('https://<environmenturl>/api/transactions/internal/actionable', { method: 'GET', headers: { 'X-Api-Key': '<your secure token>', 'Content-Type': 'application/json' }, body: JSON.stringify(data) }) .then(response => response.json()) .then(data => console.log(data)) .catch(error => console.error(error));

The below example can be sent as a request to the API.

{
 "entity_id" : "QABC12",
 "category": "Internal"
}

SUCCESS RESPONSE The request returns JSON structured like below on successful internal transaction actionable

{
  "status": true,
  "total_count": 1,
  "total_amount": "2000.0",
  "transactions": [
    {
      "total_amount": "1000.0",
      "txn_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
      "amount": "1000.0",
      "category": "Internal",
      "internal_transaction": true,
      "confidential_transaction": "N",
      "lifecycle_status": "pending",
      "txn_initiator": "Priya jawale",
      "approved": "N",
      "approved_at": 0,
      "payment_charge": "0.0",
      "tax_amount": "0.0",
      "entity_id": "ABC12",
      "rejected": false,
      "refactored": false,
      "internal_account_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
      "internal_account_name": "Mr AKASH PRAMOD BAGUL",
      "internal_account_bank_acc_no": "12345678",
      "internal_account_ifsc_code": "SBIN0031200",
      "internal_account_bank_name": "State Bank of India",
      "internal_account_approval_status": "approved",
      "owner_account_id":"xxxxxxxx-xxxx-xxxx-xxxxxx",
      "owner_account_bank_acc_no":"9482940300",
      "owner_account_ifsc_code":"ICIC0000112",
      "owner_account_bank_name":"ICICI Bank",
      "owner_account_type":"Current Account",
      "owner_account_balance":"1500.0",
      "owner_account_balance_last_fetched_at":"xxxxxxxx",
      "owner_account_balance_last_fetched_at_in_words":"less than a minute ago"
      "additional_data": {
        "data": [
          {
            "name": "month",
            "position": 1,
            "data_type": "string",
            "mandatory": "Y",
            "value": "Mon"
          },
          {
            "name": "leaves",
            "position": 2,
            "data_type": "numeric",
            "mandatory": "Y",
            "value": 1233
          },
          {
            "name": "PAN",
            "position": 3,
            "data_type": "string",
            "mandatory": "N",
            "value": "Pan no"
          },
          {
            "data": [
              "Pradeep",
              "Sachin",
              "Sewaram"
            ],
            "name": "Accountants",
            "position": 4,
            "data_type": "list",
            "mandatory": "N",
            "value": "Pradeep"
          },
          {
            "name": "month 1",
            "position": 5,
            "data_type": "time",
            "mandatory": "Y",
            "value": "09:34"
          },
          {
            "name": "Day",
            "position": 6,
            "data_type": "day",
            "mandatory": "Y",
            "value": "Monday"
          },
          {
            "name": "Dummy",
            "position": 7,
            "data_type": "toggle",
            "mandatory": "Y",
            "value": true
          },
          {
            "name": "Month",
            "position": 8,
            "data_type": "month",
            "mandatory": "Y",
            "value": "March"
          },
          {
            "name": "Hyperlink",
            "position": 9,
            "data_type": "hyperlink",
            "mandatory": "Y",
            "value": "https://nxt.api.q2pay.co.in/api/transaction_auth_matrix.json"
         },
         {
              "name": "File",
              "position": 10,
              "data_type": "upload",
              "mandatory": "Y",
                "value": {
                  "id": "c68cc4e7d54381cc46384f194c09ce2c.png",
                  "storage": "cache",
                  "metadata": {
                    "filename": "favicon.png",
                    "size": 62260,
                    "mime_type": "image/png"
                  },
                  "file_url": "https://your-bucket.s3.amazonaws.com/store/c68cc4e7d54381cc46384f194c09ce2c.png"
                }
              },

{ "name": "Date", "position": 11, "data_type": "date", "mandatory": "Y", "value": "23/04/2023" }, { "name": "Year", "position": 12, "data_type": "year", "mandatory": "Y", "value": "2024" }, { "name": "Month_Year", "position": 13, "data_type": "month_year", "mandatory": "Y", "value": "12/2024" }, { "name": "Multiselect", "position": 14, "data_type": "multi_select_list", "mandatory": "Y", "data": [ "ab", "abc", "abcd" ], "value": [ "ab", "abc" ] }, { "name": "Quantity", "position": 15, "data_type": "quantity", "mandatory": "Y", "value": 5 }, { "name": "DateRange", "position": 16, "data_type": "date_range", "mandatory": "Y", "value": { "start_date": "21/08/2023", "end_date": "21/10/2024" } }, { "name": "YearRange", "position": 17, "data_type": "from_year_to_year", "mandatory": "Y", "value": { "from": 2030, "to": 2034 } } ] }, "created_on": "xxxxxxxx", "last_updated_user_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx", "last_updated_status": "Created", "last_updated_timestamp": "xxxxxxxx", "last_updated_user_name": "Akshay Rangnekar" } ], "title": { "records": 1, "current_page": 1, "total_pages": 1, "page_item_count": 50 } }

This endpoint actionable a Internal Transaction.

UAT HTTP Request

GET https://nxt.api.q2pay.co.in/api/transactions/internal/actionable

PRODUCTION HTTP Request

GET https://nxt.api.q2pay.in/api/transactions/internal/actionable

Query Parameters

Parameter Default Description Required Sample
entity_id N.A. entity id for internal transaction Yes (Admin) ABC12
category N.A. category for internal transaction No Internal
labels N.A. labels for internal transaction No ["audit expense"]

Service Details

Service ID Description
VInternalTxn Actionable Internal Transaction

Refactor Internal Transaction

curl -X PUT "https://<environmenturl>/api/transactions/internal/refactor"
  -H "X-Api-Key: <your secure token>"
  -H "Content-Type: application/json"
  -d "{ 
    "txn_id":  ["xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx"]
      }"

require 'net/http'
require 'uri'
require 'json'

uri = URI.parse("https://<environmenturl>/api/transactions/internal/refactor") header = {'X-Api-Key' => '<your secure token>', 'Content-Type' => 'application/json'} body = { "txn_id": ["xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx"] } http = Net::HTTP.new(uri.host, uri.port) http.use_ssl = true request = Net::HTTP::Put.new(uri.request_uri, header) request.body = body.to_json response = http.request(request)

const data = {
   "txn_id":  ["xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx"]
};

fetch('https://<environmenturl>/api/transactions/internal/refactor', { method: 'PUT', headers: { 'X-Api-Key': '<your secure token>', 'Content-Type': 'application/json' }, body: JSON.stringify(data) }) .then(response => response.json()) .then(data => console.log(data)) .catch(error => console.error(error));

The below example can be sent as a request to the API.

{
  "txn_id":  ["xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx"]
}

The below example can be sent as a request to the API for multiple transaction id.

{
  "txn_id":  ["xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx","xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx"]
}

SUCCESS RESPONSE The request returns JSON structured like below on successful internal transaction refactor

{
  "status": true,
  "total_count": 1,
  "total_amount": "25.0",
  "transactions": [
    {
      "total_amount": "25.0",
      "txn_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
      "amount": "25.0",
      "category": "Internal",
      "internal_transaction": true,
      "confidential_transaction": "N",
      "lifecycle_status": "rejected",
      "distribution_remark": "Testing",
      "txn_initiator": "Sneha Gaikwad",
      "approved": "N",
      "approved_at": 0,
      "payment_charge": "0.0",
      "tax_amount": "0.0",
      "entity_id": "ABC12",
      "rejected": true,
      "rejected_by": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
      "rejected_at": "2024-04-10T10:18:09.447Z",
      "refactored": true,
      "refactored_by": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
      "refactored_at": "2024-04-10T10:18:09.447Z",
      "internal_account_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
      "internal_account_name": "ANKITA ANIL GAYKAR",
      "internal_account_bank_acc_no": "1234567899",
      "internal_account_ifsc_code": "SBIN2333445",
      "internal_account_bank_name": "State Bank of India",
      "internal_account_approval_status": "approved",
      "owner_account_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
      "owner_account_bank_acc_no": "1111999876544",
      "owner_account_ifsc_code": "HDFC0000223",
      "owner_account_bank_name": "HDFC Bank",
      "owner_account_type": "Current Account",
      "owner_account_balance": "0.0",
      "owner_account_balance_last_fetched_at": "xxxxxxxx",
      "owner_account_balance_last_fetched_at_in_words": "about 4 hours ago",
      "additional_data": {
        "data": [
          {
            "name": "month",
            "position": 1,
            "data_type": "string",
            "mandatory": "Y",
            "value": "Mon"
          },
          {
            "name": "leaves",
            "position": 2,
            "data_type": "numeric",
            "mandatory": "Y",
            "value": 1233
          },
          {
            "name": "PAN",
            "position": 3,
            "data_type": "string",
            "mandatory": "N",
            "value": "Pan no"
          },
          {
            "data": [
              "Pradeep",
              "Sachin",
              "Sewaram"
            ],
            "name": "Accountants",
            "position": 4,
            "data_type": "list",
            "mandatory": "N",
            "value": "Pradeep"
          },
          {
            "name": "month 1",
            "position": 5,
            "data_type": "time",
            "mandatory": "Y",
            "value": "09:34"
          },
          {
            "name": "Day",
            "position": 6,
            "data_type": "day",
            "mandatory": "Y",
            "value": "Monday"
          },
          {
            "name": "Dummy",
            "position": 7,
            "data_type": "toggle",
            "mandatory": "Y",
            "value": true
          },
          {
            "name": "Month",
            "position": 8,
            "data_type": "month",
            "mandatory": "Y",
            "value": "March"
          },
          {
            "name": "Hyperlink",
            "position": 9,
            "data_type": "hyperlink",
            "mandatory": "Y",
            "value": "https://nxt.api.q2pay.co.in/api/transaction_auth_matrix.json"
          },
          {
            "name": "File",
            "position": 10,
            "data_type": "upload",
            "mandatory": "Y",
              "value": {
                "id": "c68cc4e7d54381cc46384f194c09ce2c.png",
                "storage": "cache",
                "metadata": {
                  "filename": "favicon.png",
                  "size": 62260,
                  "mime_type": "image/png"
                },
                "file_url": "https://your-bucket.s3.amazonaws.com/store/c68cc4e7d54381cc46384f194c09ce2c.png"
              }
            },
          {
            "name": "Date",
            "position": 11,
            "data_type": "date",
            "mandatory": "Y",
            "value": "23/04/2023"
          },
          {
            "name": "Year",
            "position": 12,
            "data_type": "year",
            "mandatory": "Y",
            "value": "2024"
          },
          {
            "name": "Month_Year",
            "position": 13,
            "data_type": "month_year",
            "mandatory": "Y",
            "value": "12/2024"
          },
          {
            "name": "Multiselect",
            "position": 14,
            "data_type": "multi_select_list",
            "mandatory": "Y",
            "data": [
              "ab",
              "abc",
              "abcd"
            ],
            "value": [
               "ab",
               "abc"
            ]
          },
          {
            "name": "Quantity",
            "position": 15,
            "data_type": "quantity",
            "mandatory": "Y",
            "value": 5
          },
          {
            "name": "DateRange",
            "position": 16,
            "data_type": "date_range",
            "mandatory": "Y",
            "value": {
              "start_date": "21/08/2023",
              "end_date": "21/10/2024"
            }
          },
          {
            "name": "YearRange",
            "position": 17,
            "data_type": "from_year_to_year",
            "mandatory": "Y",
            "value": {
              "from": 2030,
              "to": 2034
            }
          }
        ]
      },
      "created_on": "xxxxxxxx",
      "last_updated_user_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
      "last_updated_status": "Refactored",
      "last_updated_timestamp": "xxxxxxxx",
      "last_updated_user_name": "Sneha Gaikwad",
      "logs": [
        {
          "action": "Created",
          "user_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
          "platform": "web",
          "last_name": "Gaikwad",
          "last_used": "2024-04-10T10:17:46.130Z",
          "timestamp": "2024-04-10T10:17:46.159Z",
          "first_name": "Neha",
          "ip_address": "182.79.233.142",
          "is_primary": false,
          "os_version": "Windows 10",
          "request_ip": "182.79.233.142",
          "is_verified": false,
          "browser_name": "google chrome",
          "logged_in_flag": true,
          "logged_in_time": "2024-04-10T10:15:42.396Z",
          "user_full_name": "Sneha Gaikwad"
        },
        {
          "action": "Rejected",
          "user_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
          "platform": "web",
          "last_name": "Gaikwad",
          "last_used": "2024-04-10T10:18:09.398Z",
          "timestamp": "2024-04-10T10:18:09.454Z",
          "first_name": "Sneha",
          "ip_address": "103.212.154.226",
          "is_primary": false,
          "os_version": "Windows 10",
          "request_ip": "103.212.154.226",
          "is_verified": false,
          "browser_name": "google chrome",
          "logged_in_flag": true,
          "logged_in_time": "2024-04-10T10:15:42.396Z",
          "user_full_name": "Sneha Gaikwad",
          "rejection_reason": "update transaction method"
        },
        {
          "action": "Refactored",
          "user_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
          "platform": "web",
          "last_name": "Gaikwad",
          "last_used": "2024-04-10T10:18:09.398Z",
          "timestamp": "2024-04-10T10:18:09.454Z",
          "first_name": "Sneha",
          "ip_address": "103.212.154.226",
          "is_primary": false,
          "os_version": "Windows 10",
          "request_ip": "103.212.154.226",
          "is_verified": false,
          "browser_name": "google chrome",
          "logged_in_flag": true,
          "logged_in_time": "2024-04-10T10:15:42.396Z",
          "user_full_name": "Sneha Gaikwad"
        }
      ]
    }
  ],
  "title": {
    "records": 1,
    "current_page": 1,
    "total_pages": 1,
    "page_item_count": 50
  }
}

ERROR RESPONSE The request returns JSON structured like below for errors related internal transaction

{
    "status":false,
    "action":"Not performed",
    "errors":{
        "base":[
            "Invalid / Insufficient parameters"
        ],
        "base":
        [
            "No transactions found for transaction ids: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx"
        ],
        "base":
        [
            "All transactions do not belong to the same entity"
        ],
        "base":[
            {
                "id":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
                "errors":"Only rejected transactions can be refactored"
            }
        ]
} }

This endpoint refactor a Internal Transaction.

UAT HTTP Request

PUT https://nxt.api.q2pay.co.in/api/transactions/internal/refactor

PRODUCTION HTTP Request

PUT https://nxt.api.q2pay.in/api/transactions/internal/refactor

Query Parameters

Parameter Default Description Required Sample
txn_id N.A. txn id for internal transaction Yes [xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxx ,xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxx]

Service Details

Service ID Description
CInternalTxn Refactor Internal Transaction

Add Labels of Internal Transactions

curl -X PUT "https://<environmenturl>/api/transactions/internal/add_label"
  -H "X-Api-Key: <your secure token>"
  -H "Content-Type: application/json"
  -d "{
  "record_ids": [
    "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx","xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx"
  ],
  "labels": [
    "audit expense",
    "Infrastructure"
  ]
}"
require 'net/http'
require 'uri'
require 'json'

uri = URI.parse("https://<environmenturl>/api/transactions/internal/add_label") header = {'X-Api-Key' => '<your secure token>', 'Content-Type' => 'application/json'} body = {
"record_ids": [ "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx","xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx" ], "labels": [ "audit expense", "Infrastructure" ] } http = Net::HTTP.new(uri.host, uri.port) http.use_ssl = true request = Net::HTTP::Put.new(uri.request_uri, header) request.body = body.to_json response = http.request(request)

const data = {
  "record_ids": [
     "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx","xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx"
  ],
  "labels": [
    "audit expense",
     "Infrastructure"
  ]
};

fetch('https://<environmenturl>/api/transactions/internal/add_label', { method: 'PUT', headers: { 'X-Api-Key': '<your secure token>', 'Content-Type': 'application/json' }, body: JSON.stringify(data) }) .then(response => response.json()) .then(data => console.log(data)) .catch(error => console.error(error));

The below example can be sent as a request to the API.

{
  "record_ids": [
     "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx","xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx"
  ],
  "labels": [
    "audit expense",
    "Infrastructure"
  ]
}

SUCCESS RESPONSE The request returns JSON structured like below on successful add labels of internal transactions

{
    "status":true, 
    "successful_count":1,
    "unsuccessful_count":1, 
    "ids":{
        "successful_ids":["xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx"],
        "unsuccessful_ids": [
      { "id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx", "errors": "Label could not be added due to validation error" }
    ]
    }
}

ERROR RESPONSE The request returns JSON structured like below for errors related add labels of internal transactions

{
  "status": false,
  "errors": {
    "base": [
      "Missing required parameters: record_ids and/or labels."
    ],
    "base":[
      "The internal transaction IDs are not present."
    ]
  }
}

This endpoint Add labels of Internal Transaction.

UAT HTTP Request

PUT https://nxt.api.q2pay.co.in/api/transactions/internal/add_label

PRODUCTION HTTP Request

PUT https://nxt.api.q2pay.in/api/transactions/internal/add_label

Query Parameters

Parameter Default Description Required Sample
record_ids N.A. record ids of internal transaction Yes ["xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx","xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx" ]
labels N.A. labels of internal transaction Yes ["audit expense","Infrastructure"]

Service Details

Service ID Description
ALabel Add labels for Internal Transaction

Remove Labels of Internal Transactions

curl -X PUT "https://<environmenturl>/api/transactions/internal/remove_label"
  -H "X-Api-Key: <your secure token>"
  -H "Content-Type: application/json"
  -d "{
  "record_ids": [
    "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx","xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx"
  ],
  "labels": [
    "audit expense",
    "Infrastructure"
  ]
}"
require 'net/http'
require 'uri'
require 'json'

uri = URI.parse("https://<environmenturl>/api/transactions/internal/remove_label") header = {'X-Api-Key' => '<your secure token>', 'Content-Type' => 'application/json'} body = {
"record_ids": [ "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx","xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx" ], "labels": [ "audit expense", "Infrastructure" ] } http = Net::HTTP.new(uri.host, uri.port) http.use_ssl = true request = Net::HTTP::Put.new(uri.request_uri, header) request.body = body.to_json response = http.request(request)

const data = {
  "record_ids": [
     "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx","xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx"
  ],
  "labels": [
    "audit expense",
    "Infrastructure"
  ]
};

fetch('https://<environmenturl>/api/transactions/internal/remove_label', { method: 'PUT', headers: { 'X-Api-Key': '<your secure token>', 'Content-Type': 'application/json' }, body: JSON.stringify(data) }) .then(response => response.json()) .then(data => console.log(data)) .catch(error => console.error(error));

The below example can be sent as a request to the API.

{
  "record_ids": [
     "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx","xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx"
  ],
  "labels": [
    "audit expense",
    "Infrastructure"
  ]
}

SUCCESS RESPONSE The request returns JSON structured like below on successful add labels of internal transactions

{
  "status": true,
  "successful_count": 1,
  "unsuccessful_count": 1,
  "ids": {
    "successful_id": [
      "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx"
    ],
    "unsuccessful_ids": [
      { "id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx", "errors": "Label could not be added due to validation error" }
    ]
  }
}

ERROR RESPONSE The request returns JSON structured like below for errors related add labels of internal transactions

{
  "status": false,
  "errors": {
    "base": [
      "Missing required parameters: record_ids and/or labels."
    ],
    "base":[
      "The internal transaction IDs are not present."
    ],
    "base":[
      "Labels are not present in some internal transactions."
    ]
  }
}

This endpoint Add labels of Internal Transaction.

UAT HTTP Request

PUT https://nxt.api.q2pay.co.in/api/transactions/internal/remove_label

PRODUCTION HTTP Request

PUT https://nxt.api.q2pay.in/api/transactions/internal/remove_label

Query Parameters

Parameter Default Description Required Sample
record_ids N.A. records ids of internal transaction Yes ["xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx","xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx" ]
labels N.A. labels of internal transaction Yes ["audit expense","Infrastructure"]

Service Details

Service ID Description
RLabel Remove labels for Internal Transaction

Reimbursment Transaction

Reimbursement transactions facilitate the creation, maintenance, and management of the reimbursement lifecycle for organizational processes.

Get All Reimbursement Transactions

curl -X GET "https://<environmenturl>/api/transactions/reimbursement
  -H "X-Api-Key: <your secure token>"
  -H "Content-Type: application/json"

require 'net/http'
require 'uri'
require 'json'

uri = URI.parse("https://<environmenturl>/api/transactions/reimbursement) header = {'X-Api-Key' => '<your secure token>', 'Content-Type' => 'application/json'} http = Net::HTTP.new(uri.host, uri.port) http.use_ssl = true request = Net::HTTP::Get.new(uri.request_uri, header) request.body = body.to_json response = http.request(request)

fetch('https://<environmenturl>/api/transactions/reimbursement', { method: 'GET', headers: { 'X-Api-Key': '<your secure token>', 'Content-Type': 'application/json' }, body: JSON.stringify(data) }) .then(response => response.json()) .then(data => console.log(data)) .catch(error => console.error(error));

SUCCESS RESPONSE The request returns JSON structured like below

{
  "status": true,
  "total_count": 2,
  "total_amount": "2250.0",
  "transactions": [
    {
      "txn_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
      "expense_type": "Normal",
      "requested_amount": "250.0",
      "category": "Rent",
      "lifecycle_status": "rejected",
      "description": "for outer requirements in company purpose",
      "labels": [
        "building expenses"
      ],
      "approved": "N",
      "rejected": "Y",
      "rejection_reason": "Another transaction is already in progress",
      "rejected_at": 1763553612,
      "rejected_by": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
      "entity_id": "MH1214",
      "uploaded_file_data": {
        "id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx.xlsx",
        "storage": "cache",
        "metadata": {
          "size": 26620,
          "filename": "026883000000545.xlsx",
          "mime_type": "application/xlsx"
        }
      },
      "beneficiary_account_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
      "beneficiary_account_name": "xxxxxxxx xxxx xxxxxx",
      "beneficiary_account_bank_acc_no": "xxxxxxxx",
      "beneficiary_account_ifsc_code": "xxxxxxxx",
      "beneficiary_account_bank_name": "Kotak Mahindra Bank Limited",
      "beneficiary_account_approval_status": "approved",
      "additional_data": {
        "data": [
          {
            "name": "Monthly Rentt",
            "position": 1,
            "data_type": "string",
            "mandatory": "N"
          },
          {
            "name": "month 1",
            "value": "09:34",
            "position": 2,
            "data_type": "time",
            "mandatory": "Y"
          },
          {
            "name": "Day",
            "value": "Monday",
            "position": 3,
            "data_type": "day",
            "mandatory": "Y"
          },
          {
            "name": "Dummy",
            "value": true,
            "position": 4,
            "data_type": "toggle",
            "mandatory": "Y"
          },
          {
            "name": "Month",
            "value": "March",
            "position": 5,
            "data_type": "month",
            "mandatory": "Y"
          },
          {
            "name": "Hyperlink",
            "value": "https://nxt.api.q2pay.co.in/api/transaction_auth_matrix.json",
            "position": 6,
            "data_type": "hyperlink",
            "mandatory": "Y"
          },
          {
            "name": "File",
            "value": {
              "id": "c68cc4e7d54381cc46384f194c09ce2c.png",
              "storage": "cache",
              "metadata": {
                "size": 62260,
                "filename": "favicon.png",
                "mime_type": "image/png"
              }
            },
            "position": 7,
            "data_type": "upload",
            "mandatory": "Y"
          },
          {
            "name": "Date",
            "value": "23/04/2023",
            "position": 8,
            "data_type": "date",
            "mandatory": "Y"
          },
          {
            "name": "Year",
            "value": "2024",
            "position": 9,
            "data_type": "year",
            "mandatory": "Y"
          },
          {
            "name": "Month_Year",
            "value": "12/2024",
            "position": 10,
            "data_type": "month_year",
            "mandatory": "Y"
          }
        ]
      },
      "created_by_name": "Q2PAKASH",
      "created_on": 1762950319
    },
    {
      "txn_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
      "expense_type": "Normal",
      "requested_amount": "250.0",
      "category": "Rent",
      "lifecycle_status": "rejected",
      "description": "for outer requirements in company purpose",
      "labels": [
        "building expenses"
      ],
      "approved": "N",
      "rejected": "Y",
      "rejection_reason": "Another transaction is already in progress",
      "rejected_at": 1763553872,
      "rejected_by": "d5249710-0933-4cf5-94d3-ff4946e11f86",
      "entity_id": "MH1214",
      "uploaded_file_data": {
        "id": "ca75c5ce08935b8459e649d16365eed4.xlsx",
        "storage": "cache",
        "metadata": {
          "size": 26620,
          "filename": "026883000000545.xlsx",
          "mime_type": "application/xlsx"
        }
      },
      "beneficiary_account_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
      "beneficiary_account_name": "xxxxxxxx xxxxx xxxxxx",
      "beneficiary_account_bank_acc_no": "xxxxxxxxxx",
      "beneficiary_account_ifsc_code": "xxxxxxxxxx",
      "beneficiary_account_bank_name": "State Bank of India",
      "beneficiary_account_approval_status": "approved",
      "additional_data": {
        "data": [
          {
            "name": "Monthly Rentt",
            "position": 1,
            "data_type": "string",
            "mandatory": "N"
          },
          {
            "name": "month 1",
            "value": "09:34",
            "position": 2,
            "data_type": "time",
            "mandatory": "Y"
          },
          {
            "name": "Day",
            "value": "Monday",
            "position": 3,
            "data_type": "day",
            "mandatory": "Y"
          },
          {
            "name": "Dummy",
            "value": true,
            "position": 4,
            "data_type": "toggle",
            "mandatory": "Y"
          },
          {
            "name": "Month",
            "value": "March",
            "position": 5,
            "data_type": "month",
            "mandatory": "Y"
          },
          {
            "name": "Hyperlink",
            "value": "https://nxt.api.q2pay.co.in/api/transaction_auth_matrix.json",
            "position": 6,
            "data_type": "hyperlink",
            "mandatory": "Y"
          },
          {
            "name": "File",
            "value": {
              "id": "c68cc4e7d54381cc46384f194c09ce2c.png",
              "storage": "cache",
              "metadata": {
                "size": 62260,
                "filename": "favicon.png",
                "mime_type": "image/png"
              }
            },
            "position": 7,
            "data_type": "upload",
            "mandatory": "Y"
          },
          {
            "name": "Date",
            "value": "23/04/2023",
            "position": 8,
            "data_type": "date",
            "mandatory": "Y"
          },
          {
            "name": "Year",
            "value": "2024",
            "position": 9,
            "data_type": "year",
            "mandatory": "Y"
          },
          {
            "name": "Month_Year",
            "value": "12/2024",
            "position": 10,
            "data_type": "month_year",
            "mandatory": "Y"
          }
        ]
      },
      "created_by_name": "Q2PANUJ",
      "created_on": 1762949989
    }
  ],
  "title": {
    "records": 2,
    "current_page": 1,
    "total_pages": 1,
    "page_item_count": 1,
    "next_page": 1
  }
}

This endpoint retrieves all Reimbursement Transactions.

UAT HTTP Request

GET https://nxt.api.q2pay.co.in/api/transactions/reimbursement

PRODUCTION HTTP Request

GET https://nxt.api.q2pay.in/api/transactions/reimbursement

Query Parameters

Parameter Default Description Required Sample
txn_id N.A. transaction id is used to search id of reimbursement transaction optional [xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxx ,xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxx]
beneficiary_account_id N.A. beneficiary account id for reimbursement transaction optional [xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxx ,xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxx]
owner_account_id N.A. owner account id for reimbursement transaction optional [xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxx ,xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxx]
request_amount N.A. amount for reimbursement transaction optional 67000.0
reimbursement_amount N.A. amount for reimbursement transaction optional 60000.0
category N.A. category for reimbursement transaction optional Vendor
lifecycle_status N.A. lifecycle status for reimbursement transaction optional pending, approved, approved_request, rejected_request, rejected
start_date,end_date N.A. start date and end date for reimbursement transaction optional xxxxxxxx,xxxxxxxx
entity_id N.A. entity id for reimbursement transaction optional ABC12
additional_data N.A. additional data for reimbursement transaction optional "Mon"
category_name, category_value N.A category name and category value is filter on additional data of name and value of beneficiary transaction optional name, month or value, Mon
category_label N.A. category label for reimbursement transaction optional Vendor
labels N.A. labels for reimbursement transaction optional ["audit expense"]

Service Details

Service ID Description
VReimbursementTxn View all Reimbursement Transactions

Get specific Reimbursement Transactions

curl -X GET "https://<environmenturl>/api/transactions/reimbursement/:id"
  -H "X-Api-Key: <your secure token>"
  -H "Content-Type: application/json"

require 'net/http'
require 'uri'
require 'json'

uri = URI.parse("https://<environmenturl>/api/transactions/reimbursement/:id") header = {'X-Api-Key' => '<your secure token>', 'Content-Type' => 'application/json'} http = Net::HTTP.new(uri.host, uri.port) http.use_ssl = true request = Net::HTTP::Get.new(uri.request_uri, header) request.body = body.to_json response = http.request(request)

fetch('https://<environmenturl>/api/transactions/reimbursement/:id', { method: 'GET', headers: { 'X-Api-Key': '<your secure token>', 'Content-Type': 'application/json' }, body: JSON.stringify(data) }) .then(response => response.json()) .then(data => console.log(data)) .catch(error => console.error(error));

SUCCESS RESPONSE The request returns JSON structured like below

{
  "status": true,
  "total_count": 1,
  "total_amount": "250.0",
  "transaction": [
    {
      "txn_id": "xxxxxxxx-xxxx-xxxx-xxxxxx",
      "expense_type": "Normal",
      "requested_amount": "250.0",
      "reimbursement_date": "2025-09-07",
      "category": "Bulk Transaction 1",
      "lifecycle_status": "pending",
      "description": "for outer requirements in company purpose",
      "labels": [
        "building expenses"
      ],
      "approved": "N",
      "rejected": "N",
      "entity_id": "MH1214",
      "uploaded_file_data": {
        "id": "ca75c5ce08935b8459e649d16365eed4.xlx",
        "storage": "cache",
        "metadata": {
          "size": 26620,
          "filename": "026883000000545.xlsx",
          "mime_type": "application/xlsx"
        }
      },
      "beneficiary_account_id": "xxxxxxxx-xxxx-xxxx-xxxxxx",
      "beneficiary_account_name": "Anuj",
      "beneficiary_account_bank_acc_no": "BB1567897",
      "beneficiary_account_ifsc_code": "KKBK0000691",
      "beneficiary_account_bank_name": "Kotak Mahindra Bank",
      "beneficiary_account_approval_status": "pending",
      "additional_data": {
        "data": [
          {
            "name": "month",
            "value": "June",
            "position": 1,
            "data_type": "string",
            "mandatory": "Y"
          },
          {
            "name": "leaves",
            "position": 2,
            "data_type": "numeric",
            "mandatory": "N"
          },
          {
            "name": "PAN",
            "position": 3,
            "data_type": "string",
            "mandatory": "N"
          },
          {
            "data": [
              "pradip",
              "deepak",
              "nikhil",
              "neha"
            ],
            "name": "Accountants",
            "position": 4,
            "data_type": "list",
            "mandatory": "N"
          },
          {
            "name": "month 1",
            "value": "12:00",
            "position": 5,
            "data_type": "time",
            "mandatory": "Y"
          },
          {
            "name": "Day",
            "value": "Monday",
            "position": 6,
            "data_type": "day",
            "mandatory": "Y"
          },
          {
            "name": "Dummy",
            "value": true,
            "position": 7,
            "data_type": "toggle",
            "mandatory": "Y"
          },
          {
            "name": "Month",
            "value": "March",
            "position": 8,
            "data_type": "month",
            "mandatory": "Y"
          },
          {
            "name": "Hyperlink",
            "position": 9,
            "data_type": "hyperlink",
            "mandatory": "N"
          },
          {
            "name": "File",
            "value": {
              "id": "c68cc4e7d54381cc46384f194c09ce2c.xls",
              "storage": "cache",
              "metadata": {
                "size": 62260,
                "filename": "favicon.png",
                "mime_type": "image/png"
              }
            },
            "position": 10,
            "data_type": "upload",
            "mandatory": "Y"
          },
          {
            "name": "Date",
            "value": "23/04/2023",
            "position": 11,
            "data_type": "date",
            "mandatory": "Y"
          },
          {
            "name": "Year",
            "value": "2024",
            "position": 12,
            "data_type": "year",
            "mandatory": "Y"
          },
          {
            "name": "Month_Year",
            "value": "12/2024",
            "position": 13,
            "data_type": "month_year",
            "mandatory": "Y"
          },
          {
            "data": [
              "ab",
              "abc",
              "abcd"
            ],
            "name": "Multiselect",
            "value": [
              "ab"
            ],
            "position": 14,
            "data_type": "multi_select_list",
            "mandatory": "Y"
          },
          {
            "name": "Quantity",
            "value": 2,
            "position": 15,
            "data_type": "quantity",
            "mandatory": "Y"
          },
          {
            "name": "DateRange",
            "value": {
              "end_date": "21/10/2024",
              "start_date": "21/08/2023"
            },
            "position": 16,
            "data_type": "date_range",
            "mandatory": "Y"
          },
          {
            "name": "YearRange",
            "value": {
              "to": 2034,
              "from": 2030
            },
            "position": 17,
            "data_type": "from_year_to_year",
            "mandatory": "Y"
          }
        ]
      },
      "created_by_name": "Q2PNEHA",
      "created_on": 1762419998,
      "logs": [
        {
          "brand": "google",
          "model": "sdk_gphone64_x86_64",
          "action": "Created",
          "user_id": "85c08f8e-e395-4c6c-acc7-a4e771f5250b",
          "platform": "android",
          "last_name": "Gaikwad",
          "last_used": "2025-11-06T09:06:38.419Z",
          "timestamp": "2025-11-06T09:06:38.465Z",
          "first_name": "Neha",
          "ip_address": "127.0.0.1",
          "is_primary": false,
          "os_version": "Android 15",
          "request_ip": "127.0.0.1",
          "is_verified": false,
          "sdk_version": "35",
          "manufacturer": "Google",
          "serial_number": "unknown",
          "logged_in_flag": false,
          "logged_in_time": "2025-11-06T08:50:57.205Z",
          "user_full_name": "Neha Gaikwad",
          "app_version_code": "100",
          "app_version_name": "1.90"
        }
      ]
    }
  ],
  "title": {
    "records": 1,
    "current_page": 1,
    "total_pages": 1,
    "page_item_count": 1
  }
}

This endpoint retrieves specific Reimbursement Transactions.

UAT HTTP Request

GET https://nxt.api.q2pay.co.in/api/transactions/reimbursement/:id

PRODUCTION HTTP Request

GET https://nxt.api.q2pay.in/api/transactions/reimbursement/:id

Service Details

Service ID Description
VReimbursementTxn View specific Reimbursement Transactions

Create Reimbursement Transactions

curl -X POST "https://<environmenturl>/api/transactions/reimbursement"
  -H "X-Api-Key: <your secure token>"
  -H "Content-Type: application/json"
  -d "{
  "reimbursement_transaction": {
    "expense_type": "Normal",
    "labels": [
      "audit expenses"
    ],
    "amount": 250,
    "reimbursement_date": "7/09/2025",
    "category": "Bulk Transaction 1",
    "additional_data": {
      "data": [
        {
          "name": "month",
          "position": 1,
          "data_type": "string",
          "mandatory": "Y",
          "value": "June"
        },
        {
          "name": "leaves",
          "position": 2,
          "data_type": "numeric",
          "mandatory": "N"
        },
        {
          "name": "PAN",
          "position": 3,
          "data_type": "string",
          "mandatory": "N"
        },
        {
          "data": [
            "pradip",
            "deepak",
            "nikhil",
            "neha"
          ],
          "name": "Accountants",
          "position": 4,
          "data_type": "list",
          "mandatory": "N"
        },
        {
          "name": "month 1",
          "position": 5,
          "data_type": "time",
          "mandatory": "Y",
          "value": "12:00"
        },
        {
          "name": "Day",
          "position": 6,
          "data_type": "day",
          "mandatory": "Y",
          "value": "Monday"
        },
        {
          "name": "Dummy",
          "position": 7,
          "data_type": "toggle",
          "mandatory": "Y",
          "value": true
        },
        {
          "name": "Month",
          "position": 8,
          "data_type": "month",
          "mandatory": "Y",
          "value": "March"
        },
        {
          "name": "Hyperlink",
          "position": 9,
          "data_type": "hyperlink",
          "mandatory": "N"
        },
        {
          "name": "File",
          "position": 10,
          "data_type": "upload",
          "mandatory": "Y",
          "value": {
            "id": "c68cc4e7d54381cc46384f194c09ce2c.xlsx",
            "storage": "cache",
            "metadata": {
              "filename": "favicon.png",
              "size": 62260,
              "mime_type": "image/png"
            }
          }
        },
        {
          "name": "Date",
          "position": 11,
          "data_type": "date",
          "mandatory": "Y",
          "value": "23/04/2023"
        },
        {
          "name": "Year",
          "position": 12,
          "data_type": "year",
          "mandatory": "Y",
          "value": "2024"
        },
        {
          "name": "Month_Year",
          "position": 13,
          "data_type": "month_year",
          "mandatory": "Y",
          "value": "12/2024"
        },
        {
          "data": [
            "ab",
            "abc",
            "abcd"
          ],
          "name": "Multiselect",
          "position": 14,
          "data_type": "multi_select_list",
          "mandatory": "Y",
          "value": [
            "ab"
          ]
        },
        {
          "name": "Quantity",
          "position": 15,
          "data_type": "quantity",
          "mandatory": "Y",
          "value": 2
        },
        {
          "name": "DateRange",
          "position": 16,
          "data_type": "date_range",
          "mandatory": "Y",
          "value": {
            "start_date": "21/08/2023",
            "end_date": "21/10/2024"
          }
        },
        {
          "name": "YearRange",
          "position": 17,
          "data_type": "from_year_to_year",
          "mandatory": "Y",
          "value": {
            "from": 2030,
            "to": 2034
          }
        }
      ]
    },
    "uploaded_file_data": {
      "id": "ca75c5ce08935b8459e649d16365eed4.xlsx",
      "storage": "cache",
      "metadata": {
        "filename": "026883000000545.xlsx",
        "size": 26620,
        "mime_type": "application/xlsx"
      }
    }
  }
}"
require 'net/http'
require 'uri'
require 'json'

uri = URI.parse("https://<environmenturl>/api/transactions/reimbursement") header = {'X-Api-Key' => '<your secure token>', 'Content-Type' => 'application/json'} body ={ "reimbursement_transaction": { "expense_type": "Normal", "labels": [ "audit expenses" ], "amount": 250, "reimbursement_date": "7/09/2025", "category": "Bulk Transaction 1", "additional_data": { "data": [ { "name": "month", "position": 1, "data_type": "string", "mandatory": "Y", "value": "June" }, { "name": "leaves", "position": 2, "data_type": "numeric", "mandatory": "N" }, { "name": "PAN", "position": 3, "data_type": "string", "mandatory": "N" }, { "data": [ "pradip", "deepak", "nikhil", "neha" ], "name": "Accountants", "position": 4, "data_type": "list", "mandatory": "N" }, { "name": "month 1", "position": 5, "data_type": "time", "mandatory": "Y", "value": "12:00" }, { "name": "Day", "position": 6, "data_type": "day", "mandatory": "Y", "value": "Monday" }, { "name": "Dummy", "position": 7, "data_type": "toggle", "mandatory": "Y", "value": true }, { "name": "Month", "position": 8, "data_type": "month", "mandatory": "Y", "value": "March" }, { "name": "Hyperlink", "position": 9, "data_type": "hyperlink", "mandatory": "N" }, { "name": "File", "position": 10, "data_type": "upload", "mandatory": "Y", "value": { "id": "c68cc4e7d54381cc46384f194c09ce2c.xlsx", "storage": "cache", "metadata": { "filename": "favicon.png", "size": 62260, "mime_type": "image/png" } } }, { "name": "Date", "position": 11, "data_type": "date", "mandatory": "Y", "value": "23/04/2023" }, { "name": "Year", "position": 12, "data_type": "year", "mandatory": "Y", "value": "2024" }, { "name": "Month_Year", "position": 13, "data_type": "month_year", "mandatory": "Y", "value": "12/2024" }, { "data": [ "ab", "abc", "abcd" ], "name": "Multiselect", "position": 14, "data_type": "multi_select_list", "mandatory": "Y", "value": [ "ab" ] }, { "name": "Quantity", "position": 15, "data_type": "quantity", "mandatory": "Y", "value": 2 }, { "name": "DateRange", "position": 16, "data_type": "date_range", "mandatory": "Y", "value": { "start_date": "21/08/2023", "end_date": "21/10/2024" } }, { "name": "YearRange", "position": 17, "data_type": "from_year_to_year", "mandatory": "Y", "value": { "from": 2030, "to": 2034 } } ] }, "uploaded_file_data": { "id": "ca75c5ce08935b8459e649d16365eed4.xlsx", "storage": "cache", "metadata": { "filename": "026883000000545.xlsx", "size": 26620, "mime_type": "application/xlsx" } } } } http = Net::HTTP.new(uri.host, uri.port) http.use_ssl = true request = Net::HTTP::Post.new(uri.request_uri, header) request.body = body.to_json response = http.request(request)

const data ={
  "reimbursement_transaction": {
    "expense_type": "Normal",
    "labels": [
      "audit expenses"
    ],
    "amount": 250,
    "reimbursement_date": "7/09/2025",
    "category": "Bulk Transaction 1",
    "additional_data": {
      "data": [
        {
          "name": "month",
          "position": 1,
          "data_type": "string",
          "mandatory": "Y",
          "value": "June"
        },
        {
          "name": "leaves",
          "position": 2,
          "data_type": "numeric",
          "mandatory": "N"
        },
        {
          "name": "PAN",
          "position": 3,
          "data_type": "string",
          "mandatory": "N"
        },
        {
          "data": [
            "pradip",
            "deepak",
            "nikhil",
            "neha"
          ],
          "name": "Accountants",
          "position": 4,
          "data_type": "list",
          "mandatory": "N"
        },
        {
          "name": "month 1",
          "position": 5,
          "data_type": "time",
          "mandatory": "Y",
          "value": "12:00"
        },
        {
          "name": "Day",
          "position": 6,
          "data_type": "day",
          "mandatory": "Y",
          "value": "Monday"
        },
        {
          "name": "Dummy",
          "position": 7,
          "data_type": "toggle",
          "mandatory": "Y",
          "value": true
        },
        {
          "name": "Month",
          "position": 8,
          "data_type": "month",
          "mandatory": "Y",
          "value": "March"
        },
        {
          "name": "Hyperlink",
          "position": 9,
          "data_type": "hyperlink",
          "mandatory": "N"
        },
        {
          "name": "File",
          "position": 10,
          "data_type": "upload",
          "mandatory": "Y",
          "value": {
            "id": "c68cc4e7d54381cc46384f194c09ce2c.xlsx",
            "storage": "cache",
            "metadata": {
              "filename": "favicon.png",
              "size": 62260,
              "mime_type": "image/png"
            }
          }
        },
        {
          "name": "Date",
          "position": 11,
          "data_type": "date",
          "mandatory": "Y",
          "value": "23/04/2023"
        },
        {
          "name": "Year",
          "position": 12,
          "data_type": "year",
          "mandatory": "Y",
          "value": "2024"
        },
        {
          "name": "Month_Year",
          "position": 13,
          "data_type": "month_year",
          "mandatory": "Y",
          "value": "12/2024"
        },
        {
          "data": [
            "ab",
            "abc",
            "abcd"
          ],
          "name": "Multiselect",
          "position": 14,
          "data_type": "multi_select_list",
          "mandatory": "Y",
          "value": [
            "ab"
          ]
        },
        {
          "name": "Quantity",
          "position": 15,
          "data_type": "quantity",
          "mandatory": "Y",
          "value": 2
        },
        {
          "name": "DateRange",
          "position": 16,
          "data_type": "date_range",
          "mandatory": "Y",
          "value": {
            "start_date": "21/08/2023",
            "end_date": "21/10/2024"
          }
        },
        {
          "name": "YearRange",
          "position": 17,
          "data_type": "from_year_to_year",
          "mandatory": "Y",
          "value": {
            "from": 2030,
            "to": 2034
          }
        }
      ]
    },
    "uploaded_file_data": {
      "id": "ca75c5ce08935b8459e649d16365eed4.xlsx",
      "storage": "cache",
      "metadata": {
        "filename": "026883000000545.xlsx",
        "size": 26620,
        "mime_type": "application/xlsx"
      }
    }
  }
};

fetch('https://<environmenturl>/api/transactions/reimbursement', { method: 'POST', headers: { 'X-Api-Key': '<your secure token>', 'Content-Type': 'application/json' }, body: JSON.stringify(data) }) .then(response => response.json()) .then(data => console.log(data)) .catch(error => console.error(error));

The below example can be sent as a request to the API For Normal User.

{
  "reimbursement_transaction": {
    "expense_type": "Normal",
    "labels": [
      "audit expenses"
    ],
    "amount": 250,
    "reimbursement_date": "7/09/2025",
    "category": "Bulk Transaction 1",
    "additional_data": {
      "data": [
        {
          "name": "month",
          "position": 1,
          "data_type": "string",
          "mandatory": "Y",
          "value": "June"
        },
        {
          "name": "leaves",
          "position": 2,
          "data_type": "numeric",
          "mandatory": "N"
        },
        {
          "name": "PAN",
          "position": 3,
          "data_type": "string",
          "mandatory": "N"
        },
        {
          "data": [
            "pradip",
            "deepak",
            "nikhil",
            "neha"
          ],
          "name": "Accountants",
          "position": 4,
          "data_type": "list",
          "mandatory": "N"
        },
        {
          "name": "month 1",
          "position": 5,
          "data_type": "time",
          "mandatory": "Y",
          "value": "12:00"
        },
        {
          "name": "Day",
          "position": 6,
          "data_type": "day",
          "mandatory": "Y",
          "value": "Monday"
        },
        {
          "name": "Dummy",
          "position": 7,
          "data_type": "toggle",
          "mandatory": "Y",
          "value": true
        },
        {
          "name": "Month",
          "position": 8,
          "data_type": "month",
          "mandatory": "Y",
          "value": "March"
        },
        {
          "name": "Hyperlink",
          "position": 9,
          "data_type": "hyperlink",
          "mandatory": "N"
        },
        {
          "name": "File",
          "position": 10,
          "data_type": "upload",
          "mandatory": "Y",
          "value": {
            "id": "c68cc4e7d54381cc46384f194c09ce2c.xlsx",
            "storage": "cache",
            "metadata": {
              "filename": "favicon.png",
              "size": 62260,
              "mime_type": "image/png"
            }
          }
        },
        {
          "name": "Date",
          "position": 11,
          "data_type": "date",
          "mandatory": "Y",
          "value": "23/04/2023"
        },
        {
          "name": "Year",
          "position": 12,
          "data_type": "year",
          "mandatory": "Y",
          "value": "2024"
        },
        {
          "name": "Month_Year",
          "position": 13,
          "data_type": "month_year",
          "mandatory": "Y",
          "value": "12/2024"
        },
        {
          "data": [
            "ab",
            "abc",
            "abcd"
          ],
          "name": "Multiselect",
          "position": 14,
          "data_type": "multi_select_list",
          "mandatory": "Y",
          "value": [
            "ab"
          ]
        },
        {
          "name": "Quantity",
          "position": 15,
          "data_type": "quantity",
          "mandatory": "Y",
          "value": 2
        },
        {
          "name": "DateRange",
          "position": 16,
          "data_type": "date_range",
          "mandatory": "Y",
          "value": {
            "start_date": "21/08/2023",
            "end_date": "21/10/2024"
          }
        },
        {
          "name": "YearRange",
          "position": 17,
          "data_type": "from_year_to_year",
          "mandatory": "Y",
          "value": {
            "from": 2030,
            "to": 2034
          }
        }
      ]
    },
    "uploaded_file_data": {
      "id": "ca75c5ce08935b8459e649d16365eed4.xlsx",
      "storage": "cache",
      "metadata": {
        "filename": "026883000000545.xlsx",
        "size": 26620,
        "mime_type": "application/xlsx"
      }
    }
  }
}

The below example can be sent as a request to the API For Service User(who have AReimbursementRequest service).

{
  "reimbursement_transaction": {
    "expense_type": "Normal",
    "beneficiary_account_id": "xxxxxxxx-xxxx-xxxx-xxxxxx",
    "amount": 250,
    "labels": [
      "building expenses"
    ],
    "reimbursement_date": "7/09/2025",
    "description": "for outer requirements in company purpose",
    "category": "Bulk Transaction 1",
    "additional_data": {
      "data": [
        {
          "name": "month",
          "position": 1,
          "data_type": "string",
          "mandatory": "Y",
          "value": "June"
        },
        {
          "name": "leaves",
          "position": 2,
          "data_type": "numeric",
          "mandatory": "N"
        },
        {
          "name": "PAN",
          "position": 3,
          "data_type": "string",
          "mandatory": "N"
        },
        {
          "data": [
            "pradip",
            "deepak",
            "nikhil",
            "neha"
          ],
          "name": "Accountants",
          "position": 4,
          "data_type": "list",
          "mandatory": "N"
        },
        {
          "name": "month 1",
          "position": 5,
          "data_type": "time",
          "mandatory": "Y",
          "value": "12:00"
        },
        {
          "name": "Day",
          "position": 6,
          "data_type": "day",
          "mandatory": "Y",
          "value": "Monday"
        },
        {
          "name": "Dummy",
          "position": 7,
          "data_type": "toggle",
          "mandatory": "Y",
          "value": true
        },
        {
          "name": "Month",
          "position": 8,
          "data_type": "month",
          "mandatory": "Y",
          "value": "March"
        },
        {
          "name": "Hyperlink",
          "position": 9,
          "data_type": "hyperlink",
          "mandatory": "N"
        },
        {
          "name": "File",
          "position": 10,
          "data_type": "upload",
          "mandatory": "Y",
          "value": {
            "id": "c68cc4e7d54381cc46384f194c09ce2c.xls",
            "storage": "cache",
            "metadata": {
              "filename": "favicon.png",
              "size": 62260,
              "mime_type": "image/png"
            }
          }
        },
        {
          "name": "Date",
          "position": 11,
          "data_type": "date",
          "mandatory": "Y",
          "value": "23/04/2023"
        },
        {
          "name": "Year",
          "position": 12,
          "data_type": "year",
          "mandatory": "Y",
          "value": "2024"
        },
        {
          "name": "Month_Year",
          "position": 13,
          "data_type": "month_year",
          "mandatory": "Y",
          "value": "12/2024"
        },
        {
          "data": [
            "ab",
            "abc",
            "abcd"
          ],
          "name": "Multiselect",
          "position": 14,
          "data_type": "multi_select_list",
          "mandatory": "Y",
          "value": [
            "ab"
          ]
        },
        {
          "name": "Quantity",
          "position": 15,
          "data_type": "quantity",
          "mandatory": "Y",
          "value": 2
        },
        {
          "name": "DateRange",
          "position": 16,
          "data_type": "date_range",
          "mandatory": "Y",
          "value": {
            "start_date": "21/08/2023",
            "end_date": "21/10/2024"
          }
        },
        {
          "name": "YearRange",
          "position": 17,
          "data_type": "from_year_to_year",
          "mandatory": "Y",
          "value": {
            "from": 2030,
            "to": 2034
          }
        }
      ]
    },
    "uploaded_file_data": {
      "id": "ca75c5ce08935b8459e649d16365eed4.xlx",
      "storage": "cache",
      "metadata": {
        "filename": "026883000000545.xlsx",
        "size": 26620,
        "mime_type": "application/xlsx"
      }
    }
  }
}

SUCCESS RESPONSE The request returns JSON structured like below on successful Reimbursment Transaction creation

{
  "status": true,
  "total_count": 1,
  "total_amount": "250.0",
  "transaction": [
    {
      "txn_id": "xxxxxxxx-xxxx-xxxx-xxxxxx",
      "expense_type": "Normal",
      "requested_amount": "250.0",
      "reimbursement_date": "2025-09-07",
      "category": "Bulk Transaction 1",
      "lifecycle_status": "pending",
      "labels": [
        "audit expenses"
      ],
      "approved": "N",
      "rejected": "N",
      "entity_id": "MH1214",
      "uploaded_file_data": {
        "id": "ca75c5ce08935b8459e649d16365eed4.xlsx",
        "storage": "cache",
        "metadata": {
          "filename": "026883000000545.xlsx",
          "size": 26620,
          "mime_type": "application/xlsx"
        }
      },
      "beneficiary_account_id": "xxxxxxxx-xxxx-xxxx-xxxxxx",
      "beneficiary_account_name": " KLEIBERIT ADHESIVES",
      "beneficiary_account_bank_acc_no": "33958460158",
      "beneficiary_account_ifsc_code": "SBIN0040016",
      "beneficiary_account_bank_name": "State Bank of India",
      "beneficiary_account_approval_status": "approved",
      "additional_data": {
        "data": [
          {
            "name": "month",
            "position": 1,
            "data_type": "string",
            "mandatory": "Y",
            "value": "June"
          },
          {
            "name": "leaves",
            "position": 2,
            "data_type": "numeric",
            "mandatory": "N"
          },
          {
            "name": "PAN",
            "position": 3,
            "data_type": "string",
            "mandatory": "N"
          },
          {
            "data": [
              "pradip",
              "deepak",
              "nikhil",
              "neha"
            ],
            "name": "Accountants",
            "position": 4,
            "data_type": "list",
            "mandatory": "N"
          },
          {
            "name": "month 1",
            "position": 5,
            "data_type": "time",
            "mandatory": "Y",
            "value": "12:00"
          },
          {
            "name": "Day",
            "position": 6,
            "data_type": "day",
            "mandatory": "Y",
            "value": "Monday"
          },
          {
            "name": "Dummy",
            "position": 7,
            "data_type": "toggle",
            "mandatory": "Y",
            "value": true
          },
          {
            "name": "Month",
            "position": 8,
            "data_type": "month",
            "mandatory": "Y",
            "value": "March"
          },
          {
            "name": "Hyperlink",
            "position": 9,
            "data_type": "hyperlink",
            "mandatory": "N"
          },
          {
            "name": "File",
            "position": 10,
            "data_type": "upload",
            "mandatory": "Y",
            "value": {
              "id": "c68cc4e7d54381cc46384f194c09ce2c.xlsx",
              "storage": "cache",
              "metadata": {
                "filename": "favicon.png",
                "size": 62260,
                "mime_type": "image/png"
              }
            }
          },
          {
            "name": "Date",
            "position": 11,
            "data_type": "date",
            "mandatory": "Y",
            "value": "23/04/2023"
          },
          {
            "name": "Year",
            "position": 12,
            "data_type": "year",
            "mandatory": "Y",
            "value": "2024"
          },
          {
            "name": "Month_Year",
            "position": 13,
            "data_type": "month_year",
            "mandatory": "Y",
            "value": "12/2024"
          },
          {
            "data": [
              "ab",
              "abc",
              "abcd"
            ],
            "name": "Multiselect",
            "position": 14,
            "data_type": "multi_select_list",
            "mandatory": "Y",
            "value": [
              "ab"
            ]
          },
          {
            "name": "Quantity",
            "position": 15,
            "data_type": "quantity",
            "mandatory": "Y",
            "value": 2
          },
          {
            "name": "DateRange",
            "position": 16,
            "data_type": "date_range",
            "mandatory": "Y",
            "value": {
              "start_date": "21/08/2023",
              "end_date": "21/10/2024"
            }
          },
          {
            "name": "YearRange",
            "position": 17,
            "data_type": "from_year_to_year",
            "mandatory": "Y",
            "value": {
              "from": 2030,
              "to": 2034
            }
          }
        ]
      },
      "created_by_name": "Q2PANUJ",
      "created_on": 1762417243,
      "logs": [
        {
          "action": "Created",
          "user_id": "a15c28bf-3c9e-42de-9667-63d2bd612934",
          "user_full_name": "anuj shukla",
          "timestamp": "2025-11-06T08:20:43.598Z",
          "request_ip": "127.0.0.1",
          "last_used": "2025-11-06T08:20:43.577Z",
          "logged_in_flag": false,
          "logged_in_time": "2025-11-06T08:19:46.790Z",
          "app_version_name": "1.90",
          "app_version_code": "100",
          "platform": "android",
          "model": "sdk_gphone64_x86_64",
          "manufacturer": "Google",
          "brand": "google",
          "serial_number": "unknown",
          "os_version": "Android 15",
          "sdk_version": "35",
          "ip_address": "127.0.0.1",
          "is_primary": false,
          "is_verified": false,
          "first_name": "anuj",
          "last_name": "shukla"
        }
      ]
    }
  ],
  "title": {
    "records": 1,
    "current_page": 1,
    "total_pages": 1,
    "page_item_count": 1
  }
}

ERROR RESPONSE The request returns JSON structured like below for errors related reimbursement transaction

{
    "status":false, 
    "errors":{
        "base":[
            "Beneficiary Account is blocked. Transaction cannot be created. Kindly contact support"
        ],
        "amount": [
            "Amount can't be blank",
            "Amount is not a number"
        ],
        "category":[
            "Category can't be blank", 
            "Category  is not valid/active for the transaction type",
            "Category  is not valid for the transaction type",
            "Category not found"
        ],
        "expense_type": [
            "Expense type can't be blank"
        ],
        "uploaded_file_data": [
            "Uploaded file data can't be blank"
        ]
        "beneficiary_account": [
            "Beneficiary account must exist",
            "You are not allowed to pass beneficiary account"
        ]
        "reimbursement_date": [
            "Reimbursement date can't be blank"
        ],
        "base":[
            "Beneficiary Account is archived. Transaction cannot be created. Kindly contact support"
        ],
        "base": [
            "Beneficiary Account doesn't belongs to your entity."
        ],
        "additional_data":
        [
            "Additional data Data data when supplied cannot be blank",
            "Additional data has settings declared under data key/s",
            "Additional data cannot be sent blank for the 'Beneficiary' transaction category",
            "Additional data should be sent blank for the 'Mobile Bill' transaction category",
            "Additional data 'data' is malformed",
            "Additional data configuration is missing / unknown for 'name' key",
            "Additional data 'data' must have position as 1, 2, 3, 4, ...",
            "Additional data 'data' must have unique position in array",
            "Additional data 'data' cannot be declared as empty",
            "Additional data 'data' must have unique value for each name field in array",
            "Additional data 'data' : {\"hello\"=>\"abc\"} must have name, data_type, mandatory and position keys in each hash",
            "Additional data 'data' : {\"name\"=>\"month\", \"value\"=>10, \"position\"=>1, \"data_type\"=>\"string\", \"mandatory\"=>\"Y\"} must have matching value as string as declared in transaction category configuration",
            "Additional data 'data' : {\"name\"=>\"month\", \"position\"=>\"1\", \"data_type\"=>\"string\", \"mandatory\"=>\"Y\", \"value\"=>\"Mon\"} must have position as an integer",
            "Additional data 'data' : {\"name\"=>\"month\", \"position\"=>1, \"data_type\"=>\"list\", \"mandatory\"=>\"Y\", \"value\"=>\"Wed\", \"data\"=>[\"Mon\", \"Tue\"]} must have value as an array of strings",
            "Additional data 'data' : {\"name\"=>\"Accountants\", \"position\"=>4, \"data_type\"=>\"list\", \"mandatory\"=>\"N\", \"value\"=>\"Pradeep, Sachin, Sewaram\"} must have data as an array of strings",
            "Additional data 'data' : {\"name\"=>\"Accountants\", \"position\"=>4, \"data_type\"=>\"list\", \"mandatory\"=>\"N\", \"value\"=>\"Pradeep, Sachin, Sewaram\"} must have value from '[\"Pradeep\", \"Sachin\", \"Sewaram\"]' which is declared in the category configuration",
            "Additional data 'data' : {\"name\"=>\"month\", \"position\"=>1, \"data_type\"=>\"problem\", \"mandatory\"=>\"Y\", \"value\"=>\"Mon\"} must have data_type as one of the following: string, numeric, list, date, year, month_year, time, day, toggle, month, hyperlink, upload, multi_select_list, quantity, date_range, from_year_to_year",
            "Additional data 'data' : {\"name\"=>\"Accountants\", \"position\"=>4, \"data_type\"=>\"list\", \"mandatory\"=>\"N\", \"data\"=>[\"Pradeep\", \"Sachin\", \"Sewaram\"]} must have name, data_type, mandatory, value and position keys in each hash",
            "Additional data 'data' : {\"name\"=>\"leaves\", \"position\"=>2, \"data_type\"=>\"numeric\", \"mandatory\"=>\"N\", \"value\"=>12} must have matching value as numeric as declared in transaction category configuration",
            "Additional data 'data' : {\"name\"=>\"month\", \"position\"=>1, \"data_type\"=>\"problem\", \"mandatory\"=>\"Y\", \"value\"=>\"Mon\"} must have data_type 'string' as declared in category configuration",
            "Additional data 'data' : {\"name\"=>\"month\", \"position\"=>1, \"data_type\"=>\"string\", \"mandatory\"=>\"Y\"} must have a value as it is a mandatory field",
            "Additional data 'data' : {\"name\"=>\"month\", \"position\"=>1, \"data_type\"=>\"string\", \"problem\"=>\"Y\", \"value\"=>\"Mon\"} must have name, data_type, mandatory and position keys in each hash",
            "Additional data 'data' : {\"name\"=>\"month\", \"position\"=>1, \"data_type\"=>\"string\", \"mandatory\"=>\"Y\", \"value\"=>1234} must have matching value as string as declared in transaction category configuration",
            "Additional data 'data' : {\"name\"=>\"month\", \"position\"=>1, \"data_type\"=>\"string\", \"problem\"=>\"Y\", \"value\"=>\"Mon\"} must have mandatory as one of the following: Y, N",
            "Additional data 'data' : {\"name\"=>\"month\", \"position\"=>1, \"data_type\"=>\"string\", \"problem\"=>\"Y\", \"value\"=>\"Mon\"} must have mandatory 'Y' as declared in category configuration",
            "Additional data 'data' : {\"name\"=>\"yearly bill\", \"position\"=>3, \"data_type\"=>\"year\", \"mandatory\"=>\"Y\", \"value\"=>\"24\"} must have matching value as year as declared in transaction category configuration",
            "Additional data 'data' : {\"name\"=>\"Mothly bill\", \"position\"=>1, \"data_type\"=>\"month_year\", \"mandatory\"=>\"Y\", \"value\"=>\"Dec 2024\"} must have matching value as year as declared in transaction category configuration",
            "Additional data 'data' : {\"name\"=>\"yearly bill\", \"position\"=>3, \"data_type\"=>\"year\", \"mandatory\"=>\"Y\"} must have a value as it is a mandatory field",
            "Additional data [\"id\", \"storage\", \"metadata\"] cannot be declared as empty",
            "Additional data [\"filename\", \"size\", \"mime_type\"] must be as declared in transaction category configuration",
            "Additional data 'data' : {\"name\"=>\"Multiselect\", \"position\"=>7, \"data_type\"=>\"multi_select_list\", \"mandatory\"=>\"Y\", \"value\"=>\"[\n          test, \n          2\n        ]\"} must have matching value as multi select as declared in transaction category configuration",
            "Additional data 'data' : {\"name\"=>\"Quantity\", \"position\"=>8, \"data_type\"=>\"quantity\", \"mandatory\"=>\"Y\", \"value\"=>5.0} must have matching value as quantity as declared in transaction category configuration",
            "Additional data 'data' : {\"name\"=>\"DateRange\", \"position\"=>9, \"data_type\"=>\"date_range\", \"mandatory\"=>\"Y\", \"value\"=>\"21/09/2024\"} must have matching value as date_range as declared in transaction category configuration",
            "Additional data 'data' : {\"name\"=>\"DateRange\", \"position\"=>9, \"data_type\"=>\"date_range\", \"mandatory\"=>\"Y\", \"value\"=>{}} must have a value as it is a mandatory field",
            "Additional data [\"start_date\", \"end_date\"] must be as declared in transaction category configuration",
            "Additional data {\"start_date\"=>\" \", \"end_date\"=>\"21/09/2024\"} must have matching value as date_range as declared in transaction category configuration",
            "Additional data {\"from\"=>\"2023\", \"to\"=>\"2024\"} must have matching value as from_year_to_year as declared in transaction category configuration",
            "Additional data [\"from\", \"to\"] must be as declared in transaction category configuration"
        ]
} }

This endpoint creates a Reimbursement Transaction.

UAT HTTP Request

POST https://nxt.api.q2pay.co.in/api/transactions/reimbursement

PRODUCTION HTTP Request

POST https://nxt.api.q2pay.in/api/transactions/reimbursement

Query Parameters

Parameter Default Description Required Sample
expense_type N.A. expense_type for create reimbursment transaction Yes Normal
amount N.A. amount for create reimbursment transaction Yes 500.0
beneficiary_account_id N.A. reimbursement account id for create reimbursment transaction Yes xxxxxxxx-xxxx-xxxx-xxxxxx
reimbursement_date N.A. reimbursement_date for create reimbursment transaction Yes "7/09/2025"
uploaded_file_data N.A. uploaded_file_data for create reimbursment transaction Yes {"id": "ca75c5ce08935b8459e649d16365eed4.xlx","storage": "cache","metadata": {"filename": "026883000000545.xlsx","size": 26620,"mime_type": "application/xlsx"}
category N.A. category for reimbursement transaction Yes Bulk Transaction 1
additional_data N.A. Additional data for reimbursement transaction Yes "data": [ {"name": "month", "position": 1,"data_type": "string","mandatory": "Y", "value": "Mon"}]
labels N.A labels for owner account No ["building expense"]
description N.A description for reimbursement transaction No "for outer requirements in company purpose"

Service Details

Service ID Description
CReimbursementTxn Create Reimbursement Transaction
AReimbursementRequest Approve Reimbursement Transaction Request

Actionable Reimbursement Request

curl -X GET "https://<environmenturl>/api/transactions/reimbursement/request/actionable"
  -H "X-Api-Key: <your secure token>"
  -H "Content-Type: application/json"
  -d "{ 
       "entity_id" : "ABC12",
       "category": "Beneficiary"
      }"

require 'net/http'
require 'uri'
require 'json'

uri = URI.parse("https://<environmenturl>/api/transactions/reimbursement/request/actionable") header = {'X-Api-Key' => '<your secure token>', 'Content-Type' => 'application/json'} body = { "entity_id" : "ABC12", "category": "Beneficiary" } http = Net::HTTP.new(uri.host, uri.port) http.use_ssl = true request = Net::HTTP::Get.new(uri.request_uri, header) request.body = body.to_json response = http.request(request)

const data = {
  "entity_id" : "ABC12",
  "category": "Beneficiary"
};

fetch('https://<environmenturl>/api/transactions/reimbursement/request/actionable', { method: 'GET', headers: { 'X-Api-Key': '<your secure token>', 'Content-Type': 'application/json' }, body: JSON.stringify(data) }) .then(response => response.json()) .then(data => console.log(data)) .catch(error => console.error(error));

The below example can be sent as a request to the API.

{
 "entity_id" : "ABC12",
 "category": "Beneficiary"
}

SUCCESS RESPONSE The request returns JSON structured like below on successful Reimbursement transaction actionable

{
  "status": true,
  "total_count": 1,
  "total_amount": "250.0",
  "transactions": [
    {
      "txn_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
      "expense_type": "Normal",
      "requested_amount": "250.0",
      "category": "Bulk Transaction 1",
      "lifecycle_status": "pending",
      "description": "for outer requirements in company purpose",
      "approved": "N",
      "rejected": "N",
      "entity_id": "MH1214",
      "uploaded_file_data": {
        "id": "ca75c5ce08935b8459e649d16365eed4.xlx",
        "storage": "cache",
        "metadata": {
          "size": 26620,
          "filename": "026883000000545.xlsx",
          "mime_type": "application/xlsx"
        }
      },
      "beneficiary_account_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
      "beneficiary_account_name": "xxxxxx xxxxxx xxxxxx",
      "beneficiary_account_bank_acc_no": "xxxxxxxx",
      "beneficiary_account_ifsc_code": "xxxxxxxx",
      "beneficiary_account_bank_name": "State Bank of India",
      "beneficiary_account_approval_status": "approved",
      "additional_data": {
        "data": [
          {
            "name": "month",
            "value": "June",
            "position": 1,
            "data_type": "string",
            "mandatory": "Y"
          },
          {
            "name": "leaves",
            "position": 2,
            "data_type": "numeric",
            "mandatory": "N"
          },
          {
            "name": "PAN",
            "position": 3,
            "data_type": "string",
            "mandatory": "N"
          },
          {
            "data": [
              "pradip",
              "deepak",
              "nikhil",
              "neha"
            ],
            "name": "Accountants",
            "position": 4,
            "data_type": "list",
            "mandatory": "N"
          },
          {
            "name": "month 1",
            "value": "12:00",
            "position": 5,
            "data_type": "time",
            "mandatory": "Y"
          },
          {
            "name": "Day",
            "value": "Monday",
            "position": 6,
            "data_type": "day",
            "mandatory": "Y"
          },
          {
            "name": "Dummy",
            "value": true,
            "position": 7,
            "data_type": "toggle",
            "mandatory": "Y"
          },
          {
            "name": "Month",
            "value": "March",
            "position": 8,
            "data_type": "month",
            "mandatory": "Y"
          },
          {
            "name": "Hyperlink",
            "position": 9,
            "data_type": "hyperlink",
            "mandatory": "N"
          },
          {
            "name": "File",
            "value": {
              "id": "c68cc4e7d54381cc46384f194c09ce2c.xls",
              "storage": "cache",
              "metadata": {
                "size": 62260,
                "filename": "favicon.png",
                "mime_type": "image/png"
              }
            },
            "position": 10,
            "data_type": "upload",
            "mandatory": "Y"
          },
          {
            "name": "Date",
            "value": "23/04/2023",
            "position": 11,
            "data_type": "date",
            "mandatory": "Y"
          },
          {
            "name": "Year",
            "value": "2024",
            "position": 12,
            "data_type": "year",
            "mandatory": "Y"
          },
          {
            "name": "Month_Year",
            "value": "12/2024",
            "position": 13,
            "data_type": "month_year",
            "mandatory": "Y"
          },
          {
            "data": [
              "ab",
              "abc",
              "abcd"
            ],
            "name": "Multiselect",
            "value": [
              "ab"
            ],
            "position": 14,
            "data_type": "multi_select_list",
            "mandatory": "Y"
          },
          {
            "name": "Quantity",
            "value": 2,
            "position": 15,
            "data_type": "quantity",
            "mandatory": "Y"
          },
          {
            "name": "DateRange",
            "value": {
              "end_date": "21/10/2024",
              "start_date": "21/08/2023"
            },
            "position": 16,
            "data_type": "date_range",
            "mandatory": "Y"
          },
          {
            "name": "YearRange",
            "value": {
              "to": 2034,
              "from": 2030
            },
            "position": 17,
            "data_type": "from_year_to_year",
            "mandatory": "Y"
          }
        ]
      },
      "created_by_name": "Q2PNEHA",
      "created_on": 1764221156
    }
  ],
  "title": {
    "records": 1,
    "current_page": 1,
    "total_pages": 1,
    "page_item_count": 50
  }
}

This endpoint actionable a Reimbursement Request.

UAT HTTP Request

GET https://nxt.api.q2pay.co.in/api/transactions/reimbursement/request/actionable

PRODUCTION HTTP Request

GET https://nxt.api.q2pay.in/api/transactions/reimbursement/request/actionable

Query Parameters

Parameter Default Description Required Sample
entity_id N.A. entity id for reimbursement transaction Yes (Admin) ABC12
category N.A. category for reimbursement transaction No Beneficiary
labels N.A. labels for reimbursement transaction No ["audit expense"]

Service Details

Service ID Description
AReimbursementRequest request Actionable Reimbursement Transaction

Actionable Reimbursement Transaction

curl -X GET "https://<environmenturl>/api/transactions/reimbursement/actionable"
  -H "X-Api-Key: <your secure token>"
  -H "Content-Type: application/json"
  -d "{ 
       "entity_id" : "ABC12",
       "category": "Beneficiary"
      }"

require 'net/http'
require 'uri'
require 'json'

uri = URI.parse("https://<environmenturl>/api/transactions/reimbursement/actionable") header = {'X-Api-Key' => '<your secure token>', 'Content-Type' => 'application/json'} body = { "entity_id" : "ABC12", "category": "Beneficiary" } http = Net::HTTP.new(uri.host, uri.port) http.use_ssl = true request = Net::HTTP::Get.new(uri.request_uri, header) request.body = body.to_json response = http.request(request)

const data = {
  "entity_id" : "ABC12",
  "category": "Beneficiary"
};

fetch('https://<environmenturl>/api/transactions/reimbursement/actionable', { method: 'GET', headers: { 'X-Api-Key': '<your secure token>', 'Content-Type': 'application/json' }, body: JSON.stringify(data) }) .then(response => response.json()) .then(data => console.log(data)) .catch(error => console.error(error));

The below example can be sent as a request to the API.

{
 "entity_id" : "ABC12",
 "category": "Beneficiary"
}

SUCCESS RESPONSE The request returns JSON structured like below on successful Reimbursement transaction actionable

{
  "status": true,
  "total_count": 2,
  "total_amount": "750.0",
  "transactions": [
    {
      "txn_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
      "expense_type": "Normal",
      "requested_amount": "500.0",
      "category": "Bulk Transaction 1",
      "lifecycle_status": "approved_request",
      "labels": [
        "audit expenses"
      ],
      "approved": "N",
      "rejected": "N",
      "entity_id": "MH1214",
      "uploaded_file_data": {
        "id": "ca75c5ce08935b8459e649d16365eed4.xlsx",
        "storage": "cache",
        "metadata": {
          "size": 26620,
          "filename": "026883000000545.xlsx",
          "mime_type": "application/xlsx"
        }
      },
      "beneficiary_account_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
      "beneficiary_account_name": "ANKITA ANIL GAYKAR",
      "beneficiary_account_bank_acc_no": "xxxxxxxx",
      "beneficiary_account_ifsc_code": "xxxxxxxx",
      "beneficiary_account_bank_name": "State Bank of India",
      "beneficiary_account_approval_status": "approved",
      "additional_data": {
        "data": [
          {
            "name": "month",
            "value": "June",
            "position": 1,
            "data_type": "string",
            "mandatory": "Y"
          },
          {
            "name": "leaves",
            "position": 2,
            "data_type": "numeric",
            "mandatory": "N"
          },
          {
            "name": "PAN",
            "position": 3,
            "data_type": "string",
            "mandatory": "N"
          },
          {
            "data": [
              "pradip",
              "deepak",
              "nikhil",
              "neha"
            ],
            "name": "Accountants",
            "position": 4,
            "data_type": "list",
            "mandatory": "N"
          },
          {
            "name": "month 1",
            "value": "12:00",
            "position": 5,
            "data_type": "time",
            "mandatory": "Y"
          },
          {
            "name": "Day",
            "value": "Monday",
            "position": 6,
            "data_type": "day",
            "mandatory": "Y"
          },
          {
            "name": "Dummy",
            "value": true,
            "position": 7,
            "data_type": "toggle",
            "mandatory": "Y"
          },
          {
            "name": "Month",
            "value": "March",
            "position": 8,
            "data_type": "month",
            "mandatory": "Y"
          },
          {
            "name": "Hyperlink",
            "position": 9,
            "data_type": "hyperlink",
            "mandatory": "N"
          },
          {
            "name": "File",
            "value": {
              "id": "c68cc4e7d54381cc46384f194c09ce2c.xlsx",
              "storage": "cache",
              "metadata": {
                "size": 62260,
                "filename": "favicon.png",
                "mime_type": "image/png"
              }
            },
            "position": 10,
            "data_type": "upload",
            "mandatory": "Y"
          },
          {
            "name": "Date",
            "value": "23/04/2023",
            "position": 11,
            "data_type": "date",
            "mandatory": "Y"
          },
          {
            "name": "Year",
            "value": "2024",
            "position": 12,
            "data_type": "year",
            "mandatory": "Y"
          },
          {
            "name": "Month_Year",
            "value": "12/2024",
            "position": 13,
            "data_type": "month_year",
            "mandatory": "Y"
          },
          {
            "data": [
              "ab",
              "abc",
              "abcd"
            ],
            "name": "Multiselect",
            "value": [
              "ab"
            ],
            "position": 14,
            "data_type": "multi_select_list",
            "mandatory": "Y"
          },
          {
            "name": "Quantity",
            "value": 2,
            "position": 15,
            "data_type": "quantity",
            "mandatory": "Y"
          },
          {
            "name": "DateRange",
            "value": {
              "end_date": "21/10/2024",
              "start_date": "21/08/2023"
            },
            "position": 16,
            "data_type": "date_range",
            "mandatory": "Y"
          },
          {
            "name": "YearRange",
            "value": {
              "to": 2034,
              "from": 2030
            },
            "position": 17,
            "data_type": "from_year_to_year",
            "mandatory": "Y"
          }
        ]
      },
      "created_by_name": "Q2PANUJ",
      "created_on": 1764220815
    },
    {
      "txn_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
      "expense_type": "Normal",
      "requested_amount": "250.0",
      "category": "Bulk Transaction 1",
      "lifecycle_status": "approved_request",
      "description": "for outer requirements in company purpose",
      "approved": "N",
      "rejected": "N",
      "entity_id": "MH1214",
      "uploaded_file_data": {
        "id": "ca75c5ce08935b8459e649d16365eed4.xlx",
        "storage": "cache",
        "metadata": {
          "size": 26620,
          "filename": "026883000000545.xlsx",
          "mime_type": "application/xlsx"
        }
      },
      "beneficiary_account_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
      "beneficiary_account_name": "xxxxx-xxxxxxx-xxxx",
      "beneficiary_account_bank_acc_no": "xxxxxxxx",
      "beneficiary_account_ifsc_code": "xxxxxxxx",
      "beneficiary_account_bank_name": "State Bank of India",
      "beneficiary_account_approval_status": "approved",
      "additional_data": {
        "data": [
          {
            "name": "month",
            "value": "June",
            "position": 1,
            "data_type": "string",
            "mandatory": "Y"
          },
          {
            "name": "leaves",
            "position": 2,
            "data_type": "numeric",
            "mandatory": "N"
          },
          {
            "name": "PAN",
            "position": 3,
            "data_type": "string",
            "mandatory": "N"
          },
          {
            "data": [
              "pradip",
              "deepak",
              "nikhil",
              "neha"
            ],
            "name": "Accountants",
            "position": 4,
            "data_type": "list",
            "mandatory": "N"
          },
          {
            "name": "month 1",
            "value": "12:00",
            "position": 5,
            "data_type": "time",
            "mandatory": "Y"
          },
          {
            "name": "Day",
            "value": "Monday",
            "position": 6,
            "data_type": "day",
            "mandatory": "Y"
          },
          {
            "name": "Dummy",
            "value": true,
            "position": 7,
            "data_type": "toggle",
            "mandatory": "Y"
          },
          {
            "name": "Month",
            "value": "March",
            "position": 8,
            "data_type": "month",
            "mandatory": "Y"
          },
          {
            "name": "Hyperlink",
            "position": 9,
            "data_type": "hyperlink",
            "mandatory": "N"
          },
          {
            "name": "File",
            "value": {
              "id": "c68cc4e7d54381cc46384f194c09ce2c.xls",
              "storage": "cache",
              "metadata": {
                "size": 62260,
                "filename": "favicon.png",
                "mime_type": "image/png"
              }
            },
            "position": 10,
            "data_type": "upload",
            "mandatory": "Y"
          },
          {
            "name": "Date",
            "value": "23/04/2023",
            "position": 11,
            "data_type": "date",
            "mandatory": "Y"
          },
          {
            "name": "Year",
            "value": "2024",
            "position": 12,
            "data_type": "year",
            "mandatory": "Y"
          },
          {
            "name": "Month_Year",
            "value": "12/2024",
            "position": 13,
            "data_type": "month_year",
            "mandatory": "Y"
          },
          {
            "data": [
              "ab",
              "abc",
              "abcd"
            ],
            "name": "Multiselect",
            "value": [
              "ab"
            ],
            "position": 14,
            "data_type": "multi_select_list",
            "mandatory": "Y"
          },
          {
            "name": "Quantity",
            "value": 2,
            "position": 15,
            "data_type": "quantity",
            "mandatory": "Y"
          },
          {
            "name": "DateRange",
            "value": {
              "end_date": "21/10/2024",
              "start_date": "21/08/2023"
            },
            "position": 16,
            "data_type": "date_range",
            "mandatory": "Y"
          },
          {
            "name": "YearRange",
            "value": {
              "to": 2034,
              "from": 2030
            },
            "position": 17,
            "data_type": "from_year_to_year",
            "mandatory": "Y"
          }
        ]
      },
      "created_by_name": "Q2PNEHA",
      "created_on": 1764220798
    }
  ],
  "title": {
    "records": 2,
    "current_page": 1,
    "total_pages": 1,
    "page_item_count": 50
  }
}

This endpoint actionable a Reimbursement Transaction.

UAT HTTP Request

GET https://nxt.api.q2pay.co.in/api/transactions/reimbursement/actionable

PRODUCTION HTTP Request

GET https://nxt.api.q2pay.in/api/transactions/reimbursement/actionable

Query Parameters

Parameter Default Description Required Sample
entity_id N.A. entity id for reimbursement transaction Yes (Admin) ABC12
category N.A. category for reimbursement transaction No Beneficiary
labels N.A. labels for reimbursement transaction No ["audit expense"]

Service Details

Service ID Description
VReimbursementTxn Actionable Reimbursement Transaction

Approve Reimbursement Requests

curl -X PUT "https://<environmenturl>/api/transactions/reimbursement/request/approve"
  -H "X-Api-Key: <your secure token>"
  -H "Content-Type: application/json"
  -d "{
  "reimbursement_requests": [
    {
      "txn_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
      "reimbursement_amount": 200.0,
      "owner_account_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
      "comments": "Only reimbursements up to ₹500 can be approved."
    },
    {
      "txn_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
      "reimbursement_amount": 200.0,
      "owner_account_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
      "comments": "Only reimbursements up to ₹500 can be approved."
    }
  ]
}"
require 'net/http'
require 'uri'
require 'json'

uri = URI.parse("https://<environmenturl>/api/transactions/reimbursement/request/approve") header = {'X-Api-Key' => '<your secure token>', 'Content-Type' => 'application/json'} body ={ "reimbursement_requests": [ { "txn_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx", "reimbursement_amount": 200.0, "owner_account_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx", "comments": "Only reimbursements up to ₹500 can be approved." }, { "txn_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx", "reimbursement_amount": 200.0, "owner_account_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx", "comments": "Only reimbursements up to ₹500 can be approved." } ] } http = Net::HTTP.new(uri.host, uri.port) http.use_ssl = true request = Net::HTTP::Put.new(uri.request_uri, header) request.body = body.to_json response = http.request(request)

const data ={
  "reimbursement_requests": [
    {
      "txn_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
      "reimbursement_amount": 200.0,
      "owner_account_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
      "comments": "Only reimbursements up to ₹500 can be approved."
    },
    {
      "txn_id": "bcd0cca4-7d00-4850-a65d-e71ccd766304",
      "reimbursement_amount": 200.0,
      "owner_account_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
      "comments": "Only reimbursements up to ₹500 can be approved."
    }
  ]
};

fetch('https://<environmenturl>/api/transactions/reimbursement/request/approve', { method: 'PUT', headers: { 'X-Api-Key': '<your secure token>', 'Content-Type': 'application/json' }, body: JSON.stringify(data) }) .then(response => response.json()) .then(data => console.log(data)) .catch(error => console.error(error));

The below example can be sent as a request to the API.

{
  "reimbursement_requests": [
    {
      "txn_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
      "reimbursement_amount": 200.0,
      "owner_account_id": "7c6bd053-a2e2-4481-a2e6-fda0408a478e",
      "comments": "Only reimbursements up to ₹500 can be approved."
    }
  ]
}

The below example can be sent as a request to the API for multiple requests.

{
  "reimbursement_requests": [
    {
      "txn_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
      "reimbursement_amount": 200.0,
      "owner_account_id": "7c6bd053-a2e2-4481-a2e6-fda0408a478e",
      "comments": "Only reimbursements up to ₹500 can be approved."
    },
    {
      "txn_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
      "reimbursement_amount": 200.0,
      "owner_account_id": "7c6bd053-a2e2-4481-a2e6-fda0408a478e",
      "comments": "Only reimbursements up to ₹500 can be approved."
    }
  ]
}

SUCCESS RESPONSE The request returns JSON structured like below on successful Reimbursment Request

{
  "status": true,
  "total_count": 2,
  "total_amount": "500.0",
  "transactions": [
    {
      "txn_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
      "expense_type": "Normal",
      "requested_amount": "250.0",
      "reimbursement_date": "2025-09-07",
      "category": "Bulk Transaction 1",
      "lifecycle_status": "approved_request",
      "labels": [
        "audit expenses"
      ],
      "approved": "N",
      "reimbursement_amount": "200.0",
      "comments": "Only reimbursements up to ₹500 can be approved.",
      "approved_at": 1764161948,
      "approved_by": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
      "rejected": "N",
      "entity_id": "MH1214",
      "uploaded_file_data": {
        "id": "ca75c5ce08935b8459e649d16365eed4.xlsx",
        "storage": "cache",
        "metadata": {
          "size": 26620,
          "filename": "026883000000545.xlsx",
          "mime_type": "application/xlsx"
        }
      },
      "beneficiary_account_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
      "beneficiary_account_name": "ANKITA ANIL GAYKAR",
      "beneficiary_account_bank_acc_no": "36344624716",
      "beneficiary_account_ifsc_code": "SBIN0012689",
      "beneficiary_account_bank_name": "State Bank of India",
      "beneficiary_account_approval_status": "approved",
      "additional_data": {
        "data": [
          {
            "name": "month",
            "value": "June",
            "position": 1,
            "data_type": "string",
            "mandatory": "Y"
          },
          {
            "name": "leaves",
            "position": 2,
            "data_type": "numeric",
            "mandatory": "N"
          },
          {
            "name": "PAN",
            "position": 3,
            "data_type": "string",
            "mandatory": "N"
          },
          {
            "data": [
              "pradip",
              "deepak",
              "nikhil",
              "neha"
            ],
            "name": "Accountants",
            "position": 4,
            "data_type": "list",
            "mandatory": "N"
          },
          {
            "name": "month 1",
            "value": "12:00",
            "position": 5,
            "data_type": "time",
            "mandatory": "Y"
          },
          {
            "name": "Day",
            "value": "Monday",
            "position": 6,
            "data_type": "day",
            "mandatory": "Y"
          },
          {
            "name": "Dummy",
            "value": true,
            "position": 7,
            "data_type": "toggle",
            "mandatory": "Y"
          },
          {
            "name": "Month",
            "value": "March",
            "position": 8,
            "data_type": "month",
            "mandatory": "Y"
          },
          {
            "name": "Hyperlink",
            "position": 9,
            "data_type": "hyperlink",
            "mandatory": "N"
          },
          {
            "name": "File",
            "value": {
              "id": "c68cc4e7d54381cc46384f194c09ce2c.xlsx",
              "storage": "cache",
              "metadata": {
                "size": 62260,
                "filename": "favicon.png",
                "mime_type": "image/png"
              }
            },
            "position": 10,
            "data_type": "upload",
            "mandatory": "Y"
          },
          {
            "name": "Date",
            "value": "23/04/2023",
            "position": 11,
            "data_type": "date",
            "mandatory": "Y"
          },
          {
            "name": "Year",
            "value": "2024",
            "position": 12,
            "data_type": "year",
            "mandatory": "Y"
          },
          {
            "name": "Month_Year",
            "value": "12/2024",
            "position": 13,
            "data_type": "month_year",
            "mandatory": "Y"
          },
          {
            "data": [
              "ab",
              "abc",
              "abcd"
            ],
            "name": "Multiselect",
            "value": [
              "ab"
            ],
            "position": 14,
            "data_type": "multi_select_list",
            "mandatory": "Y"
          },
          {
            "name": "Quantity",
            "value": 2,
            "position": 15,
            "data_type": "quantity",
            "mandatory": "Y"
          },
          {
            "name": "DateRange",
            "value": {
              "end_date": "21/10/2024",
              "start_date": "21/08/2023"
            },
            "position": 16,
            "data_type": "date_range",
            "mandatory": "Y"
          },
          {
            "name": "YearRange",
            "value": {
              "to": 2034,
              "from": 2030
            },
            "position": 17,
            "data_type": "from_year_to_year",
            "mandatory": "Y"
          }
        ]
      },
      "created_by_name": "Q2PANUJ",
      "created_on": 1764161914,
      "logs": [
        {
          "brand": "google",
          "model": "sdk_gphone64_x86_64",
          "action": "Created",
          "user_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
          "platform": "android",
          "last_name": "shukla",
          "last_used": "2025-11-26T12:58:34.397Z",
          "timestamp": "2025-11-26T12:58:34.481Z",
          "first_name": "anuj",
          "ip_address": "127.0.0.1",
          "is_primary": false,
          "os_version": "Android 15",
          "request_ip": "127.0.0.1",
          "is_verified": false,
          "sdk_version": "35",
          "manufacturer": "Google",
          "serial_number": "unknown",
          "logged_in_flag": false,
          "logged_in_time": "2025-11-26T11:24:29.157Z",
          "user_full_name": "anuj shukla",
          "app_version_code": "100",
          "app_version_name": "1.90"
        },
        {
          "brand": "google",
          "model": "sdk_gphone64_x86_64",
          "action": "Reimbursement",
          "user_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
          "platform": "android",
          "last_name": "shukla",
          "last_used": "2025-11-26T12:59:08.155Z",
          "timestamp": "2025-11-26T12:59:08.200Z",
          "first_name": "anuj",
          "ip_address": "127.0.0.1",
          "is_primary": false,
          "os_version": "Android 15",
          "request_ip": "127.0.0.1",
          "is_verified": false,
          "sdk_version": "35",
          "manufacturer": "Google",
          "serial_number": "unknown",
          "final_approval": false,
          "logged_in_flag": false,
          "logged_in_time": "2025-11-26T11:24:29.157Z",
          "user_full_name": "Neha Gaikwad",
          "app_version_code": "100",
          "app_version_name": "1.90",
          "authorization_rule": null
        }
      ]
    },
    {
      "txn_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
      "expense_type": "Normal",
      "requested_amount": "250.0",
      "reimbursement_date": "2025-09-07",
      "category": "Bulk Transaction 1",
      "lifecycle_status": "approved_request",
      "labels": [
        "audit expenses"
      ],
      "approved": "N",
      "reimbursement_amount": "130.0",
      "comments": "Only reimbursements up to ₹500 can be approved.",
      "approved_at": 1764161948,
      "approved_by": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
      "rejected": "N",
      "entity_id": "MH1214",
      "uploaded_file_data": {
        "id": "ca75c5ce08935b8459e649d16365eed4.xlsx",
        "storage": "cache",
        "metadata": {
          "size": 26620,
          "filename": "026883000000545.xlsx",
          "mime_type": "application/xlsx"
        }
      },
      "beneficiary_account_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
      "beneficiary_account_name": "ANKITA ANIL GAYKAR",
      "beneficiary_account_bank_acc_no": "36344624716",
      "beneficiary_account_ifsc_code": "SBIN0012689",
      "beneficiary_account_bank_name": "State Bank of India",
      "beneficiary_account_approval_status": "approved",
      "additional_data": {
        "data": [
          {
            "name": "month",
            "value": "June",
            "position": 1,
            "data_type": "string",
            "mandatory": "Y"
          },
          {
            "name": "leaves",
            "position": 2,
            "data_type": "numeric",
            "mandatory": "N"
          },
          {
            "name": "PAN",
            "position": 3,
            "data_type": "string",
            "mandatory": "N"
          },
          {
            "data": [
              "pradip",
              "deepak",
              "nikhil",
              "neha"
            ],
            "name": "Accountants",
            "position": 4,
            "data_type": "list",
            "mandatory": "N"
          },
          {
            "name": "month 1",
            "value": "12:00",
            "position": 5,
            "data_type": "time",
            "mandatory": "Y"
          },
          {
            "name": "Day",
            "value": "Monday",
            "position": 6,
            "data_type": "day",
            "mandatory": "Y"
          },
          {
            "name": "Dummy",
            "value": true,
            "position": 7,
            "data_type": "toggle",
            "mandatory": "Y"
          },
          {
            "name": "Month",
            "value": "March",
            "position": 8,
            "data_type": "month",
            "mandatory": "Y"
          },
          {
            "name": "Hyperlink",
            "position": 9,
            "data_type": "hyperlink",
            "mandatory": "N"
          },
          {
            "name": "File",
            "value": {
              "id": "c68cc4e7d54381cc46384f194c09ce2c.xlsx",
              "storage": "cache",
              "metadata": {
                "size": 62260,
                "filename": "favicon.png",
                "mime_type": "image/png"
              }
            },
            "position": 10,
            "data_type": "upload",
            "mandatory": "Y"
          },
          {
            "name": "Date",
            "value": "23/04/2023",
            "position": 11,
            "data_type": "date",
            "mandatory": "Y"
          },
          {
            "name": "Year",
            "value": "2024",
            "position": 12,
            "data_type": "year",
            "mandatory": "Y"
          },
          {
            "name": "Month_Year",
            "value": "12/2024",
            "position": 13,
            "data_type": "month_year",
            "mandatory": "Y"
          },
          {
            "data": [
              "ab",
              "abc",
              "abcd"
            ],
            "name": "Multiselect",
            "value": [
              "ab"
            ],
            "position": 14,
            "data_type": "multi_select_list",
            "mandatory": "Y"
          },
          {
            "name": "Quantity",
            "value": 2,
            "position": 15,
            "data_type": "quantity",
            "mandatory": "Y"
          },
          {
            "name": "DateRange",
            "value": {
              "end_date": "21/10/2024",
              "start_date": "21/08/2023"
            },
            "position": 16,
            "data_type": "date_range",
            "mandatory": "Y"
          },
          {
            "name": "YearRange",
            "value": {
              "to": 2034,
              "from": 2030
            },
            "position": 17,
            "data_type": "from_year_to_year",
            "mandatory": "Y"
          }
        ]
      },
      "created_by_name": "Q2PANUJ",
      "created_on": 1764161932,
      "logs": [
        {
          "brand": "google",
          "model": "sdk_gphone64_x86_64",
          "action": "Created",
          "user_id": "a15c28bf-3c9e-42de-9667-63d2bd612934",
          "platform": "android",
          "last_name": "shukla",
          "last_used": "2025-11-26T12:58:52.230Z",
          "timestamp": "2025-11-26T12:58:52.268Z",
          "first_name": "anuj",
          "ip_address": "127.0.0.1",
          "is_primary": false,
          "os_version": "Android 15",
          "request_ip": "127.0.0.1",
          "is_verified": false,
          "sdk_version": "35",
          "manufacturer": "Google",
          "serial_number": "unknown",
          "logged_in_flag": false,
          "logged_in_time": "2025-11-26T11:24:29.157Z",
          "user_full_name": "anuj shukla",
          "app_version_code": "100",
          "app_version_name": "1.90"
        },
        {
          "brand": "google",
          "model": "sdk_gphone64_x86_64",
          "action": "Reimbursement",
          "user_id": "85c08f8e-e395-4c6c-acc7-a4e771f5250b",
          "platform": "android",
          "last_name": "shukla",
          "last_used": "2025-11-26T12:59:08.155Z",
          "timestamp": "2025-11-26T12:59:08.222Z",
          "first_name": "anuj",
          "ip_address": "127.0.0.1",
          "is_primary": false,
          "os_version": "Android 15",
          "request_ip": "127.0.0.1",
          "is_verified": false,
          "sdk_version": "35",
          "manufacturer": "Google",
          "serial_number": "unknown",
          "final_approval": false,
          "logged_in_flag": false,
          "logged_in_time": "2025-11-26T11:24:29.157Z",
          "user_full_name": "Neha Gaikwad",
          "app_version_code": "100",
          "app_version_name": "1.90",
          "authorization_rule": null
        }
      ]
    }
  ],
  "title": {
    "records": 2,
    "current_page": 1,
    "total_pages": 1,
    "page_item_count": 50
  }
}

ERROR RESPONSE The request returns JSON structured like below for errors related reimbursement transaction

{
    "status":false,
    "action":"Not performed",
    "errors":{
        "base":[
            "Invalid / Insufficient parameters"
        ],
        "base":[
            "Reimbursement Request not found for request id: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx"
        ],
"base":[ "All reimbursement requests do not belong to the same entity / some are already processed" ],
"base":[ { "id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx", "errors": "Reimbursement amount should be less than or equal to request amount" }, { "id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx", "errors": "Owner account must exist" }, { "id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx", "errors": "Owner Account doesn't belongs to your entity." }, { "id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx", "errors": "Owner & Beneficiary Bank Account number are same. Transaction cannot be created. Kindly contact support" }, { "id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx", "errors": "Connected banking not active for owner account. Transaction cannot be created. Kindly contact support" }, { "id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx", "errors": "Owner Account is pending. Transaction cannot be created. Kindly contact support" } ], "base": [ { "id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx", "errors": "Beneficiary account is not approved" } ], "base":[ { "id":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx", "errors":[ { "reason":"User is not authorized to approve (duplicate approval)" } ] } ]
} }

This endpoint approves reimbursement requests.

UAT HTTP Request

PUT https://nxt.api.q2pay.co.in/api/transactions/reimbursement/request/approve

PRODUCTION HTTP Request

PUT https://nxt.api.q2pay.in/api/transactions/reimbursement/request/approve

Query Parameters

Parameter Default Description Required Sample
txn_id N.A. txn id for reimbursement request Yes xxxxxxxx-xxxx-xxxx-xxxxxx
reimbursement_amount N.A. reimbursement_amount for approve reimbursement request Yes 200.0
owner_account_id N.A. owner_account_id for approve reimbursement request Yes xxxxxxxx-xxxx-xxxx-xxxxxx
comments N.A. comments for approve reimbursement request No "Only reimbursements up to ₹200 can be approved."

Service Details

Service ID Description
AReimbursementRequest Approve Reimbursement Transaction Request

Approve Reimbursement Transaction

curl -X PUT "https://<environmenturl>/api/transactions/reimbursement/approve"
  -H "X-Api-Key: <your secure token>"
  -H "Content-Type: application/json"
  -d "{ 
    "txn_id":  ["xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx"]
      }"

require 'net/http'
require 'uri'
require 'json'

uri = URI.parse("https://<environmenturl>/api/transactions/reimbursement/approve") header = {'X-Api-Key' => '<your secure token>', 'Content-Type' => 'application/json'} body = { "txn_id": ["xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx"] } http = Net::HTTP.new(uri.host, uri.port) http.use_ssl = true request = Net::HTTP::Put.new(uri.request_uri, header) request.body = body.to_json response = http.request(request)

const data = {
   "txn_id":  ["xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx"]
};

fetch('https://<environmenturl>/api/transactions/reimbursement/approve', { method: 'PUT', headers: { 'X-Api-Key': '<your secure token>', 'Content-Type': 'application/json' }, body: JSON.stringify(data) }) .then(response => response.json()) .then(data => console.log(data)) .catch(error => console.error(error));

The below example can be sent as a request to the API.

{
  "txn_id":  ["xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx"]
}

The below example can be sent as a request to the API for multiple transaction id.

{
  "txn_id":  ["xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx","xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx"]
}

SUCCESS RESPONSE The request returns JSON structured like below on successful Reimbursement transaction approve

{
  "status": true,
  "total_count": 1,
  "total_amount": "250.0",
  "transactions": [
    {
      "txn_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
      "expense_type": "1",
      "requested_amount": "250.0",
      "reimbursement_date": "2025-09-07",
      "category": "Bulk Transaction 1",
      "lifecycle_status": "approved",
      "description": "for outer requirements in company purpose",
      "labels": [
        "anuj"
      ],
      "approved": "Y",
      "reimbursement_amount": "200.0",
      "comments": "Only reimbursements up to ₹500 can be approved.",
      "approved_at": 1764271872,
      "approved_by": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
      "rejected": "N",
      "entity_id": "MH1214",
      "uploaded_file_data": {
        "id": "ca75c5ce08935b8459e649d16365eed4.xlsx",
        "storage": "cache",
        "metadata": {
          "size": 26620,
          "filename": "026883000000545.xlsx",
          "mime_type": "application/xlsx"
        }
      },
      "beneficiary_account_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
      "beneficiary_account_name": "xxxxxxxx xxxxxx xxxxxx",
      "beneficiary_account_bank_acc_no": "xxxxxxxxx",
      "beneficiary_account_ifsc_code": "xxxxxxxx",
      "beneficiary_account_bank_name": "State Bank of India",
      "beneficiary_account_approval_status": "approved",
      "additional_data": {
        "data": [
          {
            "name": "month",
            "value": "June",
            "position": 1,
            "data_type": "string",
            "mandatory": "Y"
          },
          {
            "name": "leaves",
            "position": 2,
            "data_type": "numeric",
            "mandatory": "N"
          },
          {
            "name": "PAN",
            "position": 3,
            "data_type": "string",
            "mandatory": "N"
          },
          {
            "data": [
              "pradip",
              "deepak",
              "nikhil",
              "neha"
            ],
            "name": "Accountants",
            "position": 4,
            "data_type": "list",
            "mandatory": "N"
          },
          {
            "name": "month 1",
            "value": "12:00",
            "position": 5,
            "data_type": "time",
            "mandatory": "Y"
          },
          {
            "name": "Day",
            "value": "Monday",
            "position": 6,
            "data_type": "day",
            "mandatory": "Y"
          },
          {
            "name": "Dummy",
            "value": true,
            "position": 7,
            "data_type": "toggle",
            "mandatory": "Y"
          },
          {
            "name": "Month",
            "value": "March",
            "position": 8,
            "data_type": "month",
            "mandatory": "Y"
          },
          {
            "name": "Hyperlink",
            "position": 9,
            "data_type": "hyperlink",
            "mandatory": "N"
          },
          {
            "name": "File",
            "value": {
              "id": "c68cc4e7d54381cc46384f194c09ce2c.png",
              "storage": "cache",
              "metadata": {
                "size": 62260,
                "filename": "favicon.png",
                "mime_type": "image/png"
              }
            },
            "position": 10,
            "data_type": "upload",
            "mandatory": "Y"
          },
          {
            "name": "Date",
            "value": "23/04/2023",
            "position": 11,
            "data_type": "date",
            "mandatory": "Y"
          },
          {
            "name": "Year",
            "value": "2024",
            "position": 12,
            "data_type": "year",
            "mandatory": "Y"
          },
          {
            "name": "Month_Year",
            "value": "12/2024",
            "position": 13,
            "data_type": "month_year",
            "mandatory": "Y"
          },
          {
            "data": [
              "ab",
              "abc",
              "abcd"
            ],
            "name": "Multiselect",
            "value": [
              "ab"
            ],
            "position": 14,
            "data_type": "multi_select_list",
            "mandatory": "Y"
          },
          {
            "name": "Quantity",
            "value": 2,
            "position": 15,
            "data_type": "quantity",
            "mandatory": "Y"
          },
          {
            "name": "DateRange",
            "value": {
              "end_date": "21/10/2024",
              "start_date": "21/08/2023"
            },
            "position": 16,
            "data_type": "date_range",
            "mandatory": "Y"
          },
          {
            "name": "YearRange",
            "value": {
              "to": 2034,
              "from": 2030
            },
            "position": 17,
            "data_type": "from_year_to_year",
            "mandatory": "Y"
          }
        ]
      },
      "created_by_name": "Q2PANUJ",
      "created_on": 1764269698,
      "logs": [
        {
          "brand": "google",
          "model": "sdk_gphone64_x86_64",
          "action": "Created",
          "user_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
          "platform": "android",
          "last_name": "Gaikwad",
          "last_used": "2025-11-27T18:54:58.160Z",
          "timestamp": "2025-11-27T18:54:58.223Z",
          "first_name": "Neha",
          "ip_address": "127.0.0.1",
          "is_primary": false,
          "os_version": "Android 15",
          "request_ip": "127.0.0.1",
          "is_verified": false,
          "sdk_version": "35",
          "manufacturer": "Google",
          "serial_number": "unknown",
          "logged_in_flag": false,
          "logged_in_time": "2025-11-27T18:40:57.258Z",
          "user_full_name": "anuj shukla",
          "app_version_code": "100",
          "app_version_name": "1.90"
        },
        {
          "brand": "google",
          "model": "sdk_gphone64_x86_64",
          "action": "Reimbursement",
          "user_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
          "platform": "android",
          "last_name": "Gaikwad",
          "last_used": "2025-11-27T18:55:53.485Z",
          "timestamp": "2025-11-27T18:55:54.060Z",
          "first_name": "Neha",
          "ip_address": "127.0.0.1",
          "is_primary": false,
          "os_version": "Android 15",
          "request_ip": "127.0.0.1",
          "is_verified": false,
          "sdk_version": "35",
          "manufacturer": "Google",
          "serial_number": "unknown",
          "logged_in_flag": false,
          "logged_in_time": "2025-11-27T18:40:57.258Z",
          "user_full_name": "Neha Gaikwad",
          "app_version_code": "100",
          "app_version_name": "1.90"
        },
        {
          "brand": "google",
          "model": "sdk_gphone64_x86_64",
          "action": "Approved",
          "user_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
          "platform": "android",
          "last_name": "Jagdale",
          "last_used": "2025-11-27T19:31:12.707Z",
          "timestamp": "2025-11-27T19:31:12.729Z",
          "first_name": "Nikhil",
          "ip_address": "127.0.0.1",
          "is_primary": false,
          "os_version": "Android 15",
          "request_ip": "127.0.0.1",
          "is_verified": false,
          "sdk_version": "35",
          "manufacturer": "Google",
          "serial_number": "unknown",
          "final_approval": true,
          "logged_in_flag": false,
          "logged_in_time": "2025-11-27T19:30:06.140Z",
          "user_full_name": "anuj shukla",
          "app_version_code": "100",
          "app_version_name": "1.90",
          "authorization_rule": "CEO~1"
        }
      ]
    }
  ],
  "title": {
    "records": 1,
    "current_page": 1,
    "total_pages": 1,
    "page_item_count": 50
  }
}

ERROR RESPONSE The request returns JSON structured like below for errors related beneficiary transaction

{
    "status":false,
    "action":"Not performed",
    "errors":{
        "base":[
            "Invalid / Insufficient parameters"
        ],
        "base":[
            "No transactions found for transaction ids: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx"
        ],
"base":[ "All transactions do not belong to the same entity / Few transactions are already approved or are abandoned/cancelled" ],
"base":[ { "id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx", "reason":[ "User is not authorized to approve transaction." ] } ], "base": [ { "id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx", "errors": "Beneficiary account is not approved" } ], "base":[ { "id":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx", "errors":[ { "reason":"User is not authorized to approve (duplicate approval)" } ] } ]
} }

This endpoint approves a Beneficiary Transaction.

UAT HTTP Request

PUT https://nxt.api.q2pay.co.in/api/transactions/reimbursement/approve

PRODUCTION HTTP Request

PUT https://nxt.api.q2pay.in/api/transactions/reimbursement/approve

Query Parameters

Parameter Default Description Required Sample
txn_id N.A. txn id for beneficiary transaction Yes [xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxx ,xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxx]

Service Details

Service ID Description
AReimbursementTxn Approve Reimbursement Transaction

Reject Reimbursement Transaction

curl -X PUT "https://<environmenturl>/api/transactions/reimbursement/reject"
  -H "X-Api-Key: <your secure token>"
  -H "Content-Type: application/json"
  -d "{ 
    "txn_id":  ["xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx"],
    "rejection_reason" : "Another transaction is already in progress"
      }"

require 'net/http'
require 'uri'
require 'json'

uri = URI.parse("https://<environmenturl>/api/transactions/reimbursement/reject") header = {'X-Api-Key' => '<your secure token>', 'Content-Type' => 'application/json'} body = { "txn_id": ["xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx"], "rejection_reason" : "Another transaction is already in progress" } http = Net::HTTP.new(uri.host, uri.port) http.use_ssl = true request = Net::HTTP::Put.new(uri.request_uri, header) request.body = body.to_json response = http.request(request)

const data = {
   "txn_id":  ["xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx"],
   "rejection_reason" : "Another transaction is already in progress"
};

fetch('https://<environmenturl>/api/transactions/reimbursement/reject', { method: 'PUT', headers: { 'X-Api-Key': '<your secure token>', 'Content-Type': 'application/json' }, body: JSON.stringify(data) }) .then(response => response.json()) .then(data => console.log(data)) .catch(error => console.error(error));

The below example can be sent as a request to the API.

{
  "txn_id":  ["xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx"],
  "rejection_reason" : "Another transaction is already in progress"
}

The below example can be sent as a request to the API for multiple transaction id.

{
  "txn_id":  ["xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx","xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx"],
  "rejection_reason" : "Another transaction is already in progress"
}

SUCCESS RESPONSE The request returns JSON structured like below on successful Reimbursement transaction reject

{
    "status": true,
    "total_count": 1,
    "total_amount": "500.0",
    "transactions": [
        {
            "txn_id": "8c5f60b1-559e-4a9b-be09-16bbedfd9071",
            "expense_type": "Normal",
            "requested_amount": "250.0",
            "reimbursement_date": "2025-03-07",
            "category": "Bulk Transaction 1",
            "lifecycle_status": "rejected",
            "description": "for outer requirements in company purpose",
            "approved": "N",
            "rejected": "Y",
            "rejection_reason": "Another transaction is already in progress",
            "rejected_at": 1763551325,
            "rejected_by": "85c08f8e-e395-4c6c-acc7-a4e771f5250b",
            "entity_id": "MH1214",
            "uploaded_file_data": {
                "id": "ca75c5ce08935b8459e649d16365eed4.xlx",
                "storage": "cache",
                "metadata": {
                    "size": 26620,
                    "filename": "026883000000545.xlsx",
                    "mime_type": "application/xlsx"
                }
            },
            "beneficiary_account_id": "69f49d11-923b-43e9-b463-e6e6ae69a9a2",
            "beneficiary_account_name": "Anuj",
            "beneficiary_account_bank_acc_no": "BB1567897",
            "beneficiary_account_ifsc_code": "KKBK0000691",
            "beneficiary_account_bank_name": "Kotak Mahindra Bank",
            "beneficiary_account_approval_status": "pending",
            "additional_data": {
                "data": [
                    {
                        "name": "month",
                        "value": "June",
                        "position": 1,
                        "data_type": "string",
                        "mandatory": "Y"
                    },
                    {
                        "name": "leaves",
                        "position": 2,
                        "data_type": "numeric",
                        "mandatory": "N"
                    },
                    {
                        "name": "PAN",
                        "position": 3,
                        "data_type": "string",
                        "mandatory": "N"
                    },
                    {
                        "data": [
                            "pradip",
                            "deepak",
                            "nikhil",
                            "neha"
                        ],
                        "name": "Accountants",
                        "position": 4,
                        "data_type": "list",
                        "mandatory": "N"
                    },
                    {
                        "name": "month 1",
                        "value": "12:00",
                        "position": 5,
                        "data_type": "time",
                        "mandatory": "Y"
                    },
                    {
                        "name": "Day",
                        "value": "Monday",
                        "position": 6,
                        "data_type": "day",
                        "mandatory": "Y"
                    },
                    {
                        "name": "Dummy",
                        "value": true,
                        "position": 7,
                        "data_type": "toggle",
                        "mandatory": "Y"
                    },
                    {
                        "name": "Month",
                        "value": "March",
                        "position": 8,
                        "data_type": "month",
                        "mandatory": "Y"
                    },
                    {
                        "name": "Hyperlink",
                        "position": 9,
                        "data_type": "hyperlink",
                        "mandatory": "N"
                    },
                    {
                        "name": "File",
                        "value": {
                            "id": "c68cc4e7d54381cc46384f194c09ce2c.xls",
                            "storage": "cache",
                            "metadata": {
                                "size": 62260,
                                "filename": "favicon.png",
                                "mime_type": "image/png"
                            }
                        },
                        "position": 10,
                        "data_type": "upload",
                        "mandatory": "Y"
                    },
                    {
                        "name": "Date",
                        "value": "23/04/2023",
                        "position": 11,
                        "data_type": "date",
                        "mandatory": "Y"
                    },
                    {
                        "name": "Year",
                        "value": "2024",
                        "position": 12,
                        "data_type": "year",
                        "mandatory": "Y"
                    },
                    {
                        "name": "Month_Year",
                        "value": "12/2024",
                        "position": 13,
                        "data_type": "month_year",
                        "mandatory": "Y"
                    },
                    {
                        "data": [
                            "ab",
                            "abc",
                            "abcd"
                        ],
                        "name": "Multiselect",
                        "value": [
                            "ab"
                        ],
                        "position": 14,
                        "data_type": "multi_select_list",
                        "mandatory": "Y"
                    },
                    {
                        "name": "Quantity",
                        "value": 2,
                        "position": 15,
                        "data_type": "quantity",
                        "mandatory": "Y"
                    },
                    {
                        "name": "DateRange",
                        "value": {
                            "end_date": "21/10/2024",
                            "start_date": "21/08/2023"
                        },
                        "position": 16,
                        "data_type": "date_range",
                        "mandatory": "Y"
                    },
                    {
                        "name": "YearRange",
                        "value": {
                            "to": 2034,
                            "from": 2030
                        },
                        "position": 17,
                        "data_type": "from_year_to_year",
                        "mandatory": "Y"
                    }
                ]
            },
            "created_by_name": "Q2PNEHA",
            "created_on": 1763442677,
            "logs": [
                {
                    "brand": "google",
                    "model": "sdk_gphone64_x86_64",
                    "action": "Created",
                    "user_id": "85c08f8e-e395-4c6c-acc7-a4e771f5250b",
                    "platform": "android",
                    "last_name": "shukla",
                    "last_used": "2025-11-18T05:11:17.622Z",
                    "timestamp": "2025-11-18T05:11:17.695Z",
                    "first_name": "anuj",
                    "ip_address": "127.0.0.1",
                    "is_primary": false,
                    "os_version": "Android 15",
                    "request_ip": "127.0.0.1",
                    "is_verified": false,
                    "sdk_version": "35",
                    "manufacturer": "Google",
                    "serial_number": "unknown",
                    "logged_in_flag": false,
                    "logged_in_time": "2025-11-18T05:02:30.904Z",
                    "user_full_name": "Neha Gaikwad",
                    "app_version_code": "100",
                    "app_version_name": "1.90"
                },
                {
                    "brand": "google",
                    "model": "sdk_gphone64_x86_64",
                    "action": "Rejected",
                    "user_id": "85c08f8e-e395-4c6c-acc7-a4e771f5250b",
                    "platform": "android",
                    "last_name": "Gaikwad",
                    "last_used": "2025-11-19T11:22:05.810Z",
                    "timestamp": "2025-11-19T11:22:05.834Z",
                    "first_name": "Neha",
                    "ip_address": "127.0.0.1",
                    "is_primary": false,
                    "os_version": "Android 15",
                    "request_ip": "127.0.0.1",
                    "is_verified": false,
                    "sdk_version": "35",
                    "manufacturer": "Google",
                    "serial_number": "unknown",
                    "logged_in_flag": false,
                    "logged_in_time": "2025-11-19T11:20:21.651Z",
                    "user_full_name": "Neha Gaikwad",
                    "app_version_code": "100",
                    "app_version_name": "1.90",
                    "rejection_reason": "Another transaction is already in progress"
                }
            ]
        }
    ],
    "title": {
        "records": 1,
        "current_page": 1,
        "total_pages": 1,
        "page_item_count": 50
    }
}

ERROR RESPONSE The request returns JSON structured like below for errors related reimbursement transaction

{
    "status":false,
    "action":"Not performed",
    "errors":{
        "base":[
            "Invalid / Insufficient parameters"
        ],
        "base":[
            "Reimbursment Request not found for request id: xxxx-xxxxx-xxxxxx-xxxxxx"
        ],
        "base":
        [
            "All Reimbursment Request do not belong to the same entity / Few transactions are already approved or are abandoned/cancelled/rejected"
        ],
        "base":
        [
            "No reimbursements requests found for transaction ids: xxxx-xxxx-xxxx-xxxxx"
        ]
} }

This endpoint reject a Reimbursement Transaction.

UAT HTTP Request

PUT https://nxt.api.q2pay.co.in/api/transactions/reimbursement/reject

PRODUCTION HTTP Request

PUT https://nxt.api.q2pay.in/api/transactions/reimbursement/reject

Query Parameters

Parameter Default Description Required Sample
txn_id N.A. txn id for reimbursment transaction Yes [xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxx ,xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxx]
rejection_reason N.A. rejection_reason for reimbursment transaction Yes Another transaction is already in progress

Service Details

Service ID Description
AReimbursementTxn Reject Reimbursement Transaction

Add Labels of Reimbursement Transactions

curl -X PUT "https://<environmenturl>/api/transactions/reimbursement/add_label"
  -H "X-Api-Key: <your secure token>"
  -H "Content-Type: application/json"
  -d "{
  "record_ids": [
    "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx","xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx"
  ],
  "labels": [
    "audit expense",
    "Infrastructure"
  ]
}"
require 'net/http'
require 'uri'
require 'json'

uri = URI.parse("https://<environmenturl>/api/transactions/reimbursement/add_label") header = {'X-Api-Key' => '<your secure token>', 'Content-Type' => 'application/json'} body = {
"record_ids": [ "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx","xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx" ], "labels": [ "audit expense", "Infrastructure" ] } http = Net::HTTP.new(uri.host, uri.port) http.use_ssl = true request = Net::HTTP::Put.new(uri.request_uri, header) request.body = body.to_json response = http.request(request)

const data = {
  "record_ids": [
     "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx","xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx"
  ],
  "labels": [
    "audit expense",
     "Infrastructure"
  ]
};

fetch('https://<environmenturl>/api/transactions/reimbursement/add_label', { method: 'PUT', headers: { 'X-Api-Key': '<your secure token>', 'Content-Type': 'application/json' }, body: JSON.stringify(data) }) .then(response => response.json()) .then(data => console.log(data)) .catch(error => console.error(error));

The below example can be sent as a request to the API.

{
  "record_ids": [
     "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx","xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx"
  ],
  "labels": [
    "audit expense",
    "Infrastructure"
  ]
}

SUCCESS RESPONSE The request returns JSON structured like below on successful add labels of reimbursement transactions

{
    "status":true, 
    "successful_count":1,
    "unsuccessful_count":1, 
    "ids":{
        "successful_ids":["xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx"],
        "unsuccessful_ids": [
      { "id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx", "errors": "Label could not be added due to validation error" }
    ]
    }
}

ERROR RESPONSE The request returns JSON structured like below for errors related add labels of reimbursement transactions

{
  "status": false,
  "errors": {
    "base": [
      "Missing required parameters: record_ids and/or labels."
    ],
    "base":[
      "The reimbursement transaction IDs are not present."
    ]
  }
}

This endpoint Add labels of reimbursement Transaction.

UAT HTTP Request

PUT https://nxt.api.q2pay.co.in/api/transactions/reimbursement/add_label

PRODUCTION HTTP Request

PUT https://nxt.api.q2pay.in/api/transactions/reimbursement/add_label

Query Parameters

Parameter Default Description Required Sample
record_ids N.A. record ids of reimbursement transaction Yes ["xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx","xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx" ]
labels N.A. labels of reimbursement transaction Yes ["audit expense","Infrastructure"]

Service Details

Service ID Description
ALabel Add labels for Reimbursement Transaction

Remove Labels of Reimbursement Transactions

curl -X PUT "https://<environmenturl>/api/transactions/reimbursement/remove_label"
  -H "X-Api-Key: <your secure token>"
  -H "Content-Type: application/json"
  -d "{
  "record_ids": [
    "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx","xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx"
  ],
  "labels": [
    "audit expense",
    "Infrastructure"
  ]
}"
require 'net/http'
require 'uri'
require 'json'

uri = URI.parse("https://<environmenturl>/api/transactions/reimbursement/remove_label") header = {'X-Api-Key' => '<your secure token>', 'Content-Type' => 'application/json'} body = {
"record_ids": [ "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx","xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx" ], "labels": [ "audit expense", "Infrastructure" ] } http = Net::HTTP.new(uri.host, uri.port) http.use_ssl = true request = Net::HTTP::Put.new(uri.request_uri, header) request.body = body.to_json response = http.request(request)

const data = {
  "record_ids": [
     "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx","xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx"
  ],
  "labels": [
    "audit expense",
     "Infrastructure"
  ]
};

fetch('https://<environmenturl>/api/transactions/reimbursement/remove_label', { method: 'PUT', headers: { 'X-Api-Key': '<your secure token>', 'Content-Type': 'application/json' }, body: JSON.stringify(data) }) .then(response => response.json()) .then(data => console.log(data)) .catch(error => console.error(error));

The below example can be sent as a request to the API.

{
  "record_ids": [
     "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx","xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx"
  ],
  "labels": [
    "audit expense",
    "Infrastructure"
  ]
}

SUCCESS RESPONSE The request returns JSON structured like below on successful add labels of reimbursement transactions

{
  "status": true,
  "successful_count": 1,
  "unsuccessful_count": 1,
  "ids": {
    "successful_id": [
      "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx"
    ],
    "unsuccessful_ids": [
      { "id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx", "errors": "Label could not be added due to validation error" }
    ]
  }
}

ERROR RESPONSE The request returns JSON structured like below for errors related add labels of reimbursement transactions

{
  "status": false,
  "errors": {
    "base": [
      "Missing required parameters: record_ids and/or labels."
    ],
    "base":[
      "The reimbursement transaction IDs are not present."
    ],
    "base":[
      "Labels are not present in some reimbursement transactions."
    ]
  }
}

This endpoint Add labels of reimbursement Transaction.

UAT HTTP Request

PUT https://nxt.api.q2pay.co.in/api/transactions/reimbursement/remove_label

PRODUCTION HTTP Request

PUT https://nxt.api.q2pay.in/api/transactions/reimbursement/remove_label

Query Parameters

Parameter Default Description Required Sample
record_ids N.A. records ids of reimbursement transaction Yes ["xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx","xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx" ]
labels N.A. labels of reimbursement transaction Yes ["audit expense","Infrastructure"]

Service Details

Service ID Description
RLabel Remove labels for Reimbursement Transaction

Scheduled Beneficary Transaction

Scheduled beneficiary transaction helps you create, maintain & manage lifecycle for your organization

Get All Scheduled Beneficiary Transactions

curl -X GET "https://<environmenturl>/api/transactions/scheduled_beneficiary"
  -H "X-Api-Key: <your secure token>"
  -H "Content-Type: application/json"

require 'net/http'
require 'uri'
require 'json'

uri = URI.parse("https://<environmenturl>/api/transactions/scheduled_beneficiary") header = {'X-Api-Key' => '<your secure token>', 'Content-Type' => 'application/json'} http = Net::HTTP.new(uri.host, uri.port) http.use_ssl = true request = Net::HTTP::Get.new(uri.request_uri, header) request.body = body.to_json response = http.request(request)

fetch('https://<environmenturl>/api/transactions/scheduled_beneficiary', { method: 'GET', headers: { 'X-Api-Key': '<your secure token>', 'Content-Type': 'application/json' }, body: JSON.stringify(data) }) .then(response => response.json()) .then(data => console.log(data)) .catch(error => console.error(error));

SUCCESS RESPONSE The request returns JSON structured like below

{
    "status": true,
    "total_count": 2,
    "total_amount": "4000000.0",
    "transactions": [
        {
            "txn_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
            "txn_initiator": "Akshay Rangnekar",
            "entity_id": "ABC12",
            "amount": "2000000.0",
            "payment_method": "RTGS",
            "scheduled_name": "Water Bill",
            "category": "Beneficiary",
            "type_of_transactions": "Beneficiary Transaction",
            "confidential_transaction": "N",
            "transaction_start_date": "2025-02-26",
            "transaction_end_date": "2026-02-26",
            "transaction_month": "February",
            "frequency": "yearly",
            "occurrences": 2,
            "slot": "10:00 AM - 12:00 PM",
            "lifecycle_status": "pending",
            "beneficiary_transaction_ids": [],
            "approved": "N",
            "approved_at": 1740628066,
            "rejected": "N",
            "rejected_at": 0,
            "deleted": "N",
            "deleted_at": 0,
            "beneficiary_account_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
            "beneficiary_account_name": "Q2pay",
            "beneficiary_account_bank_acc_no": "9234567892",
            "beneficiary_account_ifsc_code": "HDFC0000225",
            "beneficiary_account_bank_name": "HDFC Bank",
            "beneficiary_account_approval_status": "approved",
            "owner_account_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
            "owner_account_bank_acc_no": "1234567893",
            "owner_account_ifsc_code": "ICIC0001953",
            "owner_account_bank_name": "ICICI Bank",
            "owner_account_type": "Current Account",
            "owner_account_balance": "500.0",
            "owner_account_balance_last_fetched_at": 1709537290,
            "owner_account_balance_last_fetched_at_in_words": "12 months ago",
            "additional_data": {
                "data": [
                    {
                        "name": "month",
                        "value": "Mon",
                        "position": 1,
                        "data_type": "string",
                        "mandatory": "Y"
                    },
                    {
                        "name": "leaves",
                        "value": 67,
                        "position": 2,
                        "data_type": "numeric",
                        "mandatory": "Y"
                    },
                    {
                        "name": "PAN",
                        "position": 3,
                        "data_type": "string",
                        "mandatory": "N"
                    },
                    {
                        "data": [
                            "Pradeep",
                            "Sachin",
                            "Sewaram"
                        ],
                        "name": "Accountants",
                        "value": "Sachin",
                        "position": 4,
                        "data_type": "list",
                        "mandatory": "Y"
                    },
                    {
                        "name": "Time",
                        "value": "09:38",
                        "position": 5,
                        "data_type": "time",
                        "mandatory": "Y"
                    },
                    {
                        "name": "Day",
                        "value": "Monday",
                        "position": 6,
                        "data_type": "day",
                        "mandatory": "Y"
                    },
                    {
                        "name": "Dummy",
                        "value": false,
                        "position": 7,
                        "data_type": "toggle",
                        "mandatory": "Y"
                    },
                    {
                        "name": "Month",
                        "value": "April",
                        "position": 8,
                        "data_type": "month",
                        "mandatory": "Y"
                    },
                    {
                        "name": "Hyperlink",
                        "value": "https://nxtapi.q2pay.co.in/api/transaction/beneficiary",
                        "position": 9,
                        "data_type": "hyperlink",
                        "mandatory": "Y"
                    },
                     {
                        "name": "File",
                        "position": 10,
                        "data_type": "upload",
                        "mandatory": "Y",
                        "value": {
                            "id": "c68cc4e7d54381cc46384f194c09ce2c.png",
                            "storage": "cache",
                            "metadata": {
                            "filename": "favicon.png",
                            "size": 62260,
                            "mime_type": "image/png"
                            },
                            "file_url": "https://your-bucket.s3.amazonaws.com/store/c68cc4e7d54381cc46384f194c09ce2c.png"
                        }
                        },
                    {
                        "name": "Date",
                        "value": "23/01/2023",
                        "position": 11,
                        "data_type": "date",
                        "mandatory": "Y"
                    },
                    {
                        "name": "Year",
                        "value": "2023",
                        "position": 12,
                        "data_type": "year",
                        "mandatory": "Y"
                    },
                    {
                        "name": "Month/Year",
                        "value": "03/2023",
                        "position": 13,
                        "data_type": "month_year",
                        "mandatory": "Y"
                    },
                    {
                        "data": [
                            "Nikhi",
                            "Jitendra",
                            "Akash",
                            "Neha",
                            "Ajinkya",
                            "Anuj"
                        ],
                        "name": "Engineer",
                        "value": [
                            "Ajinkya",
                            "Anuj"
                        ],
                        "position": 14,
                        "data_type": "multi_select_list",
                        "mandatory": "Y"
                    },
                    {
                        "name": "Quantity",
                        "value": 5,
                        "position": 15,
                        "data_type": "quantity",
                        "mandatory": "Y"
                    },
                    {
                        "name": "DateRange",
                        "value": {
                            "end_date": "21/09/2024",
                            "start_date": "21/08/2023"
                        },
                        "position": 16,
                        "data_type": "date_range",
                        "mandatory": "Y"
                    },
                    {
                        "name": "YearRange",
                        "value": {
                            "to": 2034,
                            "from": 2030
                        },
                        "position": 17,
                        "data_type": "from_year_to_year",
                        "mandatory": "Y"
                    }
                ]
            },
            "created_on": 1740628066,
            "last_updated_user_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
            "last_updated_status": "Created",
            "last_updated_timestamp": 1740628066,
            "last_updated_user_name": "Akshay Rangnekar",
            "logs": [
                {
                    "brand": "Android",
                    "model": "Android SDK built for x86",
                    "action": "Created",
                    "user_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
                    "platform": "android",
                    "last_name": "Rangnekar",
                    "last_used": "2025-02-27T03:47:46.413Z",
                    "timestamp": "2025-02-27T03:47:46.478Z",
                    "first_name": "Akshay",
                    "ip_address": "127.0.0.1",
                    "is_primary": false,
                    "os_version": "6.0",
                    "request_ip": "127.0.0.1",
                    "is_verified": false,
                    "sdk_version": "23",
                    "manufacturer": "unknown",
                    "serial_number": "EMULATOR32X1X14X0",
                    "logged_in_flag": false,
                    "logged_in_time": "2025-02-27T03:41:19.226Z",
                    "user_full_name": "Akshay Rangnekar",
                    "app_version_code": "54",
                    "app_version_name": "1.43"
                }
            ]
        },
        {
            "txn_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
            "txn_initiator": "Akshay Rangnekar",
            "entity_id": "ABC12",
            "amount": "2000000.0",
            "payment_method": "RTGS",
            "scheduled_name": "Water Bill",
            "category": "Beneficiary",
            "type_of_transactions": "Beneficiary Transaction",
            "confidential_transaction": "N",
            "transaction_start_date": "2025-02-26",
            "transaction_end_date": "2026-02-26",
            "transaction_day": "Wednesday",
            "frequency": "weekly",
            "occurrences": 53,
            "slot": "10:00 AM - 12:00 PM",
            "lifecycle_status": "approved",
            "beneficiary_transaction_ids": [],
            "approved": "Y",
            "approved_at": 1740569346,
            "rejected": "N",
            "rejected_at": 0,
            "deleted": "N",
            "deleted_at": 0,
            "beneficiary_account_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
            "beneficiary_account_name": "Q2pay",
            "beneficiary_account_bank_acc_no": "9234567892",
            "beneficiary_account_ifsc_code": "HDFC0000225",
            "beneficiary_account_bank_name": "HDFC Bank",
            "beneficiary_account_approval_status": "approved",
            "owner_account_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
            "owner_account_bank_acc_no": "1234567893",
            "owner_account_ifsc_code": "ICIC0001953",
            "owner_account_bank_name": "ICICI Bank",
            "owner_account_type": "Current Account",
            "owner_account_balance": "500.0",
            "owner_account_balance_last_fetched_at": 1709537290,
            "owner_account_balance_last_fetched_at_in_words": "12 months ago",
            "additional_data": {
                "data": [
                    {
                        "name": "month",
                        "value": "Mon",
                        "position": 1,
                        "data_type": "string",
                        "mandatory": "Y"
                    },
                    {
                        "name": "leaves",
                        "value": 67,
                        "position": 2,
                        "data_type": "numeric",
                        "mandatory": "Y"
                    },
                    {
                        "name": "PAN",
                        "position": 3,
                        "data_type": "string",
                        "mandatory": "N"
                    },
                    {
                        "data": [
                            "Pradeep",
                            "Sachin",
                            "Sewaram"
                        ],
                        "name": "Accountants",
                        "value": "Sachin",
                        "position": 4,
                        "data_type": "list",
                        "mandatory": "Y"
                    },
                    {
                        "name": "Time",
                        "value": "09:38",
                        "position": 5,
                        "data_type": "time",
                        "mandatory": "Y"
                    },
                    {
                        "name": "Day",
                        "value": "Monday",
                        "position": 6,
                        "data_type": "day",
                        "mandatory": "Y"
                    },
                    {
                        "name": "Dummy",
                        "value": false,
                        "position": 7,
                        "data_type": "toggle",
                        "mandatory": "Y"
                    },
                    {
                        "name": "Month",
                        "value": "April",
                        "position": 8,
                        "data_type": "month",
                        "mandatory": "Y"
                    },
                    {
                        "name": "Hyperlink",
                        "value": "https://nxtapi.q2pay.co.in/api/transaction/beneficiary",
                        "position": 9,
                        "data_type": "hyperlink",
                        "mandatory": "Y"
                    },
                     {
            "name": "File",
            "position": 10,
            "data_type": "upload",
            "mandatory": "Y",
              "value": {
                "id": "c68cc4e7d54381cc46384f194c09ce2c.png",
                "storage": "cache",
                "metadata": {
                  "filename": "favicon.png",
                  "size": 62260,
                  "mime_type": "image/png"
                },
                "file_url": "https://your-bucket.s3.amazonaws.com/store/c68cc4e7d54381cc46384f194c09ce2c.png"
              }
            },
                    {
                        "name": "Date",
                        "value": "23/01/2023",
                        "position": 11,
                        "data_type": "date",
                        "mandatory": "Y"
                    },
                    {
                        "name": "Year",
                        "value": "2023",
                        "position": 12,
                        "data_type": "year",
                        "mandatory": "Y"
                    },
                    {
                        "name": "Month/Year",
                        "value": "03/2023",
                        "position": 13,
                        "data_type": "month_year",
                        "mandatory": "Y"
                    },
                    {
                        "data": [
                            "Nikhi",
                            "Jitendra",
                            "Akash",
                            "Neha",
                            "Ajinkya",
                            "Anuj"
                        ],
                        "name": "Engineer",
                        "value": [
                            "Ajinkya",
                            "Anuj"
                        ],
                        "position": 14,
                        "data_type": "multi_select_list",
                        "mandatory": "Y"
                    },
                    {
                        "name": "Quantity",
                        "value": 5,
                        "position": 15,
                        "data_type": "quantity",
                        "mandatory": "Y"
                    },
                    {
                        "name": "DateRange",
                        "value": {
                            "end_date": "21/09/2024",
                            "start_date": "21/08/2023"
                        },
                        "position": 16,
                        "data_type": "date_range",
                        "mandatory": "Y"
                    },
                    {
                        "name": "YearRange",
                        "value": {
                            "to": 2034,
                            "from": 2030
                        },
                        "position": 17,
                        "data_type": "from_year_to_year",
                        "mandatory": "Y"
                    }
                ]
            },
            "created_on": 1740569347,
            "last_updated_user_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
            "last_updated_status": "Approved",
            "last_updated_timestamp": 1740569346,
            "last_updated_user_name": "Akshay Rangnekar",
            "logs": [
                {
                    "brand": "Android",
                    "model": "Android SDK built for x86",
                    "action": "Created",
                    "user_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
                    "platform": "android",
                    "last_name": "Rangnekar",
                    "last_used": "2025-02-26T11:29:06.934Z",
                    "timestamp": "2025-02-26T11:29:06.962Z",
                    "first_name": "Akshay",
                    "ip_address": "127.0.0.1",
                    "is_primary": false,
                    "os_version": "6.0",
                    "request_ip": "127.0.0.1",
                    "is_verified": false,
                    "sdk_version": "23",
                    "manufacturer": "unknown",
                    "serial_number": "EMULATOR32X1X14X0",
                    "logged_in_flag": false,
                    "logged_in_time": "2025-02-26T11:03:29.977Z",
                    "user_full_name": "Akshay Rangnekar",
                    "app_version_code": "54",
                    "app_version_name": "1.43"
                },
                {
                    "brand": "Android",
                    "model": "Android SDK built for x86",
                    "action": "Approved",
                    "user_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
                    "platform": "android",
                    "last_name": "Rangnekar",
                    "last_used": "2025-02-26T11:29:06.934Z",
                    "timestamp": "2025-02-26T11:29:06.983Z",
                    "first_name": "Akshay",
                    "ip_address": "127.0.0.1",
                    "is_primary": false,
                    "os_version": "6.0",
                    "request_ip": "127.0.0.1",
                    "is_verified": false,
                    "sdk_version": "23",
                    "manufacturer": "unknown",
                    "serial_number": "EMULATOR32X1X14X0",
                    "final_approval": true,
                    "logged_in_flag": false,
                    "logged_in_time": "2025-02-26T11:03:29.977Z",
                    "user_full_name": "Akshay Rangnekar",
                    "app_version_code": "54",
                    "app_version_name": "1.43"
                }
            ]
        }
    ],
    "title": {
        "records": 2,
        "current_page": 1,
        "total_pages": 1,
        "page_item_count": 50
    }
}

This endpoint retrieves all scheduled beneficiary transactions.

UAT HTTP Request

GET https://nxt.api.q2pay.co.in/api/transactions/scheduled_beneficiary

PRODUCTION HTTP Request

GET https://nxt.api.q2pay.in/api/transactions/scheduled_beneficiary

Query Parameters

Parameter Default Description Required Sample
amount N.A. amount for scheduled beneficiary transaction optional 67000.0
lifecycle_status N.A. lifecycle status for scheduled beneficiary transaction optional pending, approved, rejected, deleted
frequency N.A. frequency for scheduled beneficiary transaction optional once,daily,weekly,fortnightly,monthly,quarterly,half_yearly,yearly
occurrences N.A. occurrences for scheduled beneficiary transaction optional 1,2,53
slot N.A. slot for scheduled beneficiary transaction optional 10:00 AM - 12:00 PM,12:01 PM - 15:00 PM,15:01 PM - 18:00 PM
transaction_day N.A. transaction day for scheduled beneficiary transaction optional Monday to Sunday
transaction_month N.A. transaction month for scheduled beneficiary transaction optional January to December
transaction_start_date N.A. transaction start date for scheduled beneficiary transaction optional 26-02-2025
transaction_end_date N.A. transaction end date for scheduled beneficiary transaction optional 26-02-2026
txn_id N.A. txn_id of scheduled beneficiary transaction optional [xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxx,xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxx]
beneficiary_transaction_ids N.A. beneficiary transaction ids for scheduled beneficiary transaction optional [xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxx,xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxx]
payment_method N.A. payment method for scheduled beneficiary transaction optional NEFT,IMPS,RTGS
category N.A category for scheduled beneficiary transaction optional Beneficiary
beneficiary_account_id N.A. beneficiary account id for scheduled beneficiary transaction optional "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxx"
owner_account_id N.A. owner account id for scheduled beneficiary transaction optional "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxx"
beneficiary_account_ids N.A. beneficiary account ids for scheduled beneficiary transaction optional [xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxx ,xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxx]
owner_account_ids N.A. owner account ids for scheduled beneficiary transaction optional [xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxx ,xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxx]
confidential_transaction N.A confidential transaction for scheduled beneficiary transaction optional "Y","N"
start_date,end_date N.A start date and end date for scheduled beneficiary transaction optional xxxxxxxx,xxxxxxxx
category_name, category_value N.A category name and category value is filter on additional data of name and value of scheduled beneficiary transaction optional name, month or value, Mon
scheduled_name N.A Scheduled name for scheduled beneficiary transaction optional "Water Bill"

Service Details

Service ID Description
BVScheduledTxn View All Scheduled Beneficiary Transactions
VAccountBalance View Balance of Owner Account
VConfidentialTxn View Confidential Transactions

Get Specific Scheduled Beneficiary Transactions

curl -X GET "https://<environmenturl>/api/transactions/scheduled_beneficiary/:id"
  -H "X-Api-Key: <your secure token>"
  -H "Content-Type: application/json"

require 'net/http'
require 'uri'
require 'json'

uri = URI.parse("https://<environmenturl>/api/transactions/scheduled_beneficiary/:id") header = {'X-Api-Key' => '<your secure token>', 'Content-Type' => 'application/json'} http = Net::HTTP.new(uri.host, uri.port) http.use_ssl = true request = Net::HTTP::Get.new(uri.request_uri, header) request.body = body.to_json response = http.request(request)

fetch('https://<environmenturl>/api/transactions/scheduled_beneficiary/:id', { method: 'GET', headers: { 'X-Api-Key': '<your secure token>', 'Content-Type': 'application/json' }, body: JSON.stringify(data) }) .then(response => response.json()) .then(data => console.log(data)) .catch(error => console.error(error));

SUCCESS RESPONSE The request returns JSON structured like below

{
    "status": true,
    "total_count": 1,
    "total_amount": "2000000.0",
    "transaction": [
        {
            "txn_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
            "txn_initiator": "Akshay Rangnekar",
            "entity_id": "ABC12",
            "amount": "2000000.0",
            "payment_method": "RTGS",
            "scheduled_name": "Water Bill",
            "category": "Beneficiary",
            "type_of_transactions": "Beneficiary Transaction",
            "confidential_transaction": "N",
            "transaction_start_date": "2025-02-26",
            "transaction_end_date": "2026-02-26",
            "transaction_day": "Wednesday",
            "frequency": "weekly",
            "occurrences": 53,
            "slot": "10:00 AM - 12:00 PM",
            "lifecycle_status": "approved",
            "beneficiary_transaction_ids": [],
            "approved": "Y",
            "approved_at": 1740582073,
            "rejected": "N",
            "rejected_at": 0,
            "deleted": "N",
            "deleted_at": 0,
            "beneficiary_account_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
            "beneficiary_account_name": "Q2pay",
            "beneficiary_account_bank_acc_no": "9234567892",
            "beneficiary_account_ifsc_code": "HDFC0000225",
            "beneficiary_account_bank_name": "HDFC Bank",
            "beneficiary_account_approval_status": "approved",
            "owner_account_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
            "owner_account_bank_acc_no": "1234567893",
            "owner_account_ifsc_code": "ICIC0001953",
            "owner_account_bank_name": "ICICI Bank",
            "owner_account_type": "Current Account",
            "owner_account_balance": "500.0",
            "owner_account_balance_last_fetched_at": 1709537290,
            "owner_account_balance_last_fetched_at_in_words": "12 months ago",
            "additional_data": {
                "data": [
                    {
                        "name": "month",
                        "value": "Mon",
                        "position": 1,
                        "data_type": "string",
                        "mandatory": "Y"
                    },
                    {
                        "name": "leaves",
                        "value": 67,
                        "position": 2,
                        "data_type": "numeric",
                        "mandatory": "Y"
                    },
                    {
                        "name": "PAN",
                        "position": 3,
                        "data_type": "string",
                        "mandatory": "N"
                    },
                    {
                        "data": [
                            "Pradeep",
                            "Sachin",
                            "Sewaram"
                        ],
                        "name": "Accountants",
                        "value": "Sachin",
                        "position": 4,
                        "data_type": "list",
                        "mandatory": "Y"
                    },
                    {
                        "name": "Time",
                        "value": "09:38",
                        "position": 5,
                        "data_type": "time",
                        "mandatory": "Y"
                    },
                    {
                        "name": "Day",
                        "value": "Monday",
                        "position": 6,
                        "data_type": "day",
                        "mandatory": "Y"
                    },
                    {
                        "name": "Dummy",
                        "value": false,
                        "position": 7,
                        "data_type": "toggle",
                        "mandatory": "Y"
                    },
                    {
                        "name": "Month",
                        "value": "April",
                        "position": 8,
                        "data_type": "month",
                        "mandatory": "Y"
                    },
                    {
                        "name": "Hyperlink",
                        "value": "https://nxtapi.q2pay.co.in/api/transaction/beneficiary",
                        "position": 9,
                        "data_type": "hyperlink",
                        "mandatory": "Y"
                    },
                     {
                    "name": "File",
                    "position": 10,
                    "data_type": "upload",
                    "mandatory": "Y",
                    "value": {
                        "id": "c68cc4e7d54381cc46384f194c09ce2c.png",
                        "storage": "cache",
                        "metadata": {
                        "filename": "favicon.png",
                        "size": 62260,
                        "mime_type": "image/png"
                        },
                        "file_url": "https://your-bucket.s3.amazonaws.com/store/c68cc4e7d54381cc46384f194c09ce2c.png"
                    }
                    },
                    {
                        "name": "Date",
                        "value": "23/01/2023",
                        "position": 11,
                        "data_type": "date",
                        "mandatory": "Y"
                    },
                    {
                        "name": "Year",
                        "value": "2023",
                        "position": 12,
                        "data_type": "year",
                        "mandatory": "Y"
                    },
                    {
                        "name": "Month/Year",
                        "value": "03/2023",
                        "position": 13,
                        "data_type": "month_year",
                        "mandatory": "Y"
                    },
                    {
                        "data": [
                            "Nikhi",
                            "Jitendra",
                            "Akash",
                            "Neha",
                            "Ajinkya",
                            "Anuj"
                        ],
                        "name": "Engineer",
                        "value": [
                            "Ajinkya",
                            "Anuj"
                        ],
                        "position": 14,
                        "data_type": "multi_select_list",
                        "mandatory": "Y"
                    },
                    {
                        "name": "Quantity",
                        "value": 5,
                        "position": 15,
                        "data_type": "quantity",
                        "mandatory": "Y"
                    },
                    {
                        "name": "DateRange",
                        "value": {
                            "end_date": "21/09/2024",
                            "start_date": "21/08/2023"
                        },
                        "position": 16,
                        "data_type": "date_range",
                        "mandatory": "Y"
                    },
                    {
                        "name": "YearRange",
                        "value": {
                            "to": 2034,
                            "from": 2030
                        },
                        "position": 17,
                        "data_type": "from_year_to_year",
                        "mandatory": "Y"
                    }
                ]
            },
            "created_on": 1740582073,
            "last_updated_user_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
            "last_updated_status": "Approved",
            "last_updated_timestamp": 1740582073,
            "last_updated_user_name": "Akshay Rangnekar",
            "logs": [
                {
                    "brand": "Android",
                    "model": "Android SDK built for x86",
                    "action": "Created",
                    "user_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
                    "platform": "android",
                    "last_name": "Rangnekar",
                    "last_used": "2025-02-26T15:01:13.642Z",
                    "timestamp": "2025-02-26T15:01:13.675Z",
                    "first_name": "Akshay",
                    "ip_address": "127.0.0.1",
                    "is_primary": false,
                    "os_version": "6.0",
                    "request_ip": "127.0.0.1",
                    "is_verified": false,
                    "sdk_version": "23",
                    "manufacturer": "unknown",
                    "serial_number": "EMULATOR32X1X14X0",
                    "logged_in_flag": false,
                    "logged_in_time": "2025-02-26T11:03:29.977Z",
                    "user_full_name": "Akshay Rangnekar",
                    "app_version_code": "54",
                    "app_version_name": "1.43"
                },
                {
                    "brand": "Android",
                    "model": "Android SDK built for x86",
                    "action": "Approved",
                    "user_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
                    "platform": "android",
                    "last_name": "Rangnekar",
                    "last_used": "2025-02-26T15:01:13.642Z",
                    "timestamp": "2025-02-26T15:01:13.699Z",
                    "first_name": "Akshay",
                    "ip_address": "127.0.0.1",
                    "is_primary": false,
                    "os_version": "6.0",
                    "request_ip": "127.0.0.1",
                    "is_verified": false,
                    "sdk_version": "23",
                    "manufacturer": "unknown",
                    "serial_number": "EMULATOR32X1X14X0",
                    "final_approval": true,
                    "logged_in_flag": false,
                    "logged_in_time": "2025-02-26T11:03:29.977Z",
                    "user_full_name": "Akshay Rangnekar",
                    "app_version_code": "54",
                    "app_version_name": "1.43"
                }
            ]
        }
    ],
    "title": {
        "records": 1,
        "current_page": 1,
        "total_pages": 1,
        "page_item_count": 1
    }
}

SUCCESS RESPONSE The request returns JSON structured like below

{
    "status": true,
    "total_count": 1,
    "total_amount": "2000000.0", 
    "transaction": [
        {
            "txn_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
            "txn_initiator": "Akshay Rangnekar",
            "entity_id": "ABC12",
            "amount": "2000000.0",
            "payment_method": "RTGS",
            "scheduled_name": "Water Bill",
            "category": "Beneficiary",
            "type_of_transactions": "Beneficiary Transaction",
            "confidential_transaction": "N",
            "transaction_start_date": "2025-02-26",
            "transaction_end_date": "2026-02-26",
            "transaction_month": "February",
            "frequency": "yearly",
            "occurrences": 2,
            "slot": "10:00 AM - 12:00 PM",
            "lifecycle_status": "approved",
            "beneficiary_transaction_ids": [],
            "approved": "Y",
            "approved_at": 1740582073,
            "rejected": "N",
            "rejected_at": 0,
            "deleted": "N",
            "deleted_at": 0,
            "beneficiary_account_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
            "beneficiary_account_name": "Q2pay",
            "beneficiary_account_bank_acc_no": "9234567892",
            "beneficiary_account_ifsc_code": "HDFC0000225",
            "beneficiary_account_bank_name": "HDFC Bank",
            "beneficiary_account_approval_status": "approved",
            "owner_account_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
            "owner_account_bank_acc_no": "1234567893",
            "owner_account_ifsc_code": "ICIC0001953",
            "owner_account_bank_name": "ICICI Bank",
            "owner_account_type": "Current Account",
            "owner_account_balance": "500.0",
            "owner_account_balance_last_fetched_at": 1709537290,
            "owner_account_balance_last_fetched_at_in_words": "12 months ago",
            "additional_data": {
                "data": [
                    {
                        "name": "month",
                        "value": "Mon",
                        "position": 1,
                        "data_type": "string",
                        "mandatory": "Y"
                    },
                    {
                        "name": "leaves",
                        "value": 67,
                        "position": 2,
                        "data_type": "numeric",
                        "mandatory": "Y"
                    },
                    {
                        "name": "PAN",
                        "position": 3,
                        "data_type": "string",
                        "mandatory": "N"
                    },
                    {
                        "data": [
                            "Pradeep",
                            "Sachin",
                            "Sewaram"
                        ],
                        "name": "Accountants",
                        "value": "Sachin",
                        "position": 4,
                        "data_type": "list",
                        "mandatory": "Y"
                    },
                    {
                        "name": "Time",
                        "value": "09:38",
                        "position": 5,
                        "data_type": "time",
                        "mandatory": "Y"
                    },
                    {
                        "name": "Day",
                        "value": "Monday",
                        "position": 6,
                        "data_type": "day",
                        "mandatory": "Y"
                    },
                    {
                        "name": "Dummy",
                        "value": false,
                        "position": 7,
                        "data_type": "toggle",
                        "mandatory": "Y"
                    },
                    {
                        "name": "Month",
                        "value": "April",
                        "position": 8,
                        "data_type": "month",
                        "mandatory": "Y"
                    },
                    {
                        "name": "Hyperlink",
                        "value": "https://nxtapi.q2pay.co.in/api/transaction/beneficiary",
                        "position": 9,
                        "data_type": "hyperlink",
                        "mandatory": "Y"
                    },
                     {
            "name": "File",
            "position": 10,
            "data_type": "upload",
            "mandatory": "Y",
              "value": {
                "id": "c68cc4e7d54381cc46384f194c09ce2c.png",
                "storage": "cache",
                "metadata": {
                  "filename": "favicon.png",
                  "size": 62260,
                  "mime_type": "image/png"
                },
                "file_url": "https://your-bucket.s3.amazonaws.com/store/c68cc4e7d54381cc46384f194c09ce2c.png"
              }
            },
                    {
                        "name": "Date",
                        "value": "23/01/2023",
                        "position": 11,
                        "data_type": "date",
                        "mandatory": "Y"
                    },
                    {
                        "name": "Year",
                        "value": "2023",
                        "position": 12,
                        "data_type": "year",
                        "mandatory": "Y"
                    },
                    {
                        "name": "Month/Year",
                        "value": "03/2023",
                        "position": 13,
                        "data_type": "month_year",
                        "mandatory": "Y"
                    },
                    {
                        "data": [
                            "Nikhi",
                            "Jitendra",
                            "Akash",
                            "Neha",
                            "Ajinkya",
                            "Anuj"
                        ],
                        "name": "Engineer",
                        "value": [
                            "Ajinkya",
                            "Anuj"
                        ],
                        "position": 14,
                        "data_type": "multi_select_list",
                        "mandatory": "Y"
                    },
                    {
                        "name": "Quantity",
                        "value": 5,
                        "position": 15,
                        "data_type": "quantity",
                        "mandatory": "Y"
                    },
                    {
                        "name": "DateRange",
                        "value": {
                            "end_date": "21/09/2024",
                            "start_date": "21/08/2023"
                        },
                        "position": 16,
                        "data_type": "date_range",
                        "mandatory": "Y"
                    },
                    {
                        "name": "YearRange",
                        "value": {
                            "to": 2034,
                            "from": 2030
                        },
                        "position": 17,
                        "data_type": "from_year_to_year",
                        "mandatory": "Y"
                    }
                ]
            },
            "created_on": 1740582073,
            "last_updated_user_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
            "last_updated_status": "Approved",
            "last_updated_timestamp": 1740582073,
            "last_updated_user_name": "Akshay Rangnekar",
            "logs": [
                {
                    "brand": "Android",
                    "model": "Android SDK built for x86",
                    "action": "Created",
                    "user_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
                    "platform": "android",
                    "last_name": "Rangnekar",
                    "last_used": "2025-02-26T15:01:13.642Z",
                    "timestamp": "2025-02-26T15:01:13.675Z",
                    "first_name": "Akshay",
                    "ip_address": "127.0.0.1",
                    "is_primary": false,
                    "os_version": "6.0",
                    "request_ip": "127.0.0.1",
                    "is_verified": false,
                    "sdk_version": "23",
                    "manufacturer": "unknown",
                    "serial_number": "EMULATOR32X1X14X0",
                    "logged_in_flag": false,
                    "logged_in_time": "2025-02-26T11:03:29.977Z",
                    "user_full_name": "Akshay Rangnekar",
                    "app_version_code": "54",
                    "app_version_name": "1.43"
                },
                {
                    "brand": "Android",
                    "model": "Android SDK built for x86",
                    "action": "Approved",
                    "user_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
                    "platform": "android",
                    "last_name": "Rangnekar",
                    "last_used": "2025-02-26T15:01:13.642Z",
                    "timestamp": "2025-02-26T15:01:13.699Z",
                    "first_name": "Akshay",
                    "ip_address": "127.0.0.1",
                    "is_primary": false,
                    "os_version": "6.0",
                    "request_ip": "127.0.0.1",
                    "is_verified": false,
                    "sdk_version": "23",
                    "manufacturer": "unknown",
                    "serial_number": "EMULATOR32X1X14X0",
                    "final_approval": true,
                    "logged_in_flag": false,
                    "logged_in_time": "2025-02-26T11:03:29.977Z",
                    "user_full_name": "Akshay Rangnekar",
                    "app_version_code": "54",
                    "app_version_name": "1.43"
                }
            ]
        }
    ],
    "title": {
        "records": 1,
        "current_page": 1,
        "total_pages": 1,
        "page_item_count": 1
    }
}

ERROR RESPONSE The request returns JSON structured like below for errors related scheduled beneficiary transaction

{
    "status": false,
    "errors": {
        "base": [
            "Scheduled beneficiary transaction not present"
        ]
    }
}

This endpoint retrieves specific scheduled beneficiary transactions.

UAT HTTP Request

GET https://nxt.api.q2pay.co.in/api/transactions/scheduled_beneficiary/:id

PRODUCTION HTTP Request

GET https://nxt.api.q2pay.in/api/transactions/scheduled_beneficiary/:id

Service Details

Service ID Description
BVScheduledTxn View Specific Scheduled Beneficiary Transactions

Get Calculate Occurrences of Scheduled Beneficiary Transaction

curl "https://<environmenturl>/api/transactions/scheduled_beneficiary/calculate_occurrences"
  -H "X-Api-Key: <your secure token>"
  -H "Content-Type: application/json"
  -d "{ 
      "transaction_start_date": "2025-02-26",
      "transaction_end_date": "2026-02-14",
      "frequency": "monthly"
  }"
require 'net/http'
require 'uri'
require 'json'

uri = URI.parse("https://<environmenturl>/api/transactions/scheduled_beneficiary/calculate_occurrences") header = {'X-Api-Key' => '<your secure token>', 'Content-Type' => 'application/json'} body = { "transaction_start_date": "2025-02-26", "transaction_end_date": "2026-02-26", "frequency": "monthly" } http = Net::HTTP.new(uri.host, uri.port) http.use_ssl = true request = Net::HTTP::Get.new(uri.request_uri, header) request.body = body.to_json response = http.request(request)

const data = {
       "transaction_start_date": "2025-02-26",
       "transaction_end_date": "2026-02-26",
       "frequency": "monthly"
};

fetch('https://<environmenturl>/api/transactions/scheduled_beneficiary/calculate_occurrences', { method: 'GET', headers: { 'X-Api-Key': '<your secure token>', 'Content-Type': 'application/json' }, body: JSON.stringify(data) }) .then(response => response.json()) .then(data => console.log(data)) .catch(error => console.error(error));

The below example can be sent as a request to the API.

{
  "transaction_start_date": "2025-02-26",
  "transaction_end_date": "2026-02-26",
  "frequency": "monthly"
}

SUCCESS RESPONSE The request returns JSON structured like below

{
    "status": true,
    "occurrences": 13,
    "dates": [
        "2025-02-26",
        "2025-03-26",
        "2025-04-26",
        "2025-05-26",
        "2025-06-26",
        "2025-07-26",
        "2025-08-26",
        "2025-09-26",
        "2025-10-26",
        "2025-11-26",
        "2025-12-26",
        "2026-01-26",
        "2026-02-26"
    ]
}

ERROR RESPONSE The request returns JSON structured like below for errors related scheduled beneficiary transaction

{
    "status": false,
    "errors": "Missing required parameters: frequency, transaction_start_date, transaction_end_date"
}

ERROR RESPONSE The request returns JSON structured like below for errors related scheduled beneficiary transaction

{
    "status": false,
    "errors": "Invalid date format for start or end date"
}

ERROR RESPONSE The request returns JSON structured like below for errors related scheduled beneficiary transaction

{
    "status": false,
    "errors": "Invalid date range for transaction"
}

ERROR RESPONSE The request returns JSON structured like below for errors related scheduled beneficiary transaction

{
    "status": false,
    "errors": "Invalid frequency"
}

This endpoint retrieves calculate occurrence of scheduled beneficiary transaction

UAT HTTP Request

GET https://nxt.api.q2pay.co.in/api/transactions/scheduled_beneficiary/calculate_occurrences

PRODUCTION HTTP Request

GET https://nxt.api.q2pay.in/api/transactions/scheduled_beneficiary/calculate_occurrences

Query Parameters

Parameter Default Description Required Sample
transaction_start_date N.A transaction start date for scheduled beneficiary transaction Yes 2025-02-26
transaction_end_date N.A transaction end date for scheduled beneficiary transaction Yes 2026-02-26
frequency N.A frequency for scheduled beneficiary transaction Yes once,daily,weekly,fortnightly,monthly,quarterly,half_yearly,yearly

Service Details

Service ID Description
BOScheduledTxn Calculate occurrence scheduled beneficiary transaction

Create Scheduled Beneficiary Transactions

curl -X POST "https://<environmenturl>/api/transactions/scheduled_beneficiary"
  -H "X-Api-Key: <your secure token>"
  -H "Content-Type: application/json"
  -d "{ 
    "amount": "2000000",
    "owner_account_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
    "beneficiary_account_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
    "category": "Beneficiary",
    "payment_method":"RTGS",
    "scheduled_name": "Water Bill",
    "frequency": "yearly",
    "occurrences": 2,
    "type_of_transactions": "Beneficiary Transaction",
    "confidential_transaction": "false",
    "transaction_start_date": "26-02-2025",
    "transaction_end_date": "26-02-2026",
    "slot": "10:00 AM - 12:00 PM",
    "additional_data": {
        "data": [
            {
                "data_type": "string",
                "mandatory": "Y",
                "value": "Mon",
                "name": "month",
                "position": 1
            },
            {
                "name": "leaves",
                "position": 2,
                "data_type": "numeric",
                "mandatory": "Y",
                "value": 67
            },
            {
                "name": "PAN",
                "position": 3,
                "data_type": "string",
                "mandatory": "N"
            },
            {
                "name": "Accountants",
                "position": 4,
                "data_type": "list",
                "mandatory": "Y",
                "data": [
                    "Pradeep",
                    "Sachin",
                    "Sewaram"
                ],
                "value": "Sachin"
            },
            {
                "name": "Time",
                "position": 5,
                "data_type": "time",
                "mandatory": "Y",
                "value": "09:38"
            },
            {
                "name": "Day",
                "position": 6,
                "data_type": "day",
                "mandatory": "Y",
                "value": "Monday"
            },
            {
                "name": "Dummy",
                "position": 7,
                "data_type": "toggle",
                "mandatory": "Y",
                "value": false
            },
            {
                "name": "Month",
                "position": 8,
                "data_type": "month",
                "mandatory": "Y",
                "value": "April"
            },
            {
                "name": "Hyperlink",
                "position": 9,
                "data_type": "hyperlink",
                "mandatory": "Y",
                "value": "https://nxtapi.q2pay.co.in/api/transaction/beneficiary"
            },
            {
                "name": "File",
                "position": 10,
                "data_type": "upload",
                "mandatory": "Y",
                "value": {
                    "id": "c68cc4e7d54381cc46384f194c09ce2c.png",
                    "storage": "cache",
                    "metadata": {
                        "filename": "favicon.png",
                        "size": 62260,
                        "mime_type": "image/png"
                    }
                }
            },
            {
                "name": "Date",
                "position": 11,
                "data_type": "date",
                "mandatory": "Y",
                "value": "23/01/2023"
            },
            {
                "name": "Year",
                "position": 12,
                "data_type": "year",
                "mandatory": "Y",
                "value": "2023"
            },
            {
                "mandatory": "Y",
                "position": 13,
                "name": "Month/Year",
                "data_type": "month_year",
                "value": "03/2023"
            },
            {
                "name": "Engineer",
                "position": 14,
                "data_type": "multi_select_list",
                "mandatory": "Y",
                "data": [
                    "Nikhi",
                    "Jitendra",
                    "Akash",
                    "Neha",
                    "Ajinkya",
                    "Anuj"
                ],
                "value": [
                    "Ajinkya",
                    "Anuj"
                ]
            },
            {
                "name": "Quantity",
                "position": 15,
                "data_type": "quantity",
                "mandatory": "Y",
                "value": 5
            },
            {
                "name": "DateRange",
                "position": 16,
                "data_type": "date_range",
                "mandatory": "Y",
                "value": {
                    "end_date": "21/09/2024",
                    "start_date": "21/08/2023"
                }
            },
            {
                "name": "YearRange",
                "position": 17,
                "data_type": "from_year_to_year",
                "mandatory": "Y",
                "value": {
                    "to": 2034,
                    "from": 2030
                }
            }
        ]
    }
 }"
require 'net/http'
require 'uri'
require 'json'

uri = URI.parse("https://<environmenturl>/api/transactions/scheduled_beneficiary") header = {'X-Api-Key' => '<your secure token>', 'Content-Type' => 'application/json'} body = { "amount": "2000000", "owner_account_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx", "beneficiary_account_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx", "category": "Beneficiary", "payment_method":"RTGS", "scheduled_name": "Water Bill", "frequency": "yearly", "occurrences": 2, "type_of_transactions": "Beneficiary Transaction", "confidential_transaction": "false", "transaction_start_date": "26-02-2025", "transaction_end_date": "26-02-2026", "slot": "10:00 AM - 12:00 PM", "additional_data": { "data": [ { "data_type": "string", "mandatory": "Y", "value": "Mon", "name": "month", "position": 1 }, { "name": "leaves", "position": 2, "data_type": "numeric", "mandatory": "Y", "value": 67 }, { "name": "PAN", "position": 3, "data_type": "string", "mandatory": "N" }, { "name": "Accountants", "position": 4, "data_type": "list", "mandatory": "Y", "data": [ "Pradeep", "Sachin", "Sewaram" ], "value": "Sachin" }, { "name": "Time", "position": 5, "data_type": "time", "mandatory": "Y", "value": "09:38" }, { "name": "Day", "position": 6, "data_type": "day", "mandatory": "Y", "value": "Monday" }, { "name": "Dummy", "position": 7, "data_type": "toggle", "mandatory": "Y", "value": false }, { "name": "Month", "position": 8, "data_type": "month", "mandatory": "Y", "value": "April" }, { "name": "Hyperlink", "position": 9, "data_type": "hyperlink", "mandatory": "Y", "value": "https://nxtapi.q2pay.co.in/api/transaction/beneficiary" }, { "name": "File", "position": 10, "data_type": "upload", "mandatory": "Y", "value": { "id": "c68cc4e7d54381cc46384f194c09ce2c.png", "storage": "cache", "metadata": { "filename": "favicon.png", "size": 62260, "mime_type": "image/png" } } }, { "name": "Date", "position": 11, "data_type": "date", "mandatory": "Y", "value": "23/01/2023" }, { "name": "Year", "position": 12, "data_type": "year", "mandatory": "Y", "value": "2023" }, { "mandatory": "Y", "position": 13, "name": "Month/Year", "data_type": "month_year", "value": "03/2023" }, { "name": "Engineer", "position": 14, "data_type": "multi_select_list", "mandatory": "Y", "data": [ "Nikhi", "Jitendra", "Akash", "Neha", "Ajinkya", "Anuj" ], "value": [ "Ajinkya", "Anuj" ] }, { "name": "Quantity", "position": 15, "data_type": "quantity", "mandatory": "Y", "value": 5 }, { "name": "DateRange", "position": 16, "data_type": "date_range", "mandatory": "Y", "value": { "end_date": "21/09/2024", "start_date": "21/08/2023" } }, { "name": "YearRange", "position": 17, "data_type": "from_year_to_year", "mandatory": "Y", "value": { "to": 2034, "from": 2030 } } ] } } http = Net::HTTP.new(uri.host, uri.port) http.use_ssl = true request = Net::HTTP::Post.new(uri.request_uri, header) request.body = body.to_json response = http.request(request)

const data = {
    "amount": "2000000",
    "owner_account_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
    "beneficiary_account_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
    "category": "Beneficiary",
    "payment_method":"RTGS",
    "scheduled_name": "Water Bill",
    "frequency": "yearly",
    "occurrences": 2,
    "type_of_transactions": "Beneficiary Transaction",
    "confidential_transaction": "false",
    "transaction_start_date": "26-02-2025",
    "transaction_end_date": "26-02-2026",
    "slot": "10:00 AM - 12:00 PM",
    "additional_data": {
        "data": [
            {
                "data_type": "string",
                "mandatory": "Y",
                "value": "Mon",
                "name": "month",
                "position": 1
            },
            {
                "name": "leaves",
                "position": 2,
                "data_type": "numeric",
                "mandatory": "Y",
                "value": 67
            },
            {
                "name": "PAN",
                "position": 3,
                "data_type": "string",
                "mandatory": "N"
            },
            {
                "name": "Accountants",
                "position": 4,
                "data_type": "list",
                "mandatory": "Y",
                "data": [
                    "Pradeep",
                    "Sachin",
                    "Sewaram"
                ],
                "value": "Sachin"
            },
            {
                "name": "Time",
                "position": 5,
                "data_type": "time",
                "mandatory": "Y",
                "value": "09:38"
            },
            {
                "name": "Day",
                "position": 6,
                "data_type": "day",
                "mandatory": "Y",
                "value": "Monday"
            },
            {
                "name": "Dummy",
                "position": 7,
                "data_type": "toggle",
                "mandatory": "Y",
                "value": false
            },
            {
                "name": "Month",
                "position": 8,
                "data_type": "month",
                "mandatory": "Y",
                "value": "April"
            },
            {
                "name": "Hyperlink",
                "position": 9,
                "data_type": "hyperlink",
                "mandatory": "Y",
                "value": "https://nxtapi.q2pay.co.in/api/transaction/beneficiary"
            },
            {
                "name": "File",
                "position": 10,
                "data_type": "upload",
                "mandatory": "Y",
                "value": {
                    "id": "c68cc4e7d54381cc46384f194c09ce2c.png",
                    "storage": "cache",
                    "metadata": {
                        "filename": "favicon.png",
                        "size": 62260,
                        "mime_type": "image/png"
                    }
                }
            },
            {
                "name": "Date",
                "position": 11,
                "data_type": "date",
                "mandatory": "Y",
                "value": "23/01/2023"
            },
            {
                "name": "Year",
                "position": 12,
                "data_type": "year",
                "mandatory": "Y",
                "value": "2023"
            },
            {
                "mandatory": "Y",
                "position": 13,
                "name": "Month/Year",
                "data_type": "month_year",
                "value": "03/2023"
            },
            {
                "name": "Engineer",
                "position": 14,
                "data_type": "multi_select_list",
                "mandatory": "Y",
                "data": [
                    "Nikhi",
                    "Jitendra",
                    "Akash",
                    "Neha",
                    "Ajinkya",
                    "Anuj"
                ],
                "value": [
                    "Ajinkya",
                    "Anuj"
                ]
            },
            {
                "name": "Quantity",
                "position": 15,
                "data_type": "quantity",
                "mandatory": "Y",
                "value": 5
            },
            {
                "name": "DateRange",
                "position": 16,
                "data_type": "date_range",
                "mandatory": "Y",
                "value": {
                    "end_date": "21/09/2024",
                    "start_date": "21/08/2023"
                }
            },
            {
                "name": "YearRange",
                "position": 17,
                "data_type": "from_year_to_year",
                "mandatory": "Y",
                "value": {
                    "to": 2034,
                    "from": 2030
                }
            }
        ]
    }
};

fetch('https://<environmenturl>/api/transactions/scheduled_beneficiary', { method: 'POST', headers: { 'X-Api-Key': '<your secure token>', 'Content-Type': 'application/json' }, body: JSON.stringify(data) }) .then(response => response.json()) .then(data => console.log(data)) .catch(error => console.error(error));

The below example can be sent as a request to the API.

{
    "amount": "2000000",
    "owner_account_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
    "beneficiary_account_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
    "category": "Beneficiary",
    "payment_method":"RTGS",
    "scheduled_name": "Water Bill",
    "frequency": "yearly",
    "occurrences": 2,
    "type_of_transactions": "Beneficiary Transaction",
    "confidential_transaction": "false",
    "transaction_start_date": "26-02-2025",
    "transaction_end_date": "26-02-2026",
    "slot": "10:00 AM - 12:00 PM",
    "additional_data": {
        "data": [
            {
                "data_type": "string",
                "mandatory": "Y",
                "value": "Mon",
                "name": "month",
                "position": 1
            },
            {
                "name": "leaves",
                "position": 2,
                "data_type": "numeric",
                "mandatory": "Y",
                "value": 67
            },
            {
                "name": "PAN",
                "position": 3,
                "data_type": "string",
                "mandatory": "N"
            },
            {
                "name": "Accountants",
                "position": 4,
                "data_type": "list",
                "mandatory": "Y",
                "data": [
                    "Pradeep",
                    "Sachin",
                    "Sewaram"
                ],
                "value": "Sachin"
            },
            {
                "name": "Time",
                "position": 5,
                "data_type": "time",
                "mandatory": "Y",
                "value": "09:38"
            },
            {
                "name": "Day",
                "position": 6,
                "data_type": "day",
                "mandatory": "Y",
                "value": "Monday"
            },
            {
                "name": "Dummy",
                "position": 7,
                "data_type": "toggle",
                "mandatory": "Y",
                "value": false
            },
            {
                "name": "Month",
                "position": 8,
                "data_type": "month",
                "mandatory": "Y",
                "value": "April"
            },
            {
                "name": "Hyperlink",
                "position": 9,
                "data_type": "hyperlink",
                "mandatory": "Y",
                "value": "https://nxtapi.q2pay.co.in/api/transaction/beneficiary"
            },
            {
                "name": "File",
                "position": 10,
                "data_type": "upload",
                "mandatory": "Y",
                "value": {
                    "id": "c68cc4e7d54381cc46384f194c09ce2c.png",
                    "storage": "cache",
                    "metadata": {
                        "filename": "favicon.png",
                        "size": 62260,
                        "mime_type": "image/png"
                    }
                }
            },
            {
                "name": "Date",
                "position": 11,
                "data_type": "date",
                "mandatory": "Y",
                "value": "23/01/2023"
            },
            {
                "name": "Year",
                "position": 12,
                "data_type": "year",
                "mandatory": "Y",
                "value": "2023"
            },
            {
                "mandatory": "Y",
                "position": 13,
                "name": "Month/Year",
                "data_type": "month_year",
                "value": "03/2023"
            },
            {
                "name": "Engineer",
                "position": 14,
                "data_type": "multi_select_list",
                "mandatory": "Y",
                "data": [
                    "Nikhi",
                    "Jitendra",
                    "Akash",
                    "Neha",
                    "Ajinkya",
                    "Anuj"
                ],
                "value": [
                    "Ajinkya",
                    "Anuj"
                ]
            },
            {
                "name": "Quantity",
                "position": 15,
                "data_type": "quantity",
                "mandatory": "Y",
                "value": 5
            },
            {
                "name": "DateRange",
                "position": 16,
                "data_type": "date_range",
                "mandatory": "Y",
                "value": {
                    "end_date": "21/09/2024",
                    "start_date": "21/08/2023"
                }
            },
            {
                "name": "YearRange",
                "position": 17,
                "data_type": "from_year_to_year",
                "mandatory": "Y",
                "value": {
                    "to": 2034,
                    "from": 2030
                }
            }
        ]
    }
}

SUCCESS RESPONSE The request returns JSON structured like below on successful scheduled beneficiary transactions creation

{
    "status": true,
    "total_count": 1,
    "total_amount": "2000000.0",
    "transaction": [
        {
            "txn_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
            "txn_initiator": "Akshay Rangnekar",
            "entity_id": "ABC12",
            "amount": "2000000.0",
            "payment_method": "RTGS",
            "scheduled_name": "Water Bill",
            "category": "Beneficiary",
            "type_of_transactions": "Beneficiary Transaction",
            "confidential_transaction": "N",
            "transaction_start_date": "2025-02-26",
            "transaction_end_date": "2026-02-26",
            "frequency": "yearly",
            "occurrences": 2,
            "slot": "10:00 AM - 12:00 PM",
            "lifecycle_status": "pending",
            "beneficiary_transaction_ids": [],
            "approved": "N",
            "approved_at": 1740571336,
            "rejected": "N",
            "rejected_at": 0,
            "deleted": "N",
            "deleted_at": 0,
            "beneficiary_account_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
            "beneficiary_account_name": "Q2pay",
            "beneficiary_account_bank_acc_no": "9234567892",
            "beneficiary_account_ifsc_code": "HDFC0000225",
            "beneficiary_account_bank_name": "HDFC Bank",
            "beneficiary_account_approval_status": "approved",
            "owner_account_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
            "owner_account_bank_acc_no": "1234567893",
            "owner_account_ifsc_code": "ICIC0001953",
            "owner_account_bank_name": "ICICI Bank",
            "owner_account_type": "Current Account",
            "owner_account_balance": "500.0",
            "owner_account_balance_last_fetched_at": 1709537290,
            "owner_account_balance_last_fetched_at_in_words": "12 months ago",
            "additional_data": {
                "data": [
                    {
                        "data_type": "string",
                        "mandatory": "Y",
                        "value": "Mon",
                        "name": "month",
                        "position": 1
                    },
                    {
                        "name": "leaves",
                        "position": 2,
                        "data_type": "numeric",
                        "mandatory": "Y",
                        "value": 67
                    },
                    {
                        "name": "PAN",
                        "position": 3,
                        "data_type": "string",
                        "mandatory": "N"
                    },
                    {
                        "name": "Accountants",
                        "position": 4,
                        "data_type": "list",
                        "mandatory": "Y",
                        "data": [
                            "Pradeep",
                            "Sachin",
                            "Sewaram"
                        ],
                        "value": "Sachin"
                    },
                    {
                        "name": "Time",
                        "position": 5,
                        "data_type": "time",
                        "mandatory": "Y",
                        "value": "09:38"
                    },
                    {
                        "name": "Day",
                        "position": 6,
                        "data_type": "day",
                        "mandatory": "Y",
                        "value": "Monday"
                    },
                    {
                        "name": "Dummy",
                        "position": 7,
                        "data_type": "toggle",
                        "mandatory": "Y",
                        "value": false
                    },
                    {
                        "name": "Month",
                        "position": 8,
                        "data_type": "month",
                        "mandatory": "Y",
                        "value": "April"
                    },
                    {
                        "name": "Hyperlink",
                        "position": 9,
                        "data_type": "hyperlink",
                        "mandatory": "Y",
                        "value": "https://nxtapi.q2pay.co.in/api/transaction/beneficiary"
                    },
                    {
                    "name": "File",
                    "position": 10,
                    "data_type": "upload",
                    "mandatory": "Y",
                    "value": {
                        "id": "c68cc4e7d54381cc46384f194c09ce2c.png",
                        "storage": "cache",
                        "metadata": {
                        "filename": "favicon.png",
                        "size": 62260,
                        "mime_type": "image/png"
                        },
                         "file_url": "https://your-bucket.s3.amazonaws.com/store/c68cc4e7d54381cc46384f194c09ce2c.png"
                        }
                    },
                    {
                        "name": "Date",
                        "position": 11,
                        "data_type": "date",
                        "mandatory": "Y",
                        "value": "23/01/2023"
                    },
                    {
                        "name": "Year",
                        "position": 12,
                        "data_type": "year",
                        "mandatory": "Y",
                        "value": "2023"
                    },
                    {
                        "mandatory": "Y",
                        "position": 13,
                        "name": "Month/Year",
                        "data_type": "month_year",
                        "value": "03/2023"
                    },
                    {
                        "name": "Engineer",
                        "position": 14,
                        "data_type": "multi_select_list",
                        "mandatory": "Y",
                        "data": [
                            "Nikhi",
                            "Jitendra",
                            "Akash",
                            "Neha",
                            "Ajinkya",
                            "Anuj"
                        ],
                        "value": [
                            "Ajinkya",
                            "Anuj"
                        ]
                    },
                    {
                        "name": "Quantity",
                        "position": 15,
                        "data_type": "quantity",
                        "mandatory": "Y",
                        "value": 5
                    },
                    {
                        "name": "DateRange",
                        "position": 16,
                        "data_type": "date_range",
                        "mandatory": "Y",
                        "value": {
                            "end_date": "21/09/2024",
                            "start_date": "21/08/2023"
                        }
                    },
                    {
                        "name": "YearRange",
                        "position": 17,
                        "data_type": "from_year_to_year",
                        "mandatory": "Y",
                        "value": {
                            "to": 2034,
                            "from": 2030
                        }
                    }
                ]
            },
            "created_on": 1740571336,
            "last_updated_user_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
            "last_updated_status": "Approved",
            "last_updated_timestamp": 1740571336,
            "last_updated_user_name": "Akshay Rangnekar",
            "logs": [
                {
                    "action": "Created",
                    "user_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
                    "user_full_name": "Akshay Rangnekar",
                    "timestamp": "2025-02-26T12:02:16.600Z",
                    "request_ip": "127.0.0.1",
                    "last_used": "2025-02-26T12:02:16.484Z",
                    "logged_in_flag": false,
                    "logged_in_time": "2025-02-26T11:03:29.977Z",
                    "app_version_name": "1.43",
                    "app_version_code": "54",
                    "platform": "android",
                    "model": "Android SDK built for x86",
                    "manufacturer": "unknown",
                    "brand": "Android",
                    "serial_number": "EMULATOR32X1X14X0",
                    "os_version": "6.0",
                    "sdk_version": "23",
                    "ip_address": "127.0.0.1",
                    "is_primary": false,
                    "is_verified": false,
                    "first_name": "Akshay",
                    "last_name": "Rangnekar"
                },
                {
                    "action": "Approved",
                    "user_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
                    "user_full_name": "Akshay Rangnekar",
                    "final_approval": true,
                    "timestamp": "2025-02-26T12:02:16.625Z",
                    "request_ip": "127.0.0.1",
                    "last_used": "2025-02-26T12:02:16.484Z",
                    "logged_in_flag": false,
                    "logged_in_time": "2025-02-26T11:03:29.977Z",
                    "app_version_name": "1.43",
                    "app_version_code": "54",
                    "platform": "android",
                    "model": "Android SDK built for x86",
                    "manufacturer": "unknown",
                    "brand": "Android",
                    "serial_number": "EMULATOR32X1X14X0",
                    "os_version": "6.0",
                    "sdk_version": "23",
                    "ip_address": "127.0.0.1",
                    "is_primary": false,
                    "is_verified": false,
                    "first_name": "Akshay",
                    "last_name": "Rangnekar"
                }
            ]
        }
    ],
    "title": {
        "records": 1,
        "current_page": 1,
        "total_pages": 1,
        "page_item_count": 1
    }
}

ERROR RESPONSE The request returns JSON structured like below for errors related scheduled beneficiary transaction

{
    "status":false, 
    "errors":{
        "beneficiary_account":[
            "Beneficiary account is not approved"
        ],
        "beneficiary_account": [
            "Beneficiary account must exist",
            "Beneficiary account is not valid for the scheuled beneficiary transaction"
        ], 
        "base":[
            "Internal category is not valid for the scheuled beneficiary transaction"
        ],
        "owner_account": [
            "Owner account must exist"
        ],
        "amount":[
            "Amount can't be blank",
            "Amount is not a number",
            "Amount must be greater than 0"
        ],
        "base":[
            "Amount is not valid for RTGS transaction"
        ],
        "base":[
            "Amount is not valid for NEFT transaction"
        ],
        "base":[
            "Amount is not valid for IMPS transaction"
        ],
        "category":[
            "Category can't be blank", 
            "Category  is not valid/active for the scheuled beneficiary transaction",
            "Category  is not valid for the scheuled beneficiary transaction",
            "Category not found"
        ],
        "base":[
            "Beneficiary Account is not yet activated for disbursement. Kindly contact support"
        ],
        "base":[
            "Beneficiary Account is archived. Transaction cannot be created. Kindly contact support"
        ],
        "base": [
            "Connected banking not active for owner account. Transaction cannot be created. Kindly contact support"
        ],
        "base": [
            "Beneficiary Account doesn't belongs to your entity."
        ],
        "base": [
            "Owner Account doesn't belongs to your entity."
        ],
        "base": [
            "Owner Account is pending. Transaction cannot be created. Kindly contact support"
        ],
        "base": [
            "Owner & Beneficiary Bank Account number are same. Transaction cannot be created. Kindly contact support"
        ],
        "payment_method": [
            "Payment method is not included in the list"
        ],
        "additional_data":
        [
            "Additional data Data data when supplied cannot be blank",
            "Additional data has settings declared under data key/s",
            "Additional data cannot be sent blank for the 'Beneficiary' transaction category",
            "Additional data should be sent blank for the 'Mobile Bill' transaction category",
            "Additional data 'data' is malformed",
            "Additional data configuration is missing / unknown for 'name' key",
            "Additional data 'data' must have position as 1, 2, 3, 4, ...",
            "Additional data 'data' must have unique position in array",
            "Additional data 'data' cannot be declared as empty",
            "Additional data 'data' must have unique value for each name field in array",
            "Additional data 'data' : {\"hello\"=>\"abc\"} must have name, data_type, mandatory and position keys in each hash",
            "Additional data 'data' : {\"name\"=>\"month\", \"value\"=>10, \"position\"=>1, \"data_type\"=>\"string\", \"mandatory\"=>\"Y\"} must have matching value as string as declared in transaction category configuration",
            "Additional data 'data' : {\"name\"=>\"month\", \"position\"=>\"1\", \"data_type\"=>\"string\", \"mandatory\"=>\"Y\", \"value\"=>\"Mon\"} must have position as an integer",
            "Additional data 'data' : {\"name\"=>\"month\", \"position\"=>1, \"data_type\"=>\"list\", \"mandatory\"=>\"Y\", \"value\"=>\"Wed\", \"data\"=>[\"Mon\", \"Tue\"]} must have value as an array of strings",
            "Additional data 'data' : {\"name\"=>\"Accountants\", \"position\"=>4, \"data_type\"=>\"list\", \"mandatory\"=>\"N\", \"value\"=>\"Pradeep, Sachin, Sewaram\"} must have data as an array of strings",
            "Additional data 'data' : {\"name\"=>\"Accountants\", \"position\"=>4, \"data_type\"=>\"list\", \"mandatory\"=>\"N\", \"value\"=>\"Pradeep, Sachin, Sewaram\"} must have value from '[\"Pradeep\", \"Sachin\", \"Sewaram\"]' which is declared in the category configuration",
            "Additional data 'data' : {\"name\"=>\"month\", \"position\"=>1, \"data_type\"=>\"problem\", \"mandatory\"=>\"Y\", \"value\"=>\"Mon\"} must have data_type as one of the following: string, numeric, list, date, year, month_year, time, day, toggle, month, hyperlink, upload, multi_select_list, quantity, date_range, from_year_to_year",
            "Additional data 'data' : {\"name\"=>\"Accountants\", \"position\"=>4, \"data_type\"=>\"list\", \"mandatory\"=>\"N\", \"data\"=>[\"Pradeep\", \"Sachin\", \"Sewaram\"]} must have name, data_type, mandatory, value and position keys in each hash",
            "Additional data 'data' : {\"name\"=>\"leaves\", \"position\"=>2, \"data_type\"=>\"numeric\", \"mandatory\"=>\"N\", \"value\"=>12} must have matching value as numeric as declared in transaction category configuration",
            "Additional data 'data' : {\"name\"=>\"month\", \"position\"=>1, \"data_type\"=>\"problem\", \"mandatory\"=>\"Y\", \"value\"=>\"Mon\"} must have data_type 'string' as declared in category configuration",
            "Additional data 'data' : {\"name\"=>\"month\", \"position\"=>1, \"data_type\"=>\"string\", \"mandatory\"=>\"Y\"} must have a value as it is a mandatory field",
            "Additional data 'data' : {\"name\"=>\"month\", \"position\"=>1, \"data_type\"=>\"string\", \"problem\"=>\"Y\", \"value\"=>\"Mon\"} must have name, data_type, mandatory and position keys in each hash",
            "Additional data 'data' : {\"name\"=>\"month\", \"position\"=>1, \"data_type\"=>\"string\", \"mandatory\"=>\"Y\", \"value\"=>1234} must have matching value as string as declared in transaction category configuration",
            "Additional data 'data' : {\"name\"=>\"month\", \"position\"=>1, \"data_type\"=>\"string\", \"problem\"=>\"Y\", \"value\"=>\"Mon\"} must have mandatory as one of the following: Y, N",
            "Additional data 'data' : {\"name\"=>\"month\", \"position\"=>1, \"data_type\"=>\"string\", \"problem\"=>\"Y\", \"value\"=>\"Mon\"} must have mandatory 'Y' as declared in category configuration",
            "Additional data 'data' : {\"name\"=>\"yearly bill\", \"position\"=>3, \"data_type\"=>\"year\", \"mandatory\"=>\"Y\", \"value\"=>\"24\"} must have matching value as year as declared in transaction category configuration",
            "Additional data 'data' : {\"name\"=>\"Mothly bill\", \"position\"=>1, \"data_type\"=>\"month_year\", \"mandatory\"=>\"Y\", \"value\"=>\"Dec 2024\"} must have matching value as year as declared in transaction category configuration",
            "Additional data 'data' : {\"name\"=>\"yearly bill\", \"position\"=>3, \"data_type\"=>\"year\", \"mandatory\"=>\"Y\"} must have a value as it is a mandatory field",
            "Additional data [\"id\", \"storage\", \"metadata\"] cannot be declared as empty",
            "Additional data [\"filename\", \"size\", \"mime_type\"] must be as declared in transaction category configuration",
            "Additional data 'data' : {\"name\"=>\"Multiselect\", \"position\"=>7, \"data_type\"=>\"multi_select_list\", \"mandatory\"=>\"Y\", \"value\"=>\"[\n          test, \n          2\n        ]\"} must have matching value as multi select as declared in transaction category configuration",
            "Additional data 'data' : {\"name\"=>\"Quantity\", \"position\"=>8, \"data_type\"=>\"quantity\", \"mandatory\"=>\"Y\", \"value\"=>5.0} must have matching value as quantity as declared in transaction category configuration",
            "Additional data 'data' : {\"name\"=>\"DateRange\", \"position\"=>9, \"data_type\"=>\"date_range\", \"mandatory\"=>\"Y\", \"value\"=>\"21/09/2024\"} must have matching value as date_range as declared in transaction category configuration",
            "Additional data 'data' : {\"name\"=>\"DateRange\", \"position\"=>9, \"data_type\"=>\"date_range\", \"mandatory\"=>\"Y\", \"value\"=>{}} must have a value as it is a mandatory field",
            "Additional data [\"start_date\", \"end_date\"] must be as declared in transaction category configuration",
            "Additional data {\"start_date\"=>\" \", \"end_date\"=>\"21/09/2024\"} must have matching value as date_range as declared in transaction category configuration",
            "Additional data {\"from\"=>\"2023\", \"to\"=>\"2024\"} must have matching value as from_year_to_year as declared in transaction category configuration",
            "Additional data [\"from\", \"to\"] must be as declared in transaction category configuration"
        ],
        [
            "Frequency is invalid. Allowed values: once, daily, weekly, fortnightly, monthly, quarterly, half_yearly, yearly"
        ],
        [
            "Occurrences must be 2 for the given frequency and date range"
        ],
        [
            "Slot is invalid. Allowed values: 10:00 AM - 12:00 PM,12:01 PM - 15:00 PM,15:01 PM - 18:00 PM"
        ]
        "frequency": [
            "Frequency must be 'weekly' if transaction_day is provided"
        ],
        "transaction_month": [
            "Transaction month must contain only valid months (January to December). Found invalid values: january"
        ],
        [
            "Transaction month must match the month of transaction_start_date (February)"
        ]
        "transaction_day": [
            "Transaction day must contain only valid weekdays (Sunday to Saturday). Found invalid values: monday"
        ],
        [
            "Transaction day must match the day of transaction_start_date (Wednesday)"
        ]
        "type_of_transactions": [
            "Type of transactions is not valid for the scheuled beneficiary transaction"
        ],
        "transaction_start_date": [
            "Transaction start date can't be blank"
        ],
        "transaction_end_date": [
            "Transaction end date can't be blank"
        ],
        [
            "Transaction end date must be the same as transaction start date when frequency is 'once'"
        ]
        [
            "Transaction end date must be greater than transaction start date when frequency is not 'once'"
        ],
        "transaction_start_date": [
            "Transaction start date cannot be in the past"
        ],
        "transaction_end_date": [
            "Transaction end date cannot be in the past"
        ],
        "user_unauthorized": [
            "Sorry! You are not authorized to perform this action"
        ],
        "scheduled_name": [
            "Scheduled name can't be blank",
            "Scheduled name is too short (minimum is 5 characters)"
        ]
} }

This endpoint creates a scheduled beneficiary transaction.

UAT HTTP Request

POST https://nxt.api.q2pay.co.in/api/transactions/scheduled_beneficiary

PRODUCTION HTTP Request

POST https://nxt.api.q2pay.in/api/transactions/scheduled_beneficiary

Query Parameters

Parameter Default Description Required Sample
amount N.A. amount for scheduled beneficiary transaction Yes 67000.0
beneficiary_account_id N.A. beneficiary account id for scheduled beneficiary transaction Yes xxxxxxxx-xxxx-xxxx-xxxxxx
owner_account_id N.A. owner account id for scheduled beneficiary transaction Yes xxxxxxxx-xxxx-xxxx-xxxxxx
category N.A. category for scheduled beneficiary transaction Yes Beneficiary
additional_data N.A. Additional data for scheduled beneficiary transaction Yes "data": [ {"name": "month", "position": 1,"data_type": "string","mandatory": "Y", "value": "Mon"}]
payment_method N.A. payment method for scheduled beneficiary transaction optional NEFT,IMPS,RTGS
frequency N.A. frequency for scheduled beneficiary transaction Yes once,daily,weekly,fortnightly,monthly,quarterly,half_yearly,yearly
confidential_transaction N.A. confidential transaction for scheduled beneficiary transaction optional true,false
occurrences N.A. occurrences count for scheduled beneficiary transaction Yes 1,2,53
type_of_transactions N.A. type of transactions for scheduled beneficiary transaction Yes Beneficiary Transaction
transaction_start_date N.A. transaction start date for scheduled beneficiary transaction Yes 26-02-2025
transaction_end_date N.A. transaction end date for scheduled beneficiary transaction Yes 26-02-2026
slot N.A. slot for scheduled beneficiary transaction Yes 10:00 AM - 12:00 PM,12:01 PM - 15:00 PM,15:01 PM - 18:00 PM
transaction_day N.A. transaction day for scheduled beneficiary transaction optional Monday to Sunday
transaction_month N.A transaction month for scheduled beneficiary transaction optional January to December
scheduled_name N.A Scheduled name for scheduled beneficiary transaction Yes "Water Bill"

Service Details

Service ID Description
BCScheduledTxn Create Scheduled Beneficiary Transaction

Approve Scheduled Beneficiary Transaction

curl -X PUT "https://<environmenturl>/api/transactions/scheduled_beneficiary/approve"
  -H "X-Api-Key: <your secure token>"
  -H "Content-Type: application/json"
  -d "{ 
    "txn_id":  ["xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx"]
      }"

require 'net/http'
require 'uri'
require 'json'

uri = URI.parse("https://<environmenturl>/api/transactions/scheduled_beneficiary/approve") header = {'X-Api-Key' => '<your secure token>', 'Content-Type' => 'application/json'} body = { "txn_id": ["xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx"] } http = Net::HTTP.new(uri.host, uri.port) http.use_ssl = true request = Net::HTTP::Put.new(uri.request_uri, header) request.body = body.to_json response = http.request(request)

const data = {
   "txn_id":  ["xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx"]
};

fetch('https://<environmenturl>/api/transactions/scheduled_beneficiary/approve', { method: 'PUT', headers: { 'X-Api-Key': '<your secure token>', 'Content-Type': 'application/json' }, body: JSON.stringify(data) }) .then(response => response.json()) .then(data => console.log(data)) .catch(error => console.error(error));

The below example can be sent as a request to the API.

{
  "txn_id":  ["xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx"]
}

The below example can be sent as a request to the API for multiple transaction id.

{
  "txn_id":  ["xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx","xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx"]
}

SUCCESS RESPONSE The request returns JSON structured like below on successful scheduled beneficiary transaction approve

{
    "status": true,
    "total_count": 1,
    "total_amount": "2000000.0",
    "transactions": [
        {
            "txn_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
            "txn_initiator": "Akshay Rangnekar",
            "entity_id": "ABC12",
            "amount": "2000000.0",
            "payment_method": "RTGS",
            "scheduled_name": "Water Bill",
            "category": "Beneficiary",
            "type_of_transactions": "Beneficiary Transaction",
            "confidential_transaction": "N",
            "transaction_start_date": "2025-02-26",
            "transaction_end_date": "2026-02-26",
            "frequency": "yearly",
            "occurrences": 2,
            "slot": "10:00 AM - 12:00 PM",
            "lifecycle_status": "approved",
            "beneficiary_transaction_ids": [],
            "approved": "Y",
            "approved_at": 1740629296,
            "approved_by": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
            "rejected": "N",
            "rejected_at": 0,
            "deleted": "N",
            "deleted_at": 0,
            "beneficiary_account_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
            "beneficiary_account_name": "Q2pay",
            "beneficiary_account_bank_acc_no": "9234567892",
            "beneficiary_account_ifsc_code": "HDFC0000225",
            "beneficiary_account_bank_name": "HDFC Bank",
            "beneficiary_account_approval_status": "approved",
            "owner_account_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
            "owner_account_bank_acc_no": "1234567893",
            "owner_account_ifsc_code": "ICIC0001953",
            "owner_account_bank_name": "ICICI Bank",
            "owner_account_type": "Current Account",
            "owner_account_balance": "500.0",
            "owner_account_balance_last_fetched_at": 1709537290,
            "owner_account_balance_last_fetched_at_in_words": "12 months ago",
            "additional_data": {
                "data": [
                    {
                        "name": "month",
                        "value": "Mon",
                        "position": 1,
                        "data_type": "string",
                        "mandatory": "Y"
                    },
                    {
                        "name": "leaves",
                        "value": 67,
                        "position": 2,
                        "data_type": "numeric",
                        "mandatory": "Y"
                    },
                    {
                        "name": "PAN",
                        "position": 3,
                        "data_type": "string",
                        "mandatory": "N"
                    },
                    {
                        "data": [
                            "Pradeep",
                            "Sachin",
                            "Sewaram"
                        ],
                        "name": "Accountants",
                        "value": "Sachin",
                        "position": 4,
                        "data_type": "list",
                        "mandatory": "Y"
                    },
                    {
                        "name": "Time",
                        "value": "09:38",
                        "position": 5,
                        "data_type": "time",
                        "mandatory": "Y"
                    },
                    {
                        "name": "Day",
                        "value": "Monday",
                        "position": 6,
                        "data_type": "day",
                        "mandatory": "Y"
                    },
                    {
                        "name": "Dummy",
                        "value": false,
                        "position": 7,
                        "data_type": "toggle",
                        "mandatory": "Y"
                    },
                    {
                        "name": "Month",
                        "value": "April",
                        "position": 8,
                        "data_type": "month",
                        "mandatory": "Y"
                    },
                    {
                        "name": "Hyperlink",
                        "value": "https://nxtapi.q2pay.co.in/api/transaction/beneficiary",
                        "position": 9,
                        "data_type": "hyperlink",
                        "mandatory": "Y"
                    },
                     {
                        "name": "File",
                        "position": 10,
                        "data_type": "upload",
                        "mandatory": "Y",
                        "value": {
                            "id": "c68cc4e7d54381cc46384f194c09ce2c.png",
                            "storage": "cache",
                            "metadata": {
                            "filename": "favicon.png",
                            "size": 62260,
                            "mime_type": "image/png"
                            },
                            "file_url": "https://your-bucket.s3.amazonaws.com/store/c68cc4e7d54381cc46384f194c09ce2c.png"
                        }
                    },
                    {
                        "name": "Date",
                        "value": "23/01/2023",
                        "position": 11,
                        "data_type": "date",
                        "mandatory": "Y"
                    },
                    {
                        "name": "Year",
                        "value": "2023",
                        "position": 12,
                        "data_type": "year",
                        "mandatory": "Y"
                    },
                    {
                        "name": "Month/Year",
                        "value": "03/2023",
                        "position": 13,
                        "data_type": "month_year",
                        "mandatory": "Y"
                    },
                    {
                        "data": [
                            "Nikhi",
                            "Jitendra",
                            "Akash",
                            "Neha",
                            "Ajinkya",
                            "Anuj"
                        ],
                        "name": "Engineer",
                        "value": [
                            "Ajinkya",
                            "Anuj"
                        ],
                        "position": 14,
                        "data_type": "multi_select_list",
                        "mandatory": "Y"
                    },
                    {
                        "name": "Quantity",
                        "value": 5,
                        "position": 15,
                        "data_type": "quantity",
                        "mandatory": "Y"
                    },
                    {
                        "name": "DateRange",
                        "value": {
                            "end_date": "21/09/2024",
                            "start_date": "21/08/2023"
                        },
                        "position": 16,
                        "data_type": "date_range",
                        "mandatory": "Y"
                    },
                    {
                        "name": "YearRange",
                        "value": {
                            "to": 2034,
                            "from": 2030
                        },
                        "position": 17,
                        "data_type": "from_year_to_year",
                        "mandatory": "Y"
                    }
                ]
            },
            "created_on": 1740628066,
            "last_updated_user_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
            "last_updated_status": "Approved",
            "last_updated_timestamp": 1740629296,
            "last_updated_user_name": "Akshay Rangnekar",
            "logs": [
                {
                    "brand": "Android",
                    "model": "Android SDK built for x86",
                    "action": "Created",
                    "user_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
                    "platform": "android",
                    "last_name": "Rangnekar",
                    "last_used": "2025-02-27T04:08:16.796Z",
                    "timestamp": "2025-02-27T04:08:16.912Z",
                    "first_name": "Akshay",
                    "ip_address": "127.0.0.1",
                    "is_primary": false,
                    "os_version": "6.0",
                    "request_ip": "127.0.0.1",
                    "is_verified": false,
                    "sdk_version": "23",
                    "manufacturer": "unknown",
                    "serial_number": "EMULATOR32X1X14X0",
                    "logged_in_flag": false,
                    "logged_in_time": "2025-02-27T04:05:40.181Z",
                    "app_version_code": "54",
                    "app_version_name": "1.43"
                },
                {
                    "brand": "Android",
                    "model": "Android SDK built for x86",
                    "action": "Approved",
                    "user_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
                    "platform": "android",
                    "last_name": "Rangnekar",
                    "last_used": "2025-02-27T04:08:16.796Z",
                    "timestamp": "2025-02-27T04:08:16.913Z",
                    "first_name": "Akshay",
                    "ip_address": "127.0.0.1",
                    "is_primary": false,
                    "os_version": "6.0",
                    "request_ip": "127.0.0.1",
                    "is_verified": false,
                    "sdk_version": "23",
                    "manufacturer": "unknown",
                    "serial_number": "EMULATOR32X1X14X0",
                    "final_approval": true,
                    "logged_in_flag": false,
                    "logged_in_time": "2025-02-27T04:05:40.181Z",
                    "user_full_name": "Akshay Rangnekar",
                    "app_version_code": "54",
                    "app_version_name": "1.43"
                }
            ]
        }
    ],
    "title": {
        "records": 1,
        "current_page": 1,
        "total_pages": 1,
        "page_item_count": 50
    }
}

ERROR RESPONSE The request returns JSON structured like below for errors related scheduled beneficiary transaction

{
    "status":false,
    "action":"Not performed",
    "errors":{
        "base":[
            "Invalid / Insufficient parameters"
        ],
        "base":[
            "No transactions found for transaction ids: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx"
        ],
        "base":[
            "All transactions do not belong to the same entity / Few transactions are already approved or are deleted/rejected"
        ],
        "base": [
            "User is not authorized to approve scheduled transactions"
        ],
        "base": [
            "Beneficiary account is not approved"
], "base": [ { "id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx", "errors": [ "Cannot approve. Transaction was auto-rejected as its start date or slot time has already passed." ] } ], "user_unauthorized": [ "Sorry! You are not authorized to perform this action" ]
} }

This endpoint approve a scheduled beneficiary transaction.

UAT HTTP Request

PUT https://nxt.api.q2pay.co.in/api/transactions/scheduled_beneficiary/approve

PRODUCTION HTTP Request

PUT https://nxt.api.q2pay.in/api/transactions/scheduled_beneficiary/approve

Query Parameters

Parameter Default Description Required Sample
txn_id N.A. txn id for scheduled beneficiary transaction Yes [xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxx ,xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxx]

Service Details

Service ID Description
BAScheduledTxn Approve Scheduled Beneficiary Transaction

Reject Scheduled Beneficiary Transaction

curl -X PUT "https://<environmenturl>/api/transactions/scheduled_beneficiary/reject"
  -H "X-Api-Key: <your secure token>"
  -H "Content-Type: application/json"
  -d "{ 
    "txn_id":  ["xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx"],
    "reason": "reject scheduled transaction"
      }"

require 'net/http'
require 'uri'
require 'json'

uri = URI.parse("https://<environmenturl>/api/transactions/scheduled_beneficiary/reject") header = {'X-Api-Key' => '<your secure token>', 'Content-Type' => 'application/json'} body = { "txn_id": ["xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx"], "reason": "reject scheduled transaction" } http = Net::HTTP.new(uri.host, uri.port) http.use_ssl = true request = Net::HTTP::Put.new(uri.request_uri, header) request.body = body.to_json response = http.request(request)

const data = {
   "txn_id":  ["xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx"],
   "reason": "reject scheduled transaction"
};

fetch('https://<environmenturl>/api/transactions/scheduled_beneficiary/reject', { method: 'PUT', headers: { 'X-Api-Key': '<your secure token>', 'Content-Type': 'application/json' }, body: JSON.stringify(data) }) .then(response => response.json()) .then(data => console.log(data)) .catch(error => console.error(error));

The below example can be sent as a request to the API.

{
  "txn_id":  ["xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx"],
  "reason": "reject scheduled transaction"
}

The below example can be sent as a request to the API for multiple transaction id.

{
  "txn_id":  ["xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx","xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx"],
  "reason": "reject scheduled transaction"
}

SUCCESS RESPONSE The request returns JSON structured like below on successful scheduled beneficiary transaction reject

{
    "status": true,
    "total_count": 1,
    "total_amount": "2000000.0",
    "transactions": [
        {
            "txn_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
            "txn_initiator": "Akshay Rangnekar",
            "entity_id": "ABC12",
            "amount": "2000000.0",
            "payment_method": "RTGS",
            "scheduled_name": "Water Bill",
            "category": "Beneficiary",
            "type_of_transactions": "Beneficiary Transaction",
            "confidential_transaction": "N",
            "transaction_start_date": "2025-02-26",
            "transaction_end_date": "2026-02-26",
            "frequency": "yearly",
            "occurrences": 2,
            "slot": "10:00 AM - 12:00 PM",
            "lifecycle_status": "rejected",
            "beneficiary_transaction_ids": [],
            "approved": "N",
            "approved_at": 0,
            "rejected": "Y",
            "rejected_by": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
            "rejected_at": 1740629452,
            "rejection_reason": "reject scheduled transaction",
            "deleted": "N",
            "deleted_at": 0,
            "beneficiary_account_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
            "beneficiary_account_name": "Q2pay",
            "beneficiary_account_bank_acc_no": "9234567892",
            "beneficiary_account_ifsc_code": "HDFC0000225",
            "beneficiary_account_bank_name": "HDFC Bank",
            "beneficiary_account_approval_status": "approved",
            "owner_account_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
            "owner_account_bank_acc_no": "1234567893",
            "owner_account_ifsc_code": "ICIC0001953",
            "owner_account_bank_name": "ICICI Bank",
            "owner_account_type": "Current Account",
            "owner_account_balance": "500.0",
            "owner_account_balance_last_fetched_at": 1709537290,
            "owner_account_balance_last_fetched_at_in_words": "12 months ago",
            "additional_data": {
                "data": [
                    {
                        "name": "month",
                        "value": "Mon",
                        "position": 1,
                        "data_type": "string",
                        "mandatory": "Y"
                    },
                    {
                        "name": "leaves",
                        "value": 67,
                        "position": 2,
                        "data_type": "numeric",
                        "mandatory": "Y"
                    },
                    {
                        "name": "PAN",
                        "position": 3,
                        "data_type": "string",
                        "mandatory": "N"
                    },
                    {
                        "data": [
                            "Pradeep",
                            "Sachin",
                            "Sewaram"
                        ],
                        "name": "Accountants",
                        "value": "Sachin",
                        "position": 4,
                        "data_type": "list",
                        "mandatory": "Y"
                    },
                    {
                        "name": "Time",
                        "value": "09:38",
                        "position": 5,
                        "data_type": "time",
                        "mandatory": "Y"
                    },
                    {
                        "name": "Day",
                        "value": "Monday",
                        "position": 6,
                        "data_type": "day",
                        "mandatory": "Y"
                    },
                    {
                        "name": "Dummy",
                        "value": false,
                        "position": 7,
                        "data_type": "toggle",
                        "mandatory": "Y"
                    },
                    {
                        "name": "Month",
                        "value": "April",
                        "position": 8,
                        "data_type": "month",
                        "mandatory": "Y"
                    },
                    {
                        "name": "Hyperlink",
                        "value": "https://nxtapi.q2pay.co.in/api/transaction/beneficiary",
                        "position": 9,
                        "data_type": "hyperlink",
                        "mandatory": "Y"
                    },
                     {
                    "name": "File",
                    "position": 10,
                    "data_type": "upload",
                    "mandatory": "Y",
                    "value": {
                        "id": "c68cc4e7d54381cc46384f194c09ce2c.png",
                        "storage": "cache",
                        "metadata": {
                        "filename": "favicon.png",
                        "size": 62260,
                        "mime_type": "image/png"
                        },
                        "file_url": "https://your-bucket.s3.amazonaws.com/store/c68cc4e7d54381cc46384f194c09ce2c.png"
                    }
                    },
                    {
                        "name": "Date",
                        "value": "23/01/2023",
                        "position": 11,
                        "data_type": "date",
                        "mandatory": "Y"
                    },
                    {
                        "name": "Year",
                        "value": "2023",
                        "position": 12,
                        "data_type": "year",
                        "mandatory": "Y"
                    },
                    {
                        "name": "Month/Year",
                        "value": "03/2023",
                        "position": 13,
                        "data_type": "month_year",
                        "mandatory": "Y"
                    },
                    {
                        "data": [
                            "Nikhi",
                            "Jitendra",
                            "Akash",
                            "Neha",
                            "Ajinkya",
                            "Anuj"
                        ],
                        "name": "Engineer",
                        "value": [
                            "Ajinkya",
                            "Anuj"
                        ],
                        "position": 14,
                        "data_type": "multi_select_list",
                        "mandatory": "Y"
                    },
                    {
                        "name": "Quantity",
                        "value": 5,
                        "position": 15,
                        "data_type": "quantity",
                        "mandatory": "Y"
                    },
                    {
                        "name": "DateRange",
                        "value": {
                            "end_date": "21/09/2024",
                            "start_date": "21/08/2023"
                        },
                        "position": 16,
                        "data_type": "date_range",
                        "mandatory": "Y"
                    },
                    {
                        "name": "YearRange",
                        "value": {
                            "to": 2034,
                            "from": 2030
                        },
                        "position": 17,
                        "data_type": "from_year_to_year",
                        "mandatory": "Y"
                    }
                ]
            },
            "created_on": 1740629431,
            "last_updated_user_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
            "last_updated_status": "Rejected",
            "last_updated_timestamp": 1740629452,
            "last_updated_user_name": "Akshay Rangnekar",
            "logs": [
                {
                    "brand": "Android",
                    "model": "Android SDK built for x86",
                    "action": "Created",
                    "user_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
                    "platform": "android",
                    "last_name": "Rangnekar",
                    "last_used": "2025-02-27T04:10:52.305Z",
                    "timestamp": "2025-02-27T04:10:52.325Z",
                    "first_name": "Akshay",
                    "ip_address": "127.0.0.1",
                    "is_primary": false,
                    "os_version": "6.0",
                    "request_ip": "127.0.0.1",
                    "is_verified": false,
                    "sdk_version": "23",
                    "manufacturer": "unknown",
                    "serial_number": "EMULATOR32X1X14X0",
                    "logged_in_flag": false,
                    "logged_in_time": "2025-02-27T04:05:40.181Z",
                    "app_version_code": "54",
                    "app_version_name": "1.43"
                },
                {
                    "brand": "Android",
                    "model": "Android SDK built for x86",
                    "action": "Rejected",
                    "user_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
                    "platform": "android",
                    "last_name": "Rangnekar",
                    "last_used": "2025-02-27T04:10:52.305Z",
                    "timestamp": "2025-02-27T04:10:52.327Z",
                    "first_name": "Akshay",
                    "ip_address": "127.0.0.1",
                    "is_primary": false,
                    "os_version": "6.0",
                    "request_ip": "127.0.0.1",
                    "is_verified": false,
                    "sdk_version": "23",
                    "manufacturer": "unknown",
                    "serial_number": "EMULATOR32X1X14X0",
                    "logged_in_flag": false,
                    "logged_in_time": "2025-02-27T04:05:40.181Z",
                    "user_full_name": "Akshay Rangnekar",
                    "app_version_code": "54",
                    "app_version_name": "1.43"
                }
            ]
        }
    ],
    "title": {
        "records": 1,
        "current_page": 1,
        "total_pages": 1,
        "page_item_count": 50
    }
}

ERROR RESPONSE The request returns JSON structured like below for errors related scheduled beneficiary transaction

{
    "status":false,
    "action":"Not performed",
    "errors":{
        "base":[
            "Invalid / Insufficient parameters"
        ],
        "base":
        [
            "No transactions found for transaction ids: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx"
        ],
        "base":
        [
            "All transactions do not belong to the same entity / Few transactions are already approved or are deleted/rejected"
        ],
        "base":
        [
            "Transaction cannot be reject due to current status"
        ],
        "user_unauthorized": [
            "Sorry! You are not authorized to perform this action"
        ],
        "base": [
            {
                "id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
                "errors": [
                    "Reason must be at least 5 characters"
                ]
            }
        ]
    }
}

This endpoint reject a scheduled beneficiary transaction.

UAT HTTP Request

PUT https://nxt.api.q2pay.co.in/api/transactions/scheduled_beneficiary/reject

PRODUCTION HTTP Request

PUT https://nxt.api.q2pay.in/api/transactions/scheduled_beneficiary/reject

Query Parameters

Parameter Default Description Required Sample
txn_id N.A. txn id for scheduled beneficiary transaction Yes [xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxx ,xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxx]
reason N.A. reason for scheduled beneficiary transaction Yes reject scheduled transaction

Service Details

Service ID Description
BAScheduledTxn Reject Scheduled Beneficiary Transaction

Delete Scheduled Beneficiary Transaction

curl "https://<environmenturl>/api/transactions/scheduled_beneficiary/delete"
  -H "X-Api-Key: <your secure token>"
  -H "Content-Type: application/json"
  -d "{ 
        "txn_id":  ["xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx"]
  }"
require 'net/http'
require 'uri'
require 'json'

uri = URI.parse("https://<environmenturl>/api/transactions/scheduled_beneficiary/delete") header = {'X-Api-Key' => '<your secure token>', 'Content-Type' => 'application/json'} body = { "txn_id": ["xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx"] } http = Net::HTTP.new(uri.host, uri.port) http.use_ssl = true request = Net::HTTP::Delete.new(uri.request_uri, header) request.body = body.to_json response = http.request(request)

const data = {
       "txn_id":  ["xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx"]
};

fetch('https://<environmenturl>/api/transactions/scheduled_beneficiary/delete', { method: 'DELETE', headers: { 'X-Api-Key': '<your secure token>', 'Content-Type': 'application/json' }, body: JSON.stringify(data) }) .then(response => response.json()) .then(data => console.log(data)) .catch(error => console.error(error));

The below example can be sent as a request to the API.

{
  "txn_id":  ["xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx"]
}

SUCCESS RESPONSE The request returns JSON structured like below

{
    "status": true,
    "total_count": 1,
    "total_amount": "2000000.0",
    "transactions": [
        {
            "txn_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
            "txn_initiator": "Akshay Rangnekar",
            "entity_id": "ABC12",
            "amount": "2000000.0",
            "payment_method": "RTGS",
            "scheduled_name": "Water Bill",
            "category": "Beneficiary",
            "type_of_transactions": "Beneficiary Transaction",
            "confidential_transaction": "N",
            "transaction_start_date": "2025-02-26",
            "transaction_end_date": "2026-02-26",
            "frequency": "yearly",
            "occurrences": 2,
            "slot": "10:00 AM - 12:00 PM",
            "lifecycle_status": "deleted",
            "beneficiary_transaction_ids": [],
            "approved": "N",
            "approved_at": 0,
            "rejected": "N",
            "rejected_at": 0,
            "deleted": "Y",
            "deleted_by": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
            "deleted_at": 1740628355,
            "beneficiary_account_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
            "beneficiary_account_name": "Q2pay",
            "beneficiary_account_bank_acc_no": "9234567892",
            "beneficiary_account_ifsc_code": "HDFC0000225",
            "beneficiary_account_bank_name": "HDFC Bank",
            "beneficiary_account_approval_status": "approved",
            "owner_account_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
            "owner_account_bank_acc_no": "1234567893",
            "owner_account_ifsc_code": "ICIC0001953",
            "owner_account_bank_name": "ICICI Bank",
            "owner_account_type": "Current Account",
            "owner_account_balance": "500.0",
            "owner_account_balance_last_fetched_at": 1709537290,
            "owner_account_balance_last_fetched_at_in_words": "12 months ago",
            "additional_data": {
                "data": [
                    {
                        "name": "month",
                        "value": "Mon",
                        "position": 1,
                        "data_type": "string",
                        "mandatory": "Y"
                    },
                    {
                        "name": "leaves",
                        "value": 67,
                        "position": 2,
                        "data_type": "numeric",
                        "mandatory": "Y"
                    },
                    {
                        "name": "PAN",
                        "position": 3,
                        "data_type": "string",
                        "mandatory": "N"
                    },
                    {
                        "data": [
                            "Pradeep",
                            "Sachin",
                            "Sewaram"
                        ],
                        "name": "Accountants",
                        "value": "Sachin",
                        "position": 4,
                        "data_type": "list",
                        "mandatory": "Y"
                    },
                    {
                        "name": "Time",
                        "value": "09:38",
                        "position": 5,
                        "data_type": "time",
                        "mandatory": "Y"
                    },
                    {
                        "name": "Day",
                        "value": "Monday",
                        "position": 6,
                        "data_type": "day",
                        "mandatory": "Y"
                    },
                    {
                        "name": "Dummy",
                        "value": false,
                        "position": 7,
                        "data_type": "toggle",
                        "mandatory": "Y"
                    },
                    {
                        "name": "Month",
                        "value": "April",
                        "position": 8,
                        "data_type": "month",
                        "mandatory": "Y"
                    },
                    {
                        "name": "Hyperlink",
                        "value": "https://nxtapi.q2pay.co.in/api/transaction/beneficiary",
                        "position": 9,
                        "data_type": "hyperlink",
                        "mandatory": "Y"
                    },
                     {
                    "name": "File",
                    "position": 10,
                    "data_type": "upload",
                    "mandatory": "Y",
                    "value": {
                        "id": "c68cc4e7d54381cc46384f194c09ce2c.png",
                        "storage": "cache",
                        "metadata": {
                        "filename": "favicon.png",
                        "size": 62260,
                        "mime_type": "image/png"
                        },
                        "file_url": "https://your-bucket.s3.amazonaws.com/store/c68cc4e7d54381cc46384f194c09ce2c.png"
                    }
                    },
                    {
                        "name": "Date",
                        "value": "23/01/2023",
                        "position": 11,
                        "data_type": "date",
                        "mandatory": "Y"
                    },
                    {
                        "name": "Year",
                        "value": "2023",
                        "position": 12,
                        "data_type": "year",
                        "mandatory": "Y"
                    },
                    {
                        "name": "Month/Year",
                        "value": "03/2023",
                        "position": 13,
                        "data_type": "month_year",
                        "mandatory": "Y"
                    },
                    {
                        "data": [
                            "Nikhi",
                            "Jitendra",
                            "Akash",
                            "Neha",
                            "Ajinkya",
                            "Anuj"
                        ],
                        "name": "Engineer",
                        "value": [
                            "Ajinkya",
                            "Anuj"
                        ],
                        "position": 14,
                        "data_type": "multi_select_list",
                        "mandatory": "Y"
                    },
                    {
                        "name": "Quantity",
                        "value": 5,
                        "position": 15,
                        "data_type": "quantity",
                        "mandatory": "Y"
                    },
                    {
                        "name": "DateRange",
                        "value": {
                            "end_date": "21/09/2024",
                            "start_date": "21/08/2023"
                        },
                        "position": 16,
                        "data_type": "date_range",
                        "mandatory": "Y"
                    },
                    {
                        "name": "YearRange",
                        "value": {
                            "to": 2034,
                            "from": 2030
                        },
                        "position": 17,
                        "data_type": "from_year_to_year",
                        "mandatory": "Y"
                    }
                ]
            },
            "created_on": 1740582073,
            "last_updated_user_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
            "last_updated_status": "Deleted",
            "last_updated_timestamp": 1740628355,
            "last_updated_user_name": "Akshay Rangnekar",
            "logs": [
                {
                    "brand": "Android",
                    "model": "Android SDK built for x86",
                    "action": "Created",
                    "user_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
                    "platform": "android",
                    "last_name": "Rangnekar",
                    "last_used": "2025-02-27T03:52:35.978Z",
                    "timestamp": "2025-02-27T03:52:35.997Z",
                    "first_name": "Akshay",
                    "ip_address": "127.0.0.1",
                    "is_primary": false,
                    "os_version": "6.0",
                    "request_ip": "127.0.0.1",
                    "is_verified": false,
                    "sdk_version": "23",
                    "manufacturer": "unknown",
                    "serial_number": "EMULATOR32X1X14X0",
                    "logged_in_flag": false,
                    "logged_in_time": "2025-02-27T03:41:19.226Z",
                    "app_version_code": "54",
                    "app_version_name": "1.43"
                },
                {
                    "brand": "Android",
                    "model": "Android SDK built for x86",
                    "action": "Approved",
                    "user_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
                    "platform": "android",
                    "last_name": "Rangnekar",
                    "last_used": "2025-02-27T03:52:35.978Z",
                    "timestamp": "2025-02-27T03:52:35.997Z",
                    "first_name": "Akshay",
                    "ip_address": "127.0.0.1",
                    "is_primary": false,
                    "os_version": "6.0",
                    "request_ip": "127.0.0.1",
                    "is_verified": false,
                    "sdk_version": "23",
                    "manufacturer": "unknown",
                    "serial_number": "EMULATOR32X1X14X0",
                    "logged_in_flag": false,
                    "logged_in_time": "2025-02-27T03:41:19.226Z",
                    "app_version_code": "54",
                    "app_version_name": "1.43"
                },
                {
                    "brand": "Android",
                    "model": "Android SDK built for x86",
                    "action": "Deleted",
                    "user_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
                    "platform": "android",
                    "last_name": "Rangnekar",
                    "last_used": "2025-02-27T03:52:35.978Z",
                    "timestamp": "2025-02-27T03:52:35.999Z",
                    "first_name": "Akshay",
                    "ip_address": "127.0.0.1",
                    "is_primary": false,
                    "os_version": "6.0",
                    "request_ip": "127.0.0.1",
                    "is_verified": false,
                    "sdk_version": "23",
                    "manufacturer": "unknown",
                    "serial_number": "EMULATOR32X1X14X0",
                    "logged_in_flag": false,
                    "logged_in_time": "2025-02-27T03:41:19.226Z",
                    "user_full_name": "Akshay Rangnekar",
                    "app_version_code": "54",
                    "app_version_name": "1.43"
                }
            ]
        }
    ],
    "title": {
        "records": 1,
        "current_page": 1,
        "total_pages": 1,
        "page_item_count": 50
    }
}

ERROR RESPONSE The request returns JSON structured like below for errors related scheduled beneficiary transaction

{
    "status": false,
    "action": "Not performed",
    "errors": {
        "base": [
            "Invalid / Insufficient parameters"
        ],
        "base": [
            "No transactions found for transaction ids: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx"
        ],
        "base": [
            "All transactions do not belong to the same entity/ Few transactions are already deleted"
        ],
        "user_unauthorized": [
            "Sorry! You are not authorized to perform this action"
        ] 
    }
}

This endpoint retrieves delete scheduled beneficiary transaction

UAT HTTP Request

DELETE https://nxt.api.q2pay.co.in/api/transactions/scheduled_beneficiary/delete

PRODUCTION HTTP Request

DELETE https://nxt.api.q2pay.in/api/transactions/scheduled_beneficiary/delete

Query Parameters

Parameter Default Description Required Sample
txn_id N.A. txn id for scheduled beneficiary transaction Yes [xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxx ,xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxx]

Service Details

Service ID Description
BAScheduledTxn Delete scheduled beneficiary transaction

Scheduled Internal Transaction

Scheduled Internal transaction helps you create, maintain & manage lifecycle for your organization

Get All Scheduled Internal Transactions

curl -X GET "https://<environmenturl>/api/transactions/scheduled_internal"
  -H "X-Api-Key: <your secure token>"
  -H "Content-Type: application/json"

require 'net/http'
require 'uri'
require 'json'

uri = URI.parse("https://<environmenturl>/api/transactions/scheduled_internal") header = {'X-Api-Key' => '<your secure token>', 'Content-Type' => 'application/json'} http = Net::HTTP.new(uri.host, uri.port) http.use_ssl = true request = Net::HTTP::Get.new(uri.request_uri, header) request.body = body.to_json response = http.request(request)

fetch('https://<environmenturl>/api/transactions/scheduled_internal', { method: 'GET', headers: { 'X-Api-Key': '<your secure token>', 'Content-Type': 'application/json' }, body: JSON.stringify(data) }) .then(response => response.json()) .then(data => console.log(data)) .catch(error => console.error(error));

SUCCESS RESPONSE The request returns JSON structured like below

{
    "status": true,
    "total_count": 2,
    "total_amount": "4000000.0",
    "transactions": [
        {
            "txn_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
            "txn_initiator": "Akshay Rangnekar",
            "entity_id": "ABC12",
            "amount": "2000000.0",
            "payment_method": "RTGS",
            "scheduled_name": "Water Bill",
            "category": "Internal",
            "type_of_transactions": "Internal Transaction",
            "confidential_transaction": "N",
            "transaction_start_date": "2025-02-26",
            "transaction_end_date": "2026-02-26",
            "transaction_month": "February",
            "frequency": "yearly",
            "occurrences": 2,
            "slot": "10:00 AM - 12:00 PM",
            "lifecycle_status": "pending",
            "internal_transaction_ids": [],
            "approved": "N",
            "approved_at": 1740628066,
            "rejected": "N",
            "rejected_at": 0,
            "deleted": "N",
            "deleted_at": 0,
            "internal_account_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
            "internal_account_name": "Q2pay",
            "internal_account_bank_acc_no": "9234567892",
            "internal_account_ifsc_code": "HDFC0000225",
            "internal_account_bank_name": "HDFC Bank",
            "internal_account_approval_status": "approved",
            "owner_account_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
            "owner_account_bank_acc_no": "1234567893",
            "owner_account_ifsc_code": "ICIC0001953",
            "owner_account_bank_name": "ICICI Bank",
            "owner_account_type": "Current Account",
            "owner_account_balance": "500.0",
            "owner_account_balance_last_fetched_at": 1709537290,
            "owner_account_balance_last_fetched_at_in_words": "12 months ago",
            "additional_data": {
                "data": [
                    {
                        "name": "month",
                        "value": "Mon",
                        "position": 1,
                        "data_type": "string",
                        "mandatory": "Y"
                    },
                    {
                        "name": "leaves",
                        "value": 67,
                        "position": 2,
                        "data_type": "numeric",
                        "mandatory": "Y"
                    },
                    {
                        "name": "PAN",
                        "position": 3,
                        "data_type": "string",
                        "mandatory": "N"
                    },
                    {
                        "data": [
                            "Pradeep",
                            "Sachin",
                            "Sewaram"
                        ],
                        "name": "Accountants",
                        "value": "Sachin",
                        "position": 4,
                        "data_type": "list",
                        "mandatory": "Y"
                    },
                    {
                        "name": "Time",
                        "value": "09:38",
                        "position": 5,
                        "data_type": "time",
                        "mandatory": "Y"
                    },
                    {
                        "name": "Day",
                        "value": "Monday",
                        "position": 6,
                        "data_type": "day",
                        "mandatory": "Y"
                    },
                    {
                        "name": "Dummy",
                        "value": false,
                        "position": 7,
                        "data_type": "toggle",
                        "mandatory": "Y"
                    },
                    {
                        "name": "Month",
                        "value": "April",
                        "position": 8,
                        "data_type": "month",
                        "mandatory": "Y"
                    },
                    {
                        "name": "Hyperlink",
                        "value": "https://nxtapi.q2pay.co.in/api/transaction/beneficiary",
                        "position": 9,
                        "data_type": "hyperlink",
                        "mandatory": "Y"
                    },
                     {
                    "name": "File",
                    "position": 10,
                    "data_type": "upload",
                    "mandatory": "Y",
                    "value": {
                        "id": "c68cc4e7d54381cc46384f194c09ce2c.png",
                        "storage": "cache",
                        "metadata": {
                        "filename": "favicon.png",
                        "size": 62260,
                        "mime_type": "image/png"
                        },
                        "file_url": "https://your-bucket.s3.amazonaws.com/store/c68cc4e7d54381cc46384f194c09ce2c.png"
                     }
                    },
                    {
                        "name": "Date",
                        "value": "23/01/2023",
                        "position": 11,
                        "data_type": "date",
                        "mandatory": "Y"
                    },
                    {
                        "name": "Year",
                        "value": "2023",
                        "position": 12,
                        "data_type": "year",
                        "mandatory": "Y"
                    },
                    {
                        "name": "Month/Year",
                        "value": "03/2023",
                        "position": 13,
                        "data_type": "month_year",
                        "mandatory": "Y"
                    },
                    {
                        "data": [
                            "Nikhi",
                            "Jitendra",
                            "Akash",
                            "Neha",
                            "Ajinkya",
                            "Anuj"
                        ],
                        "name": "Engineer",
                        "value": [
                            "Ajinkya",
                            "Anuj"
                        ],
                        "position": 14,
                        "data_type": "multi_select_list",
                        "mandatory": "Y"
                    },
                    {
                        "name": "Quantity",
                        "value": 5,
                        "position": 15,
                        "data_type": "quantity",
                        "mandatory": "Y"
                    },
                    {
                        "name": "DateRange",
                        "value": {
                            "end_date": "21/09/2024",
                            "start_date": "21/08/2023"
                        },
                        "position": 16,
                        "data_type": "date_range",
                        "mandatory": "Y"
                    },
                    {
                        "name": "YearRange",
                        "value": {
                            "to": 2034,
                            "from": 2030
                        },
                        "position": 17,
                        "data_type": "from_year_to_year",
                        "mandatory": "Y"
                    }
                ]
            },
            "created_on": 1740628066,
            "last_updated_user_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
            "last_updated_status": "Created",
            "last_updated_timestamp": 1740628066,
            "last_updated_user_name": "Akshay Rangnekar",
            "logs": [
                {
                    "brand": "Android",
                    "model": "Android SDK built for x86",
                    "action": "Created",
                    "user_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
                    "platform": "android",
                    "last_name": "Rangnekar",
                    "last_used": "2025-02-27T03:47:46.413Z",
                    "timestamp": "2025-02-27T03:47:46.478Z",
                    "first_name": "Akshay",
                    "ip_address": "127.0.0.1",
                    "is_primary": false,
                    "os_version": "6.0",
                    "request_ip": "127.0.0.1",
                    "is_verified": false,
                    "sdk_version": "23",
                    "manufacturer": "unknown",
                    "serial_number": "EMULATOR32X1X14X0",
                    "logged_in_flag": false,
                    "logged_in_time": "2025-02-27T03:41:19.226Z",
                    "user_full_name": "Akshay Rangnekar",
                    "app_version_code": "54",
                    "app_version_name": "1.43"
                }
            ]
        },
        {
            "txn_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
            "txn_initiator": "Akshay Rangnekar",
            "entity_id": "ABC12",
            "amount": "2000000.0",
            "payment_method": "RTGS",
            "scheduled_name": "Water Bill",
            "category": "Internal",
            "type_of_transactions": "Internal Transaction",
            "confidential_transaction": "N",
            "transaction_start_date": "2025-02-26",
            "transaction_end_date": "2026-02-26",
            "transaction_day": "Wednesday",
            "frequency": "weekly",
            "occurrences": 53,
            "slot": "10:00 AM - 12:00 PM",
            "lifecycle_status": "approved",
            "internal_transaction_ids": [],
            "approved": "Y",
            "approved_at": 1740569346,
            "rejected": "N",
            "rejected_at": 0,
            "deleted": "N",
            "deleted_at": 0,
            "internal_account_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
            "internal_account_name": "Q2pay",
            "internal_account_bank_acc_no": "9234567892",
            "internal_account_ifsc_code": "HDFC0000225",
            "internal_account_bank_name": "HDFC Bank",
            "internal_account_approval_status": "approved",
            "owner_account_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
            "owner_account_bank_acc_no": "1234567893",
            "owner_account_ifsc_code": "ICIC0001953",
            "owner_account_bank_name": "ICICI Bank",
            "owner_account_type": "Current Account",
            "owner_account_balance": "500.0",
            "owner_account_balance_last_fetched_at": 1709537290,
            "owner_account_balance_last_fetched_at_in_words": "12 months ago",
            "additional_data": {
                "data": [
                    {
                        "name": "month",
                        "value": "Mon",
                        "position": 1,
                        "data_type": "string",
                        "mandatory": "Y"
                    },
                    {
                        "name": "leaves",
                        "value": 67,
                        "position": 2,
                        "data_type": "numeric",
                        "mandatory": "Y"
                    },
                    {
                        "name": "PAN",
                        "position": 3,
                        "data_type": "string",
                        "mandatory": "N"
                    },
                    {
                        "data": [
                            "Pradeep",
                            "Sachin",
                            "Sewaram"
                        ],
                        "name": "Accountants",
                        "value": "Sachin",
                        "position": 4,
                        "data_type": "list",
                        "mandatory": "Y"
                    },
                    {
                        "name": "Time",
                        "value": "09:38",
                        "position": 5,
                        "data_type": "time",
                        "mandatory": "Y"
                    },
                    {
                        "name": "Day",
                        "value": "Monday",
                        "position": 6,
                        "data_type": "day",
                        "mandatory": "Y"
                    },
                    {
                        "name": "Dummy",
                        "value": false,
                        "position": 7,
                        "data_type": "toggle",
                        "mandatory": "Y"
                    },
                    {
                        "name": "Month",
                        "value": "April",
                        "position": 8,
                        "data_type": "month",
                        "mandatory": "Y"
                    },
                    {
                        "name": "Hyperlink",
                        "value": "https://nxtapi.q2pay.co.in/api/transaction/beneficiary",
                        "position": 9,
                        "data_type": "hyperlink",
                        "mandatory": "Y"
                    },
                     {
            "name": "File",
            "position": 10,
            "data_type": "upload",
            "mandatory": "Y",
              "value": {
                "id": "c68cc4e7d54381cc46384f194c09ce2c.png",
                "storage": "cache",
                "metadata": {
                  "filename": "favicon.png",
                  "size": 62260,
                  "mime_type": "image/png"
                },
                "file_url": "https://your-bucket.s3.amazonaws.com/store/c68cc4e7d54381cc46384f194c09ce2c.png"
              }
            },
                    {
                        "name": "Date",
                        "value": "23/01/2023",
                        "position": 11,
                        "data_type": "date",
                        "mandatory": "Y"
                    },
                    {
                        "name": "Year",
                        "value": "2023",
                        "position": 12,
                        "data_type": "year",
                        "mandatory": "Y"
                    },
                    {
                        "name": "Month/Year",
                        "value": "03/2023",
                        "position": 13,
                        "data_type": "month_year",
                        "mandatory": "Y"
                    },
                    {
                        "data": [
                            "Nikhi",
                            "Jitendra",
                            "Akash",
                            "Neha",
                            "Ajinkya",
                            "Anuj"
                        ],
                        "name": "Engineer",
                        "value": [
                            "Ajinkya",
                            "Anuj"
                        ],
                        "position": 14,
                        "data_type": "multi_select_list",
                        "mandatory": "Y"
                    },
                    {
                        "name": "Quantity",
                        "value": 5,
                        "position": 15,
                        "data_type": "quantity",
                        "mandatory": "Y"
                    },
                    {
                        "name": "DateRange",
                        "value": {
                            "end_date": "21/09/2024",
                            "start_date": "21/08/2023"
                        },
                        "position": 16,
                        "data_type": "date_range",
                        "mandatory": "Y"
                    },
                    {
                        "name": "YearRange",
                        "value": {
                            "to": 2034,
                            "from": 2030
                        },
                        "position": 17,
                        "data_type": "from_year_to_year",
                        "mandatory": "Y"
                    }
                ]
            },
            "created_on": 1740569347,
            "last_updated_user_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
            "last_updated_status": "Approved",
            "last_updated_timestamp": 1740569346,
            "last_updated_user_name": "Akshay Rangnekar",
            "logs": [
                {
                    "brand": "Android",
                    "model": "Android SDK built for x86",
                    "action": "Created",
                    "user_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
                    "platform": "android",
                    "last_name": "Rangnekar",
                    "last_used": "2025-02-26T11:29:06.934Z",
                    "timestamp": "2025-02-26T11:29:06.962Z",
                    "first_name": "Akshay",
                    "ip_address": "127.0.0.1",
                    "is_primary": false,
                    "os_version": "6.0",
                    "request_ip": "127.0.0.1",
                    "is_verified": false,
                    "sdk_version": "23",
                    "manufacturer": "unknown",
                    "serial_number": "EMULATOR32X1X14X0",
                    "logged_in_flag": false,
                    "logged_in_time": "2025-02-26T11:03:29.977Z",
                    "user_full_name": "Akshay Rangnekar",
                    "app_version_code": "54",
                    "app_version_name": "1.43"
                },
                {
                    "brand": "Android",
                    "model": "Android SDK built for x86",
                    "action": "Approved",
                    "user_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
                    "platform": "android",
                    "last_name": "Rangnekar",
                    "last_used": "2025-02-26T11:29:06.934Z",
                    "timestamp": "2025-02-26T11:29:06.983Z",
                    "first_name": "Akshay",
                    "ip_address": "127.0.0.1",
                    "is_primary": false,
                    "os_version": "6.0",
                    "request_ip": "127.0.0.1",
                    "is_verified": false,
                    "sdk_version": "23",
                    "manufacturer": "unknown",
                    "serial_number": "EMULATOR32X1X14X0",
                    "final_approval": true,
                    "logged_in_flag": false,
                    "logged_in_time": "2025-02-26T11:03:29.977Z",
                    "user_full_name": "Akshay Rangnekar",
                    "app_version_code": "54",
                    "app_version_name": "1.43"
                }
            ]
        }
    ],
    "title": {
        "records": 2,
        "current_page": 1,
        "total_pages": 1,
        "page_item_count": 50
    }
}

This endpoint retrieves all scheduled internal transactions.

UAT HTTP Request

GET https://nxt.api.q2pay.co.in/api/transactions/scheduled_internal

PRODUCTION HTTP Request

GET https://nxt.api.q2pay.in/api/transactions/scheduled_internal

Query Parameters

Parameter Default Description Required Sample
amount N.A. amount for scheduled internal transaction optional 67000.0
lifecycle_status N.A. lifecycle status for scheduled internal transaction optional pending, approved, rejected, deleted
frequency N.A. frequency for scheduled internal transaction optional once,daily,weekly,fortnightly,monthly,quarterly,half_yearly,yearly
occurrences N.A. occurrences for scheduled internal transaction optional 1,2,53
slot N.A. slot for scheduled internal transaction optional 10:00 AM - 12:00 PM,12:01 PM - 15:00 PM,15:01 PM - 18:00 PM
transaction_day N.A. transaction day for scheduled internal transaction optional Monday to Sunday
transaction_month N.A. transaction month for scheduled internal transaction optional January to December
transaction_start_date N.A. transaction start date for scheduled internal transaction optional 26-02-2025
transaction_end_date N.A. transaction end date for scheduled internal transaction optional 26-02-2026
txn_id N.A. txn_id of scheduled internal transaction optional [xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxx,xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxx]
internal_transaction_ids N.A. Internal transaction ids for scheduled internal transaction optional [xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxx,xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxx]
payment_method N.A. payment method for scheduled internal transaction optional NEFT,IMPS,RTGS
category N.A category for scheduled internal transaction optional Internal
internal_account_id N.A. internal account id for scheduled internal transaction optional "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxx"
owner_account_id N.A. owner account id for scheduled internal transaction optional "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxx"
internal_account_ids N.A. internal account ids for scheduled internal transaction optional [xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxx ,xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxx]
owner_account_ids N.A. owner account ids for scheduled internal transaction optional [xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxx ,xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxx]
confidential_transaction N.A confidential transaction for scheduled internal transaction optional "Y","N"
start_date,end_date N.A start date and end date for scheduled internal transaction optional xxxxxxxx,xxxxxxxx
category_name, category_value N.A category name and category value is filter on additional data of name and value of scheduled internal transaction optional name, month or value, Mon
scheduled_name N.A Scheduled name for scheduled internal transaction optional "Water Bill"

Service Details

Service ID Description
IVScheduledTxn View All Scheduled Internal Transactions
VAccountBalance View Balance of Owner Account
VConfidentialTxn View Confidential Transactions

Get Specific Scheduled Internal Transactions

curl -X GET "https://<environmenturl>/api/transactions/scheduled_internal/:id"
  -H "X-Api-Key: <your secure token>"
  -H "Content-Type: application/json"

require 'net/http'
require 'uri'
require 'json'

uri = URI.parse("https://<environmenturl>/api/transactions/scheduled_internal/:id") header = {'X-Api-Key' => '<your secure token>', 'Content-Type' => 'application/json'} http = Net::HTTP.new(uri.host, uri.port) http.use_ssl = true request = Net::HTTP::Get.new(uri.request_uri, header) request.body = body.to_json response = http.request(request)

fetch('https://<environmenturl>/api/transactions/scheduled_internal/:id', { method: 'GET', headers: { 'X-Api-Key': '<your secure token>', 'Content-Type': 'application/json' }, body: JSON.stringify(data) }) .then(response => response.json()) .then(data => console.log(data)) .catch(error => console.error(error));

SUCCESS RESPONSE The request returns JSON structured like below

{
    "status": true,
    "total_count": 1,
    "total_amount": "2000000.0",
    "transaction": [
        {
            "txn_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
            "txn_initiator": "Akshay Rangnekar",
            "entity_id": "ABC12",
            "amount": "2000000.0",
            "payment_method": "RTGS",
            "scheduled_name": "Water Bill",
            "category": "Internal",
            "type_of_transactions": "Internal Transaction",
            "confidential_transaction": "N",
            "transaction_start_date": "2025-02-26",
            "transaction_end_date": "2026-02-26",
            "transaction_day": "Wednesday",
            "frequency": "weekly",
            "occurrences": 53,
            "slot": "10:00 AM - 12:00 PM",
            "lifecycle_status": "approved",
            "internal_transaction_ids": [],
            "approved": "Y",
            "approved_at": 1740582073,
            "rejected": "N",
            "rejected_at": 0,
            "deleted": "N",
            "deleted_at": 0,
            "internal_account_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
            "internal_account_name": "Q2pay",
            "internal_account_bank_acc_no": "9234567892",
            "internal_account_ifsc_code": "HDFC0000225",
            "internal_account_bank_name": "HDFC Bank",
            "internal_account_approval_status": "approved",
            "owner_account_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
            "owner_account_bank_acc_no": "1234567893",
            "owner_account_ifsc_code": "ICIC0001953",
            "owner_account_bank_name": "ICICI Bank",
            "owner_account_type": "Current Account",
            "owner_account_balance": "500.0",
            "owner_account_balance_last_fetched_at": 1709537290,
            "owner_account_balance_last_fetched_at_in_words": "12 months ago",
            "additional_data": {
                "data": [
                    {
                        "name": "month",
                        "value": "Mon",
                        "position": 1,
                        "data_type": "string",
                        "mandatory": "Y"
                    },
                    {
                        "name": "leaves",
                        "value": 67,
                        "position": 2,
                        "data_type": "numeric",
                        "mandatory": "Y"
                    },
                    {
                        "name": "PAN",
                        "position": 3,
                        "data_type": "string",
                        "mandatory": "N"
                    },
                    {
                        "data": [
                            "Pradeep",
                            "Sachin",
                            "Sewaram"
                        ],
                        "name": "Accountants",
                        "value": "Sachin",
                        "position": 4,
                        "data_type": "list",
                        "mandatory": "Y"
                    },
                    {
                        "name": "Time",
                        "value": "09:38",
                        "position": 5,
                        "data_type": "time",
                        "mandatory": "Y"
                    },
                    {
                        "name": "Day",
                        "value": "Monday",
                        "position": 6,
                        "data_type": "day",
                        "mandatory": "Y"
                    },
                    {
                        "name": "Dummy",
                        "value": false,
                        "position": 7,
                        "data_type": "toggle",
                        "mandatory": "Y"
                    },
                    {
                        "name": "Month",
                        "value": "April",
                        "position": 8,
                        "data_type": "month",
                        "mandatory": "Y"
                    },
                    {
                        "name": "Hyperlink",
                        "value": "https://nxtapi.q2pay.co.in/api/transaction/beneficiary",
                        "position": 9,
                        "data_type": "hyperlink",
                        "mandatory": "Y"
                    },
                    {
                    "name": "File",
                    "position": 10,
                    "data_type": "upload",
                    "mandatory": "Y",
                    "value": {
                        "id": "c68cc4e7d54381cc46384f194c09ce2c.png",
                        "storage": "cache",
                        "metadata": {
                        "filename": "favicon.png",
                        "size": 62260,
                        "mime_type": "image/png"
                        },
                        "file_url": "https://your-bucket.s3.amazonaws.com/store/c68cc4e7d54381cc46384f194c09ce2c.png"
                    }
                    },
                    {
                        "name": "Date",
                        "value": "23/01/2023",
                        "position": 11,
                        "data_type": "date",
                        "mandatory": "Y"
                    },
                    {
                        "name": "Year",
                        "value": "2023",
                        "position": 12,
                        "data_type": "year",
                        "mandatory": "Y"
                    },
                    {
                        "name": "Month/Year",
                        "value": "03/2023",
                        "position": 13,
                        "data_type": "month_year",
                        "mandatory": "Y"
                    },
                    {
                        "data": [
                            "Nikhi",
                            "Jitendra",
                            "Akash",
                            "Neha",
                            "Ajinkya",
                            "Anuj"
                        ],
                        "name": "Engineer",
                        "value": [
                            "Ajinkya",
                            "Anuj"
                        ],
                        "position": 14,
                        "data_type": "multi_select_list",
                        "mandatory": "Y"
                    },
                    {
                        "name": "Quantity",
                        "value": 5,
                        "position": 15,
                        "data_type": "quantity",
                        "mandatory": "Y"
                    },
                    {
                        "name": "DateRange",
                        "value": {
                            "end_date": "21/09/2024",
                            "start_date": "21/08/2023"
                        },
                        "position": 16,
                        "data_type": "date_range",
                        "mandatory": "Y"
                    },
                    {
                        "name": "YearRange",
                        "value": {
                            "to": 2034,
                            "from": 2030
                        },
                        "position": 17,
                        "data_type": "from_year_to_year",
                        "mandatory": "Y"
                    }
                ]
            },
            "created_on": 1740582073,
            "last_updated_user_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
            "last_updated_status": "Approved",
            "last_updated_timestamp": 1740582073,
            "last_updated_user_name": "Akshay Rangnekar",
            "logs": [
                {
                    "brand": "Android",
                    "model": "Android SDK built for x86",
                    "action": "Created",
                    "user_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
                    "platform": "android",
                    "last_name": "Rangnekar",
                    "last_used": "2025-02-26T15:01:13.642Z",
                    "timestamp": "2025-02-26T15:01:13.675Z",
                    "first_name": "Akshay",
                    "ip_address": "127.0.0.1",
                    "is_primary": false,
                    "os_version": "6.0",
                    "request_ip": "127.0.0.1",
                    "is_verified": false,
                    "sdk_version": "23",
                    "manufacturer": "unknown",
                    "serial_number": "EMULATOR32X1X14X0",
                    "logged_in_flag": false,
                    "logged_in_time": "2025-02-26T11:03:29.977Z",
                    "user_full_name": "Akshay Rangnekar",
                    "app_version_code": "54",
                    "app_version_name": "1.43"
                },
                {
                    "brand": "Android",
                    "model": "Android SDK built for x86",
                    "action": "Approved",
                    "user_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
                    "platform": "android",
                    "last_name": "Rangnekar",
                    "last_used": "2025-02-26T15:01:13.642Z",
                    "timestamp": "2025-02-26T15:01:13.699Z",
                    "first_name": "Akshay",
                    "ip_address": "127.0.0.1",
                    "is_primary": false,
                    "os_version": "6.0",
                    "request_ip": "127.0.0.1",
                    "is_verified": false,
                    "sdk_version": "23",
                    "manufacturer": "unknown",
                    "serial_number": "EMULATOR32X1X14X0",
                    "final_approval": true,
                    "logged_in_flag": false,
                    "logged_in_time": "2025-02-26T11:03:29.977Z",
                    "user_full_name": "Akshay Rangnekar",
                    "app_version_code": "54",
                    "app_version_name": "1.43"
                }
            ]
        }
    ],
    "title": {
        "records": 1,
        "current_page": 1,
        "total_pages": 1,
        "page_item_count": 1
    }
}

SUCCESS RESPONSE The request returns JSON structured like below

{
    "status": true,
    "total_count": 1,
    "total_amount": "2000000.0", 
    "transaction": [
        {
            "txn_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
            "txn_initiator": "Akshay Rangnekar",
            "entity_id": "ABC12",
            "amount": "2000000.0",
            "payment_method": "RTGS",
            "scheduled_name": "Water Bill",
            "category": "Internal",
            "type_of_transactions": "Internal Transaction",
            "confidential_transaction": "N",
            "transaction_start_date": "2025-02-26",
            "transaction_end_date": "2026-02-26",
            "transaction_month": "February",
            "frequency": "yearly",
            "occurrences": 2,
            "slot": "10:00 AM - 12:00 PM",
            "lifecycle_status": "approved",
            "internal_transaction_ids": [],
            "approved": "Y",
            "approved_at": 1740582073,
            "rejected": "N",
            "rejected_at": 0,
            "deleted": "N",
            "deleted_at": 0,
            "internal_account_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
            "internal_account_name": "Q2pay",
            "internal_account_bank_acc_no": "9234567892",
            "internal_account_ifsc_code": "HDFC0000225",
            "internal_account_bank_name": "HDFC Bank",
            "internal_account_approval_status": "approved",
            "owner_account_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
            "owner_account_bank_acc_no": "1234567893",
            "owner_account_ifsc_code": "ICIC0001953",
            "owner_account_bank_name": "ICICI Bank",
            "owner_account_type": "Current Account",
            "owner_account_balance": "500.0",
            "owner_account_balance_last_fetched_at": 1709537290,
            "owner_account_balance_last_fetched_at_in_words": "12 months ago",
            "additional_data": {
                "data": [
                    {
                        "name": "month",
                        "value": "Mon",
                        "position": 1,
                        "data_type": "string",
                        "mandatory": "Y"
                    },
                    {
                        "name": "leaves",
                        "value": 67,
                        "position": 2,
                        "data_type": "numeric",
                        "mandatory": "Y"
                    },
                    {
                        "name": "PAN",
                        "position": 3,
                        "data_type": "string",
                        "mandatory": "N"
                    },
                    {
                        "data": [
                            "Pradeep",
                            "Sachin",
                            "Sewaram"
                        ],
                        "name": "Accountants",
                        "value": "Sachin",
                        "position": 4,
                        "data_type": "list",
                        "mandatory": "Y"
                    },
                    {
                        "name": "Time",
                        "value": "09:38",
                        "position": 5,
                        "data_type": "time",
                        "mandatory": "Y"
                    },
                    {
                        "name": "Day",
                        "value": "Monday",
                        "position": 6,
                        "data_type": "day",
                        "mandatory": "Y"
                    },
                    {
                        "name": "Dummy",
                        "value": false,
                        "position": 7,
                        "data_type": "toggle",
                        "mandatory": "Y"
                    },
                    {
                        "name": "Month",
                        "value": "April",
                        "position": 8,
                        "data_type": "month",
                        "mandatory": "Y"
                    },
                    {
                        "name": "Hyperlink",
                        "value": "https://nxtapi.q2pay.co.in/api/transaction/beneficiary",
                        "position": 9,
                        "data_type": "hyperlink",
                        "mandatory": "Y"
                    },
                     {
            "name": "File",
            "position": 10,
            "data_type": "upload",
            "mandatory": "Y",
              "value": {
                "id": "c68cc4e7d54381cc46384f194c09ce2c.png",
                "storage": "cache",
                "metadata": {
                  "filename": "favicon.png",
                  "size": 62260,
                  "mime_type": "image/png"
                },
                "file_url": "https://your-bucket.s3.amazonaws.com/store/c68cc4e7d54381cc46384f194c09ce2c.png"
              }
            },
                    {
                        "name": "Date",
                        "value": "23/01/2023",
                        "position": 11,
                        "data_type": "date",
                        "mandatory": "Y"
                    },
                    {
                        "name": "Year",
                        "value": "2023",
                        "position": 12,
                        "data_type": "year",
                        "mandatory": "Y"
                    },
                    {
                        "name": "Month/Year",
                        "value": "03/2023",
                        "position": 13,
                        "data_type": "month_year",
                        "mandatory": "Y"
                    },
                    {
                        "data": [
                            "Nikhi",
                            "Jitendra",
                            "Akash",
                            "Neha",
                            "Ajinkya",
                            "Anuj"
                        ],
                        "name": "Engineer",
                        "value": [
                            "Ajinkya",
                            "Anuj"
                        ],
                        "position": 14,
                        "data_type": "multi_select_list",
                        "mandatory": "Y"
                    },
                    {
                        "name": "Quantity",
                        "value": 5,
                        "position": 15,
                        "data_type": "quantity",
                        "mandatory": "Y"
                    },
                    {
                        "name": "DateRange",
                        "value": {
                            "end_date": "21/09/2024",
                            "start_date": "21/08/2023"
                        },
                        "position": 16,
                        "data_type": "date_range",
                        "mandatory": "Y"
                    },
                    {
                        "name": "YearRange",
                        "value": {
                            "to": 2034,
                            "from": 2030
                        },
                        "position": 17,
                        "data_type": "from_year_to_year",
                        "mandatory": "Y"
                    }
                ]
            },
            "created_on": 1740582073,
            "last_updated_user_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
            "last_updated_status": "Approved",
            "last_updated_timestamp": 1740582073,
            "last_updated_user_name": "Akshay Rangnekar",
            "logs": [
                {
                    "brand": "Android",
                    "model": "Android SDK built for x86",
                    "action": "Created",
                    "user_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
                    "platform": "android",
                    "last_name": "Rangnekar",
                    "last_used": "2025-02-26T15:01:13.642Z",
                    "timestamp": "2025-02-26T15:01:13.675Z",
                    "first_name": "Akshay",
                    "ip_address": "127.0.0.1",
                    "is_primary": false,
                    "os_version": "6.0",
                    "request_ip": "127.0.0.1",
                    "is_verified": false,
                    "sdk_version": "23",
                    "manufacturer": "unknown",
                    "serial_number": "EMULATOR32X1X14X0",
                    "logged_in_flag": false,
                    "logged_in_time": "2025-02-26T11:03:29.977Z",
                    "user_full_name": "Akshay Rangnekar",
                    "app_version_code": "54",
                    "app_version_name": "1.43"
                },
                {
                    "brand": "Android",
                    "model": "Android SDK built for x86",
                    "action": "Approved",
                    "user_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
                    "platform": "android",
                    "last_name": "Rangnekar",
                    "last_used": "2025-02-26T15:01:13.642Z",
                    "timestamp": "2025-02-26T15:01:13.699Z",
                    "first_name": "Akshay",
                    "ip_address": "127.0.0.1",
                    "is_primary": false,
                    "os_version": "6.0",
                    "request_ip": "127.0.0.1",
                    "is_verified": false,
                    "sdk_version": "23",
                    "manufacturer": "unknown",
                    "serial_number": "EMULATOR32X1X14X0",
                    "final_approval": true,
                    "logged_in_flag": false,
                    "logged_in_time": "2025-02-26T11:03:29.977Z",
                    "user_full_name": "Akshay Rangnekar",
                    "app_version_code": "54",
                    "app_version_name": "1.43"
                }
            ]
        }
    ],
    "title": {
        "records": 1,
        "current_page": 1,
        "total_pages": 1,
        "page_item_count": 1
    }
}

ERROR RESPONSE The request returns JSON structured like below for errors related scheduled internal transaction

{
    "status": false,
    "errors": {
        "base": [
            "Scheduled internal transaction not present"
        ]
    }
}

This endpoint retrieves specific scheduled internal transactions.

UAT HTTP Request

GET https://nxt.api.q2pay.co.in/api/transactions/scheduled_internal/:id

PRODUCTION HTTP Request

GET https://nxt.api.q2pay.in/api/transactions/scheduled_internal/:id

Service Details

Service ID Description
IVScheduledTxn View Specific Scheduled Internal Transactions

Get Calculate Occurrences of Scheduled Internal Transaction

curl "https://<environmenturl>/api/transactions/scheduled_internal/calculate_occurrences"
  -H "X-Api-Key: <your secure token>"
  -H "Content-Type: application/json"
  -d "{ 
       "transaction_start_date": "2025-02-26",
       "transaction_end_date": "2026-02-26",
       "frequency": "monthly"
  }"
require 'net/http'
require 'uri'
require 'json'

uri = URI.parse("https://<environmenturl>/api/transactions/scheduled_internal/calculate_occurrences") header = {'X-Api-Key' => '<your secure token>', 'Content-Type' => 'application/json'} body = { "transaction_start_date": "2025-02-26", "transaction_end_date": "2026-02-26", "frequency": "monthly" } http = Net::HTTP.new(uri.host, uri.port) http.use_ssl = true request = Net::HTTP::Get.new(uri.request_uri, header) request.body = body.to_json response = http.request(request)

const data = {
        "transaction_start_date": "2025-02-26",
        "transaction_end_date": "2026-02-26",
        "frequency": "monthly"
};

fetch('https://<environmenturl>/api/transactions/scheduled_internal/calculate_occurrences', { method: 'GET', headers: { 'X-Api-Key': '<your secure token>', 'Content-Type': 'application/json' }, body: JSON.stringify(data) }) .then(response => response.json()) .then(data => console.log(data)) .catch(error => console.error(error));

The below example can be sent as a request to the API.

{
  "transaction_start_date": "2025-02-26",
  "transaction_end_date": "2026-02-26",
  "frequency": "monthly"
}

SUCCESS RESPONSE The request returns JSON structured like below

{
    "status": true,
    "occurrences": 13,
    "dates": [
        "2025-02-26",
        "2025-03-26",
        "2025-04-26",
        "2025-05-26",
        "2025-06-26",
        "2025-07-26",
        "2025-08-26",
        "2025-09-26",
        "2025-10-26",
        "2025-11-26",
        "2025-12-26",
        "2026-01-26",
        "2026-02-26"
    ]
}

ERROR RESPONSE The request returns JSON structured like below for errors related scheduled internal transaction

{
    "status": false,
    "errors": "Missing required parameters: frequency, transaction_start_date, transaction_end_date"
}

ERROR RESPONSE The request returns JSON structured like below for errors related scheduled internal transaction

{
    "status": false,
    "errors": "Invalid date format for start or end date"
}

ERROR RESPONSE The request returns JSON structured like below for errors related scheduled internal transaction

{
    "status": false,
    "errors": "Invalid date range for transaction"
}

ERROR RESPONSE The request returns JSON structured like below for errors related scheduled internal transaction

{
    "status": false,
    "errors": "Invalid frequency"
}

This endpoint retrieves calculate occurrence of scheduled internal transaction

UAT HTTP Request

GET https://nxt.api.q2pay.co.in/api/transactions/scheduled_internal/calculate_occurrences

PRODUCTION HTTP Request

GET https://nxt.api.q2pay.in/api/transactions/scheduled_internal/calculate_occurrences

Query Parameters

Parameter Default Description Required Sample
transaction_start_date N.A transaction start date for scheduled internal transaction Yes 2025-02-26
transaction_end_date N.A transaction end date for scheduled internal transaction Yes 2026-02-26
frequency N.A frequency for scheduled internal transaction Yes once,daily,weekly,fortnightly,monthly,quarterly,half_yearly,yearly

Service Details

Service ID Description
IOScheduledTxn Calculate occurrence scheduled internal transaction

Create Scheduled Internal Transactions

curl -X POST "https://<environmenturl>/api/transactions/scheduled_internal"
  -H "X-Api-Key: <your secure token>"
  -H "Content-Type: application/json"
  -d "{ 
    "amount": "2000000",
    "owner_account_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
    "internal_account_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
    "category": "Internal",
    "payment_method":"RTGS",
    "scheduled_name": "Water Bill",
    "frequency": "yearly",
    "occurrences": 2,
    "type_of_transactions": "Internal Transaction",
    "confidential_transaction": "false",
    "transaction_start_date": "26-02-2025",
    "transaction_end_date": "26-02-2026",
    "slot": "10:00 AM - 12:00 PM",
    "additional_data": {
        "data": [
            {
                "data_type": "string",
                "mandatory": "Y",
                "value": "Mon",
                "name": "month",
                "position": 1
            },
            {
                "name": "leaves",
                "position": 2,
                "data_type": "numeric",
                "mandatory": "Y",
                "value": 67
            },
            {
                "name": "PAN",
                "position": 3,
                "data_type": "string",
                "mandatory": "N"
            },
            {
                "name": "Accountants",
                "position": 4,
                "data_type": "list",
                "mandatory": "Y",
                "data": [
                    "Pradeep",
                    "Sachin",
                    "Sewaram"
                ],
                "value": "Sachin"
            },
            {
                "name": "Time",
                "position": 5,
                "data_type": "time",
                "mandatory": "Y",
                "value": "09:38"
            },
            {
                "name": "Day",
                "position": 6,
                "data_type": "day",
                "mandatory": "Y",
                "value": "Monday"
            },
            {
                "name": "Dummy",
                "position": 7,
                "data_type": "toggle",
                "mandatory": "Y",
                "value": false
            },
            {
                "name": "Month",
                "position": 8,
                "data_type": "month",
                "mandatory": "Y",
                "value": "April"
            },
            {
                "name": "Hyperlink",
                "position": 9,
                "data_type": "hyperlink",
                "mandatory": "Y",
                "value": "https://nxtapi.q2pay.co.in/api/transaction/beneficiary"
            },
            {
                "name": "File",
                "position": 10,
                "data_type": "upload",
                "mandatory": "Y",
                "value": {
                    "id": "c68cc4e7d54381cc46384f194c09ce2c.png",
                    "storage": "cache",
                    "metadata": {
                        "filename": "favicon.png",
                        "size": 62260,
                        "mime_type": "image/png"
                    }
                }
            },
            {
                "name": "Date",
                "position": 11,
                "data_type": "date",
                "mandatory": "Y",
                "value": "23/01/2023"
            },
            {
                "name": "Year",
                "position": 12,
                "data_type": "year",
                "mandatory": "Y",
                "value": "2023"
            },
            {
                "mandatory": "Y",
                "position": 13,
                "name": "Month/Year",
                "data_type": "month_year",
                "value": "03/2023"
            },
            {
                "name": "Engineer",
                "position": 14,
                "data_type": "multi_select_list",
                "mandatory": "Y",
                "data": [
                    "Nikhi",
                    "Jitendra",
                    "Akash",
                    "Neha",
                    "Ajinkya",
                    "Anuj"
                ],
                "value": [
                    "Ajinkya",
                    "Anuj"
                ]
            },
            {
                "name": "Quantity",
                "position": 15,
                "data_type": "quantity",
                "mandatory": "Y",
                "value": 5
            },
            {
                "name": "DateRange",
                "position": 16,
                "data_type": "date_range",
                "mandatory": "Y",
                "value": {
                    "end_date": "21/09/2024",
                    "start_date": "21/08/2023"
                }
            },
            {
                "name": "YearRange",
                "position": 17,
                "data_type": "from_year_to_year",
                "mandatory": "Y",
                "value": {
                    "to": 2034,
                    "from": 2030
                }
            }
        ]
    }
 }"
require 'net/http'
require 'uri'
require 'json'

uri = URI.parse("https://<environmenturl>/api/transactions/scheduled_internal") header = {'X-Api-Key' => '<your secure token>', 'Content-Type' => 'application/json'} body = { "amount": "2000000", "owner_account_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx", "internal_account_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx", "category": "Internal", "payment_method":"RTGS", "scheduled_name": "Water Bill", "frequency": "yearly", "occurrences": 2, "type_of_transactions": "Internal Transaction", "confidential_transaction": "false", "transaction_start_date": "26-02-2025", "transaction_end_date": "26-02-2026", "slot": "10:00 AM - 12:00 PM", "additional_data": { "data": [ { "data_type": "string", "mandatory": "Y", "value": "Mon", "name": "month", "position": 1 }, { "name": "leaves", "position": 2, "data_type": "numeric", "mandatory": "Y", "value": 67 }, { "name": "PAN", "position": 3, "data_type": "string", "mandatory": "N" }, { "name": "Accountants", "position": 4, "data_type": "list", "mandatory": "Y", "data": [ "Pradeep", "Sachin", "Sewaram" ], "value": "Sachin" }, { "name": "Time", "position": 5, "data_type": "time", "mandatory": "Y", "value": "09:38" }, { "name": "Day", "position": 6, "data_type": "day", "mandatory": "Y", "value": "Monday" }, { "name": "Dummy", "position": 7, "data_type": "toggle", "mandatory": "Y", "value": false }, { "name": "Month", "position": 8, "data_type": "month", "mandatory": "Y", "value": "April" }, { "name": "Hyperlink", "position": 9, "data_type": "hyperlink", "mandatory": "Y", "value": "https://nxtapi.q2pay.co.in/api/transaction/beneficiary" }, { "name": "File", "position": 10, "data_type": "upload", "mandatory": "Y", "value": { "id": "c68cc4e7d54381cc46384f194c09ce2c.png", "storage": "cache", "metadata": { "filename": "favicon.png", "size": 62260, "mime_type": "image/png" } } }, { "name": "Date", "position": 11, "data_type": "date", "mandatory": "Y", "value": "23/01/2023" }, { "name": "Year", "position": 12, "data_type": "year", "mandatory": "Y", "value": "2023" }, { "mandatory": "Y", "position": 13, "name": "Month/Year", "data_type": "month_year", "value": "03/2023" }, { "name": "Engineer", "position": 14, "data_type": "multi_select_list", "mandatory": "Y", "data": [ "Nikhi", "Jitendra", "Akash", "Neha", "Ajinkya", "Anuj" ], "value": [ "Ajinkya", "Anuj" ] }, { "name": "Quantity", "position": 15, "data_type": "quantity", "mandatory": "Y", "value": 5 }, { "name": "DateRange", "position": 16, "data_type": "date_range", "mandatory": "Y", "value": { "end_date": "21/09/2024", "start_date": "21/08/2023" } }, { "name": "YearRange", "position": 17, "data_type": "from_year_to_year", "mandatory": "Y", "value": { "to": 2034, "from": 2030 } } ] } } http = Net::HTTP.new(uri.host, uri.port) http.use_ssl = true request = Net::HTTP::Post.new(uri.request_uri, header) request.body = body.to_json response = http.request(request)

const data = {
    "amount": "2000000",
    "owner_account_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
    "internal_account_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
    "category": "Internal",
    "payment_method":"RTGS",
    "scheduled_name": "Water Bill",
    "frequency": "yearly",
    "occurrences": 2,
    "type_of_transactions": "Internal Transaction",
    "confidential_transaction": "false",
    "transaction_start_date": "26-02-2025",
    "transaction_end_date": "26-02-2026",
    "slot": "10:00 AM - 12:00 PM",
    "additional_data": {
        "data": [
            {
                "data_type": "string",
                "mandatory": "Y",
                "value": "Mon",
                "name": "month",
                "position": 1
            },
            {
                "name": "leaves",
                "position": 2,
                "data_type": "numeric",
                "mandatory": "Y",
                "value": 67
            },
            {
                "name": "PAN",
                "position": 3,
                "data_type": "string",
                "mandatory": "N"
            },
            {
                "name": "Accountants",
                "position": 4,
                "data_type": "list",
                "mandatory": "Y",
                "data": [
                    "Pradeep",
                    "Sachin",
                    "Sewaram"
                ],
                "value": "Sachin"
            },
            {
                "name": "Time",
                "position": 5,
                "data_type": "time",
                "mandatory": "Y",
                "value": "09:38"
            },
            {
                "name": "Day",
                "position": 6,
                "data_type": "day",
                "mandatory": "Y",
                "value": "Monday"
            },
            {
                "name": "Dummy",
                "position": 7,
                "data_type": "toggle",
                "mandatory": "Y",
                "value": false
            },
            {
                "name": "Month",
                "position": 8,
                "data_type": "month",
                "mandatory": "Y",
                "value": "April"
            },
            {
                "name": "Hyperlink",
                "position": 9,
                "data_type": "hyperlink",
                "mandatory": "Y",
                "value": "https://nxtapi.q2pay.co.in/api/transaction/beneficiary"
            },
            {
                "name": "File",
                "position": 10,
                "data_type": "upload",
                "mandatory": "Y",
                "value": {
                    "id": "c68cc4e7d54381cc46384f194c09ce2c.png",
                    "storage": "cache",
                    "metadata": {
                        "filename": "favicon.png",
                        "size": 62260,
                        "mime_type": "image/png"
                    }
                }
            },
            {
                "name": "Date",
                "position": 11,
                "data_type": "date",
                "mandatory": "Y",
                "value": "23/01/2023"
            },
            {
                "name": "Year",
                "position": 12,
                "data_type": "year",
                "mandatory": "Y",
                "value": "2023"
            },
            {
                "mandatory": "Y",
                "position": 13,
                "name": "Month/Year",
                "data_type": "month_year",
                "value": "03/2023"
            },
            {
                "name": "Engineer",
                "position": 14,
                "data_type": "multi_select_list",
                "mandatory": "Y",
                "data": [
                    "Nikhi",
                    "Jitendra",
                    "Akash",
                    "Neha",
                    "Ajinkya",
                    "Anuj"
                ],
                "value": [
                    "Ajinkya",
                    "Anuj"
                ]
            },
            {
                "name": "Quantity",
                "position": 15,
                "data_type": "quantity",
                "mandatory": "Y",
                "value": 5
            },
            {
                "name": "DateRange",
                "position": 16,
                "data_type": "date_range",
                "mandatory": "Y",
                "value": {
                    "end_date": "21/09/2024",
                    "start_date": "21/08/2023"
                }
            },
            {
                "name": "YearRange",
                "position": 17,
                "data_type": "from_year_to_year",
                "mandatory": "Y",
                "value": {
                    "to": 2034,
                    "from": 2030
                }
            }
        ]
    }
};

fetch('https://<environmenturl>/api/transactions/scheduled_internal', { method: 'POST', headers: { 'X-Api-Key': '<your secure token>', 'Content-Type': 'application/json' }, body: JSON.stringify(data) }) .then(response => response.json()) .then(data => console.log(data)) .catch(error => console.error(error));

The below example can be sent as a request to the API.

{
    "amount": "2000000",
    "owner_account_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
    "internal_account_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
    "category": "Internal",
    "payment_method":"RTGS",
    "scheduled_name": "Water Bill",
    "frequency": "yearly",
    "occurrences": 2,
    "type_of_transactions": "Internal Transaction",
    "confidential_transaction": "false",
    "transaction_start_date": "26-02-2025",
    "transaction_end_date": "26-02-2026",
    "slot": "10:00 AM - 12:00 PM",
    "additional_data": {
        "data": [
            {
                "data_type": "string",
                "mandatory": "Y",
                "value": "Mon",
                "name": "month",
                "position": 1
            },
            {
                "name": "leaves",
                "position": 2,
                "data_type": "numeric",
                "mandatory": "Y",
                "value": 67
            },
            {
                "name": "PAN",
                "position": 3,
                "data_type": "string",
                "mandatory": "N"
            },
            {
                "name": "Accountants",
                "position": 4,
                "data_type": "list",
                "mandatory": "Y",
                "data": [
                    "Pradeep",
                    "Sachin",
                    "Sewaram"
                ],
                "value": "Sachin"
            },
            {
                "name": "Time",
                "position": 5,
                "data_type": "time",
                "mandatory": "Y",
                "value": "09:38"
            },
            {
                "name": "Day",
                "position": 6,
                "data_type": "day",
                "mandatory": "Y",
                "value": "Monday"
            },
            {
                "name": "Dummy",
                "position": 7,
                "data_type": "toggle",
                "mandatory": "Y",
                "value": false
            },
            {
                "name": "Month",
                "position": 8,
                "data_type": "month",
                "mandatory": "Y",
                "value": "April"
            },
            {
                "name": "Hyperlink",
                "position": 9,
                "data_type": "hyperlink",
                "mandatory": "Y",
                "value": "https://nxtapi.q2pay.co.in/api/transaction/beneficiary"
            },
            {
                "name": "File",
                "position": 10,
                "data_type": "upload",
                "mandatory": "Y",
                "value": {
                    "id": "c68cc4e7d54381cc46384f194c09ce2c.png",
                    "storage": "cache",
                    "metadata": {
                        "filename": "favicon.png",
                        "size": 62260,
                        "mime_type": "image/png"
                    }
                }
            },
            {
                "name": "Date",
                "position": 11,
                "data_type": "date",
                "mandatory": "Y",
                "value": "23/01/2023"
            },
            {
                "name": "Year",
                "position": 12,
                "data_type": "year",
                "mandatory": "Y",
                "value": "2023"
            },
            {
                "mandatory": "Y",
                "position": 13,
                "name": "Month/Year",
                "data_type": "month_year",
                "value": "03/2023"
            },
            {
                "name": "Engineer",
                "position": 14,
                "data_type": "multi_select_list",
                "mandatory": "Y",
                "data": [
                    "Nikhi",
                    "Jitendra",
                    "Akash",
                    "Neha",
                    "Ajinkya",
                    "Anuj"
                ],
                "value": [
                    "Ajinkya",
                    "Anuj"
                ]
            },
            {
                "name": "Quantity",
                "position": 15,
                "data_type": "quantity",
                "mandatory": "Y",
                "value": 5
            },
            {
                "name": "DateRange",
                "position": 16,
                "data_type": "date_range",
                "mandatory": "Y",
                "value": {
                    "end_date": "21/09/2024",
                    "start_date": "21/08/2023"
                }
            },
            {
                "name": "YearRange",
                "position": 17,
                "data_type": "from_year_to_year",
                "mandatory": "Y",
                "value": {
                    "to": 2034,
                    "from": 2030
                }
            }
        ]
    }
}

SUCCESS RESPONSE The request returns JSON structured like below on successful scheduled internal transactions creation

{
    "status": true,
    "total_count": 1,
    "total_amount": "2000000.0",
    "transaction": [
        {
            "txn_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
            "txn_initiator": "Akshay Rangnekar",
            "entity_id": "ABC12",
            "amount": "2000000.0",
            "payment_method": "RTGS",
            "scheduled_name": "Water Bill",
            "category": "Internal",
            "type_of_transactions": "Internal Transaction",
            "confidential_transaction": "N",
            "transaction_start_date": "2025-02-26",
            "transaction_end_date": "2026-02-26",
            "frequency": "yearly",
            "occurrences": 2,
            "slot": "10:00 AM - 12:00 PM",
            "lifecycle_status": "approved",
            "internal_transaction_ids": [],
            "approved": "Y",
            "approved_at": 1740571336,
            "rejected": "N",
            "rejected_at": 0,
            "deleted": "N",
            "deleted_at": 0,
            "internal_account_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
            "internal_account_name": "Q2pay",
            "internal_account_bank_acc_no": "9234567892",
            "internal_account_ifsc_code": "HDFC0000225",
            "internal_account_bank_name": "HDFC Bank",
            "internal_account_approval_status": "approved",
            "owner_account_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
            "owner_account_bank_acc_no": "1234567893",
            "owner_account_ifsc_code": "ICIC0001953",
            "owner_account_bank_name": "ICICI Bank",
            "owner_account_type": "Current Account",
            "owner_account_balance": "500.0",
            "owner_account_balance_last_fetched_at": 1709537290,
            "owner_account_balance_last_fetched_at_in_words": "12 months ago",
            "additional_data": {
                "data": [
                    {
                        "data_type": "string",
                        "mandatory": "Y",
                        "value": "Mon",
                        "name": "month",
                        "position": 1
                    },
                    {
                        "name": "leaves",
                        "position": 2,
                        "data_type": "numeric",
                        "mandatory": "Y",
                        "value": 67
                    },
                    {
                        "name": "PAN",
                        "position": 3,
                        "data_type": "string",
                        "mandatory": "N"
                    },
                    {
                        "name": "Accountants",
                        "position": 4,
                        "data_type": "list",
                        "mandatory": "Y",
                        "data": [
                            "Pradeep",
                            "Sachin",
                            "Sewaram"
                        ],
                        "value": "Sachin"
                    },
                    {
                        "name": "Time",
                        "position": 5,
                        "data_type": "time",
                        "mandatory": "Y",
                        "value": "09:38"
                    },
                    {
                        "name": "Day",
                        "position": 6,
                        "data_type": "day",
                        "mandatory": "Y",
                        "value": "Monday"
                    },
                    {
                        "name": "Dummy",
                        "position": 7,
                        "data_type": "toggle",
                        "mandatory": "Y",
                        "value": false
                    },
                    {
                        "name": "Month",
                        "position": 8,
                        "data_type": "month",
                        "mandatory": "Y",
                        "value": "April"
                    },
                    {
                        "name": "Hyperlink",
                        "position": 9,
                        "data_type": "hyperlink",
                        "mandatory": "Y",
                        "value": "https://nxtapi.q2pay.co.in/api/transaction/beneficiary"
                    },
                    {
                    "name": "File",
                    "position": 10,
                    "data_type": "upload",
                    "mandatory": "Y",
                    "value": {
                        "id": "c68cc4e7d54381cc46384f194c09ce2c.png",
                        "storage": "cache",
                        "metadata": {
                        "filename": "favicon.png",
                        "size": 62260,
                        "mime_type": "image/png"
                        },
                        "file_url": "https://your-bucket.s3.amazonaws.com/store/c68cc4e7d54381cc46384f194c09ce2c.png"
                       }
                    },
                    {
                        "name": "Date",
                        "position": 11,
                        "data_type": "date",
                        "mandatory": "Y",
                        "value": "23/01/2023"
                    },
                    {
                        "name": "Year",
                        "position": 12,
                        "data_type": "year",
                        "mandatory": "Y",
                        "value": "2023"
                    },
                    {
                        "mandatory": "Y",
                        "position": 13,
                        "name": "Month/Year",
                        "data_type": "month_year",
                        "value": "03/2023"
                    },
                    {
                        "name": "Engineer",
                        "position": 14,
                        "data_type": "multi_select_list",
                        "mandatory": "Y",
                        "data": [
                            "Nikhi",
                            "Jitendra",
                            "Akash",
                            "Neha",
                            "Ajinkya",
                            "Anuj"
                        ],
                        "value": [
                            "Ajinkya",
                            "Anuj"
                        ]
                    },
                    {
                        "name": "Quantity",
                        "position": 15,
                        "data_type": "quantity",
                        "mandatory": "Y",
                        "value": 5
                    },
                    {
                        "name": "DateRange",
                        "position": 16,
                        "data_type": "date_range",
                        "mandatory": "Y",
                        "value": {
                            "end_date": "21/09/2024",
                            "start_date": "21/08/2023"
                        }
                    },
                    {
                        "name": "YearRange",
                        "position": 17,
                        "data_type": "from_year_to_year",
                        "mandatory": "Y",
                        "value": {
                            "to": 2034,
                            "from": 2030
                        }
                    }
                ]
            },
            "created_on": 1740571336,
            "last_updated_user_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
            "last_updated_status": "Approved",
            "last_updated_timestamp": 1740571336,
            "last_updated_user_name": "Akshay Rangnekar",
            "logs": [
                {
                    "action": "Created",
                    "user_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
                    "user_full_name": "Akshay Rangnekar",
                    "timestamp": "2025-02-26T12:02:16.600Z",
                    "request_ip": "127.0.0.1",
                    "last_used": "2025-02-26T12:02:16.484Z",
                    "logged_in_flag": false,
                    "logged_in_time": "2025-02-26T11:03:29.977Z",
                    "app_version_name": "1.43",
                    "app_version_code": "54",
                    "platform": "android",
                    "model": "Android SDK built for x86",
                    "manufacturer": "unknown",
                    "brand": "Android",
                    "serial_number": "EMULATOR32X1X14X0",
                    "os_version": "6.0",
                    "sdk_version": "23",
                    "ip_address": "127.0.0.1",
                    "is_primary": false,
                    "is_verified": false,
                    "first_name": "Akshay",
                    "last_name": "Rangnekar"
                },
                {
                    "action": "Approved",
                    "user_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
                    "user_full_name": "Akshay Rangnekar",
                    "final_approval": true,
                    "timestamp": "2025-02-26T12:02:16.625Z",
                    "request_ip": "127.0.0.1",
                    "last_used": "2025-02-26T12:02:16.484Z",
                    "logged_in_flag": false,
                    "logged_in_time": "2025-02-26T11:03:29.977Z",
                    "app_version_name": "1.43",
                    "app_version_code": "54",
                    "platform": "android",
                    "model": "Android SDK built for x86",
                    "manufacturer": "unknown",
                    "brand": "Android",
                    "serial_number": "EMULATOR32X1X14X0",
                    "os_version": "6.0",
                    "sdk_version": "23",
                    "ip_address": "127.0.0.1",
                    "is_primary": false,
                    "is_verified": false,
                    "first_name": "Akshay",
                    "last_name": "Rangnekar"
                }
            ]
        }
    ],
    "title": {
        "records": 1,
        "current_page": 1,
        "total_pages": 1,
        "page_item_count": 1
    }
}

ERROR RESPONSE The request returns JSON structured like below for errors related scheduled internal transaction

{
    "status":false, 
    "errors":{
        "internal_account":[
            "Internal account is not approved"
        ],
        "internal_account": [
            "Internal account must exist",
            "Internal account is not valid for the scheuled internal transaction"
        ], 
        "base":[
            "Beneficiary category is not valid for the scheuled internal transaction"
        ],
        "owner_account": [
            "Owner account must exist"
        ],
        "amount":[
            "Amount can't be blank",
            "Amount is not a number",
            "Amount must be greater than 0"
        ],
        "base":[
            "Amount is not valid for RTGS transaction"
        ],
        "base":[
            "Amount is not valid for NEFT transaction"
        ],
        "base":[
            "Amount is not valid for IMPS transaction"
        ],
        "category":[
            "Category can't be blank", 
            "Category  is not valid/active for the scheuled internal transaction",
            "Category  is not valid for the scheuled internal transaction",
            "Category not found"
        ],
        "base":[
            "Internal Account is not yet activated for disbursement. Kindly contact support"
        ],
        "base":[
            "Internal Account is archived. Transaction cannot be created. Kindly contact support"
        ],
        "base": [
            "Connected banking not active for owner account. Transaction cannot be created. Kindly contact support"
        ],
        "base": [
            "Internal Account doesn't belongs to your entity."
        ],
        "base": [
            "Owner Account doesn't belongs to your entity."
        ],
        "base": [
            "Owner Account is pending. Transaction cannot be created. Kindly contact support"
        ],
        "base": [
            "Owner & Internal Bank Account number are same. Transaction cannot be created. Kindly contact support"
        ],
        "payment_method": [
            "Payment method is not included in the list"
        ],
        "additional_data":
        [
            "Additional data Data data when supplied cannot be blank",
            "Additional data has settings declared under data key/s",
            "Additional data cannot be sent blank for the 'Internal' transaction category",
            "Additional data should be sent blank for the 'Mobile Bill' transaction category",
            "Additional data 'data' is malformed",
            "Additional data configuration is missing / unknown for 'name' key",
            "Additional data 'data' must have position as 1, 2, 3, 4, ...",
            "Additional data 'data' must have unique position in array",
            "Additional data 'data' cannot be declared as empty",
            "Additional data 'data' must have unique value for each name field in array",
            "Additional data 'data' : {\"hello\"=>\"abc\"} must have name, data_type, mandatory and position keys in each hash",
            "Additional data 'data' : {\"name\"=>\"month\", \"value\"=>10, \"position\"=>1, \"data_type\"=>\"string\", \"mandatory\"=>\"Y\"} must have matching value as string as declared in transaction category configuration",
            "Additional data 'data' : {\"name\"=>\"month\", \"position\"=>\"1\", \"data_type\"=>\"string\", \"mandatory\"=>\"Y\", \"value\"=>\"Mon\"} must have position as an integer",
            "Additional data 'data' : {\"name\"=>\"month\", \"position\"=>1, \"data_type\"=>\"list\", \"mandatory\"=>\"Y\", \"value\"=>\"Wed\", \"data\"=>[\"Mon\", \"Tue\"]} must have value as an array of strings",
            "Additional data 'data' : {\"name\"=>\"Accountants\", \"position\"=>4, \"data_type\"=>\"list\", \"mandatory\"=>\"N\", \"value\"=>\"Pradeep, Sachin, Sewaram\"} must have data as an array of strings",
            "Additional data 'data' : {\"name\"=>\"Accountants\", \"position\"=>4, \"data_type\"=>\"list\", \"mandatory\"=>\"N\", \"value\"=>\"Pradeep, Sachin, Sewaram\"} must have value from '[\"Pradeep\", \"Sachin\", \"Sewaram\"]' which is declared in the category configuration",
            "Additional data 'data' : {\"name\"=>\"month\", \"position\"=>1, \"data_type\"=>\"problem\", \"mandatory\"=>\"Y\", \"value\"=>\"Mon\"} must have data_type as one of the following: string, numeric, list, date, year, month_year, time, day, toggle, month, hyperlink, upload, multi_select_list, quantity, date_range, from_year_to_year",
            "Additional data 'data' : {\"name\"=>\"Accountants\", \"position\"=>4, \"data_type\"=>\"list\", \"mandatory\"=>\"N\", \"data\"=>[\"Pradeep\", \"Sachin\", \"Sewaram\"]} must have name, data_type, mandatory, value and position keys in each hash",
            "Additional data 'data' : {\"name\"=>\"leaves\", \"position\"=>2, \"data_type\"=>\"numeric\", \"mandatory\"=>\"N\", \"value\"=>12} must have matching value as numeric as declared in transaction category configuration",
            "Additional data 'data' : {\"name\"=>\"month\", \"position\"=>1, \"data_type\"=>\"problem\", \"mandatory\"=>\"Y\", \"value\"=>\"Mon\"} must have data_type 'string' as declared in category configuration",
            "Additional data 'data' : {\"name\"=>\"month\", \"position\"=>1, \"data_type\"=>\"string\", \"mandatory\"=>\"Y\"} must have a value as it is a mandatory field",
            "Additional data 'data' : {\"name\"=>\"month\", \"position\"=>1, \"data_type\"=>\"string\", \"problem\"=>\"Y\", \"value\"=>\"Mon\"} must have name, data_type, mandatory and position keys in each hash",
            "Additional data 'data' : {\"name\"=>\"month\", \"position\"=>1, \"data_type\"=>\"string\", \"mandatory\"=>\"Y\", \"value\"=>1234} must have matching value as string as declared in transaction category configuration",
            "Additional data 'data' : {\"name\"=>\"month\", \"position\"=>1, \"data_type\"=>\"string\", \"problem\"=>\"Y\", \"value\"=>\"Mon\"} must have mandatory as one of the following: Y, N",
            "Additional data 'data' : {\"name\"=>\"month\", \"position\"=>1, \"data_type\"=>\"string\", \"problem\"=>\"Y\", \"value\"=>\"Mon\"} must have mandatory 'Y' as declared in category configuration",
            "Additional data 'data' : {\"name\"=>\"yearly bill\", \"position\"=>3, \"data_type\"=>\"year\", \"mandatory\"=>\"Y\", \"value\"=>\"24\"} must have matching value as year as declared in transaction category configuration",
            "Additional data 'data' : {\"name\"=>\"Mothly bill\", \"position\"=>1, \"data_type\"=>\"month_year\", \"mandatory\"=>\"Y\", \"value\"=>\"Dec 2024\"} must have matching value as year as declared in transaction category configuration",
            "Additional data 'data' : {\"name\"=>\"yearly bill\", \"position\"=>3, \"data_type\"=>\"year\", \"mandatory\"=>\"Y\"} must have a value as it is a mandatory field",
            "Additional data [\"id\", \"storage\", \"metadata\"] cannot be declared as empty",
            "Additional data [\"filename\", \"size\", \"mime_type\"] must be as declared in transaction category configuration",
            "Additional data 'data' : {\"name\"=>\"Multiselect\", \"position\"=>7, \"data_type\"=>\"multi_select_list\", \"mandatory\"=>\"Y\", \"value\"=>\"[\n          test, \n          2\n        ]\"} must have matching value as multi select as declared in transaction category configuration",
            "Additional data 'data' : {\"name\"=>\"Quantity\", \"position\"=>8, \"data_type\"=>\"quantity\", \"mandatory\"=>\"Y\", \"value\"=>5.0} must have matching value as quantity as declared in transaction category configuration",
            "Additional data 'data' : {\"name\"=>\"DateRange\", \"position\"=>9, \"data_type\"=>\"date_range\", \"mandatory\"=>\"Y\", \"value\"=>\"21/09/2024\"} must have matching value as date_range as declared in transaction category configuration",
            "Additional data 'data' : {\"name\"=>\"DateRange\", \"position\"=>9, \"data_type\"=>\"date_range\", \"mandatory\"=>\"Y\", \"value\"=>{}} must have a value as it is a mandatory field",
            "Additional data [\"start_date\", \"end_date\"] must be as declared in transaction category configuration",
            "Additional data {\"start_date\"=>\" \", \"end_date\"=>\"21/09/2024\"} must have matching value as date_range as declared in transaction category configuration",
            "Additional data {\"from\"=>\"2023\", \"to\"=>\"2024\"} must have matching value as from_year_to_year as declared in transaction category configuration",
            "Additional data [\"from\", \"to\"] must be as declared in transaction category configuration"
        ],
        [
            "Frequency is invalid. Allowed values: once, daily, weekly, fortnightly, monthly, quarterly, half_yearly, yearly"
        ],
        [
            "Occurrences must be 2 for the given frequency and date range"
        ],
        [
            "Slot is invalid. Allowed values: 10:00 AM - 12:00 PM,12:01 PM - 15:00 PM,15:01 PM - 18:00 PM"
        ]
        "frequency": [
            "Frequency must be 'weekly' if transaction_day is provided"
        ],
        "transaction_month": [
            "Transaction month must contain only valid months (January to December). Found invalid values: january"
        ],
        [
            "Transaction month must match the month of transaction_start_date (February)"
        ]
        "transaction_day": [
            "Transaction day must contain only valid weekdays (Sunday to Saturday). Found invalid values: monday"
        ],
        [
            "Transaction day must match the day of transaction_start_date (Wednesday)"
        ]
        "type_of_transactions": [
            "Type of transactions is not valid for the scheuled internal transaction"
        ],
        "transaction_start_date": [
            "Transaction start date can't be blank"
        ],
        "transaction_end_date": [
            "Transaction end date can't be blank"
        ],
        [
            "Transaction end date must be the same as transaction start date when frequency is 'once'"
        ]
        [
            "Transaction end date must be greater than transaction start date when frequency is not 'once'"
        ],
        "transaction_start_date": [
            "Transaction start date cannot be in the past"
        ],
        "transaction_end_date": [
            "Transaction end date cannot be in the past"
        ],
        "user_unauthorized": [
            "Sorry! You are not authorized to perform this action"
        ],
        "scheduled_name": [
            "Scheduled name can't be blank",
            "Scheduled name is too short (minimum is 5 characters)"
        ]
} }

This endpoint creates a scheduled internal transaction.

UAT HTTP Request

POST https://nxt.api.q2pay.co.in/api/transactions/scheduled_internal

PRODUCTION HTTP Request

POST https://nxt.api.q2pay.in/api/transactions/scheduled_internal

Query Parameters

Parameter Default Description Required Sample
amount N.A. amount for scheduled internal transaction Yes 67000.0
internal_account_id N.A. internal account id for scheduled internal transaction Yes xxxxxxxx-xxxx-xxxx-xxxxxx
owner_account_id N.A. owner account id for scheduled internal transaction Yes xxxxxxxx-xxxx-xxxx-xxxxxx
category N.A. category for scheduled internal transaction Yes Internal
additional_data N.A. Additional data for scheduled internal transaction Yes "data": [ {"name": "month", "position": 1,"data_type": "string","mandatory": "Y", "value": "Mon"}]
payment_method N.A. payment method for scheduled internal transaction optional NEFT,IMPS,RTGS
frequency N.A. frequency for scheduled internal transaction Yes once,daily,weekly,fortnightly,monthly,quarterly,half_yearly,yearly
confidential_transaction N.A. confidential transaction for scheduled internal transaction optional true,false
occurrences N.A. occurrences count for scheduled internal transaction Yes 1,2,53
type_of_transactions N.A. type of transactions for scheduled internal transaction Yes Internal Transaction
transaction_start_date N.A. transaction start date for scheduled internal transaction Yes 26-02-2025
transaction_end_date N.A. transaction end date for scheduled internal transaction Yes 26-02-2026
slot N.A. slot for scheduled internal transaction Yes 10:00 AM - 12:00 PM,12:01 PM - 15:00 PM,15:01 PM - 18:00 PM
transaction_day N.A. transaction day for scheduled internal transaction optional Monday to Sunday
transaction_month N.A transaction month for scheduled internal transaction optional January to December
scheduled_name N.A Scheduled name for scheduled internal transaction Yes "Water Bill"

Service Details

Service ID Description
ICScheduledTxn Create Scheduled Internal Transaction

Approve Scheduled Internal Transaction

curl -X PUT "https://<environmenturl>/api/transactions/scheduled_internal/approve"
  -H "X-Api-Key: <your secure token>"
  -H "Content-Type: application/json"
  -d "{ 
    "txn_id":  ["xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx"]
      }"

require 'net/http'
require 'uri'
require 'json'

uri = URI.parse("https://<environmenturl>/api/transactions/scheduled_internal/approve") header = {'X-Api-Key' => '<your secure token>', 'Content-Type' => 'application/json'} body = { "txn_id": ["xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx"] } http = Net::HTTP.new(uri.host, uri.port) http.use_ssl = true request = Net::HTTP::Put.new(uri.request_uri, header) request.body = body.to_json response = http.request(request)

const data = {
   "txn_id":  ["xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx"]
};

fetch('https://<environmenturl>/api/transactions/scheduled_internal/approve', { method: 'PUT', headers: { 'X-Api-Key': '<your secure token>', 'Content-Type': 'application/json' }, body: JSON.stringify(data) }) .then(response => response.json()) .then(data => console.log(data)) .catch(error => console.error(error));

The below example can be sent as a request to the API.

{
  "txn_id":  ["xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx"]
}

The below example can be sent as a request to the API for multiple transaction id.

{
  "txn_id":  ["xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx","xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx"]
}

SUCCESS RESPONSE The request returns JSON structured like below on successful scheduled internal transaction approve

{
    "status": true,
    "total_count": 1,
    "total_amount": "2000000.0",
    "transactions": [
        {
            "txn_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
            "txn_initiator": "Akshay Rangnekar",
            "entity_id": "ABC12",
            "amount": "2000000.0",
            "payment_method": "RTGS",
            "scheduled_name": "Water Bill",
            "category": "Internal",
            "type_of_transactions": "Internal Transaction",
            "confidential_transaction": "N",
            "transaction_start_date": "2025-02-26",
            "transaction_end_date": "2026-02-26",
            "frequency": "yearly",
            "occurrences": 2,
            "slot": "10:00 AM - 12:00 PM",
            "lifecycle_status": "approved",
            "internal_transaction_ids": [],
            "approved": "Y",
            "approved_at": 1740629296,
            "approved_by": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
            "rejected": "N",
            "rejected_at": 0,
            "deleted": "N",
            "deleted_at": 0,
            "internal_account_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
            "internal_account_name": "Q2pay",
            "internal_account_bank_acc_no": "9234567892",
            "internal_account_ifsc_code": "HDFC0000225",
            "internal_account_bank_name": "HDFC Bank",
            "internal_account_approval_status": "approved",
            "owner_account_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
            "owner_account_bank_acc_no": "1234567893",
            "owner_account_ifsc_code": "ICIC0001953",
            "owner_account_bank_name": "ICICI Bank",
            "owner_account_type": "Current Account",
            "owner_account_balance": "500.0",
            "owner_account_balance_last_fetched_at": 1709537290,
            "owner_account_balance_last_fetched_at_in_words": "12 months ago",
            "additional_data": {
                "data": [
                    {
                        "name": "month",
                        "value": "Mon",
                        "position": 1,
                        "data_type": "string",
                        "mandatory": "Y"
                    },
                    {
                        "name": "leaves",
                        "value": 67,
                        "position": 2,
                        "data_type": "numeric",
                        "mandatory": "Y"
                    },
                    {
                        "name": "PAN",
                        "position": 3,
                        "data_type": "string",
                        "mandatory": "N"
                    },
                    {
                        "data": [
                            "Pradeep",
                            "Sachin",
                            "Sewaram"
                        ],
                        "name": "Accountants",
                        "value": "Sachin",
                        "position": 4,
                        "data_type": "list",
                        "mandatory": "Y"
                    },
                    {
                        "name": "Time",
                        "value": "09:38",
                        "position": 5,
                        "data_type": "time",
                        "mandatory": "Y"
                    },
                    {
                        "name": "Day",
                        "value": "Monday",
                        "position": 6,
                        "data_type": "day",
                        "mandatory": "Y"
                    },
                    {
                        "name": "Dummy",
                        "value": false,
                        "position": 7,
                        "data_type": "toggle",
                        "mandatory": "Y"
                    },
                    {
                        "name": "Month",
                        "value": "April",
                        "position": 8,
                        "data_type": "month",
                        "mandatory": "Y"
                    },
                    {
                        "name": "Hyperlink",
                        "value": "https://nxtapi.q2pay.co.in/api/transaction/beneficiary",
                        "position": 9,
                        "data_type": "hyperlink",
                        "mandatory": "Y"
                    },
                     {
                        "name": "File",
                        "position": 10,
                        "data_type": "upload",
                        "mandatory": "Y",
                        "value": {
                            "id": "c68cc4e7d54381cc46384f194c09ce2c.png",
                            "storage": "cache",
                            "metadata": {
                            "filename": "favicon.png",
                            "size": 62260,
                            "mime_type": "image/png"
                            },
                            "file_url": "https://your-bucket.s3.amazonaws.com/store/c68cc4e7d54381cc46384f194c09ce2c.png"
                        }
                        },
                    {
                        "name": "Date",
                        "value": "23/01/2023",
                        "position": 11,
                        "data_type": "date",
                        "mandatory": "Y"
                    },
                    {
                        "name": "Year",
                        "value": "2023",
                        "position": 12,
                        "data_type": "year",
                        "mandatory": "Y"
                    },
                    {
                        "name": "Month/Year",
                        "value": "03/2023",
                        "position": 13,
                        "data_type": "month_year",
                        "mandatory": "Y"
                    },
                    {
                        "data": [
                            "Nikhi",
                            "Jitendra",
                            "Akash",
                            "Neha",
                            "Ajinkya",
                            "Anuj"
                        ],
                        "name": "Engineer",
                        "value": [
                            "Ajinkya",
                            "Anuj"
                        ],
                        "position": 14,
                        "data_type": "multi_select_list",
                        "mandatory": "Y"
                    },
                    {
                        "name": "Quantity",
                        "value": 5,
                        "position": 15,
                        "data_type": "quantity",
                        "mandatory": "Y"
                    },
                    {
                        "name": "DateRange",
                        "value": {
                            "end_date": "21/09/2024",
                            "start_date": "21/08/2023"
                        },
                        "position": 16,
                        "data_type": "date_range",
                        "mandatory": "Y"
                    },
                    {
                        "name": "YearRange",
                        "value": {
                            "to": 2034,
                            "from": 2030
                        },
                        "position": 17,
                        "data_type": "from_year_to_year",
                        "mandatory": "Y"
                    }
                ]
            },
            "created_on": 1740628066,
            "last_updated_user_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
            "last_updated_status": "Approved",
            "last_updated_timestamp": 1740629296,
            "last_updated_user_name": "Akshay Rangnekar",
            "logs": [
                {
                    "brand": "Android",
                    "model": "Android SDK built for x86",
                    "action": "Created",
                    "user_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
                    "platform": "android",
                    "last_name": "Rangnekar",
                    "last_used": "2025-02-27T04:08:16.796Z",
                    "timestamp": "2025-02-27T04:08:16.912Z",
                    "first_name": "Akshay",
                    "ip_address": "127.0.0.1",
                    "is_primary": false,
                    "os_version": "6.0",
                    "request_ip": "127.0.0.1",
                    "is_verified": false,
                    "sdk_version": "23",
                    "manufacturer": "unknown",
                    "serial_number": "EMULATOR32X1X14X0",
                    "logged_in_flag": false,
                    "logged_in_time": "2025-02-27T04:05:40.181Z",
                    "app_version_code": "54",
                    "app_version_name": "1.43"
                },
                {
                    "brand": "Android",
                    "model": "Android SDK built for x86",
                    "action": "Approved",
                    "user_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
                    "platform": "android",
                    "last_name": "Rangnekar",
                    "last_used": "2025-02-27T04:08:16.796Z",
                    "timestamp": "2025-02-27T04:08:16.913Z",
                    "first_name": "Akshay",
                    "ip_address": "127.0.0.1",
                    "is_primary": false,
                    "os_version": "6.0",
                    "request_ip": "127.0.0.1",
                    "is_verified": false,
                    "sdk_version": "23",
                    "manufacturer": "unknown",
                    "serial_number": "EMULATOR32X1X14X0",
                    "final_approval": true,
                    "logged_in_flag": false,
                    "logged_in_time": "2025-02-27T04:05:40.181Z",
                    "user_full_name": "Akshay Rangnekar",
                    "app_version_code": "54",
                    "app_version_name": "1.43"
                }
            ]
        }
    ],
    "title": {
        "records": 1,
        "current_page": 1,
        "total_pages": 1,
        "page_item_count": 50
    }
}

ERROR RESPONSE The request returns JSON structured like below for errors related scheduled internal transaction

{
    "status":false,
    "action":"Not performed",
    "errors":{
        "base":[
            "Invalid / Insufficient parameters"
        ],
        "base":[
            "No transactions found for transaction ids: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx"
        ],
        "base":[
            "All transactions do not belong to the same entity / Few transactions are already approved or are deleted/rejected"
        ],
        "base": [
            "User is not authorized to approve scheduled transactions"
        ],
        "base": [
            "Internal account is not approved"
        ],
        "base": [
            {
                "id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
                "errors": [
                    "Cannot approve. Transaction was auto-rejected as its start date or slot time has already passed."
                ]
            }
        ],
        "user_unauthorized": [
            "Sorry! You are not authorized to perform this action"
        ]
} }

This endpoint approve a scheduled internal transaction.

UAT HTTP Request

PUT https://nxt.api.q2pay.co.in/api/transactions/scheduled_internal/approve

PRODUCTION HTTP Request

PUT https://nxt.api.q2pay.in/api/transactions/scheduled_internal/approve

Query Parameters

Parameter Default Description Required Sample
txn_id N.A. txn id for scheduled internal transaction Yes [xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxx ,xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxx]

Service Details

Service ID Description
IAScheduledTxn Approve Scheduled Internal Transaction

Reject Scheduled Internal Transaction

curl -X PUT "https://<environmenturl>/api/transactions/scheduled_internal/reject"
  -H "X-Api-Key: <your secure token>"
  -H "Content-Type: application/json"
  -d "{ 
    "txn_id":  ["xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx"],
    "reason": "reject scheduled transaction"
      }"

require 'net/http'
require 'uri'
require 'json'

uri = URI.parse("https://<environmenturl>/api/transactions/scheduled_internal/reject") header = {'X-Api-Key' => '<your secure token>', 'Content-Type' => 'application/json'} body = { "txn_id": ["xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx"], "reason": "reject scheduled transaction" } http = Net::HTTP.new(uri.host, uri.port) http.use_ssl = true request = Net::HTTP::Put.new(uri.request_uri, header) request.body = body.to_json response = http.request(request)

const data = {
   "txn_id":  ["xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx"],
   "reason": "reject scheduled transaction"
};

fetch('https://<environmenturl>/api/transactions/scheduled_internal/reject', { method: 'PUT', headers: { 'X-Api-Key': '<your secure token>', 'Content-Type': 'application/json' }, body: JSON.stringify(data) }) .then(response => response.json()) .then(data => console.log(data)) .catch(error => console.error(error));

The below example can be sent as a request to the API.

{
  "txn_id":  ["xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx"],
  "reason": "reject scheduled transaction"
}

The below example can be sent as a request to the API for multiple transaction id.

{
  "txn_id":  ["xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx","xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx"],
  "reason": "reject scheduled transaction"
}

SUCCESS RESPONSE The request returns JSON structured like below on successful scheduled internal transaction reject

{
    "status": true,
    "total_count": 1,
    "total_amount": "2000000.0",
    "transactions": [
        {
            "txn_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
            "txn_initiator": "Akshay Rangnekar",
            "entity_id": "ABC12",
            "amount": "2000000.0",
            "payment_method": "RTGS",
            "scheduled_name": "Water Bill",
            "category": "Internal",
            "type_of_transactions": "Internal Transaction",
            "confidential_transaction": "N",
            "transaction_start_date": "2025-02-26",
            "transaction_end_date": "2026-02-26",
            "frequency": "yearly",
            "occurrences": 2,
            "slot": "10:00 AM - 12:00 PM",
            "lifecycle_status": "rejected",
            "internal_transaction_ids": [],
            "approved": "N",
            "approved_at": 0,
            "rejected": "Y",
            "rejected_by": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
            "rejected_at": 1740629452,
            "rejection_reason": "reject scheduled transaction",
            "deleted": "N",
            "deleted_at": 0,
            "internal_account_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
            "internal_account_name": "Q2pay",
            "internal_account_bank_acc_no": "9234567892",
            "internal_account_ifsc_code": "HDFC0000225",
            "internal_account_bank_name": "HDFC Bank",
            "internal_account_approval_status": "approved",
            "owner_account_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
            "owner_account_bank_acc_no": "1234567893",
            "owner_account_ifsc_code": "ICIC0001953",
            "owner_account_bank_name": "ICICI Bank",
            "owner_account_type": "Current Account",
            "owner_account_balance": "500.0",
            "owner_account_balance_last_fetched_at": 1709537290,
            "owner_account_balance_last_fetched_at_in_words": "12 months ago",
            "additional_data": {
                "data": [
                    {
                        "name": "month",
                        "value": "Mon",
                        "position": 1,
                        "data_type": "string",
                        "mandatory": "Y"
                    },
                    {
                        "name": "leaves",
                        "value": 67,
                        "position": 2,
                        "data_type": "numeric",
                        "mandatory": "Y"
                    },
                    {
                        "name": "PAN",
                        "position": 3,
                        "data_type": "string",
                        "mandatory": "N"
                    },
                    {
                        "data": [
                            "Pradeep",
                            "Sachin",
                            "Sewaram"
                        ],
                        "name": "Accountants",
                        "value": "Sachin",
                        "position": 4,
                        "data_type": "list",
                        "mandatory": "Y"
                    },
                    {
                        "name": "Time",
                        "value": "09:38",
                        "position": 5,
                        "data_type": "time",
                        "mandatory": "Y"
                    },
                    {
                        "name": "Day",
                        "value": "Monday",
                        "position": 6,
                        "data_type": "day",
                        "mandatory": "Y"
                    },
                    {
                        "name": "Dummy",
                        "value": false,
                        "position": 7,
                        "data_type": "toggle",
                        "mandatory": "Y"
                    },
                    {
                        "name": "Month",
                        "value": "April",
                        "position": 8,
                        "data_type": "month",
                        "mandatory": "Y"
                    },
                    {
                        "name": "Hyperlink",
                        "value": "https://nxtapi.q2pay.co.in/api/transaction/beneficiary",
                        "position": 9,
                        "data_type": "hyperlink",
                        "mandatory": "Y"
                    },
                     {
                    "name": "File",
                    "position": 10,
                    "data_type": "upload",
                    "mandatory": "Y",
                    "value": {
                        "id": "c68cc4e7d54381cc46384f194c09ce2c.png",
                        "storage": "cache",
                        "metadata": {
                        "filename": "favicon.png",
                        "size": 62260,
                        "mime_type": "image/png"
                        },
                        "file_url": "https://your-bucket.s3.amazonaws.com/store/c68cc4e7d54381cc46384f194c09ce2c.png"
                    }
                    },
                    {
                        "name": "Date",
                        "value": "23/01/2023",
                        "position": 11,
                        "data_type": "date",
                        "mandatory": "Y"
                    },
                    {
                        "name": "Year",
                        "value": "2023",
                        "position": 12,
                        "data_type": "year",
                        "mandatory": "Y"
                    },
                    {
                        "name": "Month/Year",
                        "value": "03/2023",
                        "position": 13,
                        "data_type": "month_year",
                        "mandatory": "Y"
                    },
                    {
                        "data": [
                            "Nikhi",
                            "Jitendra",
                            "Akash",
                            "Neha",
                            "Ajinkya",
                            "Anuj"
                        ],
                        "name": "Engineer",
                        "value": [
                            "Ajinkya",
                            "Anuj"
                        ],
                        "position": 14,
                        "data_type": "multi_select_list",
                        "mandatory": "Y"
                    },
                    {
                        "name": "Quantity",
                        "value": 5,
                        "position": 15,
                        "data_type": "quantity",
                        "mandatory": "Y"
                    },
                    {
                        "name": "DateRange",
                        "value": {
                            "end_date": "21/09/2024",
                            "start_date": "21/08/2023"
                        },
                        "position": 16,
                        "data_type": "date_range",
                        "mandatory": "Y"
                    },
                    {
                        "name": "YearRange",
                        "value": {
                            "to": 2034,
                            "from": 2030
                        },
                        "position": 17,
                        "data_type": "from_year_to_year",
                        "mandatory": "Y"
                    }
                ]
            },
            "created_on": 1740629431,
            "last_updated_user_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
            "last_updated_status": "Rejected",
            "last_updated_timestamp": 1740629452,
            "last_updated_user_name": "Akshay Rangnekar",
            "logs": [
                {
                    "brand": "Android",
                    "model": "Android SDK built for x86",
                    "action": "Created",
                    "user_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
                    "platform": "android",
                    "last_name": "Rangnekar",
                    "last_used": "2025-02-27T04:10:52.305Z",
                    "timestamp": "2025-02-27T04:10:52.325Z",
                    "first_name": "Akshay",
                    "ip_address": "127.0.0.1",
                    "is_primary": false,
                    "os_version": "6.0",
                    "request_ip": "127.0.0.1",
                    "is_verified": false,
                    "sdk_version": "23",
                    "manufacturer": "unknown",
                    "serial_number": "EMULATOR32X1X14X0",
                    "logged_in_flag": false,
                    "logged_in_time": "2025-02-27T04:05:40.181Z",
                    "app_version_code": "54",
                    "app_version_name": "1.43"
                },
                {
                    "brand": "Android",
                    "model": "Android SDK built for x86",
                    "action": "Rejected",
                    "user_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
                    "platform": "android",
                    "last_name": "Rangnekar",
                    "last_used": "2025-02-27T04:10:52.305Z",
                    "timestamp": "2025-02-27T04:10:52.327Z",
                    "first_name": "Akshay",
                    "ip_address": "127.0.0.1",
                    "is_primary": false,
                    "os_version": "6.0",
                    "request_ip": "127.0.0.1",
                    "is_verified": false,
                    "sdk_version": "23",
                    "manufacturer": "unknown",
                    "serial_number": "EMULATOR32X1X14X0",
                    "logged_in_flag": false,
                    "logged_in_time": "2025-02-27T04:05:40.181Z",
                    "user_full_name": "Akshay Rangnekar",
                    "app_version_code": "54",
                    "app_version_name": "1.43"
                }
            ]
        }
    ],
    "title": {
        "records": 1,
        "current_page": 1,
        "total_pages": 1,
        "page_item_count": 50
    }
}

ERROR RESPONSE The request returns JSON structured like below for errors related scheduled internal transaction

{
    "status":false,
    "action":"Not performed",
    "errors":{
        "base":[
            "Invalid / Insufficient parameters"
        ],
        "base":
        [
            "No transactions found for transaction ids: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx"
        ],
        "base":
        [
            "All transactions do not belong to the same entity / Few transactions are already approved or are deleted/rejected"
        ],
        "base":
        [
            "Transaction cannot be reject due to current status"
        ],
        "user_unauthorized": [
            "Sorry! You are not authorized to perform this action"
        ],
        "base": [
            {
                "id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
                "errors": [
                    "Reason must be at least 5 characters"
                ]
            }
        ]
    }
}

This endpoint reject a scheduled internal transaction.

UAT HTTP Request

PUT https://nxt.api.q2pay.co.in/api/transactions/scheduled_internal/reject

PRODUCTION HTTP Request

PUT https://nxt.api.q2pay.in/api/transactions/scheduled_internal/reject

Query Parameters

Parameter Default Description Required Sample
txn_id N.A. txn id for scheduled internal transaction Yes [xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxx ,xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxx]
reason N.A. reason for scheduled internal transaction Yes reject scheduled transaction

Service Details

Service ID Description
IAScheduledTxn Reject Scheduled Internal Transaction

Delete Scheduled Internal Transaction

curl "https://<environmenturl>/api/transactions/scheduled_internal/delete"
  -H "X-Api-Key: <your secure token>"
  -H "Content-Type: application/json"
  -d "{ 
        "txn_id":  ["xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx"]
  }"
require 'net/http'
require 'uri'
require 'json'

uri = URI.parse("https://<environmenturl>/api/transactions/scheduled_internal/delete") header = {'X-Api-Key' => '<your secure token>', 'Content-Type' => 'application/json'} body = { "txn_id": ["xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx"] } http = Net::HTTP.new(uri.host, uri.port) http.use_ssl = true request = Net::HTTP::Delete.new(uri.request_uri, header) request.body = body.to_json response = http.request(request)

const data = {
       "txn_id":  ["xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx"]
};

fetch('https://<environmenturl>/api/transactions/scheduled_internal/delete', { method: 'DELETE', headers: { 'X-Api-Key': '<your secure token>', 'Content-Type': 'application/json' }, body: JSON.stringify(data) }) .then(response => response.json()) .then(data => console.log(data)) .catch(error => console.error(error));

The below example can be sent as a request to the API.

{
  "txn_id":  ["xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx"]
}

SUCCESS RESPONSE The request returns JSON structured like below

{
    "status": true,
    "total_count": 1,
    "total_amount": "2000000.0",
    "transactions": [
        {
            "txn_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
            "txn_initiator": "Akshay Rangnekar",
            "entity_id": "ABC12",
            "amount": "2000000.0",
            "payment_method": "RTGS",
            "scheduled_name": "Water Bill",
            "category": "Internal",
            "type_of_transactions": "Internal Transaction",
            "confidential_transaction": "N",
            "transaction_start_date": "2025-02-26",
            "transaction_end_date": "2026-02-26",
            "frequency": "yearly",
            "occurrences": 2,
            "slot": "10:00 AM - 12:00 PM",
            "lifecycle_status": "deleted",
            "internal_transaction_ids": [],
            "approved": "N",
            "approved_at": 0,
            "rejected": "N",
            "rejected_at": 0,
            "deleted": "Y",
            "deleted_by": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
            "deleted_at": 1740628355,
            "internal_account_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
            "internal_account_name": "Q2pay",
            "internal_account_bank_acc_no": "9234567892",
            "internal_account_ifsc_code": "HDFC0000225",
            "internal_account_bank_name": "HDFC Bank",
            "internal_account_approval_status": "approved",
            "owner_account_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
            "owner_account_bank_acc_no": "1234567893",
            "owner_account_ifsc_code": "ICIC0001953",
            "owner_account_bank_name": "ICICI Bank",
            "owner_account_type": "Current Account",
            "owner_account_balance": "500.0",
            "owner_account_balance_last_fetched_at": 1709537290,
            "owner_account_balance_last_fetched_at_in_words": "12 months ago",
            "additional_data": {
                "data": [
                    {
                        "name": "month",
                        "value": "Mon",
                        "position": 1,
                        "data_type": "string",
                        "mandatory": "Y"
                    },
                    {
                        "name": "leaves",
                        "value": 67,
                        "position": 2,
                        "data_type": "numeric",
                        "mandatory": "Y"
                    },
                    {
                        "name": "PAN",
                        "position": 3,
                        "data_type": "string",
                        "mandatory": "N"
                    },
                    {
                        "data": [
                            "Pradeep",
                            "Sachin",
                            "Sewaram"
                        ],
                        "name": "Accountants",
                        "value": "Sachin",
                        "position": 4,
                        "data_type": "list",
                        "mandatory": "Y"
                    },
                    {
                        "name": "Time",
                        "value": "09:38",
                        "position": 5,
                        "data_type": "time",
                        "mandatory": "Y"
                    },
                    {
                        "name": "Day",
                        "value": "Monday",
                        "position": 6,
                        "data_type": "day",
                        "mandatory": "Y"
                    },
                    {
                        "name": "Dummy",
                        "value": false,
                        "position": 7,
                        "data_type": "toggle",
                        "mandatory": "Y"
                    },
                    {
                        "name": "Month",
                        "value": "April",
                        "position": 8,
                        "data_type": "month",
                        "mandatory": "Y"
                    },
                    {
                        "name": "Hyperlink",
                        "value": "https://nxtapi.q2pay.co.in/api/transaction/beneficiary",
                        "position": 9,
                        "data_type": "hyperlink",
                        "mandatory": "Y"
                    },
                     {
                    "name": "File",
                    "position": 10,
                    "data_type": "upload",
                    "mandatory": "Y",
                    "value": {
                        "id": "c68cc4e7d54381cc46384f194c09ce2c.png",
                        "storage": "cache",
                        "metadata": {
                        "filename": "favicon.png",
                        "size": 62260,
                        "mime_type": "image/png"
                        },
                        "file_url": "https://your-bucket.s3.amazonaws.com/store/c68cc4e7d54381cc46384f194c09ce2c.png"
                     }
                    },
                    {
                        "name": "Date",
                        "value": "23/01/2023",
                        "position": 11,
                        "data_type": "date",
                        "mandatory": "Y"
                    },
                    {
                        "name": "Year",
                        "value": "2023",
                        "position": 12,
                        "data_type": "year",
                        "mandatory": "Y"
                    },
                    {
                        "name": "Month/Year",
                        "value": "03/2023",
                        "position": 13,
                        "data_type": "month_year",
                        "mandatory": "Y"
                    },
                    {
                        "data": [
                            "Nikhi",
                            "Jitendra",
                            "Akash",
                            "Neha",
                            "Ajinkya",
                            "Anuj"
                        ],
                        "name": "Engineer",
                        "value": [
                            "Ajinkya",
                            "Anuj"
                        ],
                        "position": 14,
                        "data_type": "multi_select_list",
                        "mandatory": "Y"
                    },
                    {
                        "name": "Quantity",
                        "value": 5,
                        "position": 15,
                        "data_type": "quantity",
                        "mandatory": "Y"
                    },
                    {
                        "name": "DateRange",
                        "value": {
                            "end_date": "21/09/2024",
                            "start_date": "21/08/2023"
                        },
                        "position": 16,
                        "data_type": "date_range",
                        "mandatory": "Y"
                    },
                    {
                        "name": "YearRange",
                        "value": {
                            "to": 2034,
                            "from": 2030
                        },
                        "position": 17,
                        "data_type": "from_year_to_year",
                        "mandatory": "Y"
                    }
                ]
            },
            "created_on": 1740582073,
            "last_updated_user_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
            "last_updated_status": "Deleted",
            "last_updated_timestamp": 1740628355,
            "last_updated_user_name": "Akshay Rangnekar",
            "logs": [
                {
                    "brand": "Android",
                    "model": "Android SDK built for x86",
                    "action": "Created",
                    "user_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
                    "platform": "android",
                    "last_name": "Rangnekar",
                    "last_used": "2025-02-27T03:52:35.978Z",
                    "timestamp": "2025-02-27T03:52:35.997Z",
                    "first_name": "Akshay",
                    "ip_address": "127.0.0.1",
                    "is_primary": false,
                    "os_version": "6.0",
                    "request_ip": "127.0.0.1",
                    "is_verified": false,
                    "sdk_version": "23",
                    "manufacturer": "unknown",
                    "serial_number": "EMULATOR32X1X14X0",
                    "logged_in_flag": false,
                    "logged_in_time": "2025-02-27T03:41:19.226Z",
                    "app_version_code": "54",
                    "app_version_name": "1.43"
                },
                {
                    "brand": "Android",
                    "model": "Android SDK built for x86",
                    "action": "Approved",
                    "user_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
                    "platform": "android",
                    "last_name": "Rangnekar",
                    "last_used": "2025-02-27T03:52:35.978Z",
                    "timestamp": "2025-02-27T03:52:35.997Z",
                    "first_name": "Akshay",
                    "ip_address": "127.0.0.1",
                    "is_primary": false,
                    "os_version": "6.0",
                    "request_ip": "127.0.0.1",
                    "is_verified": false,
                    "sdk_version": "23",
                    "manufacturer": "unknown",
                    "serial_number": "EMULATOR32X1X14X0",
                    "logged_in_flag": false,
                    "logged_in_time": "2025-02-27T03:41:19.226Z",
                    "app_version_code": "54",
                    "app_version_name": "1.43"
                },
                {
                    "brand": "Android",
                    "model": "Android SDK built for x86",
                    "action": "Deleted",
                    "user_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
                    "platform": "android",
                    "last_name": "Rangnekar",
                    "last_used": "2025-02-27T03:52:35.978Z",
                    "timestamp": "2025-02-27T03:52:35.999Z",
                    "first_name": "Akshay",
                    "ip_address": "127.0.0.1",
                    "is_primary": false,
                    "os_version": "6.0",
                    "request_ip": "127.0.0.1",
                    "is_verified": false,
                    "sdk_version": "23",
                    "manufacturer": "unknown",
                    "serial_number": "EMULATOR32X1X14X0",
                    "logged_in_flag": false,
                    "logged_in_time": "2025-02-27T03:41:19.226Z",
                    "user_full_name": "Akshay Rangnekar",
                    "app_version_code": "54",
                    "app_version_name": "1.43"
                }
            ]
        }
    ],
    "title": {
        "records": 1,
        "current_page": 1,
        "total_pages": 1,
        "page_item_count": 50
    }
}

ERROR RESPONSE The request returns JSON structured like below for errors related scheduled internal transaction

{
    "status": false,
    "action": "Not performed",
    "errors": {
        "base": [
            "Invalid / Insufficient parameters"
        ],
        "base": [
            "No transactions found for transaction ids: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx"
        ],
        "base": [
            "All transactions do not belong to the same entity/ Few transactions are already deleted"
        ],
        "user_unauthorized": [
            "Sorry! You are not authorized to perform this action"
        ] 
    }
}

This endpoint retrieves delete scheduled internal transaction

UAT HTTP Request

DELETE https://nxt.api.q2pay.co.in/api/transactions/scheduled_internal/delete

PRODUCTION HTTP Request

DELETE https://nxt.api.q2pay.in/api/transactions/scheduled_internal/delete

Query Parameters

Parameter Default Description Required Sample
txn_id N.A. txn id for scheduled internal transaction Yes [xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxx ,xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxx]

Service Details

Service ID Description
IAScheduledTxn Delete scheduled internal transaction

Private Transaction

Private transaction helps you create, maintain & manage batch payments for your organisations Currently this feature is only allowed for ICICI bank

Get Sample File Private Transaction

curl "https://<environmenturl>/api/transactions/private_transactions/sample_file.csv?category=Salary"
  -H "X-Api-Key: <your secure token>"
  -H "Content-Type: application/json"
   -d "{
       "category":"Salary",
    }"
require 'net/http'
require 'uri'
require 'json'

uri = URI.parse("https://<environmenturl>/api/transactions/private_transactions/sample_file.csv?category=Salary") header = {'X-Api-Key' => '<your secure token>', 'Content-Type' => 'application/json'} http = Net::HTTP.new(uri.host, uri.port) http.use_ssl = true request = Net::HTTP::Get.new(uri.request_uri, header) request.body = body.to_json response = http.request(request)

const data = {
  "category":"Salary",
};

fetch('https://<environmenturl>/api/transactions/private_transactions/sample_file.csv?category=Salary', { method: 'GET', headers: { 'X-Api-Key': '<your secure token>', 'Content-Type': 'application/json' } }) .then(response => response.json()) .then(data => console.log(data)) .catch(error => console.error(error));

The below example can be sent as a request to the API.

{
  "category":"Salary",
}

SUCCESS RESPONSE The request returns JSON structured like below

{
   "status": 200 
}

ERROR RESPONSE The request returns JSON structured like below for errors related to Private Transaction

{
    "status":false,
    "error":{
        "base":"Transaction category 'abc' not found or inactive."
    }
}

ERROR RESPONSE The request returns JSON structured like below for errors related to Private Transaction

{
    "status":false,
    "error": "Unsupported format. Please request .csv or .xlsx."
}

This endpoint will retrieve sample file .

UAT HTTP Request

GET https://nxt.api.q2pay.co.in/api/transactions/private_transactions/sample_file

PRODUCTION HTTP Request

GET https://nxt.api.q2pay.in/api/transactions/private_transactions/sample_file

Query Parameters

Parameter Default Description Required Sample
category N.A. category for sample file Yes "Salary"

points to note while filing data in sample file

fill data from third row onward.

please follow the format assigned in the second row.

if format is not there in the second row it means datatype format is not enforced. Still data needs to be entered from third row.

File Format

Format Default Description Required Sample URL
csv N.A. csv format for sample file Yes https://<environmenturl>/api/transactions/private_transactions/sample_file.csv
xlsx N.A. xlsx format for sample file Yes https://<environmenturl>/api/transactions/private_transactions/sample_file.xlsx

Service Details

Service ID Description
VPrivateTransaction To Get Sample File Transactions

Get Specific Private Transaction Request

curl "https://<environmenturl>/api/transactions/private_transactions/:request_reference_id"
  -H "X-Api-Key: <your secure token>"
  -H "Content-Type: application/json"
require 'net/http'
require 'uri'
require 'json'

uri = URI.parse("https://<environmenturl>/api/transactions/private_transactions/:request_reference_id") header = {'X-Api-Key' => '<your secure token>', 'Content-Type' => 'application/json'}

http = Net::HTTP.new(uri.host, uri.port) http.use_ssl = true request = Net::HTTP::Get.new(uri.request_uri, header) request.body = body.to_json response = http.request(request)

fetch('https://<environmenturl>/api/transactions/private_transactions/:request_reference_id', { method: 'GET', headers: { 'X-Api-Key': '<your secure token>', 'Content-Type': 'application/json' } }) .then(response => response.json()) .then(data => console.log(data)) .catch(error => console.error(error));

SUCCESS RESPONSE The request returns JSON structured like below

{
    "status": true,
    "transaction_request": {
        "request_reference_id": "bf08788a-216f-4b49-b844-bea1056d0831",
        "entity_id": "MH1214",
        "private_transaction_id": "c2348f6b-72a5-4093-8d46-30268698b62c",
        "file_name": "Dev_bulk_transaction.xlsx",
        "category": "Salary",
        "request_status": "transaction_created",
        "owner_account_details": {
            "owner_account_id": "09c839a4-5a0b-49d8-a546-fc2d0a5db75d",
            "owner_account_bank_acc_no": "000501500579",
            "owner_account_ifsc_code": "ICIC0000915",
            "owner_account_bank_name": "ICICI Bank",
            "owner_account_type": "Current Account",
            "owner_account_balance": "515.0",
            "owner_account_balance_last_fetched_at": 1723532993,
            "owner_account_balance_last_fetched_at_in_words": "over 1 year ago"
        },
        "uploaded_by": "Ajinkya Salunkhe",
        "created_on": 1763980053
    },
    "private_transaction": {
        "entity_id": "MH1214",
        "total_amount": 8000.0,
        "id": "c2348f6b-72a5-4093-8d46-30268698b62c",
        "request_reference_id": "bf08788a-216f-4b49-b844-bea1056d0831",
        "status": "pending",
        "total_beneficiary_account_count": 4,
        "created_by": "Ajinkya Salunkhe",
        "created_on": 1763980053,
        "required_approvals": [
            "maker",
            "Approver"
        ],
        "existing_approvals": {
            "Approver": 1
        },
        "last_updated_user_id": "a05b2eaa-4c90-4bb8-beab-8f5357f97c6c",
        "last_updated_status": "Approved without OTP [Approval Pending]",
        "last_updated_timestamp": 0,
        "last_updated_user_name": "Ajinkya Salunkhe",
        "logs": [
            {
                "action": "Created",
                "user_id": "a05b2eaa-4c90-4bb8-beab-8f5357f97c6c",
                "timestamp": "2025-11-24T10:27:33.476Z",
                "request_ip": null,
                "user_full_name": "Ajinkya Salunkhe"
            },
            {
                "action": "Approved without OTP [Approval Pending]",
                "user_id": "a05b2eaa-4c90-4bb8-beab-8f5357f97c6c",
                "timestamp": "2025-11-24T10:27:33.501Z",
                "request_ip": null,
                "final_approval": false,
                "user_full_name": "Ajinkya Salunkhe",
                "authorization_rule": "maker~1<->Approver~1"
            }
        ],
        "transaction_items": [
            {
                "transaction_item_id": "ef39669f-f2df-4630-be7f-c2179b1835ca",
                "beneficiary_account_id": "1df662d0-5652-42b0-9785-df0a06e767cb",
                "name": "ANUJ JITENDRA SHUKLA",
                "beneficiary_account": "067410110007542",
                "beneficiary_account_ifsc": "BKID0000674",
                "pan": "JXVPS2378A",
                "amount": "2000.0",
                "additional_data": {
                    "data": [
                        {
                            "name": "Year",
                            "value": 2025,
                            "position": 1,
                            "data_type": "numeric",
                            "mandatory": "Y"
                        }
                    ]
                }
            },
            {
                "transaction_item_id": "536053eb-f747-43f1-9353-e28224c17f76",
                "beneficiary_account_id": "61fb2b03-2e8c-45ea-a4ea-c8ea7972f9f7",
                "name": "Mr AJINKYA  SALUNKHE",
                "beneficiary_account": "36344624716",
                "beneficiary_account_ifsc": "SBIN0012689",
                "pan": "ICYPS9279B",
                "amount": "2000.0",
                "additional_data": {
                    "data": [
                        {
                            "name": "Year",
                            "value": 2026,
                            "position": 1,
                            "data_type": "numeric",
                            "mandatory": "Y"
                        }
                    ]
                }
            },
            {
                "transaction_item_id": "7063144f-40fc-400a-9db6-8d13a68912af",
                "beneficiary_account_id": "c0af7772-1fea-4664-829a-2baa300ae8da",
                "name": "ANUJ JITENDRA SHUKLA",
                "beneficiary_account": "1111707390",
                "beneficiary_account_ifsc": "KKBK0000691",
                "pan": "ICYPS9279B",
                "amount": "2000.0",
                "additional_data": {
                    "data": [
                        {
                            "name": "Year",
                            "value": 2027,
                            "position": 1,
                            "data_type": "numeric",
                            "mandatory": "Y"
                        }
                    ]
                }
            },
            {
                "transaction_item_id": "186332ef-7307-4bc6-b874-0d6665617c1f",
                "beneficiary_account_id": "c4a2606a-8c13-41d1-b046-0a606ba21864",
                "name": "JITENDRA KIRAN KAKDE",
                "beneficiary_account": "067410110007542",
                "beneficiary_account_ifsc": "BKID0000674",
                "pan": "ENGPS2170Q",
                "amount": "2000.0",
                "additional_data": {
                    "data": [
                        {
                            "name": "Year",
                            "value": 2028,
                            "position": 1,
                            "data_type": "numeric",
                            "mandatory": "Y"
                        }
                    ]
                }
            }
        ]
    },
    "distribution_transaction_details": {
        "distribution_id": "5cbf362f-9336-4980-9148-e8de0f1075f9",
        "distribution_identifier": "3988176492607968223",
        "distribution_settlement_id": "d0794af8-766e-437b-9ad0-aa04ce52c7a1",
        "distribution_bank": "ICICI Bank",
        "distribution_amount": "8000.0",
        "distribution_mode_of_payment": "NEFT",
        "distribution_lifecycle_status": "awaiting_funds",
        "distribution_approved": true,
        "distribution_approved_at": 1764926278,
        "distribution_approved_by": "a05b2eaa-4c90-4bb8-beab-8f5357f97c6c",
        "distribution_approval_strategy": "user",
        "distribution_logs": [
            {
                "action": "Created",
                "user_id": "a05b2eaa-4c90-4bb8-beab-8f5357f97c6c",
                "timestamp": "2025-12-05T09:14:39.223Z",
                "user_full_name": "Ajinkya Salunkhe",
                "user_platform_details": null
            },
            {
                "action": "Approved",
                "user_id": "a05b2eaa-4c90-4bb8-beab-8f5357f97c6c",
                "platform": "web",
                "last_name": "Salunkhe",
                "last_used": "2025-12-05T09:17:58.771Z",
                "timestamp": "2025-12-05T09:17:58.782Z",
                "first_name": "Ajinkya",
                "ip_address": "103.167.184.130",
                "is_primary": false,
                "os_version": "Windows 10",
                "request_ip": "103.167.184.130",
                "user_grade": "Approver",
                "is_verified": false,
                "browser_name": "Fire fox",
                "final_approval": true,
                "logged_in_flag": false,
                "logged_in_time": "2025-12-05T09:10:09.966Z",
                "user_full_name": "Ajinkya Salunkhe"
            }
        ]
    }
}

ERROR RESPONSE The request returns JSON structured like below for errors related to Private Transaction

{
    "status": true,
    "transaction_request": {
        "request_id": "909710d1-fc5a-4988-8b35-aab9fa754cac",
        "file_name": "Dev_private_transaction.xlsx",
        "category": "BulkPaymentCategorysdasas",
        "request_status": "failed",
        "errors": [
            {
                "error": "Transaction category 'BulkPaymentCategorysdasas' not found or inactive.",
                "row_number": null
            }
        ],
        "uploaded_by": "47384762-6144-4e29-8a55-40bbd10b712a"
}

ERROR RESPONSE The request returns JSON structured like below for errors related to Private Transaction

{
    "status": true,
    "transaction_request": {
        "request_id": "909710d1-fc5a-4988-8b35-aab9fa754cac",
        "file_name": "Dev_private_transaction.xlsx",
        "category": "BulkPaymentCategorysdasas",
        "request_status": "failed",
        labels: [
            "construction",
            "audit expenxzxxzse"
        ],
        "errors": [
            {
                "error": "Transaction category 'BulkPaymentCategorysdasas' not found or inactive.",
                "row_number": null
            }
        ],
        "uploaded_by": "47384762-6144-4e29-8a55-40bbd10b712a"
}

This endpoint will show specific Private Transaction request.

UAT HTTP Request

GET https://nxt.api.q2pay.co.in/api/transactions/private_transactions/:request_reference_id

PRODUCTION HTTP Request

GET https://nxt.api.q2pay.in/api/transactions/private_transactions/:request_reference_id

Service Details

Service ID Description
VPrivateTransaction To view private transaction
VChildPrivateTransaction To view private transaction items

Get All Private Transaction Requests

curl -X GET "https://<environmenturl>/api/transactions/private_transaction_requests"
  -H "X-Api-Key: <your secure token>"
  -H "Content-Type: application/json"

require 'net/http'
require 'uri'
require 'json'

uri = URI.parse("https://<environmenturl>/api/transactions/private_transaction_requests") header = {'X-Api-Key' => '<your secure token>', 'Content-Type' => 'application/json'} http = Net::HTTP.new(uri.host, uri.port) http.use_ssl = true request = Net::HTTP::Get.new(uri.request_uri, header) request.body = body.to_json response = http.request(request)


fetch('https://<environmenturl>/api/transactions/private_transaction_requests', {
  method: 'GET',
  headers: {
    'X-Api-Key': '<your secure token>',
    'Content-Type': 'application/json'
  },
  body: JSON.stringify(data)
})
  .then(response => response.json())
  .then(data => console.log(data))
  .catch(error => console.error(error));

SUCCESS RESPONSE The request returns JSON structured like below

{
    "status": true,
    "total_count": 20,
    "summary": {
        "transaction_summary": {
            "processing_transaction_count": 0,
            "transaction_created_transaction_count": 24,
            "validation_pending_transaction_count": 0,
            "validation_rejected_transaction_count": 2,
            "require_approval_transaction_count": 0,
            "approval_pending_transaction_count": 0,
            "approval_rejected_transaction_count": 1,
            "authentication_pending_transaction_count": 1,
            "distribution_initiated_transaction_count": 2,
            "approved_transaction_count": 0,
            "failed_transaction_count": 64,
            "actionable_transaction_count": 14
        },
        "distribution_summary": {
            "created_distribution_transaction_count": 0,
            "approved_distribution_transaction_count": 0,
            "awaiting_funds_distribution_transaction_count": 0,
            "distribution_initiated_distribution_transaction_count": 0,
            "distribution_complete_distribution_transaction_count": 0,
            "distribution_pending_distribution_transaction_count": 0,
            "reversal_distribution_transaction_count": 0,
            "denied_distribution_transaction_count": 0,
            "rejected_distribution_transaction_count": 0,
            "abandoned_distribution_transaction_count": 0,
            "failed_distribution_transaction_count": 0
        },
        "available_labels": [
            "aa",
            "aaa",
            "abc",
            "add",
            "audit expense",
            "bbu",
            "bus",
            "cgh",
            "chintan",
            "data",
            "drop table",
            "dubai",
            "fggghfhwegfywe",
            "infrastructure",
            "label 1",
            "label 2",
            "parachute",
            "params",
            "phone",
            "prajaktag",
            "prajaktfdgaf",
            "table",
            "testing label",
            "this is a new label that i want to test"
        ]
    },
    "transaction_requests": [
        {
            "request_reference_id": "b4c00508-2bce-4a6a-bf80-44f8d69e2496",
            "entity_id": "QT4075",
            "file_name": "Beneficial_20251125 (1).xlsx",
            "category": "Beneficial",
            "request_status": "failed",
            "errors": [
                {
                    "error": "data empty in file"
                }
            ],
            "owner_account_details": {
                "owner_account_id": "55180961-99b3-4d94-9ed7-3be230dd7cb4",
                "owner_account_bank_acc_no": "628401028681",
                "owner_account_ifsc_code": "ICIC0006284",
                "owner_account_bank_name": "ICICI Bank",
                "owner_account_type": "Current Account"
            },
            "uploaded_by": "tejaswee Gade",
            "created_at": 1764072562
        },
        {
            "request_reference_id": "a674b9b3-7112-4571-b4bf-c0d0821004d1",
            "entity_id": "QT4075",
            "file_name": "Beneficial_20251125 (1).xlsx",
            "category": "Beneficial",
            "request_status": "failed",
            "errors": [
                {
                    "error": "data empty in file"
                }
            ],
            "owner_account_details": {
                "owner_account_id": "55180961-99b3-4d94-9ed7-3be230dd7cb4",
                "owner_account_bank_acc_no": "628401028681",
                "owner_account_ifsc_code": "ICIC0006284",
                "owner_account_bank_name": "ICICI Bank",
                "owner_account_type": "Current Account"
            },
            "uploaded_by": "tejaswee Gade",
            "created_at": 1764071011
        },
        {
            "request_reference_id": "f8848fed-4893-4e13-a05a-f07962f8619f",
            "entity_id": "QT4075",
            "file_name": "Salary_20251125 (4).xlsx",
            "category": "Salary",
            "request_status": "failed",
            "errors": [
                {
                    "error": "No Bank Account number record found for account V2AVV2V76L2NYA\n",
                    "row_number": 3
                },
                {
                    "error": "No Bank Account number record found for account V2AVV2V76L2NYA\n",
                    "row_number": 4
                },
                {
                    "error": "No Bank Account number record found for account V2AVV2V76L2NYA\n",
                    "row_number": 5
                },
                {
                    "error": "No Bank Account number record found for account V2AVV2V76L2NYA\n",
                    "row_number": 6
                },
                {
                    "error": "No Bank Account number record found for account V2AVV2V76L2NYA\n",
                    "row_number": 7
                }
            ],
            "owner_account_details": {
                "owner_account_id": "55180961-99b3-4d94-9ed7-3be230dd7cb4",
                "owner_account_bank_acc_no": "628401028681",
                "owner_account_ifsc_code": "ICIC0006284",
                "owner_account_bank_name": "ICICI Bank",
                "owner_account_type": "Current Account"
            },
            "uploaded_by": "tejaswee Gade",
            "created_at": 1764070150
        },
        {
            "request_reference_id": "7e4bb3ea-ef03-4e2b-bb62-1753c5ddefed",
            "entity_id": "QT4075",
            "file_name": "Salary_20251125.xlsx",
            "category": "Salary",
            "request_status": "failed",
            "errors": [
                {
                    "error": "data empty in file"
                }
            ],
            "owner_account_details": {
                "owner_account_id": "55180961-99b3-4d94-9ed7-3be230dd7cb4",
                "owner_account_bank_acc_no": "628401028681",
                "owner_account_ifsc_code": "ICIC0006284",
                "owner_account_bank_name": "ICICI Bank",
                "owner_account_type": "Current Account"
            },
            "uploaded_by": "tejaswee Gade",
            "created_at": 1764069193
        },
        {
            "request_reference_id": "3af15e89-782b-45fe-85d3-fe8a6dfb0480",
            "entity_id": "QT4075",
            "file_name": "Salary_20251125.xlsx",
            "category": "Salary",
            "request_status": "failed",
            "errors": [
                {
                    "error": "No Bank Account number record found for account V2AVV2V76L2NYA\n",
                    "row_number": 3
                },
                {
                    "error": "No Bank Account number record found for account V2AVV2V76L2NYA\n",
                    "row_number": 4
                },
                {
                    "error": "No Bank Account number record found for account V2AVV2V76L2NYA\n",
                    "row_number": 5
                },
                {
                    "error": "No Bank Account number record found for account V2AVV2V76L2NYA\n",
                    "row_number": 6
                },
                {
                    "error": "No Bank Account number record found for account V2AVV2V76L2NYA\n",
                    "row_number": 7
                }
            ],
            "owner_account_details": {
                "owner_account_id": "55180961-99b3-4d94-9ed7-3be230dd7cb4",
                "owner_account_bank_acc_no": "628401028681",
                "owner_account_ifsc_code": "ICIC0006284",
                "owner_account_bank_name": "ICICI Bank",
                "owner_account_type": "Current Account"
            },
            "uploaded_by": "tejaswee Gade",
            "created_at": 1764068989
        },
        {
            "request_reference_id": "662a04e4-d85b-45f3-a0de-d020140c06fb",
            "entity_id": "QT4075",
            "file_name": "Salary_20251125 (1).xlsx",
            "category": "Salary",
            "request_status": "failed",
            "errors": [
                {
                    "error": "data empty in file"
                }
            ],
            "owner_account_details": {
                "owner_account_id": "55180961-99b3-4d94-9ed7-3be230dd7cb4",
                "owner_account_bank_acc_no": "628401028681",
                "owner_account_ifsc_code": "ICIC0006284",
                "owner_account_bank_name": "ICICI Bank",
                "owner_account_type": "Current Account"
            },
            "uploaded_by": "tejaswee Gade",
            "created_at": 1764053770
        },
        {
            "request_reference_id": "cd1122df-62eb-44cb-96d4-209e5e0dbf1d",
            "entity_id": "QT4075",
            "file_name": "Salary_20251125.xlsx - Bulk Payment.csv",
            "category": "Salary",
            "request_status": "failed",
            "errors": [
                {
                    "error": "data empty in file"
                }
            ],
            "owner_account_details": {
                "owner_account_id": "55180961-99b3-4d94-9ed7-3be230dd7cb4",
                "owner_account_bank_acc_no": "628401028681",
                "owner_account_ifsc_code": "ICIC0006284",
                "owner_account_bank_name": "ICICI Bank",
                "owner_account_type": "Current Account"
            },
            "uploaded_by": "tejaswee Gade",
            "created_at": 1764052977
        },
        {
            "request_reference_id": "8b51436d-aba9-4537-809a-c28e82cbbd33",
            "entity_id": "QT4075",
            "file_name": "Salary_20251125 (2).xlsx",
            "category": "Salary",
            "request_status": "failed",
            "errors": [
                {
                    "error": "data empty in file"
                }
            ],
            "owner_account_details": {
                "owner_account_id": "55180961-99b3-4d94-9ed7-3be230dd7cb4",
                "owner_account_bank_acc_no": "628401028681",
                "owner_account_ifsc_code": "ICIC0006284",
                "owner_account_bank_name": "ICICI Bank",
                "owner_account_type": "Current Account"
            },
            "uploaded_by": "tejaswee Gade",
            "created_at": 1764052542
        },
        {
            "request_reference_id": "f299c249-88e2-403f-9a6d-478a7053408f",
            "entity_id": "QT4075",
            "file_name": "Salary_20251125.xlsx",
            "category": "Salary",
            "request_status": "failed",
            "errors": [
                {
                    "error": "data empty in file"
                }
            ],
            "owner_account_details": {
                "owner_account_id": "55180961-99b3-4d94-9ed7-3be230dd7cb4",
                "owner_account_bank_acc_no": "628401028681",
                "owner_account_ifsc_code": "ICIC0006284",
                "owner_account_bank_name": "ICICI Bank",
                "owner_account_type": "Current Account"
            },
            "uploaded_by": "tejaswee Gade",
            "created_at": 1764052292
        },
        {
            "request_reference_id": "b8e5e18a-81e3-4ec5-88f9-6c4d6c856bb2",
            "entity_id": "QT4075",
            "file_name": "Mobile Bill_sample_file.xlsx",
            "category": "Mobile Bill",
            "request_status": "failed",
            "errors": [
                {
                    "error": "data empty in file"
                }
            ],
            "owner_account_details": {
                "owner_account_id": "55180961-99b3-4d94-9ed7-3be230dd7cb4",
                "owner_account_bank_acc_no": "628401028681",
                "owner_account_ifsc_code": "ICIC0006284",
                "owner_account_bank_name": "ICICI Bank",
                "owner_account_type": "Current Account"
            },
            "uploaded_by": "tejaswee Gade",
            "created_at": 1764050873
        },
        {
            "request_reference_id": "6f86b8b9-60da-4612-8d66-352e340830ce",
            "entity_id": "QT4075",
            "file_name": "Mobile Bill_sample_file.xlsx",
            "category": "Mobile bill",
            "request_status": "failed",
            "errors": [
                {
                    "error": "Transaction category 'Mobile bill' not found or inactive.",
                    "row_number": null
                }
            ],
            "owner_account_details": {
                "owner_account_id": "55180961-99b3-4d94-9ed7-3be230dd7cb4",
                "owner_account_bank_acc_no": "628401028681",
                "owner_account_ifsc_code": "ICIC0006284",
                "owner_account_bank_name": "ICICI Bank",
                "owner_account_type": "Current Account"
            },
            "uploaded_by": "tejaswee Gade",
            "created_at": 1764050347
        },
        {
            "request_reference_id": "04fdb488-7e6b-436f-839e-1799e6e88752",
            "entity_id": "QT4075",
            "file_name": "Mobile Bill_sample_file.xlsx",
            "category": "Mobile bill",
            "request_status": "failed",
            "errors": [
                {
                    "error": "Transaction category 'Mobile bill' not found or inactive.",
                    "row_number": null
                }
            ],
            "owner_account_details": {
                "owner_account_id": "55180961-99b3-4d94-9ed7-3be230dd7cb4",
                "owner_account_bank_acc_no": "628401028681",
                "owner_account_ifsc_code": "ICIC0006284",
                "owner_account_bank_name": "ICICI Bank",
                "owner_account_type": "Current Account"
            },
            "uploaded_by": "tejaswee Gade",
            "created_at": 1764050087
        },
        {
            "request_reference_id": "19a5154f-86fa-422a-8ffa-75c0bf1d215d",
            "entity_id": "QT4075",
            "file_name": "Mobile Bill_sample_file.xlsx",
            "category": "Mobile bill",
            "request_status": "failed",
            "errors": [
                {
                    "error": "Transaction category 'Mobile bill' not found or inactive.",
                    "row_number": null
                }
            ],
            "owner_account_details": {
                "owner_account_id": "55180961-99b3-4d94-9ed7-3be230dd7cb4",
                "owner_account_bank_acc_no": "628401028681",
                "owner_account_ifsc_code": "ICIC0006284",
                "owner_account_bank_name": "ICICI Bank",
                "owner_account_type": "Current Account"
            },
            "uploaded_by": "tejaswee Gade",
            "created_at": 1764049974
        },
        {
            "request_reference_id": "a4bea9e7-4731-4cf7-a00a-7116ebe058ba",
            "entity_id": "QT4075",
            "file_name": "Light Bill_20250917.xlsx",
            "category": "Mobile bill",
            "request_status": "failed",
            "errors": [
                {
                    "error": "Transaction category 'Mobile bill' not found or inactive.",
                    "row_number": null
                }
            ],
            "owner_account_details": {
                "owner_account_id": "55180961-99b3-4d94-9ed7-3be230dd7cb4",
                "owner_account_bank_acc_no": "628401028681",
                "owner_account_ifsc_code": "ICIC0006284",
                "owner_account_bank_name": "ICICI Bank",
                "owner_account_type": "Current Account"
            },
            "uploaded_by": "tejaswee Gade",
            "created_at": 1764046269
        },
        {
            "request_reference_id": "7a855dd6-15e8-49dd-8c3c-cae179495357",
            "entity_id": "MH1214",
            "private_transaction_id": "256dd72f-044f-498c-a01b-d0b74c8817a7",
            "file_name": "Salary_xxxx.xlsx",
            "category": "Salary",
            "request_status": "transaction_created",
            "total_beneficiary_account_count": 4,
            "total_amount": 8000.0,
            "owner_account_details": {
                "owner_account_id": "09c839a4-5a0b-49d8-a546-fc2d0a5db75d",
                "owner_account_bank_acc_no": "000501500579",
                "owner_account_ifsc_code": "ICIC0000915",
                "owner_account_bank_name": "ICICI Bank",
                "owner_account_type": "Current Account",
                "owner_account_balance": "515.0",
                "owner_account_balance_last_fetched_at": 1723532993,
                "owner_account_balance_last_fetched_at_in_words": "over 1 year ago"
            },
            "uploaded_by": "Ajinkya Salunkhe",
            "created_at": 1763991640
        },
        {
            "request_reference_id": "55bab07f-63ff-4e7d-8519-317c7b4c3aff",
            "entity_id": "MH1214",
            "private_transaction_id": "9f054cfc-e459-4bf9-8014-c7a8929bb948",
            "file_name": "Salary_xxxx.xlsx",
            "category": "Salary",
            "request_status": "transaction_created",
            "total_beneficiary_account_count": 4,
            "total_amount": 8000.0,
            "owner_account_details": {
                "owner_account_id": "09c839a4-5a0b-49d8-a546-fc2d0a5db75d",
                "owner_account_bank_acc_no": "000501500579",
                "owner_account_ifsc_code": "ICIC0000915",
                "owner_account_bank_name": "ICICI Bank",
                "owner_account_type": "Current Account",
                "owner_account_balance": "515.0",
                "owner_account_balance_last_fetched_at": 1723532993,
                "owner_account_balance_last_fetched_at_in_words": "over 1 year ago"
            },
            "uploaded_by": "Ajinkya Salunkhe",
            "created_at": 1763989154
        },
        {
            "request_reference_id": "926b51e8-e3cc-4790-a143-f06707bb4629",
            "entity_id": "MH1214",
            "file_name": "Salary_xxxx.xlsx",
            "category": "Salary",
            "request_status": "failed",
            "errors": [
                {
                    "error": "Unexpected error: CustomExceptions::AuthMatrixNotFoundError - CustomExceptions::AuthMatrixNotFoundError"
                }
            ],
            "owner_account_details": {
                "owner_account_id": "09c839a4-5a0b-49d8-a546-fc2d0a5db75d",
                "owner_account_bank_acc_no": "000501500579",
                "owner_account_ifsc_code": "ICIC0000915",
                "owner_account_bank_name": "ICICI Bank",
                "owner_account_type": "Current Account",
                "owner_account_balance": "515.0",
                "owner_account_balance_last_fetched_at": 1723532993,
                "owner_account_balance_last_fetched_at_in_words": "over 1 year ago"
            },
            "uploaded_by": "Ajinkya Salunkhe",
            "created_at": 1763984090
        },
        {
            "request_reference_id": "07a21495-802e-436c-bfb0-9f395e1b1790",
            "entity_id": "MH1214",
            "file_name": "Salary_xxxx.xlsx",
            "category": "Salary",
            "request_status": "failed",
            "errors": [
                {
                    "error": "'Credit bank account' cannot be blank",
                    "row_number": 4
                },
                {
                    "error": "'Credit bank account' cannot be blank",
                    "row_number": 5
                },
                {
                    "error": "'Credit bank account' cannot be blank",
                    "row_number": 6
                },
                {
                    "error": "'Credit bank account' cannot be blank",
                    "row_number": 7
                }
            ],
            "owner_account_details": {
                "owner_account_id": "09c839a4-5a0b-49d8-a546-fc2d0a5db75d",
                "owner_account_bank_acc_no": "000501500579",
                "owner_account_ifsc_code": "ICIC0000915",
                "owner_account_bank_name": "ICICI Bank",
                "owner_account_type": "Current Account",
                "owner_account_balance": "515.0",
                "owner_account_balance_last_fetched_at": 1723532993,
                "owner_account_balance_last_fetched_at_in_words": "over 1 year ago"
            },
            "uploaded_by": "Ajinkya Salunkhe",
            "created_at": 1763983921
        },
        {
            "request_reference_id": "f0fd8096-c211-4042-9d8f-3e68cfb75ca3",
            "entity_id": "MH1214",
            "file_name": "Salary_xxxx.xlsx",
            "category": "Salary",
            "request_status": "validation_rejected",
            "owner_account_details": {
                "owner_account_id": "09c839a4-5a0b-49d8-a546-fc2d0a5db75d",
                "owner_account_bank_acc_no": "000501500579",
                "owner_account_ifsc_code": "ICIC0000915",
                "owner_account_bank_name": "ICICI Bank",
                "owner_account_type": "Current Account",
                "owner_account_balance": "515.0",
                "owner_account_balance_last_fetched_at": 1723532993,
                "owner_account_balance_last_fetched_at_in_words": "over 1 year ago"
            },
            "uploaded_by": "Ajinkya Salunkhe",
            "created_at": 1763978335
        },
        {
            "request_reference_id": "5877fd4f-1865-467b-be4c-5d7670157cfe",
            "entity_id": "MH1214",
            "file_name": "Salary_20251124.xlsx",
            "category": "Salary",
            "request_status": "validation_rejected",
            "owner_account_details": {
                "owner_account_id": "09c839a4-5a0b-49d8-a546-fc2d0a5db75d",
                "owner_account_bank_acc_no": "000501500579",
                "owner_account_ifsc_code": "ICIC0000915",
                "owner_account_bank_name": "ICICI Bank",
                "owner_account_type": "Current Account",
                "owner_account_balance": "515.0",
                "owner_account_balance_last_fetched_at": 1723532993,
                "owner_account_balance_last_fetched_at_in_words": "over 1 year ago"
            },
            "uploaded_by": "Ajinkya Salunkhe",
            "created_at": 1763977733
        }
    ],
    "title": {
        "records": 20,
        "current_page": 1,
        "total_pages": 1,
        "page_item_count": 50
    }
}

ERROR RESPONSE The request returns JSON structured like below for errors related private transaction requests

{
    "status": false,
    "error": {
        "base": [
            "Invalid date format: '23rr'. Please use DD-MM-YYYY."
        ],
         "base": [
            "Invalid date range: 'from_date' cannot be after 'to_date'"
        ]
    }
}

This endpoint retrieves all Private Transaction Requests.

UAT HTTP Request

GET https://nxt.api.q2pay.co.in/api/transactions/private_transaction_requests

PRODUCTION HTTP Request

GET https://nxt.api.q2pay.in/api/transactions/private_transaction_requests

Query Parameters

Parameter Default Description Required Sample
status N.A. lifecycle status for Private Transaction Request optional status processing transaction_created validation_pending validation_rejected require_approval approval_pending approval_rejected authentication_pending distribution_initiated approved failed
owner_account_id N.A. owner account id for Private transaction optional 'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxx'
from_date,to_date N.A. from date and to date for Private Transaction Request optional DD-MM-YYYY
private_transaction_id N.A. transaction id is used to search id of Private Transaction Request optional 'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxx'
entity_id N.A. entity id for Private Transaction Request[only when user is super admin else ignored] optional ABC12

Service Details

Service ID Description
VPrivateTransaction View All Private Transaction Requests

Create Private Transaction Request

curl -X POST "https://<environmenturl>/api/transaction/bulk_payment"
  -H "X-Api-Key: <your secure token>"
  -H "Content-Type: application/json"
  -d "{
    "category": "PrivateTransactionCategory",
    "owner_account_id": "ef7ed056-a4ee-46c3-b91d-7b778844d61c",
    "labels": ["label_1", "label_2"],
    "uploaded_file_data": {
        "id": "0a205eb07c7f497bf62d60807bfcaa47.xlsx",
        "storage": "cache",
        "metadata": {
            "filename": "private_transaction.xlsx",
            "size": 7715,
            "mime_type": "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"
        }
    }}" 
require 'net/http'
require 'uri'
require 'json'

uri = URI.parse("https://<environmenturl>/api/transactions/upload") header = {'X-Api-Key' => '<your secure token>', 'Content-Type' => 'application/json'} body = { "category": "PrivateTransactionCategory", "owner_account_id": "ef7ed056-a4ee-46c3-b91d-7b778844d61c", "labels": ["label_1", "label_2"], "uploaded_file_data": { "id": "0a205eb07c7f497bf62d60807bfcaa47.xlsx", "storage": "cache", "metadata": { "filename": "private_transaction.xlsx", "size": 7715, "mime_type": "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet" } } } http = Net::HTTP.new(uri.host, uri.port) http.use_ssl = true request = Net::HTTP::Post.new(uri.request_uri, header) request.body = body.to_json response = http.request(request)

const data = {
    "category": "PrivateTransactionCategory",
    "owner_account_id": "ef7ed056-a4ee-46c3-b91d-7b778844d61c",
    "labels": ["label_1", "label_2"],
    labels: ["construction", "audit expenxzxxzse"],
    "uploaded_file_data": {
        "id": "0a205eb07c7f497bf62d60807bfcaa47.xlsx",
        "storage": "cache",
        "metadata": {
            "filename": "private_transaction.xlsx",
            "size": 7715,
            "mime_type": "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"
        }
    }
}

fetch('https://<environmenturl>/api/transactions/upload', { method: 'POST', headers: { 'X-Api-Key': '<your secure token>', 'Content-Type': 'application/json' }, body: JSON.stringify(data) }) .then(response => response.json()) .then(data => console.log(data)) .catch(error => console.error(error));

The below example can be sent as a request to the API.

{
    "category": "PrivateTransactionCategory",
    "owner_account_id": "ef7ed056-a4ee-46c3-b91d-7b778844d61c",
    "labels": ["label_1", "label_2"],
    "uploaded_file_data": {
        "id": "0a205eb07c7f497bf62d60807bfcaa47.xlsx",
        "storage": "cache",
        "metadata": {
            "filename": "private_transaction.xlsx",
            "size": 7715,
            "mime_type": "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"
        }
    }
}

SUCCESS RESPONSE The request returns JSON structured like below on successful private transaction upload

{
    "status": true,
    "message": "Payment file uploaded successfully. Processing started...",
    "request_reference_id": "c6cc1947-340b-4756-baf0-8ba43117f8ae"
}

ERROR RESPONSE The request returns JSON structured like below for errors related private transaction upload

{ 
  "status": false,
  "errors": {
    "base": [
      "Uploaded file data cannot be blank"
    ],
    "base": [
      "Invalid file format. Only CSV, XLSX files are allowed."
    ]
    "base": [
      "File metadata is invalid."
    ]
    "base": [
            "Owner Account does not exists"
        ]
  }
}

This endpoint creates a Private Transaction Request.

UAT HTTP Request

POST https://nxt.api.q2pay.co.in/api/transaction/bulk_payment

PRODUCTION HTTP Request

POST https://nxt.api.q2pay.in/api/transaction/bulk_payment

Query Parameters

Parameter Default Description Required criteria Sample
category N.A category of Private Transaction Yes should belong to uploaders entity if custom category OR should be global category "Salary"
uploaded_file_data N.A Upload file data of Private Transaction Yes after uploading file to upload API, its the response { "id":"ca75c5ce08935b8459e649d16365eed4.xlsx", "storage":"cache","metadata": {"filename":"026883000000545.xlsx", "size": 7693, "mime_type": "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet" }}
owner_account_id N.A owner account id of source account Yes connected banking should be enabled; account should be active, contain banking_credential_id xxxxxxxxxxxxxxx
labels N.A label for transaction request No should be sent in array of string ["construction", "electric bill"]

Service Details

Service ID Description
CPrivateTransaction To create Private Transaction request

Approve/Reject/Validate Private Transaction

curl -X PUT "https://<environmenturl>/api/transactions/private_transactions/xxxxxxxxxxxxxxxxxxxxxxxx"
  -H "X-Api-Key: <your secure token>"
  -H "Content-Type: application/json"
  -d "
    {
    "private_transaction": {
        "status": "approve"
        }
    }"

require 'net/http'
require 'uri'
require 'json'

uri = URI.parse("https://<environmenturl>/api/transactions/private_transactions/xxxxxxxxxxxxxxxxxxxxxxxx") header = {'X-Api-Key' => '<your secure token>', 'Content-Type' => 'application/json'} body = { "private_transaction": { "status": "approve" } } http = Net::HTTP.new(uri.host, uri.port) http.use_ssl = true request = Net::HTTP::Put.new(uri.request_uri, header) request.body = body.to_json response = http.request(request)

const data = {
   private_transaction: 
   {{
  "private_transaction": {
    "status": "approve"
  }
}}
};

fetch('https://<environmenturl>/api/transactions/private_transactions/xxxxxxxxxxxxxxxxxxxxxxxx', { method: 'PUT', headers: { 'X-Api-Key': '<your secure token>', 'Content-Type': 'application/json' }, body: JSON.stringify(data) }) .then(response => response.json()) .then(data => console.log(data)) .catch(error => console.error(error));

The below example can be sent as a request to the API for validation.

{
  "private_transaction": {
    "status": "validated"
  }
}

The below example can be sent as a request to the API for Approve.

{
  "private_transaction": {
    "status": "approve"
  }
}

The below example can be sent as a request to the API for rejection.

{"private_transaction": 
    {
    "status" : "reject",
    "rejection_reason": "no reason"
    }
}

SUCCESS RESPONSE The request returns JSON structured like below on successful Private transaction approve

{
    "status": true,
    "private_transaction": {
        "entity_id": "MH1214",
        "total_amount": 8000.0,
        "id": "2f86daca-ef2a-40da-b018-05091aea41ef",
        "request_reference_id": "48779d44-1db5-4f6e-bf21-be2d892b63c4",
        "status": "approved_without_otp",
        "total_beneficiary_account_count": 4,
        "created_by": "reimburse test normal",
        "validated_by": "reimburse test normal",
        "approved_at": 1763982447,
        "created_on": 1763982348,
        "required_approvals": [
            "maker",
            "Approver"
        ],
        "existing_approvals": {
            "maker": 1,
            "Approver": 1
        },
        "last_updated_user_id": "a05b2eaa-4c90-4bb8-beab-8f5357f97c6c",
        "last_updated_status": "Approved Without OTP",
        "last_updated_timestamp": 0,
        "last_updated_user_name": "Ajinkya Salunkhe",
        "logs": [
            {
                "action": "Created",
                "user_id": "f637a170-2d61-462e-ac8a-a80d5cba1fe9",
                "timestamp": "2025-11-24T11:05:48.218Z",
                "request_ip": null,
                "user_full_name": "reimburse test normal"
            },
            {
                "action": "Validated",
                "user_id": "f637a170-2d61-462e-ac8a-a80d5cba1fe9",
                "timestamp": "2025-11-24T11:05:48.222Z",
                "request_ip": null,
                "user_full_name": "reimburse test normal"
            },
            {
                "action": "Approved without OTP [Approval Pending]",
                "user_id": "f637a170-2d61-462e-ac8a-a80d5cba1fe9",
                "timestamp": "2025-11-24T11:05:48.244Z",
                "request_ip": null,
                "final_approval": false,
                "user_full_name": "reimburse test normal",
                "authorization_rule": "maker~1<->Approver~1"
            },
            {
                "action": "Approved Without OTP",
                "user_id": "a05b2eaa-4c90-4bb8-beab-8f5357f97c6c",
                "user_full_name": "Ajinkya Salunkhe",
                "timestamp": "2025-11-24T11:07:27.486Z",
                "request_ip": "::1",
                "last_used": "2025-11-24T11:07:27.394Z",
                "logged_in_flag": false,
                "logged_in_time": "2025-11-24T11:07:20.402Z",
                "platform": "web",
                "os_version": "Windows 10",
                "browser_name": "Fire fox",
                "ip_address": "::1",
                "is_primary": false,
                "is_verified": false,
                "first_name": "Ajinkya",
                "last_name": "Salunkhe",
                "authorization_rule": "maker~1<->Approver~1",
                "final_approval": true
            }
        ]
    }
}

ERROR RESPONSE The request returns JSON structured like below for errors related private transaction

{{
    "status":false,
    "errors":{
        "base":[
           "User is not authorized to approve (duplicate approval)"
        ],
        "base":[
            "RecordNotFound: Private Transaction with id: 476dad09-2924-4841-9bed-3ec1e87de42 is not found"
        ],
"base":[ "Missing parameter: private_transaction" ] "base":[ "duplicate validation error, transaction is already validated" ] } }

This endpoint approve a Private Transaction.

UAT HTTP Request

PUT https://nxt.api.q2pay.co.in/api/transactions/private_transactions/:private_transaction_id

PRODUCTION HTTP Request

PUT https://nxt.api.q2pay.in/api/transactions/private_transactions/:private_transaction_id

Query Parameters

Parameter Default Description Required Sample
status N.A. status Yes validated, approve, reject
rejection_reason N.A. rejection reason Yes[when status is reject] "test reason"

Service Details

Service ID Description
APrivateTransaction Approve Private Transaction
ValidatorPrivateTransaction Validate Private Transaction

OTP Validation Private Transaction

curl -X PUT "https://<environmenturl>/api/transactions/private_transactions/xxxxxxxxxxxxxx/validate_otp"
  -H "X-Api-Key: <your secure token>"
  -H "Content-Type: application/json"
  -d "
    {
    "private_transaction": {
        "otp" : "1234"
        }
    }"

require 'net/http'
require 'uri'
require 'json'

uri = URI.parse("https://<environmenturl>/api/transactions/private_transactions/xxxxxxxxxxxxxx/validate_otp") header = {'X-Api-Key' => '<your secure token>', 'Content-Type' => 'application/json'} body = { "private_transaction": { "otp" : "1234" } } http = Net::HTTP.new(uri.host, uri.port) http.use_ssl = true request = Net::HTTP::Put.new(uri.request_uri, header) request.body = body.to_json response = http.request(request)

const data = {
   private_transaction: 
   {{
  "private_transaction": {
    "otp" : "1234"
  }
}}
};

fetch('https://<environmenturl>/api/transactions/private_transactions/xxxxxxxxxxxxxx/validate_otp', { method: 'PUT', headers: { 'X-Api-Key': '<your secure token>', 'Content-Type': 'application/json' }, body: JSON.stringify(data) }) .then(response => response.json()) .then(data => console.log(data)) .catch(error => console.error(error));

The below example can be sent as a request to the API.

{
  "private_transaction": {
    "otp" : "1234"
  }
}

SUCCESS RESPONSE The request returns JSON structured like below on successful Private transaction approve

{
    "status": "approved_with_otp",
    "entity_id": "HM4104",
    "total_amount": 8000.0,
    "id": "a312484d-9b0e-4a73-8abc-16934ef4358b",
    "request_reference_id": "9a338f6a-bcc3-4c7b-98cf-f3d3ee17a2e4",
    "total_beneficiary_account_count": 2,
    "created_by": "HEMANT MUKESH SHROFF a",
    "owner_account_details": {
        "owner_account_id": "81e0d43b-ae28-4e4f-b55d-7ec38b27c3af",
        "owner_account_bank_acc_no": "4501020418",
        "owner_account_ifsc_code": "ICIC0000045",
        "owner_account_bank_name": "ICICI Bank",
        "owner_account_type": "Current Account"
    },
    "created_on": 1763645304,
    "existing_approvals": {
        "CFO": 1
    },
    "last_updated_user_id": "47384762-6144-4e29-8a55-40bbd10b712a",
    "last_updated_status": "Approved With OTP",
    "last_updated_timestamp": 0,
    "last_updated_user_name": "HEMANT MUKESH SHROFF a",
    "logs": [
        {
            "action": "Created",
            "user_id": "47384762-6144-4e29-8a55-40bbd10b712a",
            "timestamp": "2025-11-20T13:28:24.543Z",
            "request_ip": null,
            "user_full_name": "HEMANT MUKESH SHROFF a"
        },
        {
            "action": "Validated",
            "user_id": "47384762-6144-4e29-8a55-40bbd10b712a",
            "timestamp": "2025-11-20T13:28:24.554Z",
            "request_ip": null,
            "user_full_name": "HEMANT MUKESH SHROFF a"
        },
        {
            "action": "Approved Without OTP",
            "user_id": "47384762-6144-4e29-8a55-40bbd10b712a",
            "timestamp": "2025-11-20T13:28:24.561Z",
            "request_ip": null,
            "final_approval": true,
            "user_full_name": "HEMANT MUKESH SHROFF a",
            "authorization_rule": "CFO~1"
        },
        {
            "action": "Approved With OTP",
            "user_id": "47384762-6144-4e29-8a55-40bbd10b712a",
            "platform": "web",
            "last_name": "a",
            "last_used": "2025-11-20T13:29:30.025Z",
            "timestamp": "2025-11-20T13:29:30.037Z",
            "first_name": "HEMANT MUKESH SHROFF",
            "ip_address": "::1",
            "is_primary": false,
            "os_version": "Windows 10",
            "request_ip": "::1",
            "is_verified": false,
            "browser_name": "Fire fox",
            "final_approval": null,
            "logged_in_flag": false,
            "logged_in_time": "2025-11-20T13:28:17.204Z",
            "user_full_name": "HEMANT MUKESH SHROFF a",
            "authorization_rule": null
        },
        {
            "action": "Approved With OTP",
            "user_id": "47384762-6144-4e29-8a55-40bbd10b712a",
            "user_full_name": "HEMANT MUKESH SHROFF a",
            "timestamp": "2025-11-20T13:40:48.876Z",
            "request_ip": "::1",
            "last_used": "2025-11-20T13:40:48.864Z",
            "logged_in_flag": false,
            "logged_in_time": "2025-11-20T13:28:17.204Z",
            "platform": "web",
            "os_version": "Windows 10",
            "browser_name": "Fire fox",
            "ip_address": "::1",
            "is_primary": false,
            "is_verified": false,
            "first_name": "HEMANT MUKESH SHROFF",
            "last_name": "a",
            "authorization_rule": null,
            "final_approval": null
        }
    ],
    "distribution_transaction_details": {
        "distribution_id": "d1e208bb-8ac9-4da9-a0f5-da79f716fb50",
        "distribution_identifier": "3088176364537068065",
        "distribution_settlement_id": "a312484d-9b0e-4a73-8abc-16934ef4358b",
        "distribution_bank": "ICICI Bank",
        "distribution_amount": "8000.0",
        "distribution_mode_of_payment": "NEFT",
        "distribution_lifecycle_status": "created",
        "distribution_approved": false,
        "distribution_approved_at": 0,
        "distribution_approval_strategy": "system",
        "distribution_logs": [
            {
                "action": "Created",
                "user_id": "47384762-6144-4e29-8a55-40bbd10b712a",
                "timestamp": "2025-11-20T13:29:30.066Z",
                "user_full_name": "HEMANT MUKESH SHROFF a",
                "user_platform_details": null
            }
        ]
    }
}

ERROR RESPONSE The request returns JSON structured like below for errors related private transaction

{{
    "status":false,
    "errors":{
        "base":[
           "OTP not generated!"
        ]
    }
}

This endpoint approve a Private Transaction.

UAT HTTP Request

PUT https://nxt.api.q2pay.co.in/api/transactions/private_transactions/:private_transaction_id/validate_otp

PRODUCTION HTTP Request

PUT https://nxt.api.q2pay.in/api/transactions/private_transactions/:private_transaction_id/validate_otp

Query Parameters

Parameter Default Description Required Sample
otp N.A. otp for transaction Yes 123456

Service Details

Service ID Description
OTPPrivateTransaction Approve Private Transaction

Add Labels of Private Transaction

curl -X PUT "https://<environmenturl>/api/transactions/private_transaction/add_label"
  -H "X-Api-Key: <your secure token>"
  -H "Content-Type: application/json"
  -d "{
  "record_ids": [
    "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx","xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx"
  ],
  "labels": [
    "audit expense",
    "Infrastructure"
  ]
}"
require 'net/http'
require 'uri'
require 'json'

uri = URI.parse("https://<environmenturl>/api/transactions/private_transaction/add_label") header = {'X-Api-Key' => '<your secure token>', 'Content-Type' => 'application/json'} body = {
"record_ids": [ "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx","xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx" ], "labels": [ "audit expense", "Infrastructure" ] } http = Net::HTTP.new(uri.host, uri.port) http.use_ssl = true request = Net::HTTP::Put.new(uri.request_uri, header) request.body = body.to_json response = http.request(request)

const data = {
  "record_ids": [
     "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx","xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx"
  ],
  "labels": [
    "audit expense",
     "Infrastructure"
  ]
};

fetch('https://<environmenturl>/api/transactions/private_transaction/add_label', { method: 'PUT', headers: { 'X-Api-Key': '<your secure token>', 'Content-Type': 'application/json' }, body: JSON.stringify(data) }) .then(response => response.json()) .then(data => console.log(data)) .catch(error => console.error(error));

The below example can be sent as a request to the API.

{
  "record_ids": [
     "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx","xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx"
  ],
  "labels": [
    "audit expense",
    "Infrastructure"
  ]
}

SUCCESS RESPONSE The request returns JSON structured like below on successful add labels of private transactions

{
    "status":true, 
    "successful_count":1,
    "unsuccessful_count":1, 
    "ids":{
        "successful_ids":["xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx"],
        "unsuccessful_ids": [
      { "id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx", "errors": "Label could not be added due to validation error" }
    ]
    }
}

ERROR RESPONSE The request returns JSON structured like below for errors related add labels of private transactions

{
  "status": false,
  "errors": {
    "base": [
      "Missing required parameters: record_ids and/or labels."
    ],
    "base":[
      "The private transaction IDs are not present."
    ]
  }
}

This endpoint Add labels of Private Transaction.

UAT HTTP Request

PUT https://nxt.api.q2pay.co.in/api/transactions/private_transaction/add_label

PRODUCTION HTTP Request

PUT https://nxt.api.q2pay.in/api/transactions/private_transaction/add_label

Query Parameters

Parameter Default Description Required Sample
record_ids N.A. record ids of transaction request [request_reference_id] Yes ["xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx","xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx" ]
labels N.A. labels of private transaction Yes ["audit expense","Infrastructure"]

Service Details

Service ID Description
ALabel Add labels for Private Transaction

remove Labels of Private Transaction

curl -X PUT "https://<environmenturl>/api/transactions/private_transaction/remove_label"
  -H "X-Api-Key: <your secure token>"
  -H "Content-Type: application/json"
  -d "{
  "record_ids": [
    "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx","xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx"
  ],
  "labels": [
    "audit expense",
    "Infrastructure"
  ]
}"
require 'net/http'
require 'uri'
require 'json'

uri = URI.parse("https://<environmenturl>/api/transactions/private_transaction/remove_label") header = {'X-Api-Key' => '<your secure token>', 'Content-Type' => 'application/json'} body = {
"record_ids": [ "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx","xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx" ], "labels": [ "audit expense", "Infrastructure" ] } http = Net::HTTP.new(uri.host, uri.port) http.use_ssl = true request = Net::HTTP::Put.new(uri.request_uri, header) request.body = body.to_json response = http.request(request)

const data = {
  "record_ids": [
     "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx","xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx"
  ],
  "labels": [
    "audit expense",
     "Infrastructure"
  ]
};

fetch('https://<environmenturl>/api/transactions/private_transaction/remove_label', { method: 'PUT', headers: { 'X-Api-Key': '<your secure token>', 'Content-Type': 'application/json' }, body: JSON.stringify(data) }) .then(response => response.json()) .then(data => console.log(data)) .catch(error => console.error(error));

The below example can be sent as a request to the API.

{
  "record_ids": [
     "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx","xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx"
  ],
  "labels": [
    "audit expense",
    "Infrastructure"
  ]
}

SUCCESS RESPONSE The request returns JSON structured like below on successful remove labels of private transactions

{
    "status":true, 
    "successful_count":1,
    "unsuccessful_count":1, 
    "ids":{
        "successful_ids":["xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx"],
        "unsuccessful_ids": [
      { "id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx", "errors": "Label could not be removeed due to validation error" }
    ]
    }
}

ERROR RESPONSE The request returns JSON structured like below for errors related remove labels of private transactions

{
  "status": false,
  "errors": {
    "base": [
      "Missing required parameters: record_ids and/or labels."
    ],
    "base":[
      "The private transaction IDs are not present."
    ]
  }
}

This endpoint remove labels of Private Transaction.

UAT HTTP Request

PUT https://nxt.api.q2pay.co.in/api/transactions/private_transaction/remove_label

PRODUCTION HTTP Request

PUT https://nxt.api.q2pay.in/api/transactions/private_transaction/remove_label

Query Parameters

Parameter Default Description Required Sample
record_ids N.A. record ids of transaction request [request_reference_id] Yes ["xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx","xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx" ]
labels N.A. labels of private transaction Yes ["audit expense","Infrastructure"]

Service Details

Service ID Description
RLabel Remove Labels for Private Transaction

Reminder

Reminder helps you create, maintain & manage lifecycle for your organization

Get All Reminders

curl -X GET "https://<environmenturl>/api/reminders"
  -H "X-Api-Key: <your secure token>"
  -H "Content-Type: application/json"

require 'net/http'
require 'uri'
require 'json'

uri = URI.parse("https://<environmenturl>/api/reminders") header = {'X-Api-Key' => '<your secure token>', 'Content-Type' => 'application/json'} http = Net::HTTP.new(uri.host, uri.port) http.use_ssl = true request = Net::HTTP::Get.new(uri.request_uri, header) request.body = body.to_json response = http.request(request)

fetch('https://<environmenturl>/api/reminders', { method: 'GET', headers: { 'X-Api-Key': '<your secure token>', 'Content-Type': 'application/json' }, body: JSON.stringify(data) }) .then(response => response.json()) .then(data => console.log(data)) .catch(error => console.error(error));

SUCCESS RESPONSE The request returns JSON structured like below

{
    "status": true,
    "total_count": 3,
    "total_amount": "30000.0",
    "summary": {
        "current_reminders_count": 13,
        "past_reminders_count": 12,
        "future_reminders_count": 10
    },
    "reminders": [
        {
            "id": 1,
            "entity_id": "ABC12",
            "reminder_date": "2025-05-24",
            "amount": "10000.0",
            "reminder_remark": "transfer money to q2travels",
            "created_by": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
            "created_by_name": "Akshay Rangnekar",
            "created_on": 1747917497
        },
        {
            "id": 2,
            "entity_id": "ABC12",
            "reminder_date": "2025-05-25",
            "reminder_remark": "transfer money to q2travels",
            "created_by": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
            "created_by_name": "Akshay Rangnekar",
            "created_on": 1747917760
        },
        {
            "id": 3,
            "entity_id": "ABC12",
            "reminder_date": "2025-05-26",
            "amount": "10000.0",
            "reminder_remark": "transfer money to q2travels",
            "created_by": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
            "created_by_name": "Akshay Rangnekar",
            "created_on": 1747918110
        }
    ],
    "title": {
        "records": 3,
        "current_page": 1,
        "total_pages": 1,
        "page_item_count": 50
    }
}

This endpoint retrieves all reminders.

UAT HTTP Request

GET https://nxt.api.q2pay.co.in/api/reminders

PRODUCTION HTTP Request

GET https://nxt.api.q2pay.in/api/reminders

Query Parameters

Parameter Default Description Required Sample
search_string N.A. search string used to filter date optional current, future, past, upcoming

Service Details

Service ID Description
Admin Admin
VReminder User can view reminder

Create Reminder

curl -X POST "https://<environmenturl>/api/reminders"
  -H "X-Api-Key: <your secure token>"
  -H "Content-Type: application/json"
  -d "{ 
       "reminder":{
        "reminder_date": "25-05-2025",
        "amount": 10000,
        "remark": "transfer money to q2travels"
        }

}"

require 'net/http'
require 'uri'
require 'json'

uri = URI.parse("https://<environmenturl>/api/reminders") header = {'X-Api-Key' => '<your secure token>', 'Content-Type' => 'application/json'} body = { "reminder":{ "reminder_date": "25-05-2025", "amount": 10000, "remark": "transfer money to q2travels" } } http = Net::HTTP.new(uri.host, uri.port) http.use_ssl = true request = Net::HTTP::Post.new(uri.request_uri, header) request.body = body.to_json response = http.request(request)

const data = {
  "reminder":{
        "reminder_date": "25-05-2025",
        "amount": 10000,
        "remark": "transfer money to q2travels"
        }
};

fetch('https://<environmenturl>/api/reminders', { method: 'POST', headers: { 'X-Api-Key': '<your secure token>', 'Content-Type': 'application/json' }, body: JSON.stringify(data) }) .then(response => response.json()) .then(data => console.log(data)) .catch(error => console.error(error));

The below example can be sent as a request to the API.

{
  "reminder":{
        "reminder_date": "25-05-2025",
        "amount": 10000,
        "remark": "transfer money to q2travels"
        }
}

SUCCESS RESPONSE The request returns JSON structured like below on successful create reminder

{
    "status": true,
    "total_count": 1,
    "total_amount": "10000.0",
    "reminder": [
        {
            "id": 1,
            "entity_id": "ABC12",
            "reminder_date": "2025-05-25",
            "amount": "10000.0",
            "reminder_remark": "transfer money to q2travels",
            "created_by": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
            "created_by_name": "Akshay Rangnekar",
            "created_on": 1747917497
        }
    ],
    "title": {
        "records": 1,
        "current_page": 1,
        "total_pages": 1,
        "page_item_count": 1
    }
}

ERROR RESPONSE The request returns JSON structured like below for errors related reminder

{
    "status": false,
    "errors": {
        "remark": [
            "Remark can't be blank"
        ],
        "reminder_date": [
            "Reminder date can't be blank"
        ],
        "base": [
            "Past-dated reminder cannot be created."
        ]
    }
}

This endpoint creates a reminder.

UAT HTTP Request

POST https://nxt.api.q2pay.co.in/api/reminders

PRODUCTION HTTP Request

POST https://nxt.api.q2pay.in/api/reminders

Query Parameters

Parameter Default Description Required Sample
reminder_date N.A. reminder date for reminder Yes "25-05-2025"
amount N.A. amount for reminder No 10000
remark N.A. remark for reminder Yes "transfer money to q2travels"

Service Details

Service ID Description
AReminder Create Reminder

Remove Reminder

curl -X DELETE "https://<environmenturl>/api/reminders/:id"
  -H "X-Api-Key: <your secure token>"
  -H "Content-Type: application/json"

require 'net/http'
require 'uri'
require 'json'

uri = URI.parse("https://<environmenturl>/api/reminders/:id") header = {'X-Api-Key' => '<your secure token>', 'Content-Type' => 'application/json'} http = Net::HTTP.new(uri.host, uri.port) http.use_ssl = true request = Net::HTTP::delete.new(uri.request_uri, header) request.body = body.to_json response = http.request(request)

fetch('https://<environmenturl>/api/reminders/:id', {
  method: 'DELETE',
  headers: {
    'X-Api-Key': '<your secure token>',
    'Content-Type': 'application/json'
  },
  body: JSON.stringify(data)
})
  .then(response => response.json())
  .then(data => console.log(data))
  .catch(error => console.error(error));

SUCCESS RESPONSE The request returns JSON structured like below on successful remove reminder

{
    "status": true,
    "total_count": 1,
    "total_amount": "10000.0",
    "reminder": [
        {
            "id": 4,
            "entity_id": "ABC12",
            "reminder_date": "2025-05-24",
            "amount": "10000.0",
            "reminder_remark": "transfer money to q2travels",
            "created_by": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
            "created_by_name": "Akshay Rangnekar",
            "created_on": 1747918130
        }
    ],
    "title": {
        "records": 1,
        "current_page": 1,
        "total_pages": 1,
        "page_item_count": 1
    }
}

ERROR RESPONSE The request returns JSON structured like below for errors related to remove reminder

{
    "status": false,
    "errors": {
        "base": [
            "Reminder not present"
        ],
        "base": [
            "Past-dated reminder cannot be deleted."
        ]
    }
}

This endpoint remove a reminder.

UAT HTTP Request

DELETE https://nxt.api.q2pay.co.in/api/reminders/:id

PRODUCTION HTTP Request

DELETE https://nxt.api.q2pay.in/api/reminders/:id

Service Details

Service ID Description
AReminder User can delete reminder

Annoucement

Annoucement helps you create, maintain & manage lifecycle for your organization

Create Announcement

curl -X POST "https://<environmenturl>/api/announcements"
  -H "X-Api-Key: <your secure token>"
  -H "Content-Type: application/json"
  -d "{ 
    "announcement": {
        "announcement_date": "2025-07-03",
        "title": "Introducing UPI Autopay",
        "description": "Now enjoy the convenience of UPI Autopay for your subscriptions and recurring payments."
        }
      }"
require 'net/http'
require 'uri'
require 'json'

uri = URI.parse("https://<environmenturl>/api/announcements") header = {'X-Api-Key' => '<your secure token>', 'Content-Type' => 'application/json'} body = { "announcement": { "announcement_date": "2025-07-03", "title": "Introducing UPI Autopay", "description": "Now enjoy the convenience of UPI Autopay for your subscriptions and recurring payments." } } http = Net::HTTP.new(uri.host, uri.port) http.use_ssl = true request = Net::HTTP::Post.new(uri.request_uri, header) request.body = body.to_json response = http.request(request)

const data = {
    "announcement": {
        "announcement_date": "2025-07-03",
        "title": "Introducing UPI Autopay",
        "description": "Now enjoy the convenience of UPI Autopay for your subscriptions and recurring payments."
        }
};

fetch('https://<environmenturl>/api/announcements', { method: 'POST', headers: { 'X-Api-Key': '<your secure token>', 'Content-Type': 'application/json' }, body: JSON.stringify(data) }) .then(response => response.json()) .then(data => console.log(data)) .catch(error => console.error(error));

The below example can be sent as a request to the API.

{
  "announcement": {
        "announcement_date": "2025-07-03",
        "title": "Introducing UPI Autopay",
        "description": "Now enjoy the convenience of UPI Autopay for your subscriptions and recurring payments."
        }
}

SUCCESS RESPONSE The request returns JSON structured like below on successful creations announcement

{
  "status":true,
  "total_count":1,
  "announcement":[
    {
      "id":1,
      "title":"Introducing UPI Autopay",
      "announcement_date":"2025-07-03",
      "description":"Now enjoy the convenience of UPI Autopay for your subscriptions and recurring payments.",
      "created_by_name":"xxxxxx",
      "created_on":1751518341
    }
  ],
  "title":{
    "records":1, 
    "current_page":1, 
    "total_pages":1, 
    "page_item_count":1
  }
}

ERROR RESPONSE The request returns JSON structured like below for errors related announcement

{
  "status":false,
  "errors":{
    "announcement_date":[
      "Announcement date cannot be in the past.",
      "Announcement date can't be blank"
    ],
    "title":[
      "Title can't be blank"
    ]
  }
}

This endpoint creates a Announcement.

UAT HTTP Request

POST https://nxt.api.q2pay.co.in/api/announcements

PRODUCTION HTTP Request

POST https://nxt.api.q2pay.in/api/announcements

Query Parameters

Parameter Default Description Required Sample
announcement_date N.A. Announcement date for announcement Yes 2025-07-03
title N.A. Title for announcement Yes "Introducing UPI Autopay"
description N.A. Description for announcement No "Now enjoy the convenience of UPI Autopay for your subscriptions and recurring payments."

Service Details

Service ID Description
Admin Admin

Get All Annoucements

curl -X GET "https://<environmenturl>/api/announcements"
  -H "X-Api-Key: <your secure token>"
  -H "Content-Type: application/json"

require 'net/http'
require 'uri'
require 'json'

uri = URI.parse("https://<environmenturl>/api/announcements") header = {'X-Api-Key' => '<your secure token>', 'Content-Type' => 'application/json'} http = Net::HTTP.new(uri.host, uri.port) http.use_ssl = true request = Net::HTTP::Get.new(uri.request_uri, header) request.body = body.to_json response = http.request(request)

fetch('https://<environmenturl>/api/announcements', { method: 'GET', headers: { 'X-Api-Key': '<your secure token>', 'Content-Type': 'application/json' }, body: JSON.stringify(data) }) .then(response => response.json()) .then(data => console.log(data)) .catch(error => console.error(error));

SUCCESS RESPONSE The request returns JSON structured like below

{
  "status": true,
  "total_count": 4,
  "announcements": [
    {
      "id": 1,
      "title": "Terms & Conditions Update",
      "announcement_date": "2025-07-06",
      "description": "Our Terms & Conditions have been updated effective 1st July. Please review the changes.",
      "created_by_name":"xxxxxx",
      "created_on": 1751521124
    },
    {
      "id": 2,
      "title": "Mobile App Version Update",
      "announcement_date": "2025-07-05",
      "description": "Update your app to the latest version (v5.3) for improved features and security.",
      "created_by_name": "xxxxxx",
      "created_on": 1751521124
    },
    {
      "id": 3,
      "title": "Credit Card Reward Points Expiry",
      "announcement_date": "2025-07-05",
      "description": "Reminder: Your unused credit card reward points will expire on 30th June.",
      "created_by_name": "xxxxxx",
      "created_on": 1751521124
    },
    {
      "id": 4,
      "title": "New Branch Opening in Pune",
      "announcement_date": "2025-07-04",
      "description": "We're expanding! Visit our new branch opening on 1st July in Baner, Pune.",
      "created_by_name": "xxxxxx",
      "created_on": 1751521124
    }
  ],
  "title": {
    "records": 4,
    "current_page": 1,
    "total_pages": 1,
    "page_item_count": 50
  }
}

This endpoint retrieves all Annoucements.

UAT HTTP Request

GET https://nxt.api.q2pay.co.in/api/announcements

PRODUCTION HTTP Request

GET https://nxt.api.q2pay.in/api/announcements

Query Parameters

Parameter Default Description Required Sample
announcement_date N.A. Announcement date for announcements optional 2025-07-03

Service Details

Service ID Description
Admin Admin
PLogin To login to user

Get Specific Announcement

curl -X GET "https://<environmenturl>/api/announcements/:id"
  -H "X-Api-Key: <your secure token>"
  -H "Content-Type: application/json"

require 'net/http'
require 'uri'
require 'json'

uri = URI.parse("https://<environmenturl>/api/announcements/:id") header = {'X-Api-Key' => '<your secure token>', 'Content-Type' => 'application/json'} http = Net::HTTP.new(uri.host, uri.port) http.use_ssl = true request = Net::HTTP::Get.new(uri.request_uri, header) request.body = body.to_json response = http.request(request)

fetch('https://<environmenturl>/api/announcements/:id', { method: 'GET', headers: { 'X-Api-Key': '<your secure token>', 'Content-Type': 'application/json' }, body: JSON.stringify(data) }) .then(response => response.json()) .then(data => console.log(data)) .catch(error => console.error(error));

SUCCESS RESPONSE The request returns JSON structured like below

{
  "status":true,
  "total_count":1,
  "announcement":[
    {
      "id":1,
      "title":"Scheduled Maintenance Notice",
      "announcement_date":"2025-07-03",
      "description":"Our services will be unavailable on 30th June from 1:00 AM to 4:00 AM IST due to maintenance.",
      "created_by_name":"xxxxxxx",
      "created_on":1751522173
    }
  ],
  "title":{
    "records":1, 
    "current_page":1,
    "total_pages":1,
    "page_item_count":1
  }
}

ERROR RESPONSE The request returns JSON structured like below for errors related announcement

{
  "status":false,
  "errors":{
    "base":[
      "Announcement not present"
    ]
  }
}

This endpoint retrieves specific Announcement.

UAT HTTP Request

GET https://nxt.api.q2pay.co.in/api/announcements/:id

PRODUCTION HTTP Request

GET https://nxt.api.q2pay.in/api/announcements/:id

Service Details

Service ID Description
Admin Admin
PLogin To login to user

Ratecard

Ratecard helps you create, maintain & manage invoicing ratecards for your organization

Create Ratecard

curl -X POST "https://<environmenturl>/api/billing/ratecard/create"
  -H "X-Api-Key: <your secure token>"
  -H "Content-Type: application/json"
  -d "{
    "ratecard_details": {
        "items": [
            {
                "product_code": "XPSR006",
                "short_description": "Pan Api",
                "description": "This is long description",
                "rate": "234",
                "hsn": "671"
            },
            {
                "product_code": "XPSR004",
                "short_description": "gst Api",
                "description": "This is long description",
                "rate": 110.10,
                "hsn": "672"
            },
            {
                "product_code": "XPSR003",
                "short_description": "bank Api",
                "description": "This is long description",
                "rate": 100.15,
                "hsn": "673"
            },
            {
                "product_code": "XPSR005",
                "short_description": "ifsc Api",
                "description": "This is long description",
                "rate": 2,
                "hsn": 674
            },
            {
                "product_code": "XPSR002",
                "short_description": "din Api",
                "description": "This is long description",
                "rate": 7,
                "hsn": "675"
            },
            {
                "product_code": "XPSR001",
                "short_description": "cin Api",
                "description": "This is long description",
                "rate": 123.45,
                "hsn": "175"
            },
            {
                "product_code": "XP0001",
                "short_description": "basic_module Api",
                "description": "This is long description",
                "rate": 1600,
                "hsn": "677"
            },
            {
                "product_code": "XP0002",
                "short_description": "transaction_module Api",
                "description": "This is long description",
                "rate": 2200,
                "hsn": "678"
            },
            {
                "product_code": "XP0003",
                "short_description": "bank_integration Api",
                "description": "This is long description",
                "rate": 2200,
                "hsn": "679"
            },
            {
                "product_code": "XP0004",
                "short_description": "user_setup_charges Api",
                "description": "This is long description",
                "rate": 9999999,
                "hsn": "6710"
            }
        ],
        "terms_of_payment": "Immediatily"
    }
}"
require 'net/http'
require 'uri'
require 'json'

uri = URI.parse("https://<environmenturl>/api/billing/ratecard/create") header = {'X-Api-Key' => '<your secure token>', 'Content-Type' => 'application/json'} body = { "ratecard_details": { "items": [ { "product_code": "XPSR006", "short_description": "Pan Api", "description": "This is long description", "rate": "234", "hsn": "671" }, { "product_code": "XPSR004", "short_description": "gst Api", "description": "This is long description", "rate": 110.10, "hsn": "672" }, { "product_code": "XPSR003", "short_description": "bank Api", "description": "This is long description", "rate": 100.15, "hsn": "673" }, { "product_code": "XPSR005", "short_description": "ifsc Api", "description": "This is long description", "rate": 2, "hsn": 674 }, { "product_code": "XPSR002", "short_description": "din Api", "description": "This is long description", "rate": 7, "hsn": "675" }, { "product_code": "XPSR001", "short_description": "cin Api", "description": "This is long description", "rate": 123.45, "hsn": "175" }, { "product_code": "XP0001", "short_description": "basic_module Api", "description": "This is long description", "rate": 1600, "hsn": "677" }, { "product_code": "XP0002", "short_description": "transaction_module Api", "description": "This is long description", "rate": 2200, "hsn": "678" }, { "product_code": "XP0003", "short_description": "bank_integration Api", "description": "This is long description", "rate": 2200, "hsn": "679" }, { "product_code": "XP0004", "short_description": "user_setup_charges Api", "description": "This is long description", "rate": 9999999, "hsn": "6710" } ], "terms_of_payment": "Immediate" } }

http = Net::HTTP.new(uri.host, uri.port) http.use_ssl = true request = Net::HTTP::Post.new(uri.request_uri, header) request.body = body.to_json response = http.request(request)

const data ={
    "ratecard_details": {
        "items": [
            {
                "product_code": "XPSR006",
                "short_description": "Pan Api",
                "description": "This is long description",
                "rate": "234",
                "hsn": "671"
            },
            {
                "product_code": "XPSR004",
                "short_description": "gst Api",
                "description": "This is long description",
                "rate": 110.10,
                "hsn": "672"
            },
            {
                "product_code": "XPSR003",
                "short_description": "bank Api",
                "description": "This is long description",
                "rate": 100.15,
                "hsn": "673"
            },
            {
                "product_code": "XPSR005",
                "short_description": "ifsc Api",
                "description": "This is long description",
                "rate": 2,
                "hsn": 674
            },
            {
                "product_code": "XPSR002",
                "short_description": "din Api",
                "description": "This is long description",
                "rate": 7,
                "hsn": "675"
            },
            {
                "product_code": "XPSR001",
                "short_description": "cin Api",
                "description": "This is long description",
                "rate": 123.45,
                "hsn": "175"
            },
            {
                "product_code": "XP0001",
                "short_description": "basic_module Api",
                "description": "This is long description",
                "rate": 1600,
                "hsn": "677"
            },
            {
                "product_code": "XP0002",
                "short_description": "transaction_module Api",
                "description": "This is long description",
                "rate": 2200,
                "hsn": "678"
            },
            {
                "product_code": "XP0003",
                "short_description": "bank_integration Api",
                "description": "This is long description",
                "rate": 2200,
                "hsn": "679"
            },
            {
                "product_code": "XP0004",
                "short_description": "user_setup_charges Api",
                "description": "This is long description",
                "rate": 9999999,
                "hsn": "6710"
            }
        ],
        "terms_of_payment": "Immediate"
    }
};

fetch('https://<environmenturl>/api/billing/ratecard/create', { method: 'POST', headers: { 'X-Api-Key': '<your secure token>', 'Content-Type': 'application/json' }, body: JSON.stringify(data) }) .then(response => response.json()) .then(data => console.log(data)) .catch(error => console.error(error));

The below example can be sent as a request to the API.

{
  "ratecard_details": {
        "items": [
            {
                "product_code": "XPSR006",
                "short_description": "Pan Api",
                "description": "This is long description",
                "rate": "234",
                "hsn": "671"
            },
            {
                "product_code": "XPSR004",
                "short_description": "gst Api",
                "description": "This is long description",
                "rate": 110.10,
                "hsn": "672"
            },
            {
                "product_code": "XPSR003",
                "short_description": "bank Api",
                "description": "This is long description",
                "rate": 100.15,
                "hsn": "673"
            },
            {
                "product_code": "XPSR005",
                "short_description": "ifsc Api",
                "description": "This is long description",
                "rate": 2,
                "hsn": 674
            },
            {
                "product_code": "XPSR002",
                "short_description": "din Api",
                "description": "This is long description",
                "rate": 7,
                "hsn": "675"
            },
            {
                "product_code": "XPSR001",
                "short_description": "cin Api",
                "description": "This is long description",
                "rate": 123.45,
                "hsn": "175"
            },
            {
                "product_code": "XP0001",
                "short_description": "basic_module Api",
                "description": "This is long description",
                "rate": 1600,
                "hsn": "677"
            },
            {
                "product_code": "XP0002",
                "short_description": "transaction_module Api",
                "description": "This is long description",
                "rate": 2200,
                "hsn": "678"
            },
            {
                "product_code": "XP0003",
                "short_description": "bank_integration Api",
                "description": "This is long description",
                "rate": 2200,
                "hsn": "679"
            },
            {
                "product_code": "XP0004",
                "short_description": "user_setup_charges Api",
                "description": "This is long description",
                "rate": 9999999,
                "hsn": "6710"
            }
        ],
        "terms_of_payment": "Immediate"
    }
}

SUCCESS RESPONSE The request returns JSON structured like below on successful ratecard creation

{
    "id": 18,
    "ratecard": {
        "items": [
            {
                "product_code": "XPSR006",
                "short_description": "Pan Api",
                "description": "This is long description",
                "rate": 234.0,
                "hsn": "671"
            },
            {
                "product_code": "XPSR004",
                "short_description": "gst Api",
                "description": "This is long description",
                "rate": 110.1,
                "hsn": "672"
            },
            {
                "product_code": "XPSR003",
                "short_description": "bank Api",
                "description": "This is long description",
                "rate": 100.15,
                "hsn": "673"
            },
            {
                "product_code": "XPSR005",
                "short_description": "ifsc Api",
                "description": "This is long description",
                "rate": 2.0,
                "hsn": 674
            },
            {
                "product_code": "XPSR002",
                "short_description": "din Api",
                "description": "This is long description",
                "rate": 7.0,
                "hsn": "675"
            },
            {
                "product_code": "XPSR001",
                "short_description": "cin Api",
                "description": "This is long description",
                "rate": 123.45,
                "hsn": "175"
            },
            {
                "product_code": "XP0001",
                "short_description": "basic_module Api",
                "description": "This is long description",
                "rate": 1600.0,
                "hsn": "677"
            },
            {
                "product_code": "XP0002",
                "short_description": "transaction_module Api",
                "description": "This is long description",
                "rate": 2200.0,
                "hsn": "678"
            },
            {
                "product_code": "XP0003",
                "short_description": "bank_integration Api",
                "description": "This is long description",
                "rate": 2200.0,
                "hsn": "679"
            },
            {
                "product_code": "XP0004",
                "short_description": "user_setup_charges Api",
                "description": "This is long description",
                "rate": 9999999.0,
                "hsn": "6710"
            }
        ],
        "terms_of_payment": "Immediatily"
    },
    "created_at": "2025-02-21T10:10:31.660Z",
    "updated_at": "2025-02-21T10:10:31.660Z"
}

ERROR RESPONSE The request returns JSON structured like below for errors related to ratecard creation

{
    "status": false,
    "errors": {
        "base": [
            "Ratecard can not be blank"
        ],
        "base": [
            "Ratecard Invalid keys: Missing: product_code, short_description, description, rate, hsn; Extra: product_codes, short_descriptions, descriptions, rates, hsns. Allowed: product_code, short_description, description, rate, hsn."
        ],
        "base": [
            "Ratecard Invalid data structure. Expected a Hash with the key 'items'."
        ],
        "base": [
            "Ratecard Missing required product_code: XPSR004, Ratecard duplicate product codes found: XPSR006. Each product_code must be unique."
        ],
        "base": [
            "Ratecard not found"
        ]
    }
}

This endpoint creates a ratecard.

UAT HTTP Request

POST https://nxt.api.q2pay.co.in/api/billing/ratecard/create

PRODUCTION HTTP Request

POST https://nxt.api.q2pay.in/api/billing/ratecard/create

Query Parameters

Parameter Default Description Required Sample
ratecard_details N.A. ratecard details for invoice Yes {"items": [{"product_code": "XPSR006","short_description": "Pan Api","description": "This is long description", "rate": "234","hsn": "671"}],"terms_of_payment": "Immediatily"}

Service Details

Service ID Description
Admin To Create ratecard

Get All Ratecards

curl "https://<environmenturl>/api/billing/ratecards"
  -H "X-Api-Key: <your secure token>"
  -H "Content-Type: application/json"
require 'net/http'
require 'uri'
require 'json'

uri = URI.parse("https://<environmenturl>/api/billing/ratecards") header = {'X-Api-Key' => '<your secure token>', 'Content-Type' => 'application/json'} http = Net::HTTP.new(uri.host, uri.port) http.use_ssl = true request = Net::HTTP::Get.new(uri.request_uri, header) request.body = body.to_json response = http.request(request)


fetch('https://<environmenturl>/api/billing/ratecards', {
  method: 'GET',
  headers: {
    'X-Api-Key': '<your secure token>',
    'Content-Type': 'application/json'
  },
  body: JSON.stringify(data)
})
  .then(response => response.json())
  .then(data => console.log(data))
  .catch(error => console.error(error));

SUCCESS RESPONSE The request returns JSON structured like below on successfully ratecards

{
    "status": true,
    "total_count": 2,
    "ratecards": [
        {
            "id": 1,
            "terms_of_payment": "Immediatily",
            "items": [
                {
                    "hsn": "671",
                    "rate": 234.0,
                    "description": "This is long description",
                    "product_code": "XPSR006",
                    "short_description": "Pan Api"
                },
                {
                    "hsn": "672",
                    "rate": 110.1,
                    "description": "This is long description",
                    "product_code": "XPSR004",
                    "short_description": "gst Api"
                },
                {
                    "hsn": "673",
                    "rate": 100.15,
                    "description": "This is long description",
                    "product_code": "XPSR003",
                    "short_description": "bank Api"
                },
                {
                    "hsn": 674,
                    "rate": 2.0,
                    "description": "This is long description",
                    "product_code": "XPSR005",
                    "short_description": "ifsc Api"
                },
                {
                    "hsn": "675",
                    "rate": 7.0,
                    "description": "This is long description",
                    "product_code": "XPSR002",
                    "short_description": "din Api"
                },
                {
                    "hsn": "175",
                    "rate": 123.45,
                    "description": "This is long description",
                    "product_code": "XPSR001",
                    "short_description": "cin Api"
                },
                {
                    "hsn": "677",
                    "rate": 1600.0,
                    "description": "This is long description",
                    "product_code": "XP0001",
                    "short_description": "basic_module Api"
                },
                {
                    "hsn": "678",
                    "rate": 2200.0,
                    "description": "This is long description",
                    "product_code": "XP0002",
                    "short_description": "transaction_module Api"
                },
                {
                    "hsn": "679",
                    "rate": 2200.0,
                    "description": "This is long description",
                    "product_code": "XP0003",
                    "short_description": "bank_integration Api"
                },
                {
                    "hsn": "6710",
                    "rate": 9999999.0,
                    "description": "This is long description",
                    "product_code": "XP0004",
                    "short_description": "user_setup_charges Api"
                }
            ]
        },
        {
            "id": 2,
            "terms_of_payment": "Immediatily",
            "items": [
                {
                    "hsn": "671",
                    "rate": 234.0,
                    "description": "This is long description",
                    "product_code": "XPSR006",
                    "short_description": "Pan Api"
                },
                {
                    "hsn": "672",
                    "rate": 110.1,
                    "description": "This is long description",
                    "product_code": "XPSR004",
                    "short_description": "gst Api"
                },
                {
                    "hsn": "673",
                    "rate": 100.15,
                    "description": "This is long description",
                    "product_code": "XPSR003",
                    "short_description": "bank Api"
                },
                {
                    "hsn": 674,
                    "rate": 2.0,
                    "description": "This is long description",
                    "product_code": "XPSR005",
                    "short_description": "ifsc Api"
                },
                {
                    "hsn": "675",
                    "rate": 7.0,
                    "description": "This is long description",
                    "product_code": "XPSR002",
                    "short_description": "din Api"
                },
                {
                    "hsn": "175",
                    "rate": 123.45,
                    "description": "This is long description",
                    "product_code": "XPSR001",
                    "short_description": "cin Api"
                },
                {
                    "hsn": "677",
                    "rate": 1600.0,
                    "description": "This is long description",
                    "product_code": "XP0001",
                    "short_description": "basic_module Api"
                },
                {
                    "hsn": "678",
                    "rate": 2200.0,
                    "description": "This is long description",
                    "product_code": "XP0002",
                    "short_description": "transaction_module Api"
                },
                {
                    "hsn": "679",
                    "rate": 2200.0,
                    "description": "This is long description",
                    "product_code": "XP0003",
                    "short_description": "bank_integration Api"
                },
                {
                    "hsn": "6710",
                    "rate": 9999999.0,
                    "description": "This is long description",
                    "product_code": "XP0004",
                    "short_description": "user_setup_charges Api"
                }
            ]
        }
    ],
    "title": {
        "records": 2,
        "current_page": 1,
        "total_pages": 1,
        "page_item_count": 50
    }
}

This endpoint retrieves information about ratecards.

UAT HTTP Request

GET https://nxt.api.q2pay.co.in/api/billing/ratecards

PRODUCTION HTTP Request

GET https://nxt.api.q2pay.in/api/billing/ratecards

Service ID Description
Admin To view ratecards

Get Specific Ratecard

curl "https://<environmenturl>/api/billing/:id/ratecard"
  -H "X-Api-Key: <your secure token>"
  -H "Content-Type: application/json"
require 'net/http'
require 'uri'
require 'json'

uri = URI.parse("https://<environmenturl>/api/billing/:id/ratecard") header = {'X-Api-Key' => '<your secure token>', 'Content-Type' => 'application/json'} http = Net::HTTP.new(uri.host, uri.port) http.use_ssl = true request = Net::HTTP::Get.new(uri.request_uri, header) request.body = body.to_json response = http.request(request)


fetch('https://<environmenturl>/api/billing/:id/ratecard', {
  method: 'GET',
  headers: {
    'X-Api-Key': '<your secure token>',
    'Content-Type': 'application/json'
  },
  body: JSON.stringify(data)
})
  .then(response => response.json())
  .then(data => console.log(data))
  .catch(error => console.error(error));

SUCCESS RESPONSE The request returns JSON structured like below on successfully ratecard

{
    "status": true,
    "ratecard": [
        {
            "id": 29,
            "terms_of_payment": "Immediatily",
            "items": [
                {
                    "hsn": "671",
                    "rate": 234.0,
                    "description": "This is long description",
                    "product_code": "ZXPUYT009",
                    "short_description": "Pan Api"
                },
                {
                    "hsn": "672",
                    "rate": 110.1,
                    "description": "This is long description",
                    "product_code": "XPSR004",
                    "short_description": "gst Api"
                },
                {
                    "hsn": "673",
                    "rate": 100.15,
                    "description": "This is long description",
                    "product_code": "XPSR003",
                    "short_description": "bank Api"
                },
                {
                    "hsn": 674,
                    "rate": 2.0,
                    "description": "This is long description",
                    "product_code": "XPSR005",
                    "short_description": "ifsc Api"
                },
                {
                    "hsn": "675",
                    "rate": 7.0,
                    "description": "This is long description",
                    "product_code": "XPSR002",
                    "short_description": "din Api"
                },
                {
                    "hsn": "175",
                    "rate": 123.45,
                    "description": "This is long description",
                    "product_code": "XPSR001",
                    "short_description": "cin Api"
                },
                {
                    "hsn": "677",
                    "rate": 1600.0,
                    "description": "This is long description",
                    "product_code": "XP0001",
                    "short_description": "basic_module Api"
                },
                {
                    "hsn": "678",
                    "rate": 2200.0,
                    "description": "This is long description",
                    "product_code": "XP0002",
                    "short_description": "transaction_module Api"
                },
                {
                    "hsn": "679",
                    "rate": 2200.0,
                    "description": "This is long description",
                    "product_code": "XP0003",
                    "short_description": "bank_integration Api"
                },
                {
                    "hsn": "6710",
                    "rate": 9999999.0,
                    "description": "This is long description",
                    "product_code": "XP0004",
                    "short_description": "user_setup_charges Api"
                }
            ]
        }
    ],
    "title": {
        "records": 1,
        "current_page": 1,
        "total_pages": 1,
        "page_item_count": 1
    }
}

ERROR RESPONSE The request returns JSON structured like below for errors related to ratecard creation

{
    "status": false,
    "errors": {
      "base": [
        "Ratecard not found"
      ]
    }
}

This endpoint retrieves information about specific ratecard.

UAT HTTP Request

GET https://nxt.api.q2pay.co.in/api/billing/:id/ratecard

PRODUCTION HTTP Request

GET https://nxt.api.q2pay.in/api/billing/:id/ratecard

Service ID Description
Admin To view ratecard

Invoice Configuration

Invoice Configuration helps you create, maintain & manage configurations for invoices

Create Invoice Configuration

curl -X POST "https://<environmenturl>/api/billing/invoice_configuration/create"
  -H "X-Api-Key: <your secure token>"
  -H "Content-Type: application/json"
  -d "{
    "plan": "XP0001",
    "entity_id": "ABC12",
    "api_billing_enabled": true,
    "api_billing_enabled_date": "2025-12-9"
    "discount_structure": [
        {
            "position": 1,
            "title": "Basic Discount",
            "rate": 5
        },
        {
            "position": 2,
            "title": "Promotional Discount",
            "rate": 10
        },
        {
            "position": 3,
            "title": "Loyalty Discount",
            "rate": 20
        }
    ],
    "bank_details": {
        "account_number": 456789,
        "ifsc_code": "ICIC0000393",
        "bank": "HDFC bank",
        "branch": "Churchgate"
    }
}"
require 'net/http'
require 'uri'
require 'json'

uri = URI.parse("https://<environmenturl>/api/billing/invoice_configuration/create") header = {'X-Api-Key' => '<your secure token>', 'Content-Type' => 'application/json'} body = { "plan": "XP0001", "entity_id": "ABC12", "api_billing_enabled": true, "api_billing_enabled_date": "2025-12-9" "discount_structure": [ { "position": 1, "title": "Basic Discount", "rate": 5 }, { "position": 2, "title": "Promotional Discount", "rate": 10 }, { "position": 3, "title": "Loyalty Discount", "rate": 20 } ], "bank_details": { "account_number": 456789, "ifsc_code": "ICIC0000393", "bank": "HDFC bank", "branch": "Churchgate" } }

http = Net::HTTP.new(uri.host, uri.port) http.use_ssl = true request = Net::HTTP::Post.new(uri.request_uri, header) request.body = body.to_json response = http.request(request)

const data ={
    "plan": "XP0001",
    "entity_id": "ABC12",
    "api_billing_enabled": true,
    "api_billing_enabled_date": "2025-12-9"
    "discount_structure": [
        {
            "position": 1,
            "title": "Basic Discount",
            "rate": 5
        },
        {
            "position": 2,
            "title": "Promotional Discount",
            "rate": 10
        },
        {
            "position": 3,
            "title": "Loyalty Discount",
            "rate": 20
        }
    ],
    "bank_details": {
        "account_number": 456789,
        "ifsc_code": "ICIC0000393",
        "bank": "HDFC bank",
        "branch": "Churchgate"
    }
};

fetch('https://<environmenturl>/api/billing/invoice_configuration/create', { method: 'POST', headers: { 'X-Api-Key': '<your secure token>', 'Content-Type': 'application/json' }, body: JSON.stringify(data) }) .then(response => response.json()) .then(data => console.log(data)) .catch(error => console.error(error));

The below example can be sent as a request to the API.

{
    "plan": "XP0001",
    "entity_id": "ABC12",
    "api_billing_enabled": true,
    "api_billing_enabled_date": "2025-12-9"
    "discount_structure": [
        {
            "position": 1,
            "title": "Basic Discount",
            "rate": 5
        },
        {
            "position": 2,
            "title": "Promotional Discount",
            "rate": 10
        },
        {
            "position": 3,
            "title": "Loyalty Discount",
            "rate": 20
        }
    ],
    "bank_details": {
        "account_number": 456789,
        "ifsc_code": "ICIC0000393",
        "bank": "HDFC bank",
        "branch": "Churchgate"
    }
}

SUCCESS RESPONSE The request returns JSON structured like below on successful invoice configuration creation

{
    "status": true,
    "invoice_configuration": {
        "id": 59,
        "entity_id": "ABC12",
        "plan": "basic_module",
        "start_date": "2025-03-17",
        "end_date": "2027-03-17",
        "ratecard": {
            "items": [
                {
                    "hsn": "671",
                    "rate": "234",
                    "description": "This is long description",
                    "product_code": "XPSR006",
                    "short_description": "Pan Api"
                },
                {
                    "hsn": "672",
                    "rate": 110.1,
                    "description": "This is long description",
                    "product_code": "XPSR004",
                    "short_description": "gst Api"
                },
                {
                    "hsn": "673",
                    "rate": 100.15,
                    "description": "This is long description",
                    "product_code": "XPSR003",
                    "short_description": "bank Api"
                },
                {
                    "hsn": 674,
                    "rate": 2,
                    "description": "This is long description",
                    "product_code": "XPSR005",
                    "short_description": "ifsc Api"
                },
                {
                    "hsn": "675",
                    "rate": 7,
                    "description": "This is long description",
                    "product_code": "XPSR002",
                    "short_description": "din Api"
                },
                {
                    "hsn": "175",
                    "rate": 123.45,
                    "description": "This is long description",
                    "product_code": "XPSR001",
                    "short_description": "cin Api"
                },
                {
                    "hsn": "677",
                    "rate": 1600,
                    "description": "This is long description",
                    "product_code": "XP0001",
                    "short_description": "basic_module Api"
                },
                {
                    "hsn": "678",
                    "rate": 2200,
                    "description": "This is long description",
                    "product_code": "XP0002",
                    "short_description": "transaction_module Api"
                },
                {
                    "hsn": "679",
                    "rate": 2200,
                    "description": "This is long description",
                    "product_code": "XP0003",
                    "short_description": "bank_integration Api"
                },
                {
                    "hsn": "6710",
                    "rate": 9999999,
                    "description": "This is long description",
                    "product_code": "XP0004",
                    "short_description": "user_setup_charges Api"
                }
            ],
            "terms_of_payment": "Immediatily"
        },
        "discount_structure": [
            {
                "position": 1,
                "title": "Basic Discount",
                "rate": 5
            },
            {
                "position": 2,
                "title": "Promotional Discount",
                "rate": 10
            },
            {
                "position": 3,
                "title": "Loyalty Discount",
                "rate": 20
            }
        ],
        "bank_details": {
            "account_number": 456789,
            "ifsc_code": "ICIC0000393",
            "bank": "HDFC bank",
            "branch": "Churchgate"
        },
        "virtual": false,
        "api_billing_enabled": true,
        "api_billing_enabled_date": "2025-12-9"
    }
}

ERROR RESPONSE The request returns JSON structured like below for errors related to invoice configuration creation

{
    "status": false,
    "errors": {
        "base": [
            "Plan cannot be blank"
        ],
        "base": [
            "Entity ID cannot be blank"
        ],
        "base": [
            "Entity with id rt45 not found"
        ],
        "base": [
            "Invalid plan: XP00014. Allowed plans are XP0001, XP0002"
        ]
        "base": [
            "Ratecard not found"
        ],
        "base": [
            "Discount structure must be a hash or an array of hashes."
        ],
        "base": [
            "Discount structure Position must be present and numeric"
        ],
        "base": [
            "Discount structure Rate must be present and numeric"
        ],
        "base": [
            "Discount structure Invalid keys in discount structure: Missing keys: position, title, rate  in discount. Only 'position', 'title', and 'rate' are allowed"
        ],
        "base": [
            "Bank details Missing required keys: account_number, ifsc_code, bank, branch"
        ],
        "base": [
            "Bank details cannot be empty and must be a valid object"
        ],
        "base": [
            "Bank details Invalid format for IFSC code"
        ],
        "base": [
            "Api billing enabled date has invalid format. Please use YYYY-MM-DD"
        ],
         "base": [
            "Api billing enabled date cannot be in the past. Please select today or a future date."
        ]
    }
}

This endpoint creates a invoice configuration.

UAT HTTP Request

POST https://nxt.api.q2pay.co.in/api/billing/invoice_configuration/create

PRODUCTION HTTP Request

POST https://nxt.api.q2pay.in/api/billing/invoice_configuration/create

Query Parameters

Parameter Default Description Required Sample
plan N.A. Plan for generate invoice configuration Yes XP001
entity_id N.A. entity id for generate invoice configuration Yes ABC12
api_billing_enabled true Indicates whether API billing is enabled for generating the invoice configuration No true or false
api_billing_enabled_date Current date The date from which API billing becomes active for invoice generation. No "2025-12-9"
discount_structure N.A Discount structure for generate invoice configuration optional [{"position": 1,"title": "Basic Discount","rate": 5}]
bank_details N.A Bank details for generate invoice configuration Yes { "account_number": 456789,"ifsc_code": "ICIC0000393","bank": "HDFC bank","branch": "Churchgate"}

Service Details

Service ID Description
Admin To Create invoice configuration

Get All Invoice Configurations

curl "https://<environmenturl>/api/billing/invoice_configurations"
  -H "X-Api-Key: <your secure token>"
  -H "Content-Type: application/json"
require 'net/http'
require 'uri'
require 'json'

uri = URI.parse("https://<environmenturl>/api/billing/invoice_configurations") header = {'X-Api-Key' => '<your secure token>', 'Content-Type' => 'application/json'} http = Net::HTTP.new(uri.host, uri.port) http.use_ssl = true request = Net::HTTP::Get.new(uri.request_uri, header) request.body = body.to_json response = http.request(request)


fetch('https://<environmenturl>/api/billing/invoice_configurations', {
  method: 'GET',
  headers: {
    'X-Api-Key': '<your secure token>',
    'Content-Type': 'application/json'
  },
  body: JSON.stringify(data)
})
  .then(response => response.json())
  .then(data => console.log(data))
  .catch(error => console.error(error));

SUCCESS RESPONSE The request returns JSON structured like below on successfully invoice configurations

{
    "status": true,
    "total_count": 2,
    "invoice_configuration": [
        {
            "id": 1,
            "entity_id": "ABC12",
            "plan": "transaction_module",
            "start_date": "2025-02-25",
            "end_date": "2025-02-25",
            "api_billing_enabled": true
            "bank_details": {
                "bank": "HDFC bank",
                "branch": "Churchgate",
                "ifsc_code": "ICIC0000393",
                "account_number": 456789
            },
            "discount_structure": [
                {
                    "rate": 5,
                    "title": "Basic Discount",
                    "position": 1
                },
                {
                    "rate": 10,
                    "title": "Promotional Discount",
                    "position": 2
                },
                {
                    "rate": 20,
                    "title": "Loyalty Discount",
                    "position": 3
                }
            ],
            "ratecard": {
                "items": [
                    {
                        "hsn": "671",
                        "rate": "234",
                        "description": "This is long description",
                        "product_code": "XPSR006",
                        "short_description": "Pan Api"
                    },
                    {
                        "hsn": "672",
                        "rate": 110.1,
                        "description": "This is long description",
                        "product_code": "XPSR004",
                        "short_description": "gst Api"
                    },
                    {
                        "hsn": "673",
                        "rate": 100.15,
                        "description": "This is long description",
                        "product_code": "XPSR003",
                        "short_description": "bank Api"
                    },
                    {
                        "hsn": 674,
                        "rate": 2,
                        "description": "This is long description",
                        "product_code": "XPSR005",
                        "short_description": "ifsc Api"
                    },
                    {
                        "hsn": "675",
                        "rate": 7,
                        "description": "This is long description",
                        "product_code": "XPSR002",
                        "short_description": "din Api"
                    },
                    {
                        "hsn": "175",
                        "rate": 123.45,
                        "description": "This is long description",
                        "product_code": "XPSR001",
                        "short_description": "cin Api"
                    },
                    {
                        "hsn": "677",
                        "rate": 1600,
                        "description": "This is long description",
                        "product_code": "XP0001",
                        "short_description": "basic_module Api"
                    },
                    {
                        "hsn": "678",
                        "rate": 2200,
                        "description": "This is long description",
                        "product_code": "XP0002",
                        "short_description": "transaction_module Api"
                    },
                    {
                        "hsn": "679",
                        "rate": 2200,
                        "description": "This is long description",
                        "product_code": "XP0003",
                        "short_description": "bank_integration Api"
                    },
                    {
                        "hsn": "6710",
                        "rate": 9999999,
                        "description": "This is long description",
                        "product_code": "XP0004",
                        "short_description": "user_setup_charges Api"
                    }
                ],
                "terms_of_payment": "Immediatily"
            }
        },
        {
            "id": 2,
            "entity_id": "ABC12",
            "plan": "basic_module",
            "start_date": "2025-02-25",
            "end_date": "2025-02-25",
            "api_billing_enabled": false
            "bank_details": {
                "bank": "HDFC bank",
                "branch": "Churchgate",
                "ifsc_code": "ICIC0000393",
                "account_number": 456789
            },
            "discount_structure": [
                {
                    "rate": 5,
                    "title": "Basic Discount",
                    "position": 1
                },
                {
                    "rate": 10,
                    "title": "Promotional Discount",
                    "position": 2
                },
                {
                    "rate": 20,
                    "title": "Loyalty Discount",
                    "position": 3
                }
            ],
            "ratecard": {
                "items": [
                    {
                        "hsn": "671",
                        "rate": "234",
                        "description": "This is long description",
                        "product_code": "XPSR006",
                        "short_description": "Pan Api"
                    },
                    {
                        "hsn": "672",
                        "rate": 110.1,
                        "description": "This is long description",
                        "product_code": "XPSR004",
                        "short_description": "gst Api"
                    },
                    {
                        "hsn": "673",
                        "rate": 100.15,
                        "description": "This is long description",
                        "product_code": "XPSR003",
                        "short_description": "bank Api"
                    },
                    {
                        "hsn": 674,
                        "rate": 2,
                        "description": "This is long description",
                        "product_code": "XPSR005",
                        "short_description": "ifsc Api"
                    },
                    {
                        "hsn": "675",
                        "rate": 7,
                        "description": "This is long description",
                        "product_code": "XPSR002",
                        "short_description": "din Api"
                    },
                    {
                        "hsn": "175",
                        "rate": 123.45,
                        "description": "This is long description",
                        "product_code": "XPSR001",
                        "short_description": "cin Api"
                    },
                    {
                        "hsn": "677",
                        "rate": 1600,
                        "description": "This is long description",
                        "product_code": "XP0001",
                        "short_description": "basic_module Api"
                    },
                    {
                        "hsn": "678",
                        "rate": 2200,
                        "description": "This is long description",
                        "product_code": "XP0002",
                        "short_description": "transaction_module Api"
                    },
                    {
                        "hsn": "679",
                        "rate": 2200,
                        "description": "This is long description",
                        "product_code": "XP0003",
                        "short_description": "bank_integration Api"
                    },
                    {
                        "hsn": "6710",
                        "rate": 9999999,
                        "description": "This is long description",
                        "product_code": "XP0004",
                        "short_description": "user_setup_charges Api"
                    }
                ],
                "terms_of_payment": "Immediatily"
            }
        }
    ],
    "title": {
        "records": 2,
        "current_page": 1,
        "total_pages": 1,
        "page_item_count": 50
    }
}

This endpoint retrieves information about invoice configurations.

UAT HTTP Request

GET https://nxt.api.q2pay.co.in/api/billing/invoice_configurations

PRODUCTION HTTP Request

GET https://nxt.api.q2pay.in/api/billing/invoice_configurations

Service ID Description
Admin To view invoice configurations

Get Specific Invoice Configuration

curl "https://<environmenturl>/api/billing/:id/invoice_configuration"
  -H "X-Api-Key: <your secure token>"
  -H "Content-Type: application/json"
require 'net/http'
require 'uri'
require 'json'

uri = URI.parse("https://<environmenturl>/api/billing/:id/invoice_configuration") header = {'X-Api-Key' => '<your secure token>', 'Content-Type' => 'application/json'} http = Net::HTTP.new(uri.host, uri.port) http.use_ssl = true request = Net::HTTP::Get.new(uri.request_uri, header) request.body = body.to_json response = http.request(request)


fetch('https://<environmenturl>/api/billing/:id/invoice_configuration', {
  method: 'GET',
  headers: {
    'X-Api-Key': '<your secure token>',
    'Content-Type': 'application/json'
  },
  body: JSON.stringify(data)
})
  .then(response => response.json())
  .then(data => console.log(data))
  .catch(error => console.error(error));

SUCCESS RESPONSE The request returns JSON structured like below on successfully invoice configuration

{
    "status": true,
    "invoice_configuration": [
        {
            "id": 43,
            "entity_id": "ABC12",
            "plan": "transaction_module",
            "start_date": "2025-02-25",
            "end_date": "2025-02-25",
            "api_billing_enabled":true
            "api_billing_enabled_date":"2025-02-25"
            "bank_details": {
                "bank": "HDFC bank",
                "branch": "Churchgate",
                "ifsc_code": "ICIC0000393",
                "account_number": 456789
            },
            "discount_structure": [
                {
                    "rate": 5,
                    "title": "Basic Discount",
                    "position": 1
                },
                {
                    "rate": 10,
                    "title": "Promotional Discount",
                    "position": 2
                },
                {
                    "rate": 20,
                    "title": "Loyalty Discount",
                    "position": 3
                }
            ],
            "ratecard": {
                "items": [
                    {
                        "hsn": "671",
                        "rate": "234",
                        "description": "This is long description",
                        "product_code": "XPSR006",
                        "short_description": "Pan Api"
                    },
                    {
                        "hsn": "672",
                        "rate": 110.1,
                        "description": "This is long description",
                        "product_code": "XPSR004",
                        "short_description": "gst Api"
                    },
                    {
                        "hsn": "673",
                        "rate": 100.15,
                        "description": "This is long description",
                        "product_code": "XPSR003",
                        "short_description": "bank Api"
                    },
                    {
                        "hsn": 674,
                        "rate": 2,
                        "description": "This is long description",
                        "product_code": "XPSR005",
                        "short_description": "ifsc Api"
                    },
                    {
                        "hsn": "675",
                        "rate": 7,
                        "description": "This is long description",
                        "product_code": "XPSR002",
                        "short_description": "din Api"
                    },
                    {
                        "hsn": "175",
                        "rate": 123.45,
                        "description": "This is long description",
                        "product_code": "XPSR001",
                        "short_description": "cin Api"
                    },
                    {
                        "hsn": "677",
                        "rate": 1600,
                        "description": "This is long description",
                        "product_code": "XP0001",
                        "short_description": "basic_module Api"
                    },
                    {
                        "hsn": "678",
                        "rate": 2200,
                        "description": "This is long description",
                        "product_code": "XP0002",
                        "short_description": "transaction_module Api"
                    },
                    {
                        "hsn": "679",
                        "rate": 2200,
                        "description": "This is long description",
                        "product_code": "XP0003",
                        "short_description": "bank_integration Api"
                    },
                    {
                        "hsn": "6710",
                        "rate": 9999999,
                        "description": "This is long description",
                        "product_code": "XP0004",
                        "short_description": "user_setup_charges Api"
                    }
                ],
                "terms_of_payment": "Immediatily"
            }
        }
    ],
    "title": {
        "records": 1,
        "current_page": 1,
        "total_pages": 1,
        "page_item_count": 1
    }
}

ERROR RESPONSE The request returns JSON structured like below for errors related to invoice configuration creation

{
    "status": false,
    "errors": {
        "base": [
            "Invoice Configuration not found"
        ]
    }
}

This endpoint retrieves information about specific invoice configuration.

UAT HTTP Request

GET https://nxt.api.q2pay.co.in/api/billing/:id/invoice_configuration

PRODUCTION HTTP Request

GET https://nxt.api.q2pay.in/api/billing/:id/invoice_configuration

Service ID Description
Admin To view invoice configuration

Update Invoice Configuration

curl -X PUT "https://<environmenturl>/api/billing/:id/invoice_configuration"
  -H "X-Api-Key: <your secure token>"
  -H "Content-Type: application/json"
  -d "{
    "api_billing_enabled": true,
    "api_billing_enabled_date": "2026-12-20"
}"
require 'net/http'
require 'uri'
require 'json'

uri = URI.parse("https://<environmenturl>/api/billing/:id/invoice_configuration") header = {'X-Api-Key' => '<your secure token>', 'Content-Type' => 'application/json'} body = { "api_billing_enabled": true, "api_billing_enabled_date": "2025-12-9" }

http = Net::HTTP.new(uri.host, uri.port) http.use_ssl = true request = Net::HTTP::PUT.new(uri.request_uri, header) request.body = body.to_json response = http.request(request)

const data ={
    "api_billing_enabled": true,
    "api_billing_enabled_date": "2025-12-9"
};

fetch('https://<environmenturl>/api/billing/:id/invoice_configuration', { method: 'PUT', headers: { 'X-Api-Key': '<your secure token>', 'Content-Type': 'application/json' }, body: JSON.stringify(data) }) .then(response => response.json()) .then(data => console.log(data)) .catch(error => console.error(error));

The below example can be sent as a request to the API.

{
    "api_billing_enabled": true,
    "api_billing_enabled_date": "2025-12-9"
}

SUCCESS RESPONSE The request returns a JSON response structured as shown below upon a successful invoice configuration update.

{
    "status": true,
    "invoice_configuration": [
        {
            "id": 43,
            "entity_id": "ABC12",
            "start_date": "2025-02-25",
            "end_date": "2025-02-25",
            "api_billing_enabled":true
            "api_billing_enabled_date":"2025-02-25"
            "bank_details": {
                "bank": "HDFC bank",
                "branch": "Churchgate",
                "ifsc_code": "ICIC0000393",
                "account_number": 456789
            },
            "discount_structure": [
                {
                    "rate": 5,
                    "title": "Basic Discount",
                    "position": 1
                },
                {
                    "rate": 10,
                    "title": "Promotional Discount",
                    "position": 2
                },
                {
                    "rate": 20,
                    "title": "Loyalty Discount",
                    "position": 3
                }
            ],
            "ratecard": {
                "items": [
                    {
                        "hsn": "671",
                        "rate": "234",
                        "description": "This is long description",
                        "product_code": "XPSR006",
                        "short_description": "Pan Api"
                    },
                    {
                        "hsn": "672",
                        "rate": 110.1,
                        "description": "This is long description",
                        "product_code": "XPSR004",
                        "short_description": "gst Api"
                    },
                    {
                        "hsn": "673",
                        "rate": 100.15,
                        "description": "This is long description",
                        "product_code": "XPSR003",
                        "short_description": "bank Api"
                    },
                    {
                        "hsn": 674,
                        "rate": 2,
                        "description": "This is long description",
                        "product_code": "XPSR005",
                        "short_description": "ifsc Api"
                    },
                    {
                        "hsn": "675",
                        "rate": 7,
                        "description": "This is long description",
                        "product_code": "XPSR002",
                        "short_description": "din Api"
                    },
                    {
                        "hsn": "175",
                        "rate": 123.45,
                        "description": "This is long description",
                        "product_code": "XPSR001",
                        "short_description": "cin Api"
                    },
                    {
                        "hsn": "677",
                        "rate": 1600,
                        "description": "This is long description",
                        "product_code": "XP0001",
                        "short_description": "basic_module Api"
                    },
                    {
                        "hsn": "678",
                        "rate": 2200,
                        "description": "This is long description",
                        "product_code": "XP0002",
                        "short_description": "transaction_module Api"
                    },
                    {
                        "hsn": "679",
                        "rate": 2200,
                        "description": "This is long description",
                        "product_code": "XP0003",
                        "short_description": "bank_integration Api"
                    },
                    {
                        "hsn": "6710",
                        "rate": 9999999,
                        "description": "This is long description",
                        "product_code": "XP0004",
                        "short_description": "user_setup_charges Api"
                    }
                ],
                "terms_of_payment": "Immediatily"
            }
        }
    ],
    "title": {
        "records": 1,
        "current_page": 1,
        "total_pages": 1,
        "page_item_count": 1
    }
}

ERROR RESPONSE The request returns JSON structured like below for errors related to invoice configuration update

{
    "status": false,
    "errors": {
        "base": [
            "Api billing enabled field is required and must be either true or false."
        ],
        "base": [
            "Invoice Configuration api_billing_enabled_date is required when billing is enabled"
        ],
        "base": [
            "Api billing enabled date has invalid format. Please use YYYY-MM-DD"
        ]
    }
}

This endpoint update a invoice configuration.

UAT HTTP Request

PUT https://nxt.api.q2pay.co.in/api/billing/:id/invoice_configuration

PRODUCTION HTTP Request

PUT https://nxt.api.q2pay.in/api/billing/:id/invoice_configuration

Query Parameters

Parameter Default Description Required Sample
api_billing_enabled N.A Indicates whether API billing should be enabled or disabled for the invoice configuration. Accepts true or false. Yes true or false
api_billing_enabled_date N.A Specifies the date when API billing becomes effective. Yes "2025-12-9"

Service Details

Service ID Description
Admin To Update invoice configuration

Invoice

Invoice helps you create & view transactions for organizations

Create Invoice

curl -X POST "https://<environmenturl>/api/billing/create_invoice"
  -H "X-Api-Key: <your secure token>"
  -H "Content-Type: application/json"
  -d "{
        "entity_id": "ABC12",
        "start_date": "14.10.2024",
        "end_date": "25-02-2025",
        "invoice_date": "22-03-2025",
        "display_billing_period": true
}"
require 'net/http'
require 'uri'
require 'json'

uri = URI.parse("https://<environmenturl>/api/billing/create_invoice") header = {'X-Api-Key' => '<your secure token>', 'Content-Type' => 'application/json'} body = { "entity_id": "ABC12", "start_date": "14.10.2024", "end_date": "25-02-2025", "invoice_date": "22-03-2025", "display_billing_period": true }

http = Net::HTTP.new(uri.host, uri.port) http.use_ssl = true request = Net::HTTP::Post.new(uri.request_uri, header) request.body = body.to_json response = http.request(request)

const data ={
        "entity_id": "ABC12",
        "start_date": "14.10.2024",
        "end_date": "25-02-2025",
        "invoice_date": "22-03-2025",
        "display_billing_period": true
};

fetch('https://<environmenturl>/api/billing/create_invoice', { method: 'POST', headers: { 'X-Api-Key': '<your secure token>', 'Content-Type': 'application/json' }, body: JSON.stringify(data) }) .then(response => response.json()) .then(data => console.log(data)) .catch(error => console.error(error));

The below example can be sent as a request to the API.

{
    "entity_id": "ABC12",
    "start_date": "14.10.2024",
    "end_date": "25-02-2025",
    "invoice_date": "22-03-2025",
    "display_billing_period": true
}

SUCCESS RESPONSE The request returns JSON structured like below on successful invoice creation

{
    "status": true,
    "invoice": {
        "entity_id": "ABC12",
        "billing_start_date": "2024-10-14",
        "billing_end_date": "2025-02-25",
        "invoice": {
            "terms_of_payment": "Immediatily",
            "invoice_number": "Q2P2425-010",
            "items": [
                {
                    "position": 1,
                    "description": "ifsc Api",
                    "hsn": 674,
                    "unit_price": 2,
                    "total": 8.0,
                    "quantity": 4
                }
            ],
            "discount": [
                {
                    "position": 1,
                    "title": "Basic Discount",
                    "rate": 5,
                    "amount": "0.40"
                },
                {
                    "position": 2,
                    "title": "Promotional Discount",
                    "rate": 10,
                    "amount": "0.76"
                },
                {
                    "position": 3,
                    "title": "Loyalty Discount",
                    "rate": 20,
                    "amount": "1.37"
                }
            ],
            "taxes": {
                "cgst": {
                    "rate": 9,
                    "amount": "0.49"
                },
                "sgst": {
                    "rate": 9,
                    "amount": "0.49"
                }
            },
            "totals": {
                "subtotal_amount": "8.00",
                "total_amount_due": "6.46"
            }
        }
    }
}

ERROR RESPONSE The request returns JSON structured like below for errors related to invoice creation

{
    "status": false,
    "errors": {
        "base": [
            "Both start date and end date must be provided."
        ],
        "base": [
            "Entity ID cannot be blank."
        ],
        "base": [
            "No billing information found for entity_id: ABC12p"
        ],
        "base": [
            "Invoice already created for this date range until 2026-11-26"
        ]
    }
}

This endpoint creates a invoice.

UAT HTTP Request

POST https://nxt.api.q2pay.co.in/api/billing/create_invoice

PRODUCTION HTTP Request

POST https://nxt.api.q2pay.in/api/billing/create_invoice

Query Parameters

Parameter Default Description Required Sample
start_date N.A. Start date for generate invoice Yes 27.01.2025
end_date N.A. End date for generate invoice Yes 28.02.2025
entity_id N.A Entity id for generate invoice Yes ABC12
invoice_date N.A Invoice date for generate invoice optional 22-03-2025
display_billing_period N.A Display Billing period for generate invoice optional true, false

Service Details

Service ID Description
Admin To Create invoice

Create Custom Invoice

curl -X POST "https://<environmenturl>/api/billing/create_custom_invoice"
  -H "X-Api-Key: <your secure token>"
  -H "Content-Type: application/json"
  -d "{
    "entity_id": "ABC12",
    "start_date": "27.01.2025",
    "end_date": "28-02-2025",
    "product_details": [
        {
            "product_code": "XP0003",
            "description": "This is ICICI bank",
            "quantity": 1
        },
        {
            "product_code": "XP0003",
            "description": "This is ICICI bank"
        }
    ],
    "discount_enabled": true
}"
require 'net/http'
require 'uri'
require 'json'

uri = URI.parse("https://<environmenturl>/api/billing/create_custom_invoice") header = {'X-Api-Key' => '<your secure token>', 'Content-Type' => 'application/json'} body = { "entity_id": "ABC12", "start_date": "27.01.2025", "end_date": "28-02-2025", "product_details": [ { "product_code": "XP0003", "description": "This is ICICI bank", "quantity": 1 }, { "product_code": "XP0003", "description": "This is ICICI bank" } ], "discount_enabled": true }

http = Net::HTTP.new(uri.host, uri.port) http.use_ssl = true request = Net::HTTP::Post.new(uri.request_uri, header) request.body = body.to_json response = http.request(request)

const data ={
    "entity_id": "ABC12",
    "start_date": "27.01.2025",
    "end_date": "28-02-2025",
    "product_details": [
        {
            "product_code": "XP0003",
            "description": "This is ICICI bank",
            "quantity": 1
        },
        {
            "product_code": "XP0003",
            "description": "This is ICICI bank"
        }
    ],
    "discount_enabled": true
};

fetch('https://<environmenturl>/api/billing/create_custom_invoice', { method: 'POST', headers: { 'X-Api-Key': '<your secure token>', 'Content-Type': 'application/json' }, body: JSON.stringify(data) }) .then(response => response.json()) .then(data => console.log(data)) .catch(error => console.error(error));

The below example can be sent as a request to the API.

{
    "entity_id": "ABC12",
    "start_date": "27.01.2025",
    "end_date": "28-02-2025",
    "product_details": [
        {
            "product_code": "XP0003",
            "description": "This is ICICI bank",
            "quantity": 1
        },
        {
            "product_code": "XP0003",
            "description": "This is ICICI bank"
        }
    ],
    "discount_enabled": true
}

SUCCESS RESPONSE The request returns JSON structured like below on successful invoice creation

{
    "status": true,
    "invoice_details": {
        "entity_id": "ABC12",
        "billing_start_date": "2025-01-27",
        "billing_end_date": "2025-02-28",
        "invoice": {
            "terms_of_payment": "Immediatily",
            "invoice_number": "Q2P2425-015",
            "items": [
                {
                    "position": 1,
                    "description": "This is ICICI bank",
                    "hsn": "679",
                    "unit_price": 2200,
                    "total": 2200.0,
                    "quantity": 1
                },
                {
                    "position": 2,
                    "description": "This is ICICI bank",
                    "hsn": "679",
                    "unit_price": 2200,
                    "total": 2200.0
                }
            ],
            "discount": [
                {
                    "position": 1,
                    "title": "Basic Discount",
                    "rate": 5,
                    "amount": "220.00"
                },
                {
                    "position": 2,
                    "title": "Promotional Discount",
                    "rate": 10,
                    "amount": "418.00"
                },
                {
                    "position": 3,
                    "title": "Loyalty Discount",
                    "rate": 20,
                    "amount": "752.40"
                }
            ],
            "taxes": {
                "cgst": {
                    "rate": 9,
                    "amount": "270.86"
                },
                "sgst": {
                    "rate": 9,
                    "amount": "270.86"
                }
            },
            "totals": {
                "subtotal_amount": "4400.00",
                "total_amount_due": "3551.33"
            }
        }
    }
}

ERROR RESPONSE The request returns JSON structured like below for errors related to invoice creation

{
   "status": false,
    "errors": {
        "base": [
            "Entity ID cannot be blank."
        ],
        "base": [
            "Product details cannot be blank."
        ],
        "base": [
            "Missing keys: product_code,description"
        ]
    }
}

This endpoint creates a custom invoice.

UAT HTTP Request

POST https://nxt.api.q2pay.co.in/api/billing/create_custom_invoice

PRODUCTION HTTP Request

POST https://nxt.api.q2pay.in/api/billing/create_custom_invoice

Query Parameters

Parameter Default Description Required Sample
start_date N.A. Start date for generate custom invoice optional 27.01.2025
end_date N.A. End date for generate custom invoice optional 28.02.2025
entity_id N.A Entity id for generate custom invoice Yes ABC12
product_details N.A Product details for generate custom invoice Yes [{"product_code": "XP0003","description": "This is ICICI bank","quantity": 1}]
discount_enabled N.A Discount enabled period for generate custom invoice optional true, false

Service Details

Service ID Description
Admin To Create invoice

Get All Invoices

curl "https://<environmenturl>/api/billing/invoices"
  -H "X-Api-Key: <your secure token>"
  -H "Content-Type: application/json"
require 'net/http'
require 'uri'
require 'json'

uri = URI.parse("https://<environmenturl>/api/billing/invoices") header = {'X-Api-Key' => '<your secure token>', 'Content-Type' => 'application/json'} http = Net::HTTP.new(uri.host, uri.port) http.use_ssl = true request = Net::HTTP::Get.new(uri.request_uri, header) request.body = body.to_json response = http.request(request)


fetch('https://<environmenturl>/api/billing/invoices', {
  method: 'GET',
  headers: {
    'X-Api-Key': '<your secure token>',
    'Content-Type': 'application/json'
  },
  body: JSON.stringify(data)
})
  .then(response => response.json())
  .then(data => console.log(data))
  .catch(error => console.error(error));

SUCCESS RESPONSE The request returns JSON structured like below on successfully invoices

{
    "status": true,
    "total_count": 6,
    "invoices": [
        {
            "id": 89,
            "invoice_number": "Q2P2425-004",
            "invoice_date": "2025-03-22",
            "entity_name": "Q2Pay Tech Pune",
            "final_amount_due": "7561.44"
        },
        {
            "id": 86,
            "invoice_number": "Q2P2425-001",
            "invoice_date": "2025-03-22",
            "entity_name": "Q2Pay Solutions",
            "final_amount_due": "7109.11"
        },
        {
            "id": 87,
            "invoice_number": "Q2P2425-002",
            "invoice_date": "2025-03-22",
            "entity_name": "Q2Pay Tech Pune",
            "final_amount_due": "7109.11"
        },
        {
            "id": 90,
            "invoice_number": "Q2P2425-005",
            "invoice_date": "2025-03-12",
            "entity_name": "Mock Entity",
            "final_amount_due": "0.00"
        },
        {
            "id": 91,
            "invoice_number": "Q2P2425-006",
            "invoice_date": "2025-03-12",
            "entity_name": "Q2Pay Tech Pune",
            "final_amount_due": "0.00"
        },
        {
            "id": 88,
            "invoice_number": "Q2P2425-003",
            "invoice_date": "2025-03-11",
            "entity_name": "Q2Pay Tech Pune",
            "final_amount_due": "0.00"
        }
    ],
    "title": {
        "records": 6,
        "current_page": 1,
        "total_pages": 1,
        "page_item_count": 100
    }
}

This endpoint retrieves information about invoices.

UAT HTTP Request

GET https://nxt.api.q2pay.co.in/api/billing/invoices

PRODUCTION HTTP Request

GET https://nxt.api.q2pay.in/api/billing/invoices

Service ID Description
Admin, VInvoice, AVInvoice To view invoices

Get Specific Invoice

curl "https://<environmenturl>/api/billing/:id/invoice"
  -H "X-Api-Key: <your secure token>"
  -H "Content-Type: application/json"
require 'net/http'
require 'uri'
require 'json'

uri = URI.parse("https://<environmenturl>/api/billing/:id/invoice") header = {'X-Api-Key' => '<your secure token>', 'Content-Type' => 'application/json'} http = Net::HTTP.new(uri.host, uri.port) http.use_ssl = true request = Net::HTTP::Get.new(uri.request_uri, header) request.body = body.to_json response = http.request(request)


fetch('https://<environmenturl>/api/billing/:id/invoice', {
  method: 'GET',
  headers: {
    'X-Api-Key': '<your secure token>',
    'Content-Type': 'application/json'
  },
  body: JSON.stringify(data)
})
  .then(response => response.json())
  .then(data => console.log(data))
  .catch(error => console.error(error));

SUCCESS RESPONSE The request returns JSON structured like below on successfully specific invoice

{
    "status": true,
    "invoice": {
        "id": 91,
        "invoice_number": "Q2P2425-006",
        "invoice_date": "2025-03-12",
        "entity_id": "ABC12",
        "start_date": "2025-03-12",
        "end_date": "2025-03-12",
        "terms_of_payment": "Immediatily",
        "display_billing_period": true,
        "bank_details": {
            "bank": "HDFC bank",
            "branch": "Churchgate",
            "ifsc_code": "ICIC0000393",
            "account_number": 456789
        },
        "items": [
            {
                "hsn": "679",
                "description": "This is ICICI bank",
                "unit_price": 2200,
                "quantity": 0,
                "total": 0.0
            }
        ],
        "discounts": [
            {
                "rate": 5,
                "title": "Basic Discount",
                "amount": "0.00",
                "position": 1
            },
            {
                "rate": 10,
                "title": "Promotional Discount",
                "amount": "0.00",
                "position": 2
            },
            {
                "rate": 20,
                "title": "Loyalty Discount",
                "amount": "0.00",
                "position": 3
            }
        ],
        "taxes": [
            {
                "cgst": {
                    "rate": 9,
                    "amount": "0.00"
                }
            },
            {
                "sgst": {
                    "rate": 9,
                    "amount": "0.00"
                }
            }
        ],
        "totals": {
            "subtotal": "0.00",
            "final_amount_due": "0.00"
        }
    },
    "title": {
        "records": 1,
        "current_page": 1,
        "total_pages": 1,
        "page_item_count": 1
    }
}

ERROR RESPONSE The request returns JSON structured like below for errors related to specific invoice

{
    "status": false,
    "errors": {
        "base": [
            "Invoice not found"
        ]
    }
}

This endpoint retrieves information about specific invoice.

UAT HTTP Request

GET https://nxt.api.q2pay.co.in/api/billing/:id/invoice

PRODUCTION HTTP Request

GET https://nxt.api.q2pay.in/api/billing/:id/invoice

Service ID Description
Admin, VInvoice, AVInvoice To view invoice

Download Specific Invoice

curl -X POST "https://<environmenturl>/api/billing/:id/download_invoice.pdf"
  -H "X-Api-Key: <your secure token>"
  -H "Content-Type: application/json"

require 'net/http'
require 'uri'
require 'json'

uri = URI.parse("https://<environmenturl>/api/billing/:id/download_invoice.pdf") header = {'X-Api-Key' => '<your secure token>', 'Content-Type' => 'application/json'}

http = Net::HTTP.new(uri.host, uri.port) http.use_ssl = true request = Net::HTTP::Post.new(uri.request_uri, header) request.body = body.to_json response = http.request(request)

fetch('https://<environmenturl>/api/billing/:id/download_invoice.pdf', {
  method: 'POST',
  headers: {
    'X-Api-Key': '<your secure token>',
    'Content-Type': 'application/json'
  },
  body: JSON.stringify(data)
})
  .then(response => response.json())
  .then(data => console.log(data))
  .catch(error => console.error(error));

SUCCESS RESPONSE The request returns JSON structured like below on successful invoice creation PDF

{
   "status": 200 
}

ERROR RESPONSE The request returns JSON structured like below for errors related to invoice creation PDF

{
    "status": false,
    "errors": "PDF generation failed: PDF content is nil or empty."
}

ERROR RESPONSE The request returns JSON structured like below for errors related to invoice creation PDF

{
  "status": false,
  "message": "Unsupported format requested. Please use PDF"
}

ERROR RESPONSE The request returns JSON structured like below for errors related to invoice creation PDF

{
  "status": false,
    "errors": {
        "base": [
            "Invoice not found"
        ]
    }
}

This endpoint creates a PDF of the Invoice which will be downloaded.

UAT HTTP Request

POST https://nxt.api.q2pay.co.in/api/billing/:id/download_invoice.pdf

PRODUCTION HTTP Request

POST https://nxt.api.q2pay.in/api/billing/:id/download_invoice.pdf

File Format

Format Default Description Required Sample URL
pdf N.A. pdf format to download specific invoice Yes https://<environmenturl>/api/billing/:id/download_invoice.pdf

Service Details

Service ID Description
Admin, VInvoice, AVInvoice To Download invoice

Encryption

Encryption helps you create, maintain & manage lifecycle for your organization

Create Cloud Platform Credentials

curl -X POST "https://<environmenturl>/api/byok/create_credentials"
-H "X-Api-Key: <your secure token>"
-H "Content-Type: application/json"
-d "{ 
      "credentials": {
        "platform": "aws"
        "access_key": "xxxxxxxxxxxxx",
        "secret_access_key": "xxxxxxxxxxxxx",
        "session_token": "xxxxxxxxxxxxx",
        "region": "ap-south-1"
    }
}"
require 'net/http'
require 'uri'
require 'json'

uri = URI.parse("https://<environmenturl>/api/byok/create_credentials") header = {'X-Api-Key' => '<your secure token>', 'Content-Type' => 'application/json'} body = { "credentials": { "platform": "aws" "access_key": "xxxxxxxxxxxxx", "secret_access_key": "xxxxxxxxxxxxx", "session_token": "xxxxxxxxxxxxx", "region": "ap-south-1" } }

http = Net::HTTP.new(uri.host, uri.port) http.use_ssl = true request = Net::HTTP::Post.new(uri.request_uri, header) request.body = body.to_json response = http.request(request)

const data = {
       "credentials": {
        "platform": "aws"
        "access_key": "xxxxxxxxxxxxx",
        "secret_access_key": "xxxxxxxxxxxxx",
        "session_token": "xxxxxxxxxxxxx",
        "region": "ap-south-1"
    }
};

fetch('https://<environmenturl>/api/byok/create_credentials', { method: 'POST', headers: { 'X-Api-Key': '<your secure token>', 'Content-Type': 'application/json' }, body: JSON.stringify(data) }) .then(response => response.json()) .then(data => console.log(data)) .catch(error => console.error(error));

The below example can be sent as a request to the API.

{
  "credentials": {
        "platform": "aws"
        "access_key": "xxxxxxxxxxxxx",
        "secret_access_key": "xxxxxxxxxxxxx",
        "session_token": "xxxxxxxxxxxxx",
        "region": "ap-south-1"
    }
}

SUCCESS RESPONSE The request returns JSON structured like below on successful credentials

{
  "status": true,
  "message": "Credentials Created Successfully"
}

ERROR RESPONSE The request returns JSON structured like below for errors related to credentials

{ 
    "status": false,
    "errors": {
        "base": [
            "Credentials already exist for Entity: Q581"
        ],
        "base": [
            "Failed to create credentials"
        ],
        "base": [
            "Failed to initialize Client. Retry or Check if your Cloud Credentials are correct"
        ]
    }
}

This endpoint will creates a credentials.

UAT HTTP Request

POST https://nxt.api.q2pay.co.in/api/byok/create_credentials

PRODUCTION HTTP Request

POST https://nxt.api.q2pay.in/api/byok/create_credentials

Query Parameters

Parameter Default Description Required Sample
platform N.A. Platform for credentials Yes aws
access_key N.A. Access key for credentials Yes xxxxxxxxxxxxx
secret_access_key N.A. Secret Access key for credentials Yes xxxxxxxxxxxxx
session_token N.A. Session token for credentials Yes xxxxxxxxxxxxx
region N.A. Region for credentials Yes ap-south-1

Service Details

Service ID Description
CCredentials To Create Credentials

Create New Cloud Platform Credentials

curl -X POST "https://<environmenturl>/api/byok/create_new_credentials"
-H "X-Api-Key: <your secure token>"
-H "Content-Type: application/json"
-d "{ 
     "credentials": {
        "platform": "aws"
        "access_key": "xxxxxxxxxxxxx",
        "secret_access_key": "xxxxxxxxxxxxx",
        "session_token": "xxxxxxxxxxxxx",
        "region": "ap-south-1"
    }
}"
require 'net/http'
require 'uri'
require 'json'

uri = URI.parse("https://<environmenturl>/api/byok/create_new_credentials") header = {'X-Api-Key' => '<your secure token>', 'Content-Type' => 'application/json'} body = { "credentials": { "platform": "aws" "access_key": "xxxxxxxxxxxxx", "secret_access_key": "xxxxxxxxxxxxx", "session_token": "xxxxxxxxxxxxx", "region": "ap-south-1" } }

http = Net::HTTP.new(uri.host, uri.port) http.use_ssl = true request = Net::HTTP::Post.new(uri.request_uri, header) request.body = body.to_json response = http.request(request)

const data = {
       "credentials": {
        "platform": "aws"
        "access_key": "xxxxxxxxxxxxx",
        "secret_access_key": "xxxxxxxxxxxxx",
        "session_token": "xxxxxxxxxxxxx",
        "region": "ap-south-1"
    }
};

fetch('https://<environmenturl>/api/byok/create_new_credentials', { method: 'POST', headers: { 'X-Api-Key': '<your secure token>', 'Content-Type': 'application/json' }, body: JSON.stringify(data) }) .then(response => response.json()) .then(data => console.log(data)) .catch(error => console.error(error));

The below example can be sent as a request to the API.

{
  "credentials": {
        "platform": "aws"
        "access_key": "xxxxxxxxxxxxx",
        "secret_access_key": "xxxxxxxxxxxxx",
        "session_token": "xxxxxxxxxxxxx",
        "region": "ap-south-1"
    }
}

SUCCESS RESPONSE The request returns JSON structured like below on successful credentials

{
  "status": true,
  "message": "New Credentials Created Successfully"
}

ERROR RESPONSE The request returns JSON structured like below for errors related to credentials

{ 
    "status": false,
    "errors": {
        "base": [
            "Credentials already exist for Entity: Q581"
        ],
        "base": [
            "Failed to create credentials"
        ],
        "base": [
            "Failed to initialize Client. Retry or Check if your Cloud Credentials are correct"
        ]
    }
}

This endpoint will creates a new credentials.

UAT HTTP Request

POST https://nxt.api.q2pay.co.in/api/byok/create_new_credentials

PRODUCTION HTTP Request

POST https://nxt.api.q2pay.in/api/byok/create_new_credentials

Query Parameters

Parameter Default Description Required Sample
platform N.A. Platform for credentials Yes aws
access_key N.A. Access key for credentials Yes xxxxxxxxxxxxx
secret_access_key N.A. Secret Access key for credentials Yes xxxxxxxxxxxxx
session_token N.A. Session token for credentials Yes xxxxxxxxxxxxx
region N.A. Region for credentials Yes ap-south-1

Service Details

Service ID Description
UCredentials To Create New Credentials

Get Cloud Platform Credentials

curl -X GET "https://<environmenturl>/api/byok/get_credentials"
  -H "X-Api-Key: <your secure token>"
  -H "Content-Type: application/json"
require 'net/http'
require 'uri'
require 'json'

uri = URI.parse("https://<environmenturl>/api/byok/get_credentials") header = {'X-Api-Key' => '<your secure token>', 'Content-Type' => 'application/json'} http = Net::HTTP.new(uri.host, uri.port) http.use_ssl = true request = Net::HTTP::Get.new(uri.request_uri, header) request.body = body.to_json response = http.request(request)

const data = {};

fetch('https://<environmenturl>/api/byok/get_credentials', { method: 'GET', headers: { 'X-Api-Key': '<your secure token>', 'Content-Type': 'application/json' }, body: JSON.stringify(data) }) .then(response => response.json()) .then(data => console.log(data)) .catch(error => console.error(error));

SUCCESS RESPONSE The request returns JSON structured like below on successfully getting credentials

{
    "status": true,
    "data": {
        "creadentials": {
            "platform": "aws",
            "access_key": "xxxxxxxxxxxxx",
            "secret_access_key": "xxxxxxxxxxxxx",
            "session_token": "xxxxxxxxxxxxx",
            "region": "ap-south-1"
} } }

ERROR RESPONSE The request returns JSON structured like below for errors related to get credentials

{
   "status": false,
    "errors": {
            "Credentials Not Found"
    }
}

This endpoint retrieves information about credentials.

UAT HTTP Request

GET https://nxt.api.q2pay.co.in/api/byok/get_credentials

PRODUCTION HTTP Request

GET https://nxt.api.q2pay.in/api/byok/get_credentials

Service ID Description
VCredentials To view credentials

Get List Keys of Cloud Platform Credentials

curl -X GET "https://<environmenturl>/api/byok/list_keys"
  -H "X-Api-Key: <your secure token>"
  -H "Content-Type: application/json"
require 'net/http'
require 'uri'
require 'json'

uri = URI.parse("https://<environmenturl>/api/byok/list_keys") header = {'X-Api-Key' => '<your secure token>', 'Content-Type' => 'application/json'} http = Net::HTTP.new(uri.host, uri.port) http.use_ssl = true request = Net::HTTP::Get.new(uri.request_uri, header) request.body = body.to_json response = http.request(request)

const data = {};

fetch('https://<environmenturl>/api/byok/list_keys', { method: 'GET', headers: { 'X-Api-Key': '<your secure token>', 'Content-Type': 'application/json' }, body: JSON.stringify(data) }) .then(response => response.json()) .then(data => console.log(data)) .catch(error => console.error(error));

SUCCESS RESPONSE The request returns JSON structured like below on successfully getting list keys

{
    "status": true,
    "keys": [
        "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
        "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
        "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx"
    ],
    "message": "Keys retrieved successfully",
    "encryption_key": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx"
}

ERROR RESPONSE The request returns JSON structured like below for errors related to list keys

{
   "status": false,
    "errors": {
        "base": [
            "Error occoured while fetching keys"
        ],
        "base": [
            "Failed to initialize Client. Retry or Check if your Cloud Credentials are correct again"
        ],
        "Credentials Not Found"
    }
}

This endpoint retrieves information about list keys.

UAT HTTP Request

GET https://nxt.api.q2pay.co.in/api/byok/list_keys

PRODUCTION HTTP Request

GET https://nxt.api.q2pay.in/api/byok/list_keys

Service ID Description
VCredentials To view list keys

Update An Cloud Platform Credentials

curl -X PUT "https://<environmenturl>/api/byok/update_credentials"
-H "X-Api-Key: <your secure token>"
-H "Content-Type: application/json"
-d "{ 
     "credentials":
        {
            "access_key": "xxxxxxxxxxxxx", 
            "secret_access_key": "xxxxxxxxxxxxx",
            "session_token": "xxxxxxxxxxxxx"
        }
}"
require 'net/http'
require 'uri'
require 'json'

uri = URI.parse("https://<environmenturl>/api/byok/update_credentials") header = {'X-Api-Key' => '<your secure token>', 'Content-Type' => 'application/json'} body = { "credentials": { "access_key": "xxxxxxxxxxxxx", "secret_access_key": "xxxxxxxxxxxxx", "session_token": "xxxxxxxxxxxxx" } }

http = Net::HTTP.new(uri.host, uri.port) http.use_ssl = true request = Net::HTTP::PUT.new(uri.request_uri, header) request.body = body.to_json response = http.request(request)

const data = {
    "credentials":
        {
            "access_key": "xxxxxxxxxxxxx", 
            "secret_access_key": "xxxxxxxxxxxxx",
            "session_token": "xxxxxxxxxxxxx"
        } 
};

fetch('https://<environmenturl>/api/byok/update_credentials', { method: 'PUT', headers: { 'X-Api-Key': '<your secure token>', 'Content-Type': 'application/json' }, body: JSON.stringify(data) }) .then(response => response.json()) .then(data => console.log(data)) .catch(error => console.error(error));

The below example can be sent as a request to the API.

{
"credentials":
        {
            "access_key": "xxxxxxxxxxxxx", 
            "secret_access_key": "xxxxxxxxxxxxx",
            "session_token": "xxxxxxxxxxxxx"
        } 
}

SUCCESS RESPONSE The request returns JSON structured like below on successful credentials

{
    "status": true,
    "message": "Credentials Updated Successfully"
}

ERROR RESPONSE The request returns JSON structured like below for errors related to credentials

{
  "status": false,
    "errors": {
        "secret_access_key": [
            "Secret access key can't be blank"
        ], 
        "access_key": [
            "Access key can't be blank"
        ],
        "Credentials Not Found"
    }
}

This endpoint will update credentials.

UAT HTTP Request

PUT https://nxt.api.q2pay.co.in/api/byok/update_credentials

PRODUCTION HTTP Request

PUT https://nxt.api.q2pay.in/api/byok/update_credentials

Query Parameters

Parameter Default Description Required Sample
access_key N.A. Access key for credentials Yes xxxxxxxxxxxxx
secret_access_key N.A. Secret Access key for credentials Yes xxxxxxxxxxxxx
session_token N.A. Session token for credentials Yes xxxxxxxxxxxxx

Service Details

Service ID Description
UCredentials To Update Credentials

Encryption Data of Cloud Platform Credentials

curl -X POST "https://<environmenturl>/api/byok/encrypt_data"
-H "X-Api-Key: <your secure token>"
-H "Content-Type: application/json"
-d "{ 
       "credentials": {
        "key_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx"
    }
}"
require 'net/http'
require 'uri'
require 'json'

uri = URI.parse("https://<environmenturl>/api/byok/encrypt_data") header = {'X-Api-Key' => '<your secure token>', 'Content-Type' => 'application/json'} body = { "credentials": { "key_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx" } }

http = Net::HTTP.new(uri.host, uri.port) http.use_ssl = true request = Net::HTTP::Post.new(uri.request_uri, header) request.body = body.to_json response = http.request(request)

const data = {
        "credentials": {
        "key_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx"
    }
};

fetch('https://<environmenturl>/api/byok/encrypt_data', { method: 'POST', headers: { 'X-Api-Key': '<your secure token>', 'Content-Type': 'application/json' }, body: JSON.stringify(data) }) .then(response => response.json()) .then(data => console.log(data)) .catch(error => console.error(error));

The below example can be sent as a request to the API.

{
   "credentials": {
        "key_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx"
    }
}

SUCCESS RESPONSE The request returns JSON structured like below on successful create encrypt data

{
  "status": true,
  "message": "Encryption Queued Successfully"
}

SUCCESS RESPONSE The request returns JSON structured like below on successful create encrypt data

{
  "status": true,
  "message": "Data is encrypted Successfully"
}

ERROR RESPONSE The request returns JSON structured like below for errors related to encrypt data

{ 
    "status": false,
    "errors": {
        "base": [
            "Encryption process is on going"
        ],
        "base": [
            "Data is already encrypted"
        ],
        "base": [
            "Key ID not provided"
        ],
        "base": [
            "Encryption failed"
        ],
        "base": [
            "Failed to initialize Client. Retry or Check if your Cloud Credentials are correct again"
        ],
        "Credentials Not Found"
    }
}

This endpoint will create a encrypt data.

UAT HTTP Request

POST https://nxt.api.q2pay.co.in/api/byok/encrypt_data

PRODUCTION HTTP Request

POST https://nxt.api.q2pay.in/api/byok/encrypt_data

Query Parameters

Parameter Default Description Required Sample
key_id N.A. key id for credentials Yes xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx

Service Details

Service ID Description
EEncryption To Encrypt data

Rotate keys of Cloud Platform Credentials

curl -X POST "https://<environmenturl>/api/byok/rotate_keys"
-H "X-Api-Key: <your secure token>"
-H "Content-Type: application/json"
-d "{ 
       "credentials": {
        "key_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx"
    }
}"
require 'net/http'
require 'uri'
require 'json'

uri = URI.parse("https://<environmenturl>/api/byok/rotate_keys") header = {'X-Api-Key' => '<your secure token>', 'Content-Type' => 'application/json'} body = { "credentials": { "key_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx" } }

http = Net::HTTP.new(uri.host, uri.port) http.use_ssl = true request = Net::HTTP::Post.new(uri.request_uri, header) request.body = body.to_json response = http.request(request)

const data = {
        "credentials": {
        "key_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx"
    }
};

fetch('https://<environmenturl>/api/byok/rotate_keys', { method: 'POST', headers: { 'X-Api-Key': '<your secure token>', 'Content-Type': 'application/json' }, body: JSON.stringify(data) }) .then(response => response.json()) .then(data => console.log(data)) .catch(error => console.error(error));

The below example can be sent as a request to the API.

{
   "credentials": {
        "key_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx"
    }
}

SUCCESS RESPONSE The request returns JSON structured like below on successful rotate key

{
  "status": true,
  "message": "Key Rotation Queued Successfully"
}

ERROR RESPONSE The request returns JSON structured like below for errors related to rotate key

{ 
    "status": false,
    "errors": {
        "base": [
            "Encryption process is on going"
        ],
        "base": [
            "No Record of previous Encryption Key was found"
        ],
        "base": [
            "Key ID not provided"
        ],
        "base": [
            "Same Key Id provided"
        ],
        "base": [
            "Encryption failed"
        ],
        "base": [
            "Failed to initialize Client. Retry or Check if your Cloud Credentials are correct again"
        ],
        "base": [
            "No Record of previous Encryption Key was found"
        ],
        "Credentials Not Found"
    }
}

This endpoint will create a rotate keys.

UAT HTTP Request

POST https://nxt.api.q2pay.co.in/api/byok/rotate_keys

PRODUCTION HTTP Request

POST https://nxt.api.q2pay.in/api/byok/rotate_keys

Query Parameters

Parameter Default Description Required Sample
key_id N.A. key id for credentials Yes xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx

Service Details

Service ID Description
REncryption To Rotate keys

Decryption Data of Cloud Platform Credentials

curl -X POST "https://<environmenturl>/api/byok/decrypt_data"
-H "X-Api-Key: <your secure token>"
-H "Content-Type: application/json"
-d "{ 
       "credentials": {
        "key_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx"
    }
}"
require 'net/http'
require 'uri'
require 'json'

uri = URI.parse("https://<environmenturl>/api/byok/decrypt_data") header = {'X-Api-Key' => '<your secure token>', 'Content-Type' => 'application/json'} body = { "credentials": { "key_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx" } }

http = Net::HTTP.new(uri.host, uri.port) http.use_ssl = true request = Net::HTTP::Post.new(uri.request_uri, header) request.body = body.to_json response = http.request(request)

const data = {
        "credentials": {
        "key_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx"
    }
};

fetch('https://<environmenturl>/api/byok/decrypt_data', { method: 'POST', headers: { 'X-Api-Key': '<your secure token>', 'Content-Type': 'application/json' }, body: JSON.stringify(data) }) .then(response => response.json()) .then(data => console.log(data)) .catch(error => console.error(error));

The below example can be sent as a request to the API.

{
   "credentials": {
        "key_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx"
    }
}

SUCCESS RESPONSE The request returns JSON structured like below on successful create decrypt data

{
  "status": true,
  "message": "Decryption Queued Successfully"
}

ERROR RESPONSE The request returns JSON structured like below for errors related to decrypt data

{ 
    "status": false,
    "errors": {
        "base": [
            "No Record of Encryption Key was found"
        ],
        "base": [
            "Key ID not provided"
        ],
        "base": [
            "Wrong Key Id provided"
        ],
        "base": [
            "No Record of Encryption Key was found"
        ],
        "Credentials Not Found"
    }
}

This endpoint will create a decrypt data.

UAT HTTP Request

POST https://nxt.api.q2pay.co.in/api/byok/decrypt_data

PRODUCTION HTTP Request

POST https://nxt.api.q2pay.in/api/byok/decrypt_data

Query Parameters

Parameter Default Description Required Sample
key_id N.A. key id for credentials Yes xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx

Service Details

Service ID Description
DEncryption To decrypt data

Transaction Categories

Transaction Categories helps you create, maintain & manage of Transaction categories

Get All Transaction Categories

curl -X GET "https://<environmenturl>/api/transaction_categories"
  -H "X-Api-Key: <your secure token>"
  -H "Content-Type: application/json"

require 'net/http'
require 'uri'
require 'json'

uri = URI.parse("https://<environmenturl>/api/transaction_categories") header = {'X-Api-Key' => '<your secure token>', 'Content-Type' => 'application/json'} http = Net::HTTP.new(uri.host, uri.port) http.use_ssl = true request = Net::HTTP::Get.new(uri.request_uri, header) request.body = body.to_json response = http.request(request)

fetch('https://<environmenturl>/api/transaction_categories', { method: 'GET', headers: { 'X-Api-Key': '<your secure token>', 'Content-Type': 'application/json' }, body: JSON.stringify(data) }) .then(response => response.json()) .then(data => console.log(data)) .catch(error => console.error(error));

SUCCESS RESPONSE The request returns JSON structured like below

{
  "status": true,
  "total_count": 2,
  "categories": [
    {
      "id": 1,
      "name": "Subscription",
      "description": "december month Subscription",
      "configuration": {
        "data": [
          {
            "name": "month",
            "position": 1,
            "data_type": "string",
            "mandatory": "Y"
          },
          {
            "name": "leaves",
            "position": 2,
            "data_type": "numeric",
            "mandatory": "N"
          },
          {
            "name": "PAN",
            "position": 3,
            "data_type": "string",
            "mandatory": "N"
          },
          {
            "name": "Accountants",
            "position": 4,
            "data_type": "list",
            "data": [
              "pradip",
              "deepak",
              "nikhil",
              "neha"
            ],
            "mandatory": "N"
          },
          {
            "name": "month 1",
            "position": 5,
            "data_type": "time",
            "mandatory": "Y"
          },
          {
            "name": "Day",
            "position": 6,
            "data_type": "day",
            "mandatory": "Y"
          },
          {
            "name": "Dummy",
            "position": 7,
            "data_type": "toggle",
            "mandatory": "Y",
            "description": "allow client to pay via NetBanking"
          },
          {
            "name": "Month",
            "position": 8,
            "data_type": "month",
            "mandatory": "Y"
          },
          {
            "name": "Hyperlink",
            "position": 9,
            "data_type": "hyperlink",
            "mandatory": "Y"
          },
          {
            "name": "File",
            "position": 10,
            "data_type": "upload",
            "mandatory": "Y"
          },
          {
            "name": "Date",
            "position": 11,
            "data_type": "date",
            "mandatory": "Y"
          },
          {
            "name": "Year",
            "position": 12,
            "data_type": "year",
            "mandatory": "Y"
          },
          {
            "name": "Month_Year",
            "position": 13,
            "data_type": "month_year",
            "mandatory": "Y"
          },
          {
            "name": "Multiselect",
            "position": 14,
            "data_type": "multi_select_list",
            "mandatory": "Y",
            "data": [
               "ab",
               "abc",
               "abcd"
             ],
          },
          {
            "name": "Quantity",
            "position": 15,
            "data_type": "quantity",
            "mandatory": "Y"
          },
          {
            "name": "DateRange",
            "position": 16,
            "data_type": "date_range",
            "mandatory": "Y"
          },
          {
            "name": "YearRange",
            "position": 17,
            "data_type": "from_year_to_year",
            "mandatory": "Y"
          }
        ]
      },
      "logo_url": "Xure=4cd6b713f37089cb0d754e38d20814",
      "active": "N",
      "deactivated_by_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
      "deactivated_at": "2024-02-15T11:01:09.059Z",
      "created_by_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
      "custom_category": "N",
      "created_at": "2023-11-30T11:34:18.081Z",
      "updated_at": "2023-11-30T11:34:30.429Z"
    },
    {
      "id": 2,
      "name": "Vendor",
      "description": "december month Subscription",
      "configuration": {
        "data": [
          {
            "name": "Pan",
            "position": 2,
            "data_type": "string",
            "mandatory": "Y"
          }
        ]
      },
      "logo_url": "Xure=4cd6b713f37089cb0d754e38d20814",
      "active": "Y",
      "activated_by_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
      "activated_at": "2024-04-15T12:37:56.671Z",
      "created_by_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
      "created_at": "2023-12-01T04:00:26.533Z",
      "updated_at": "2023-12-01T04:00:26.533Z"
    }
  ]
}

This endpoint retrieves all Transaction Categories.

UAT HTTP Request

GET https://nxt.api.q2pay.co.in/api/transaction_categories

PRODUCTION HTTP Request

GET https://nxt.api.q2pay.in/api/transaction_categories

Query Parameters

Parameter Default Description Required Sample
search_string N.A. search string is used to filter name or description for transaction categories optional "Vendor"

Service Details

Service ID Description
PLogin To Login User

Create Transaction Categories

curl -X POST "https://<environmenturl>/api/transaction_categories"
  -H "X-Api-Key: <your secure token>"
  -H "Content-Type: application/json"
  -d "{
  "transaction_category": {
    "name": "Vendor",
    "description": "dec month",
    "configuration": {
      "data": [
        {
          "name": "month",
          "position": 1,
          "data_type": "string",
          "mandatory": "Y"
        },
        {
          "name": "leaves",
          "position": 2,
          "data_type": "numeric",
          "mandatory": "N"
        },
        {
          "name": "PAN",
          "position": 3,
          "data_type": "string",
          "mandatory": "N"
        },
        {
          "name": "Accountants",
          "position": 4,
          "data_type": "list",
          "data": [
            "pradip",
            "deepak",
            "nikhil",
            "neha"
          ],
          "mandatory": "N"
        }
      ]
    },
    "logo_data": {
      "id": "c68cc4e7d54381cc46384f194c09ce2c.png",
      "storage": "cache",
      "metadata": {
        "filename": "favicon.png",
        "size": 62260,
        "mime_type": "image/png"
      }
    }
  }

"transaction_category": { "name": "Vendor", "description": "dec month", "configuration": { "data": [ { "name": "month", "position": 1, "data_type": "string", "mandatory": "Y" }, { "name": "leaves", "position": 2, "data_type": "numeric", "mandatory": "N" }, { "name": "PAN", "position": 3, "data_type": "string", "mandatory": "N" }, { "name": "Accountants", "position": 4, "data_type": "list", "data": [ "pradip", "deepak", "nikhil", "neha" ], "mandatory": "N" } ] }, "asset_properties": { "resource_name": "favicon.png", "colour": "#FFFFFF" } } }"

require 'net/http'
require 'uri'
require 'json'

uri = URI.parse("https://<environmenturl>/api/transaction_categories") header = {'X-Api-Key' => '<your secure token>', 'Content-Type' => 'application/json'} body = { "transaction_category": { "name": "Vendor", "description": "dec month", "configuration": { "data": [ { "name": "month", "position": 1, "data_type": "string", "mandatory": "Y" }, { "name": "leaves", "position": 2, "data_type": "numeric", "mandatory": "N" }, { "name": "PAN", "position": 3, "data_type": "string", "mandatory": "N" }, { "name": "Accountants", "position": 4, "data_type": "list", "data": [ "pradip", "deepak", "nikhil", "neha" ], "mandatory": "N" } ] }, "logo_data": { "id": "c68cc4e7d54381cc46384f194c09ce2c.png", "storage": "cache", "metadata": { "filename": "favicon.png", "size": 62260, "mime_type": "image/png" } } }

"transaction_category": { "name": "Vendor", "description": "dec month", "configuration": { "data": [ { "name": "month", "position": 1, "data_type": "string", "mandatory": "Y" }, { "name": "leaves", "position": 2, "data_type": "numeric", "mandatory": "N" }, { "name": "PAN", "position": 3, "data_type": "string", "mandatory": "N" }, { "name": "Accountants", "position": 4, "data_type": "list", "data": [ "pradip", "deepak", "nikhil", "neha" ], "mandatory": "N" } ] }, "asset_properties": { "resource_name": "favicon.png", "colour": "#FFFFFF" } } } http = Net::HTTP.new(uri.host, uri.port) http.use_ssl = true request = Net::HTTP::Post.new(uri.request_uri, header) request.body = body.to_json response = http.request(request)

const data = {
  "transaction_category": {
    "name": "Vendor",
    "description": "dec month",
    "configuration": {
      "data": [
        {
          "name": "month",
          "position": 1,
          "data_type": "string",
          "mandatory": "Y"
        },
        {
          "name": "leaves",
          "position": 2,
          "data_type": "numeric",
          "mandatory": "N"
        },
        {
          "name": "PAN",
          "position": 3,
          "data_type": "string",
          "mandatory": "N"
        },
        {
          "name": "Accountants",
          "position": 4,
          "data_type": "list",
          "data": [
            "pradip",
            "deepak",
            "nikhil",
            "neha"
          ],
          "mandatory": "N"
        }
      ]
    },
    "logo_data": {
      "id": "c68cc4e7d54381cc46384f194c09ce2c.png",
      "storage": "cache",
      "metadata": {
        "filename": "favicon.png",
        "size": 62260,
        "mime_type": "image/png"
      }
    }
  }

"transaction_category": { "name": "Vendor", "description": "dec month", "configuration": { "data": [ { "name": "month", "position": 1, "data_type": "string", "mandatory": "Y" }, { "name": "leaves", "position": 2, "data_type": "numeric", "mandatory": "N" }, { "name": "PAN", "position": 3, "data_type": "string", "mandatory": "N" }, { "name": "Accountants", "position": 4, "data_type": "list", "data": [ "pradip", "deepak", "nikhil", "neha" ], "mandatory": "N" } ] }, "asset_properties": { "resource_name": "favicon.png", "colour": "#FFFFFF" } } };

fetch('https://<environmenturl>/api/transaction_categories', { method: 'POST', headers: { 'X-Api-Key': '<your secure token>', 'Content-Type': 'application/json' }, body: JSON.stringify(data) }) .then(response => response.json()) .then(data => console.log(data)) .catch(error => console.error(error));

The below example can be sent as a request to the API.

{
  "transaction_category": {
    "name": "Vendor",
    "description": "dec month",
    "configuration": {
      "data": [
        {
          "name": "month",
          "position": 1,
          "data_type": "string",
          "mandatory": "Y"
        },
        {
          "name": "leaves",
          "position": 2,
          "data_type": "numeric",
          "mandatory": "N"
        },
        {
          "name": "PAN",
          "position": 3,
          "data_type": "string",
          "mandatory": "N"
        },
        {
          "name": "Accountants",
          "position": 4,
          "data_type": "list",
          "data": [
            "pradip",
            "deepak",
            "nikhil",
            "neha"
          ],
          "mandatory": "N"
        }
      ]
    },
    "logo_data": {
      "id": "c68cc4e7d54381cc46384f194c09ce2c.png",
      "storage": "cache",
      "metadata": {
        "filename": "favicon.png",
        "size": 62260,
        "mime_type": "image/png"
      }
    }
  }

"transaction_category": { "name": "Vendor", "description": "dec month", "configuration": { "data": [ { "name": "month", "position": 1, "data_type": "string", "mandatory": "Y" }, { "name": "leaves", "position": 2, "data_type": "numeric", "mandatory": "N" }, { "name": "PAN", "position": 3, "data_type": "string", "mandatory": "N" }, { "name": "Accountants", "position": 4, "data_type": "list", "data": [ "pradip", "deepak", "nikhil", "neha" ], "mandatory": "N" } ] }, "asset_properties": { "resource_name": "favicon.png", "colour": "#FFFFFF" } } }

SUCCESS RESPONSE The request returns JSON structured like below on successful transaction Categories creation

{
  "status": true,
  "total_count": 2,
  "categories": [
    {
      "id": 1,
      "name": "Vendor",
      "description": "dec month",
      "configuration": {
        "data": [
          {
            "name": "month",
            "position": 1,
            "data_type": "string",
            "mandatory": "Y"
          },
          {
            "name": "leaves",
            "position": 2,
            "data_type": "numeric",
            "mandatory": "N"
          },
          {
            "name": "PAN",
            "position": 3,
            "data_type": "string",
            "mandatory": "N"
          },
          {
            "name": "Accountants",
            "position": 4,
            "data_type": "list",
            "data": [
              "pradip",
              "deepak",
              "nikhil",
              "neha"
            ],
            "mandatory": "N"
          } 
        ]
      },
      "logo_url": "Xure=4cd6b713f37089cb0d754e38d20814",
      "active": "N",
      "created_by_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
      "custom_category": "N",
      "created_at": "2023-12-11T10:11:38.715Z",
      "updated_at": "2023-12-11T10:11:38.715Z"
    }
    {
      "id": 2,
      "name": "Vendor",
      "description": "dec month",
      "configuration": {
        "data": [
          {
            "name": "month",
            "position": 1,
            "data_type": "string",
            "mandatory": "Y"
          },
          {
            "name": "leaves",
            "position": 2,
            "data_type": "numeric",
            "mandatory": "N"
          },
          {
            "name": "PAN",
            "position": 3,
            "data_type": "string",
            "mandatory": "N"
          },
          {
            "name": "Accountants",
            "position": 4,
            "data_type": "list",
            "data": [
              "pradip",
              "deepak",
              "nikhil",
              "neha"
            ],
            "mandatory": "N"
          } 
        ]
      },
      "asset_properties": { "resource_name": "favicon.png", "colour": "#FFFFFF" }
    }
  ]
}

ERROR RESPONSE The request returns JSON structured like below for errors related transaction categories

{
    "status":false, 
    "errors":{
        "name":[
            "Name can't be blank"
        ],
        "configuration": [
            "Configuration Only data settings are allowed",
            "Configuration 'data' is malformed",
            "Configuration 'data' : {\"name\"=>\"month\", \"position\"=>1, \"data_type\"=>\"integer\", \"mandatory\"=>\"Y\"} must have data_type as one of the following: string, numeric, list, date, year, month_year,time, day, toggle, month, hyperlink, upload, multi_select_list, quantity, date_range, from_year_to_year",
            "Configuration 'data' : {\"name\"=>\"month\", \"position\"=>\"1\", \"data_type\"=>\"string\", \"mandatory\"=>\"Y\"} must have position as an integer",
            "Configuration 'data' : {\"name\"=>\"month\", \"position\"=>1, \"data_type\"=>\"string\", \"mandatory\"=>\"Yes\"} must have mandatory as one of the following: Y, N",
            "Configuration 'data' : {\"name\"=>\"month\", \"position\"=>1, \"data_type\"=>\"list\", \"mandatory\"=>\"Y\"} must have data key in each hash",
            "Configuration 'data' : {\"name\"=>\"month\", \"position\"=>1, \"data_type\"=>\"list\", \"mandatory\"=>\"Y\"} must have data as an array of strings",
            "Configuration 'data' : {\"name\"=>\"month\", \"position\"=>1} must have name, data_type, mandatory and position keys in each hash",
            "Configuration 'data' must have unique value for each name field in array",
            "Configuration 'data' must have position as 1, 2, 3, 4, ...",
            "Configuration 'data' must have unique position in array",
            "Configuration 'data' : {\"name\"=>\"Dummy\", \"position\"=>1, \"data_type\"=>\"toggle\", \"mandatory\"=>\"Y\", \"description\"=>1} must have description as an string"
        ],
      "asset_properties":[
        "Asset properties missing key(s): colour",
        "Asset properties resource_name maximum 50 characters"
      ],
      "base": [ "You can either upload a logo or asset properties." ],
      "logo": [ "Logo File not found in storage" ]
    }
}

This endpoint creates a Transaction categories.

UAT HTTP Request

POST https://nxt.api.q2pay.co.in/api/transaction_categories

PRODUCTION HTTP Request

POST https://nxt.api.q2pay.in/api/transaction_categories

Query Parameters

Parameter Default Description Required Sample
name N.A. name for transaction categories Yes Vendor
description N.A. description for transaction categories No december month Subscription
configuration N.A. Configuration for transaction categories No "data": [{"name": "month"}]
logo_data N.A. logo data for transaction categories No { "id":"c68cc4e7d54381cc46384f194c09ce2c.png", "storage":"cache","metadata": {"filename":"favicon.png","size":62260,"mime_type":"image/png" }}
asset_properties N.A asset properties for transaction_categories No { "resource_name": "favicon.png", "colour": "#FFFFFF" }

Note

For generating logo_data kindly refer uploads -> image documentation

Service Details

Service ID Description
Admin Create Transaction categories
CTransactionCategory Create Transaction categories

Update Transaction Categories

curl -X PUT "https://<environmenturl>/api/transaction_categories/:id"
  -H "X-Api-Key: <your secure token>"
  -H "Content-Type: application/json"
  -d "{ 
    "transaction_category": {
    "name": "Vendor",
    "description": "december month Subscription",
    "configuration": {
      "data": [
        {
          "name": "month",
          "position": 1,
          "data_type": "string",
          "mandatory": "Y"
        },
        {
          "name": "leaves",
          "position": 2,
          "data_type": "numeric",
          "mandatory": "N"
        },
        {
          "name": "PAN",
          "position": 3,
          "data_type": "string",
          "mandatory": "N"
        },
        {
          "name": "Accountants",
          "position": 4,
          "data_type": "list",
          "data": [
            "pradip",
            "deepak",
            "nikhil",
            "neha"
          ],
          "mandatory": "N"
        },
        {
          "name": "month 1",
          "position": 5,
          "data_type": "time",
          "mandatory": "Y"
        },
        {
          "name": "Day",
          "position": 6,
          "data_type": "day",
          "mandatory": "Y"
        },
        {
          "name": "Dummy",
          "position": 7,
          "data_type": "toggle",
          "mandatory": "Y",
          "description": "allow client to pay via NetBanking"
        },
        {
          "name": "Month",
          "position": 8,
          "data_type": "month",
          "mandatory": "Y"
        },
        {
          "name": "Hyperlink",
          "position": 9,
          "data_type": "hyperlink",
          "mandatory": "Y"
        },
        {
          "name": "File",
          "position": 10,
          "data_type": "upload",
          "mandatory": "Y"
        },
        {
          "name": "Date",
          "position": 11,
          "data_type": "date",
          "mandatory": "Y"
        },
        {
          "name": "Year",
          "position": 12,
          "data_type": "year",
          "mandatory": "Y"
        },
        {
          "name": "Month_Year",
          "position": 13,
          "data_type": "month_year",
          "mandatory": "Y"
        },
        {
          "name": "Multiselect",
          "position": 14,
          "data_type": "multi_select_list",
          "mandatory": "Y",
          "data": [
            "ab",
            "abc",
            "abcd"
          ]
        },
        {
          "name": "Quantity",
          "position": 15,
          "data_type": "quantity",
          "mandatory": "Y"
        },
        {
          "name": "DateRange",
          "position": 16,
          "data_type": "date_range",
          "mandatory": "Y"
        },
        {
          "name": "YearRange",
          "position": 17,
          "data_type": "from_year_to_year",
          "mandatory": "Y"
        }
      ]
    },
    "logo_data": {
      "id": "c68cc4e7d54381cc46384f194c09ce2c.png",
      "storage": "cache",
      "metadata": {
        "filename": "favicon.png",
        "size": 62260,
        "mime_type": "image/png"
      }
    }
  }
}"
require 'net/http'
require 'uri'
require 'json'

uri = URI.parse("https://<environmenturl>/api/transaction_categories/:id") header = {'X-Api-Key' => '<your secure token>', 'Content-Type' => 'application/json'} body = { "transaction_category": { "name": "Vendor", "description": "december month Subscription", "configuration": { "data": [ { "name": "month", "position": 1, "data_type": "string", "mandatory": "Y" }, { "name": "leaves", "position": 2, "data_type": "numeric", "mandatory": "N" }, { "name": "PAN", "position": 3, "data_type": "string", "mandatory": "N" }, { "name": "Accountants", "position": 4, "data_type": "list", "data": [ "pradip", "deepak", "nikhil", "neha" ], "mandatory": "N" }, { "name": "month 1", "position": 5, "data_type": "time", "mandatory": "Y" }, { "name": "Day", "position": 6, "data_type": "day", "mandatory": "Y" }, { "name": "Dummy", "position": 7, "data_type": "toggle", "mandatory": "Y", "description": "allow client to pay via NetBanking" }, { "name": "Month", "position": 8, "data_type": "month", "mandatory": "Y" }, { "name": "Hyperlink", "position": 9, "data_type": "hyperlink", "mandatory": "Y" }, { "name": "File", "position": 10, "data_type": "upload", "mandatory": "Y" }, { "name": "Date", "position": 11, "data_type": "date", "mandatory": "Y" }, { "name": "Year", "position": 12, "data_type": "year", "mandatory": "Y" }, { "name": "Month_Year", "position": 13, "data_type": "month_year", "mandatory": "Y" }, { "name": "Multiselect", "position": 14, "data_type": "multi_select_list", "mandatory": "Y", "data": [ "ab", "abc", "abcd" ] }, { "name": "Quantity", "position": 15, "data_type": "quantity", "mandatory": "Y" }, { "name": "DateRange", "position": 16, "data_type": "date_range", "mandatory": "Y" }, { "name": "YearRange", "position": 17, "data_type": "from_year_to_year", "mandatory": "Y" } ] }, "logo_data": { "id": "c68cc4e7d54381cc46384f194c09ce2c.png", "storage": "cache", "metadata": { "filename": "favicon.png", "size": 62260, "mime_type": "image/png" } } } } http = Net::HTTP.new(uri.host, uri.port) http.use_ssl = true request = Net::HTTP::Put.new(uri.request_uri, header) request.body = body.to_json response = http.request(request)

const data = {
  "transaction_category": {
    "name": "Vendor",
    "description": "december month Subscription",
    "configuration": {
      "data": [
        {
          "name": "month",
          "position": 1,
          "data_type": "string",
          "mandatory": "Y"
        },
        {
          "name": "leaves",
          "position": 2,
          "data_type": "numeric",
          "mandatory": "N"
        },
        {
          "name": "PAN",
          "position": 3,
          "data_type": "string",
          "mandatory": "N"
        },
        {
          "name": "Accountants",
          "position": 4,
          "data_type": "list",
          "data": [
            "pradip",
            "deepak",
            "nikhil",
            "neha"
          ],
          "mandatory": "N"
        },
        {
          "name": "month 1",
          "position": 5,
          "data_type": "time",
          "mandatory": "Y"
        },
        {
          "name": "Day",
          "position": 6,
          "data_type": "day",
          "mandatory": "Y"
        },
        {
          "name": "Dummy",
          "position": 7,
          "data_type": "toggle",
          "mandatory": "Y",
          "description": "allow client to pay via NetBanking"
        },
        {
          "name": "Month",
          "position": 8,
          "data_type": "month",
          "mandatory": "Y"
        },
        {
          "name": "Hyperlink",
          "position": 9,
          "data_type": "hyperlink",
          "mandatory": "Y"
        },
        {
          "name": "File",
          "position": 10,
          "data_type": "upload",
          "mandatory": "Y"
        },
        {
          "name": "Date",
          "position": 11,
          "data_type": "date",
          "mandatory": "Y"
        },
        {
          "name": "Year",
          "position": 12,
          "data_type": "year",
          "mandatory": "Y"
        },
        {
          "name": "Month_Year",
          "position": 13,
          "data_type": "month_year",
          "mandatory": "Y"
        },
        {
          "name": "Multiselect",
          "position": 14,
          "data_type": "multi_select_list",
          "mandatory": "Y",
          "data": [
            "ab",
            "abc",
            "abcd"
          ]
        },
        {
          "name": "Quantity",
          "position": 15,
          "data_type": "quantity",
          "mandatory": "Y"
        },
        {
          "name": "DateRange",
          "position": 16,
          "data_type": "date_range",
          "mandatory": "Y"
        },
        {
          "name": "YearRange",
          "position": 17,
          "data_type": "from_year_to_year",
          "mandatory": "Y"
        }
      ]
    },
    "logo_data": {
      "id": "c68cc4e7d54381cc46384f194c09ce2c.png",
      "storage": "cache",
      "metadata": {
        "filename": "favicon.png",
        "size": 62260,
        "mime_type": "image/png"
      }
    }
  }
};

fetch('https://<environmenturl>/api/transaction_categories/:id', { method: 'PUT', headers: { 'X-Api-Key': '<your secure token>', 'Content-Type': 'application/json' }, body: JSON.stringify(data) }) .then(response => response.json()) .then(data => console.log(data)) .catch(error => console.error(error));

The below example can be sent as a request to the API.

{
    "transaction_category": {
    "name": "Vendor",
    "description": "december month Subscription",
    "configuration": {
      "data": [
        {
          "name": "month",
          "position": 1,
          "data_type": "string",
          "mandatory": "Y"
        },
        {
          "name": "leaves",
          "position": 2,
          "data_type": "numeric",
          "mandatory": "N"
        },
        {
          "name": "PAN",
          "position": 3,
          "data_type": "string",
          "mandatory": "N"
        },
        {
          "name": "Accountants",
          "position": 4,
          "data_type": "list",
          "data": [
            "pradip",
            "deepak",
            "nikhil",
            "neha"
          ],
          "mandatory": "N"
        },
        {
          "name": "month 1",
          "position": 5,
          "data_type": "time",
          "mandatory": "Y"
        },
        {
          "name": "Day",
          "position": 6,
          "data_type": "day",
          "mandatory": "Y"
        },
        {
          "name": "Dummy",
          "position": 7,
          "data_type": "toggle",
          "mandatory": "Y",
          "description": "allow client to pay via NetBanking"
        },
        {
          "name": "Month",
          "position": 8,
          "data_type": "month",
          "mandatory": "Y"
        },
        {
          "name": "Hyperlink",
          "position": 9,
          "data_type": "hyperlink",
          "mandatory": "Y"
        },
        {
          "name": "File",
          "position": 10,
          "data_type": "upload",
          "mandatory": "Y"
        },
        {
          "name": "Date",
          "position": 11,
          "data_type": "date",
          "mandatory": "Y"
        },
        {
          "name": "Year",
          "position": 12,
          "data_type": "year",
          "mandatory": "Y"
        },
        {
          "name": "Month_Year",
          "position": 13,
          "data_type": "month_year",
          "mandatory": "Y"
        },
        {
          "name": "Multiselect",
          "position": 14,
          "data_type": "multi_select_list",
          "mandatory": "Y",
          "data": [
            "ab",
            "abc",
            "abcd"
          ]
        },
        {
          "name": "Quantity",
          "position": 15,
          "data_type": "quantity",
          "mandatory": "Y"
        },
        {
          "name": "DateRange",
          "position": 16,
          "data_type": "date_range",
          "mandatory": "Y"
        },
        {
          "name": "YearRange",
          "position": 17,
          "data_type": "from_year_to_year",
          "mandatory": "Y"
        }
      ]
    },
    "logo_data": {
      "id": "c68cc4e7d54381cc46384f194c09ce2c.png",
      "storage": "cache",
      "metadata": {
        "filename": "favicon.png",
        "size": 62260,
        "mime_type": "image/png"
      }
    }
  }
}

SUCCESS RESPONSE The request returns JSON structured like below on successful transactions categories update

{
  "status": true,
  "total_count": 1,
  "categories": [
    {
      "id": 1,
      "name": "Subscription",
      "description": "december month Subscription",
      "configuration": {
        "data": [
          {
            "name": "month",
            "position": 1,
            "data_type": "string",
            "mandatory": "Y"
          },
          {
            "name": "leaves",
            "position": 2,
            "data_type": "numeric",
            "mandatory": "N"
          },
          {
            "name": "PAN",
            "position": 3,
            "data_type": "string",
            "mandatory": "N"
          },
          {
            "name": "Accountants",
            "position": 4,
            "data_type": "list",
            "data": [
              "pradip",
              "deepak",
              "nikhil",
              "neha"
            ],
            "mandatory": "N"
          },
          {
            "name": "month 1",
            "position": 5,
            "data_type": "time",
            "mandatory": "Y"
          },
          {
            "name": "Day",
            "position": 6,
            "data_type": "day",
            "mandatory": "Y"
          },
          {
            "name": "Dummy",
            "position": 7,
            "data_type": "toggle",
            "mandatory": "Y",
            "description": "allow client to pay via NetBanking"
          },
          {
            "name": "Month",
            "position": 8,
            "data_type": "month",
            "mandatory": "Y"
          },
          {
            "name": "Hyperlink",
            "position": 9,
            "data_type": "hyperlink",
            "mandatory": "Y"
          },
          {
            "name": "File",
            "position": 10,
            "data_type": "upload",
            "mandatory": "Y"
          },
          {
            "name": "Date",
            "position": 11,
            "data_type": "date",
            "mandatory": "Y"
          },
          {
            "name": "Year",
            "position": 12,
            "data_type": "year",
            "mandatory": "Y"
          },
          {
            "name": "Month_Year",
            "position": 13,
            "data_type": "month_year",
            "mandatory": "Y"
          },
          {
            "name": "Multiselect",
            "position": 14,
            "data_type": "multi_select_list",
            "mandatory": "Y",
            "data": [
               "ab",
               "abc",
               "abcd"
             ],
          },
          {
            "name": "Quantity",
            "position": 15,
            "data_type": "quantity",
            "mandatory": "Y"
          },
          {
            "name": "DateRange",
            "position": 16,
            "data_type": "date_range",
            "mandatory": "Y"
          },
          {
            "name": "YearRange",
            "position": 17,
            "data_type": "from_year_to_year",
            "mandatory": "Y"
          }
        ]
      },
      "logo_url": "Xure=4cd6b713f37089cb0d754e38d20814",
      "active": "N",
      "deactivated_by_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
      "deactivated_at": "2024-04-15T12:42:24.596Z",
      "created_by_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
      "custom_category": "N",
      "created_at": "2023-11-30T11:34:18.081Z",
      "updated_at": "2023-11-30T11:34:30.429Z"
    }
  ]
}

ERROR RESPONSE The request returns JSON structured like below for errors related transaction categories

{
    "status":false, 
    "errors":{
        "name":[
            "Name can't be blank"
        ],
        "base":[
            "cannot be edited as it is active."
        ],
        "configuration": [
            "Configuration Only data settings are allowed",
            "Configuration 'data' is malformed",
            "Configuration 'data' : {\"name\"=>\"month\", \"position\"=>1, \"data_type\"=>\"integer\", \"mandatory\"=>\"Y\"} must have data_type as one of the following: string, numeric, list, date, year, month_year,time, day, toggle, month, hyperlink, upload, multi_select_list, quantity, date_range, from_year_to_year",
            "Configuration 'data' : {\"name\"=>\"month\", \"position\"=>\"1\", \"data_type\"=>\"string\", \"mandatory\"=>\"Y\"} must have position as an integer",
            "Configuration 'data' : {\"name\"=>\"month\", \"position\"=>1, \"data_type\"=>\"string\", \"mandatory\"=>\"Yes\"} must have mandatory as one of the following: Y, N",
            "Configuration 'data' : {\"name\"=>\"month\", \"position\"=>1, \"data_type\"=>\"list\", \"mandatory\"=>\"Y\"} must have data key in each hash",
            "Configuration 'data' : {\"name\"=>\"month\", \"position\"=>1, \"data_type\"=>\"list\", \"mandatory\"=>\"Y\"} must have data as an array of strings",
            "Configuration 'data' : {\"name\"=>\"month\", \"position\"=>1} must have name, data_type, mandatory and position keys in each hash",
            "Configuration 'data' must have unique value for each name field in array",
            "Configuration 'data' must have position as 1, 2, 3, 4, ...",
            "Configuration 'data' must have unique position in array",
            "Configuration 'data' : {\"name\"=>\"Dummy\", \"position\"=>1, \"data_type\"=>\"toggle\", \"mandatory\"=>\"Y\", \"description\"=>1} must have description as an string"
        ],
        "base":[
            "Transaction category not present"
        ],
        "base":[
            "Transaction Category cannot be updated."
        ],
        "base":[
            "You can either upload a logo or asset properties."
        ],
        "asset_properties":[
        "Asset properties missing key(s): colour",
        "Asset properties resource_name maximum 50 characters"
        ],
        "logo": [ "Logo File not found in storage" ]
}
}

This endpoint updates a Transaction Categories.

UAT HTTP Request

PUT https://nxt.api.q2pay.co.in/api/transaction_categories/:id

PRODUCTION HTTP Request

PUT https://nxt.api.q2pay.in/api/transaction_categories/:id

Query Parameters

Parameter Default Description Required Sample
name N.A. name for transaction categories optional Vendor
description N.A. description for transaction categories optional december month Subscription
configuration N.A. Configuration for transaction categories optional "data": [{"name": "month"}]
logo_data N.A. logo data for transaction categories optional { "id":"c68cc4e7d54381cc46384f194c09ce2c.png", "storage":"cache","metadata": {"filename":"favicon.png","size":62260,"mime_type":"image/png" }}
asset_properties N.A asset properties for transaction_categories optional { "resource_name": "favicon.png", "colour": "#FFFFFF" }

Service Details

Service ID Description
Admin Update Transaction Categories
CTransactionCategory Update Transaction categories

Enable Transaction Categories

curl -X PUT "https://<environmenturl>/api/transaction_categories/:id/enable"
  -H "X-Api-Key: <your secure token>"
  -H "Content-Type: application/json"

require 'net/http'
require 'uri'
require 'json'

uri = URI.parse("https://<environmenturl>/api/transaction_categories/:id/enable") header = {'X-Api-Key' => '<your secure token>', 'Content-Type' => 'application/json'}

http = Net::HTTP.new(uri.host, uri.port) http.use_ssl = true request = Net::HTTP::Put.new(uri.request_uri, header) request.body = body.to_json response = http.request(request)


fetch('https://<environmenturl>/api/transaction_categories/:id/enable', {
  method: 'PUT',
  headers: {
    'X-Api-Key': '<your secure token>',
    'Content-Type': 'application/json'
  },
  body: JSON.stringify(data)
})
  .then(response => response.json())
  .then(data => console.log(data))
  .catch(error => console.error(error));

SUCCESS RESPONSE The request returns JSON structured like below on successful transactions categories enable

{
  "status": true,
  "total_count": 1,
  "categories": [
    {
      "id": 1,
      "name": "Subscription",
      "description": "december month Subscription",
      "configuration": {
        "data": [
          {
            "name": "month",
            "position": 1,
            "data_type": "string",
            "mandatory": "Y"
          },
          {
            "name": "leaves",
            "position": 2,
            "data_type": "numeric",
            "mandatory": "N"
          },
          {
            "name": "PAN",
            "position": 3,
            "data_type": "string",
            "mandatory": "N"
          },
          {
            "name": "Accountants",
            "position": 4,
            "data_type": "list",
            "data": [
              "pradip",
              "deepak",
              "nikhil",
              "neha"
            ],
            "mandatory": "N"
          },
          {
            "name": "month 1",
            "position": 5,
            "data_type": "time",
            "mandatory": "Y"
          },
          {
            "name": "Day",
            "position": 6,
            "data_type": "day",
            "mandatory": "Y"
          },
          {
            "name": "Dummy",
            "position": 7,
            "data_type": "toggle",
            "mandatory": "Y",
            "description": "allow client to pay via NetBanking"
          },
          {
            "name": "Month",
            "position": 8,
            "data_type": "month",
            "mandatory": "Y"
          },
          {
            "name": "Hyperlink",
            "position": 9,
            "data_type": "hyperlink",
            "mandatory": "Y"
          },
          {
            "name": "File",
            "position": 10,
            "data_type": "upload",
            "mandatory": "Y"
          },
          {
            "name": "Date",
            "position": 11,
            "data_type": "date",
            "mandatory": "Y"
          },
          {
            "name": "Year",
            "position": 12,
            "data_type": "year",
            "mandatory": "Y"
          },
          {
            "name": "Month_Year",
            "position": 13,
            "data_type": "month_year",
            "mandatory": "Y"
          },
          {
            "name": "Multiselect",
            "position": 14,
            "data_type": "multi_select_list",
            "mandatory": "Y",
            "data": [
               "ab",
               "abc",
               "abcd"
             ],
          },
          {
            "name": "Quantity",
            "position": 15,
            "data_type": "quantity",
            "mandatory": "Y"
          },
          {
            "name": "DateRange",
            "position": 16,
            "data_type": "date_range",
            "mandatory": "Y"
          },
          {
            "name": "YearRange",
            "position": 17,
            "data_type": "from_year_to_year",
            "mandatory": "Y"
          }
] }, "logo_url": "Xure=4cd6b713f37089cb0d754e38d20814", "active": "Y", "activated_by_id":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx", "activated_at":"2023-12-01T05:22:15.914Z", "created_by_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx", "custom_category": "N", "created_at": "2023-11-30T11:34:18.081Z", "updated_at": "2023-11-30T11:34:30.429Z" } ] }

ERROR RESPONSE The request returns JSON structured like below for errors related transaction categories

{
    "status":false, 
    "errors":{
        "configuration":[
            "Configuration can't be blank"
        ], 
        "base":[
            "Transaction Category cannot be enabled as it is already active."
        ],
        "name": [
            "Name has already been taken"
        ],
        "base":[
            "Transaction category not present"
        ],
        "base":[
            "Transaction Category cannot be enabled."
        ] 
    }
}

This endpoint enable a Transaction Categories.

UAT HTTP Request

PUT https://nxt.api.q2pay.co.in/api/transaction_categories/:id/enable

PRODUCTION HTTP Request

PUT https://nxt.api.q2pay.in/api/transaction_categories/:id/enable

Service Details

Service ID Description
Admin Enable Transaction Categories
CTransactionCategory Enable Transaction categories

Disable Transaction Categories

curl -X PUT "https://<environmenturl>/api/transaction_categories/:id/disable"
  -H "X-Api-Key: <your secure token>"
  -H "Content-Type: application/json"

require 'net/http'
require 'uri'
require 'json'

uri = URI.parse("https://<environmenturl>/api/transaction_categories/:id/disable") header = {'X-Api-Key' => '<your secure token>', 'Content-Type' => 'application/json'}

http = Net::HTTP.new(uri.host, uri.port) http.use_ssl = true request = Net::HTTP::Put.new(uri.request_uri, header) request.body = body.to_json response = http.request(request)


fetch('https://<environmenturl>/api/transaction_categories/:id/disable', {
  method: 'PUT',
  headers: {
    'X-Api-Key': '<your secure token>',
    'Content-Type': 'application/json'
  },
  body: JSON.stringify(data)
})
  .then(response => response.json())
  .then(data => console.log(data))
  .catch(error => console.error(error));

SUCCESS RESPONSE The request returns JSON structured like below on successful transaction categories disable

{
  "status": true,
  "total_count": 1,
  "categories": [
    {
      "id": 4,
      "name": "Salary",
      "description": "employee salary month in description",
      "configuration": {
        "data": [
          {
            "name": "month",
            "position": 1,
            "data_type": "string",
            "mandatory": "Y"
          },
          {
            "name": "leaves",
            "position": 2,
            "data_type": "numeric",
            "mandatory": "N"
          },
          {
            "name": "PAN",
            "position": 3,
            "data_type": "string",
            "mandatory": "N"
          },
          {
            "name": "Accountants",
            "position": 4,
            "data_type": "list",
            "data": [
              "pradip",
              "deepak",
              "nikhil",
              "neha"
            ],
            "mandatory": "N"
          },
          {
            "name": "month 1",
            "position": 5,
            "data_type": "time",
            "mandatory": "Y"
          },
          {
            "name": "Day",
            "position": 6,
            "data_type": "day",
            "mandatory": "Y"
          },
          {
            "name": "Dummy",
            "position": 7,
            "data_type": "toggle",
            "mandatory": "Y",
            "description": "allow client to pay via NetBanking"
          },
          {
            "name": "Month",
            "position": 8,
            "data_type": "month",
            "mandatory": "Y"
          },
          {
            "name": "Hyperlink",
            "position": 9,
            "data_type": "hyperlink",
            "mandatory": "Y"
          },
          {
            "name": "File",
            "position": 10,
            "data_type": "upload",
            "mandatory": "Y"
          },
          {
            "name": "Date",
            "position": 11,
            "data_type": "date",
            "mandatory": "Y"
          },
          {
            "name": "Year",
            "position": 12,
            "data_type": "year",
            "mandatory": "Y"
          },
          {
            "name": "Month_Year",
            "position": 13,
            "data_type": "month_year",
            "mandatory": "Y"
          },
          {
            "name": "Multiselect",
            "position": 14,
            "data_type": "multi_select_list",
            "mandatory": "Y",
            "data": [
               "ab",
               "abc",
               "abcd"
             ],
          },
          {
            "name": "Quantity",
            "position": 15,
            "data_type": "quantity",
            "mandatory": "Y"
          },
          {
            "name": "DateRange",
            "position": 16,
            "data_type": "date_range",
            "mandatory": "Y"
          },
          {
            "name": "YearRange",
            "position": 17,
            "data_type": "from_year_to_year",
            "mandatory": "Y"
          }
] }, "logo_url": "Xure=4cd6b713f37089cb0d754e38d20814", "active": "N", "deactivated_by_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx", "deactivated_at": "2023-12-01T06:03:42.817Z", "created_by_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx", "custom_category": "N", "created_at": "2023-12-01T05:27:22.269Z", "updated_at": "2023-12-01T06:03:42.828Z" } ] }

ERROR RESPONSE The request returns JSON structured like below for errors related transaction categories

{
    "status":false, 
    "errors":{
        "base": [
            "Transaction Category cannot be disabled."
        ],
        "base":[
            "Transaction category not present"
        ],
        "base":[
            "Transaction Category cannot be disabled."
        ] 
    }
}

This endpoint disable a Transaction Categories.

UAT HTTP Request

PUT https://nxt.api.q2pay.co.in/api/transaction_categories/:id/disable

PRODUCTION HTTP Request

PUT https://nxt.api.q2pay.in/api/transaction_categories/:id/disable

Service Details

Service ID Description
Admin Disable Transaction Categories
CTransactionCategory Disable Transaction categories

Distribution Transactions

Distribution transactions helps you maintain & manage of transactions

Get All Distribution Transactions

curl "https://<environmenturl>/api/transactions/distribution"
  -H "X-Api-Key: <your secure token>"
  -H "Content-Type: application/json"

require 'net/http'
require 'uri'
require 'json'

uri = URI.parse("https://<environmenturl>/api/transactions/distribution") header = {'X-Api-Key' => '<your secure token>', 'Content-Type' => 'application/json'} body = {"page_size" => 2, "page_no" => 1} http = Net::HTTP.new(uri.host, uri.port) http.use_ssl = true request = Net::HTTP::Get.new(uri.request_uri, header) request.body = body.to_json response = http.request(request)

fetch('https://<environmenturl>/api/transactions/distribution', { method: 'GET', headers: { 'X-Api-Key': '<your secure token>', 'Content-Type': 'application/json' }, body: JSON.stringify(data) }) .then(response => response.json()) .then(data => console.log(data)) .catch(error => console.error(error));

SUCCESS RESPONSE The request returns JSON structured like below

{
  "status": true,
  "total_count": 2,
  "total_amount": "1847.0",
  "summary": {
    "created_transaction_count": 2,
    "awaiting_funds_transaction_count": 3,
    "rejected_transaction_count": 1
  },
  "transactions": [
    {
      "txn_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
      "entity_id": "ABC12",
      "identifier": "xxxxxxxxxxxxxxxxxxxxxxxx",
      "transaction_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
      "type_of_transaction": "BeneficiaryTransaction",
      "settlement_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
      "bank": "HDFC Bank",
      "bank_account_reference": "1",
      "amount": "312.0",
      "mode_of_payment": "NEFT",
      "lifecycle_status": "created",
      "additional_data": {
        "beneficiary_ifsc": "HDFC0002309",
        "beneficiary_name": "Q2PAY TECHNOLOGIES P",
        "transaction_type": "RGS",
        "beneficiary_account": "12378908",
        "distribution_remark": null
      },
      "approved": false,
      "approval_strategy": "system",
      "attempt_count": 0,
      "raw_data": [],
      "activity_log": {
        "logs": [
          {
            "action": "Created",
            "user_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
            "timestamp": "2024-01-10T07:04:00.359Z",
            "user_full_name": "Akshay Rangnekar"
          }
        ]
      }
    },
    {
      "txn_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
      "entity_id": "ABC12",
      "identifier": "xxxxxxxxxxxxxxxxxxxxxxxx",
      "transaction_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
      "type_of_transaction": "BeneficiaryTransaction",
      "settlement_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
      "bank": "HDFC Bank",
      "bank_account_reference": "1",
      "amount": "234.0",
      "mode_of_payment": "NEFT",
      "lifecycle_status": "awaiting_funds",
      "additional_data": {
        "beneficiary_ifsc": "HDFC0000567",
        "beneficiary_name": "Q2PAY TECHNOLOGIES P",
        "transaction_type": "RGS",
        "beneficiary_account": "4534567898",
        "distribution_remark": null
      },
      "approved": true,
      "approved_at": "2024-01-10T07:04:42.245Z",
      "approval_strategy": "user",
      "attempt_count": 0,
      "raw_data": [],
      "activity_log": {
        "logs": [
          {
            "action": "Created",
            "user_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
            "timestamp": "2024-01-10T05:17:36.377Z",
            "user_full_name": "Akshay Rangnekar"
          },
          {
            "brand": "Android",
            "model": "Android SDK built for x86",
            "action": "Approved",
            "user_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
            "platform": "android",
            "last_name": "Rangnekar",
            "last_used": "2024-01-10T07:04:42.170Z",
            "timestamp": "2024-01-10T07:04:42.257Z",
            "first_name": "Akshay",
            "ip_address": "127.0.0.1",
            "is_primary": false,
            "os_version": "6.0",
            "request_ip": "127.0.0.1",
            "is_verified": false,
            "sdk_version": "23",
            "manufacturer": "unknown",
            "serial_number": "EMULATOR32X1X14X0",
            "final_approval": true,
            "logged_in_flag": true,
            "logged_in_time": "2024-01-10T04:42:29.039Z",
            "user_full_name": "Akshay Rangnekar",
            "app_version_code": "54",
            "app_version_name": "1.43"
          }
        ]
      }
    }
  ],
  "title": {
    "records": 2,
    "current_page": 1,
    "total_pages": 1,
    "page_item_count": 50
  }
}

This endpoint retrieves all distribution transaction.

UAT HTTP Request

GET https://nxt.api.q2pay.co.in/api/transactions/distribution

PRODUCTION HTTP Request

GET https://nxt.api.q2pay.in/api/transactions/distribution

Query Parameters

Parameter Default Description Required Sample
amount N.A. amount for distribution transaction optional 67000.0
lifecycle_status N.A. lifecycle status for distribution transaction optional created
search_string N.A. search string is used to search distribution remark of distribution transaction optional xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxx
start_date,end_date N.A. start date and end date for distribution transaction optional xxxxxxxx,xxxxxxxx
txn_id N.A. txn id is used to search for transaction id of distribution transaction optional [xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxx , xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxx]
distribution_txn_id N.A. distribution txn id is used to search id of distribution transaction optional [xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxx , xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxx]
utr N.A. utr for distribution transaction optional xxxxxxxxxxxxxxxx
identifier N.A. identifier for distribution transaction optional [xxxxxxxxxxxxxxxxxxxxxxxx , xxxxxxxxxxxxxxxxxxxxxxxx]
entity_id N.A. entity id for distribution transaction optional ABC12

Service Details

Service ID Description
Admin Admin
MimicEntity View All entities
VDistributionTransaction View Distribution Transactions

Get Verification Pending Distribution Transactions

curl "https://<environmenturl>/api/transactions/distribution/verification_pending"
  -H "X-Api-Key: <your secure token>"
  -H "Content-Type: application/json"

require 'net/http'
require 'uri'
require 'json'

uri = URI.parse("https://<environmenturl>/api/transactions/distribution/verification_pending") header = {'X-Api-Key' => '<your secure token>', 'Content-Type' => 'application/json'} http = Net::HTTP.new(uri.host, uri.port) http.use_ssl = true request = Net::HTTP::Get.new(uri.request_uri, header) request.body = body.to_json response = http.request(request)

fetch('https://<environmenturl>/api/transactions/distribution/verification_pending', { method: 'GET', headers: { 'X-Api-Key': '<your secure token>', 'Content-Type': 'application/json' }, body: JSON.stringify(data) }) .then(response => response.json()) .then(data => console.log(data)) .catch(error => console.error(error));

SUCCESS RESPONSE The request returns JSON structured like below

{
  "status": true,
  "total_count": 2,
  "total_amount": "813.0",
  "summary": {
    "created_transaction_count": 2
  },
  "transactions": [
    {
      "txn_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxx",
      "entity_id": "ABC12",
      "identifier": "xxxxxxxxxxxxxxxxxxxxxxxx",
      "transaction_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxx",
      "type_of_transaction": "BeneficiaryTransaction",
      "settlement_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxx",
      "bank": "HDFC Bank",
      "bank_account_reference": "1",
      "amount": "312.0",
      "mode_of_payment": "NEFT",
      "lifecycle_status": "created",
      "additional_data": {
        "beneficiary_ifsc": "HDFC0000229",
        "beneficiary_name": "Q2PAY TECHNOLOGIES P",
        "transaction_type": "RGS",
        "beneficiary_account": "5267567896",
        "distribution_remark": null
      },
      "approved": false,
      "approval_strategy": "system",
      "attempt_count": 0,
      "raw_data": [],
      "activity_log": {
        "logs": [
          {
            "action": "Created",
            "user_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxx",
            "timestamp": "2024-01-10T07:04:00.359Z",
            "user_full_name": "Akshay Rangnekar"
          }
        ]
      }
    },
    {
      "txn_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxx",
      "entity_id": "ABC12",
      "identifier": "xxxxxxxxxxxxxxxxxxxxxxxx",
      "transaction_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxx",
      "type_of_transaction": "BeneficiaryTransaction",
      "settlement_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxx",
      "bank": "HDFC Bank",
      "bank_account_reference": "1",
      "amount": "501.0",
      "mode_of_payment": "NEFT",
      "lifecycle_status": "created",
      "additional_data": {
        "beneficiary_ifsc": "HDFC0000111",
        "beneficiary_name": "Q2PAY TECHNOLOGIES P",
        "transaction_type": "RGS",
        "beneficiary_account": "1234567895",
        "distribution_remark": null
      },
      "approved": false,
      "approval_strategy": "system",
      "attempt_count": 0,
      "raw_data": [],
      "activity_log": {
        "logs": [
          {
            "action": "Created",
            "user_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxx",
            "timestamp": "2024-01-10T07:19:03.064Z",
            "user_full_name": "Akshay Rangnekar"
          }
        ]
      }
    }
  ],
  "title": {
    "records": 2,
    "current_page": 1,
    "total_pages": 1,
    "page_item_count": 50
  }
}

This endpoint retrieves verification pending distribution transactions.

UAT HTTP Request

GET https://nxt.api.q2pay.co.in/api/transactions/distribution/verification_pending

PRODUCTION HTTP Request

GET https://nxt.api.q2pay.in/api/transactions/distribution/verification_pending

Query Parameters

Parameter Default Description Required Sample
amount N.A. amount for distribution transaction optional 67000.0
search_string N.A. search string is used to search distribution remark of distribution transaction optional xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxx
start_date,end_date N.A. start date and end date for distribution transaction optional xxxxxxxx,xxxxxxxx
txn_id N.A. txn id is used to search for transaction id of distribution transaction optional [xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxx , xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxx]
distribution_txn_id N.A. distribution txn id is used to search id of distribution transaction optional [xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxx , xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxx]
identifier N.A. identifier for distribution transaction optional [xxxxxxxxxxxxxxxxxxxxxxxx , xxxxxxxxxxxxxxxxxxxxxxxx]
entity_id N.A. entity id for distribution transaction optional ABC12

Service Details

Service ID Description
Admin Admin
MimicEntity View All entities
VPendingDistributionTransaction View Pending Distribution Transactions

Get Queued Distribution Transactions

curl "https://<environmenturl>/api/transactions/distribution/queued"
  -H "X-Api-Key: <your secure token>"
  -H "Content-Type: application/json"

require 'net/http'
require 'uri'
require 'json'

uri = URI.parse("https://<environmenturl>/api/transactions/distribution/queued") header = {'X-Api-Key' => '<your secure token>', 'Content-Type' => 'application/json'} http = Net::HTTP.new(uri.host, uri.port) http.use_ssl = true request = Net::HTTP::Get.new(uri.request_uri, header) request.body = body.to_json response = http.request(request)

fetch('https://<environmenturl>/api/transactions/distribution/queued', { method: 'GET', headers: { 'X-Api-Key': '<your secure token>', 'Content-Type': 'application/json' }, body: JSON.stringify(data) }) .then(response => response.json()) .then(data => console.log(data)) .catch(error => console.error(error));

SUCCESS RESPONSE The request returns JSON structured like below

{
  "status": true,
  "total_count": 1,
  "total_amount": "234.0",
  "summary": {
    "awaiting_funds_transaction_count": 1
  },
  "transactions": [
    {
      "txn_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxx",
      "entity_id": "ABC12",
      "identifier": "xxxxxxxxxxxxxxxxxxxxxxxx",
      "transaction_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxx",
      "type_of_transaction": "BeneficiaryTransaction",
      "settlement_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxx",
      "bank": "HDFC Bank",
      "bank_account_reference": "1",
      "amount": "234.0",
      "mode_of_payment": "NEFT",
      "lifecycle_status": "awaiting_funds",
      "additional_data": {
        "beneficiary_ifsc": "HDFC00002390",
        "beneficiary_name": "Q2PAY TECHNOLOGIES P",
        "transaction_type": "RGS",
        "beneficiary_account": "4512567899",
        "distribution_remark": null
      },
      "approved": true,
      "approved_at": "2024-01-10T07:04:42.245Z",
      "approval_strategy": "user",
      "attempt_count": 0,
      "raw_data": [],
      "activity_log": {
        "logs": [
          {
            "action": "Created",
            "user_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxx",
            "timestamp": "2024-01-10T05:17:36.377Z",
            "user_full_name": "Akshay Rangnekar"
          },
          {
            "brand": "Android",
            "model": "Android SDK built for x86",
            "action": "Approved",
            "user_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxx",
            "platform": "android",
            "last_name": "Rangnekar",
            "last_used": "2024-01-10T07:04:42.170Z",
            "timestamp": "2024-01-10T07:04:42.257Z",
            "first_name": "Akshay",
            "ip_address": "127.0.0.1",
            "is_primary": false,
            "os_version": "6.0",
            "request_ip": "127.0.0.1",
            "is_verified": false,
            "sdk_version": "23",
            "manufacturer": "unknown",
            "serial_number": "EMULATOR32X1X14X0",
            "final_approval": true,
            "logged_in_flag": true,
            "logged_in_time": "2024-01-10T04:42:29.039Z",
            "user_full_name": "Akshay Rangnekar",
            "app_version_code": "54",
            "app_version_name": "1.43"
          }
        ]
      }
    }
  ],
  "title": {
    "records": 1,
    "current_page": 1,
    "total_pages": 1,
    "page_item_count": 50
  }
}

This endpoint retrieves queued distribution transaction.

UAT HTTP Request

GET https://nxt.api.q2pay.co.in/api/transactions/distribution/queued

PRODUCTION HTTP Request

GET https://nxt.api.q2pay.in/api/transactions/distribution/queued

Query Parameters

Parameter Default Description Required Sample
amount N.A. amount for distribution transaction optional 67000.0
search_string N.A. search string is used to search distribution remark of distribution transaction optional xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxx
start_date,end_date N.A. start date and end date for distribution transaction optional xxxxxxxx,xxxxxxxx
txn_id N.A. txn id is used to search for transaction id of distribution transaction optional [xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxx , xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxx]
distribution_txn_id N.A. distribution txn id is used to search id of distribution transaction optional [xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxx , xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxx]
identifier N.A. identifier for distribution transaction optional [xxxxxxxxxxxxxxxxxxxxxxxx , xxxxxxxxxxxxxxxxxxxxxxxx]
entity_id N.A. entity id for distribution transaction optional ABC12

Service Details

Service ID Description
Admin Admin
MimicEntity View All entities
VQueuedDistributionTransaction View Queued Distribution Transactions

Approve Distribution Transactions

curl -X PUT "https://<environmenturl>/api/transactions/distribution/approve"
  -H "X-Api-Key: <your secure token>"
  -H "Content-Type: application/json"
  -d "{ 
     "txn_id":  ["xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx"]
      }"
require 'net/http'
require 'uri'
require 'json'

uri = URI.parse("https://<environmenturl>/api/transactions/distribution/approve") header = {'X-Api-Key' => '<your secure token>', 'Content-Type' => 'application/json'} body = { "txn_id": ["xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx"] } http = Net::HTTP.new(uri.host, uri.port) http.use_ssl = true request = Net::HTTP::Put.new(uri.request_uri, header) request.body = body.to_json response = http.request(request)

const data = {
   "txn_id":  ["xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx"] 
};

fetch('https://<environmenturl>/api/transactions/distribution/approve', { method: 'PUT', headers: { 'X-Api-Key': '<your secure token>', 'Content-Type': 'application/json' }, body: JSON.stringify(data) }) .then(response => response.json()) .then(data => console.log(data)) .catch(error => console.error(error));

The below example can be sent as a request to the API.

{
   "txn_id":  ["xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx"]
}

The below example can be sent as a request to the API for multiple distribution transaction id.

{
   "txn_id":  ["xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx","xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx"]
}

SUCCESS RESPONSE The request returns JSON structured like below

{
  "status": true,
  "total_count": 1,
  "total_amount": "234.0",
  "transactions": [
    {
      "txn_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
      "entity_id": "ABC12",
      "identifier": "xxxxxxxxxxxxxxxxxxxxxxxx",
      "transaction_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
      "type_of_transaction": "BeneficiaryTransaction",
      "settlement_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
      "bank": "HDFC Bank",
      "bank_account_reference": "1",
      "amount": "234.0",
      "mode_of_payment": "NEFT",
      "lifecycle_status": "awaiting_funds",
      "additional_data": {
        "beneficiary_ifsc": "HDFC0000200",
        "beneficiary_name": "Q2PAY TECHNOLOGIES P",
        "transaction_type": "RGS",
        "beneficiary_account": "1234567899",
        "distribution_remark": null
      },
      "approved": true,
      "approved_at": "2024-01-10T07:04:42.245Z",
      "approval_strategy": "user",
      "attempt_count": 0,
      "raw_data": [],
      "activity_log": {
        "logs": [
          {
            "action": "Created",
            "user_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
            "timestamp": "2024-01-10T05:17:36.377Z",
            "user_full_name": "Akshay Rangnekar"
          },
          {
            "brand": "Android",
            "model": "Android SDK built for x86",
            "action": "Approved",
            "user_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
            "platform": "android",
            "last_name": "Rangnekar",
            "last_used": "2024-01-10T07:04:42.170Z",
            "timestamp": "2024-01-10T07:04:42.257Z",
            "first_name": "Akshay",
            "ip_address": "127.0.0.1",
            "is_primary": false,
            "os_version": "6.0",
            "request_ip": "127.0.0.1",
            "is_verified": false,
            "sdk_version": "23",
            "manufacturer": "unknown",
            "serial_number": "EMULATOR32X1X14X0",
            "final_approval": true,
            "logged_in_flag": true,
            "logged_in_time": "2024-01-10T04:42:29.039Z",
            "user_full_name": "Akshay Rangnekar",
            "app_version_code": "54",
            "app_version_name": "1.43"
          }
        ]
      }
    }
  ],
  "title": {
    "records": 1,
    "current_page": 1,
    "total_pages": 1,
    "page_item_count": 50
  }
}

ERROR RESPONSE The request returns JSON structured like below

{
  "status":false,
  "action":"Not performed",
  "errors":{
    "base":[
            "Invalid / Insufficient parameters"
           ],
    "base":[
            "No transactions found for transaction ids: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx"
           ],
    "base":[
            "Few transactions are already approved or are abandoned/cancelled/rejected"
           ]
  }
}

This endpoint updates approve distribution transactions.

UAT HTTP Request

PUT https://nxt.api.q2pay.co.in/api/transactions/distribution/approve

PRODUCTION HTTP Request

PUT https://nxt.api.q2pay.in/api/transactions/distribution/approve

Query Parameters

Parameter Default Description Required Sample
txn_id N.A. txn id for distribution transaction Yes [xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx , xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx]

Service Details

Service ID Description
Admin Admin distribution transaction

Reject Distribution Transactions

curl -X PUT "https://<environmenturl>/api/transactions/distribution/reject"
  -H "X-Api-Key: <your secure token>"
  -H "Content-Type: application/json"
  -d "{ 
     "txn_id":  ["xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx"],
     "reason": "Denied distribution transaction"
      }"
require 'net/http'
require 'uri'
require 'json'

uri = URI.parse("https://<environmenturl>/api/transactions/distribution/reject") header = {'X-Api-Key' => '<your secure token>', 'Content-Type' => 'application/json'} body = { "txn_id": ["xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx"], "reason": "Denied distribution transaction" } http = Net::HTTP.new(uri.host, uri.port) http.use_ssl = true request = Net::HTTP::Put.new(uri.request_uri, header) request.body = body.to_json response = http.request(request)

const data = {
   "txn_id":  ["xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx"],
   "reason": "Denied distribution transaction" 
};

fetch('https://<environmenturl>/api/transactions/distribution/reject', { method: 'PUT', headers: { 'X-Api-Key': '<your secure token>', 'Content-Type': 'application/json' }, body: JSON.stringify(data) }) .then(response => response.json()) .then(data => console.log(data)) .catch(error => console.error(error));

The below example can be sent as a request to the API.

{
   "txn_id":  ["xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx"],
   "reason": "Denied distribution transaction"
}

The below example can be sent as a request to the API for multiple distribution transaction id.

{
   "txn_id":  ["xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx","xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx"],
   "reason": "Denied distribution transaction"
}

SUCCESS RESPONSE The request returns JSON structured like below

{
  "status": true,
  "total_count": 1,
  "total_amount": "1000.0",
  "transactions": [
    {
      "txn_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
      "entity_id": "ABC12",
      "identifier": "xxxxxxxxxxxxxxxxxxxxxxxx",
      "transaction_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
      "type_of_transaction": "BeneficiaryTransaction",
      "settlement_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
      "bank": "HDFC Bank",
      "bank_account_reference": "1",
      "amount": "1000.0",
      "mode_of_payment": "NEFT",
      "lifecycle_status": "rejected",
      "additional_data": {
        "beneficiary_ifsc": "HDFC0000268",
        "beneficiary_name": "Q2PAY TECHNOLOGIES P",
        "transaction_type": "RGS",
        "beneficiary_account": "1234567",
        "distribution_remark": null
      },
      "approved": false,
      "rejection_reason": "Denied distribution transaction",
      "approval_strategy": "user",
      "attempt_count": 0,
      "raw_data": [],
      "activity_logs": [
        {
          "action": "Created",
          "user_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
          "timestamp": "2024-01-16T04:41:17.946Z",
          "user_full_name": "Akshay Rangnekar"
        },
        {
          "brand": "Android",
          "model": "Android SDK built for x86",
          "action": "Rejected",
          "user_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
          "platform": "android",
          "last_name": "Rangnekar",
          "last_used": "2024-02-13T04:12:59.154Z",
          "timestamp": "2024-02-13T04:12:59.313Z",
          "first_name": "Akshay",
          "ip_address": "127.0.0.1",
          "is_primary": false,
          "os_version": "6.0",
          "request_ip": "127.0.0.1",
          "user_grade": "Director",
          "is_verified": false,
          "sdk_version": "23",
          "manufacturer": "unknown",
          "serial_number": "EMULATOR32X1X14X0",
          "logged_in_flag": true,
          "logged_in_time": "2024-02-12T09:10:29.771Z",
          "user_full_name": "Akshay Rangnekar",
          "app_version_code": "54",
          "app_version_name": "1.43",
          "rejection_reason": "Denied distribution transaction"
        }
      ]
    }
  ],
  "title": {
    "records": 1,
    "current_page": 1,
    "total_pages": 1,
    "page_item_count": 50
  }
}

ERROR RESPONSE The request returns JSON structured like below

{
    "status":false,
    "action":"Not performed",
    "errors":{
        "base":[
            "Invalid / Insufficient parameters"
        ],
        "base":[
            "No transactions found for transaction ids: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx"
        ],
        "base":[
            "Few transactions are already approved or are abandoned/cancelled/rejected"
        ],
        "base":[
            {
                "id":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx", 
                "reason":[
                    "Reason must be at least 10 characters"
                ]
            }
        ]
} }

This endpoint for reject distribution transactions.

UAT HTTP Request

PUT https://nxt.api.q2pay.co.in/api/transactions/distribution/reject

PRODUCTION HTTP Request

PUT https://nxt.api.q2pay.in/api/transactions/distribution/reject

Query Parameters

Parameter Default Description Required Sample
txn_id N.A. txn id for distribution transaction Yes [xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx , xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx]
reason N.A. reason for distribution transaction Yes denied distribution transaction

Service Details

Service ID Description
Admin Admin distribution transaction

Add Status Distribution Transactions

curl -X PUT "https://<environmenturl>/api/transactions/distribution/add_status"
  -H "X-Api-Key: <your secure token>"
  -H "Content-Type: application/json"
  -d "{ 
     "txn_id":  ["xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx"],
     "status": "abandoned", 
     "reason": "Another transaction is already in progress" 
      }"
require 'net/http'
require 'uri'
require 'json'

uri = URI.parse("https://<environmenturl>/api/transactions/distribution/add_status") header = {'X-Api-Key' => '<your secure token>', 'Content-Type' => 'application/json'} body = { "txn_id": ["xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx"], "status": "abandoned", "reason": "Another transaction is already in progress" } http = Net::HTTP.new(uri.host, uri.port) http.use_ssl = true request = Net::HTTP::Put.new(uri.request_uri, header) request.body = body.to_json response = http.request(request)

const data = {
   "txn_id":  ["xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx"],
   "status": "abandoned", 
   "reason": "Another transaction is already in progress" 
};

fetch('https://<environmenturl>/api/transactions/distribution/add_status', { method: 'PUT', headers: { 'X-Api-Key': '<your secure token>', 'Content-Type': 'application/json' }, body: JSON.stringify(data) }) .then(response => response.json()) .then(data => console.log(data)) .catch(error => console.error(error));

The below example can be sent as a request to the API.

{
   "txn_id":  ["xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx"],
   "status": "abandoned", 
   "reason": "Another transaction is already in progress" 
}

The below example can be sent as a request to the API for multiple distribution transaction id.

{
   "txn_id":  ["xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx","xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx"],
   "status": "abandoned", 
   "reason": "Another transaction is already in progress" 
}

SUCCESS RESPONSE The request returns JSON structured like below

{
    "status":true, 
    "lifecycle_status":"abandoned",
    "reason":"Another transaction is already in progress", 
    "txn_id":[
        "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx"
    ]
}

ERROR RESPONSE The request returns JSON structured like below

{
    "status":false,
    "action":"Not performed", 
    "errors":{
        "base":[
            "Invalid / Insufficient parameters"
        ],
        "base":[
            "Unqualified status: pending"
        ],
        "base":[
            {
                "id":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx", 
                "reason":[
                    "Reason must be at least 10 characters"
                ]
            }
        ],
        "base":[
            {
                "id":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx", 
                "reason":[
                    "Transaction cannot be updated as it is already having status : abandoned"
                ]
            }
        ],
        "base":[
            "No transactions found for transaction ids: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx"
        ]
} }

This endpoint add status a distribution transactions.

UAT HTTP Request

PUT https://nxt.api.q2pay.co.in/api/transactions/distribution/add_status

PRODUCTION HTTP Request

PUT https://nxt.api.q2pay.in/api/transactions/distribution/add_status

Query Parameters

Parameter Default Description Required Sample
txn_id N.A. txn id for distribution transaction Yes [xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx , xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx]
status N.A. status for distribution transaction Yes "abandoned"
reason N.A. reason for distribution transaction Yes "Another transaction is already in progress"

Service Details

Service ID Description
Admin Admin

Bharat Bill Payment System

The BBPS offers integrated and interoperable bill payment service with security, certainty and reliability of transactions.

Get Operator Categories

curl "https://<environmenturl>/api/bbps_billers/biller_categories"
  -H "X-Api-Key: <your secure token>"
  -H "Content-Type: application/json"
  -d { 
        "page_size": 1,
        "page_no": 1
     }
require 'net/http'
require 'uri'
require 'json'

uri = URI.parse("https://<environmenturl>/api/bbps_billers/biller_categories") header = {'X-Api-Key' => '<your secure token>', 'Content-Type' => 'application/json'} body = {"page_size" => 1, "page_no" => 1} http = Net::HTTP.new(uri.host, uri.port) http.use_ssl = true request = Net::HTTP::Get.new(uri.request_uri, header) request.body = body.to_json response = http.request(request)

const data = {
  page_size: 1,
  page_no: 1
};
fetch('https://<environmenturl>/api/bbps_billers/biller_categories', {
  method: 'GET',
  headers: {
    'X-Api-Key': '<your secure token>',
    'Content-Type': 'application/json'
  },
   body: JSON.stringify(data)
})
  .then(response => response.json())
  .then(data => console.log(data))
  .catch(error => console.error(error));

The below example can be sent as a request to the API.

{
  "page_size": 1,
  "page_no": 1
}

SUCCESS RESPONSE The request returns JSON structured like below

{
  "status": true,
  "total_count": 4,
  "categories": [
    {
      "operator_category_name": "Inanceop",
      "operator_category_id": 2990,
      "operator_category_group": "009",
      "status": "19"
      "logo_url": "Xure=4cd6b713f37089cb0d754e38d20814"
    },
    {
      "operator_category_name": "Goan",
      "operator_category_id": 210,
      "operator_category_group": "007",
      "status": "61"
      "logo_url": "Xure=4cd6b713f37089cb950d754e38814"
    },
    {
      "operator_category_name": "HHFG",
      "operator_category_id": 202,
      "operator_category_group": "80",
      "status": "18"
      "logo_url": "Xur6b713f37089cb950d754e38d20814"
    },
    {
      "operator_category_name": "Oicipa ",
      "operator_category_id": 239,
      "operator_category_group": "770",
      "status": "198"
      "logo_url": "Xure=4cd6b713f37089cb950d754e38d20"
    }
  ],
  "title": {
    "records": 4,
    "current_page": 1,
    "total_pages": 1,
    "page_item_count": 50,
  }
}

This endpoint will show all categories for BBPS biller.

UAT HTTP Request

GET https://nxt.api.q2pay.co.in/api/bbps_billers/biller_categories

PRODUCTION HTTP Request

GET https://nxt.api.q2pay.in/api/bbps_billers/biller_categories

Query Parameters

Parameter Default Description Required Sample
page_size 50 If set to specific number, the result will include that number of operator categories. No 10
page_no 1 If set to specific number, the result will include that page of operator category. No 2

Service Details

Service ID Description
ViewBiller View Operator Categories

Get Biller locations

curl "https://<environmenturl>/api/bbps_billers/biller_locations"
  -H "X-Api-Key: <your secure token>"
  -H "Content-Type: application/json"
  -d { 
        "page_size": 1,
        "page_no": 1
     }
require 'net/http'
require 'uri'
require 'json'
VCIN
uri = URI.parse("https://<environmenturl>/api/bbps_billers/biller_locations")
header = {'X-Api-Key' => '<your secure token>', 'Content-Type' => 'application/json'}
body = {"page_size" => 1, "page_no" => 1}
http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = true
request = Net::HTTP::Get.new(uri.request_uri, header)
request.body = body.to_json
response = http.request(request)
const data = {
  page_size: 1,
  page_no: 1
};
fetch('https://<environmenturl>/api/bbps_billers/biller_locations', {
  method: 'GET',
  headers: {
    'X-Api-Key': '<your secure token>',
    'Content-Type': 'application/json'
  },
   body: JSON.stringify(data)
})
  .then(response => response.json())
  .then(data => console.log(data))
  .catch(error => console.error(error));

The below example can be sent as a request to the API.

{
  "page_size": 1,
  "page_no": 1
}

SUCCESS RESPONSE The request returns JSON structured like below

{
  "status": true,
  "total_count": 4,
  "data": [
    {
      "operator_location_name": "XXX",
      "operator_location_id": "060",
      "abbreviation": "HPC"
    },
    {
      "operator_location_name": "PPRR",
      "operator_location_id": "310",
      "abbreviation": "KLD"
    },
    {
      "operator_location_name": " PADX",
      "operator_location_id": "230",
      "abbreviation": "MOPP"
    },
    {
      "operator_location_name": "OPP",
      "operator_location_id": "127",
      "abbreviation": "MJH"
    }
  ],
  "title": {
    "records": 4,
    "current_page": 1,
    "total_pages": 1,
    "page_item_count": 50
  }
}

This endpoint will show all locations for BBPS biller.

UAT HTTP Request

GET https://nxt.api.q2pay.co.in/api/bbps_billers/biller_locations

PRODUCTION HTTP Request

GET https://nxt.api.q2pay.in/api/bbps_billers/biller_locations

Query Parameters

Parameter Default Description Required Sample
page_size 50 If set to specific number, the result will include that number of biller locations. No 10
page_no 1 If set to specific number, the result will include that page of biller location. No 2

Service Details

Service ID Description
ViewBiller View Bill List

Get Operator lists

curl "https://<environmenturl>/api/bbps_billers/operator_list"
  -H "X-Api-Key: <your secure token>"
  -H "Content-Type: application/json"
  -d "{
  "location_id":1,
  "operator_category":1
}"
require 'net/http'
require 'uri'
require 'json'

uri = URI.parse("https://<environmenturl>/api/bbps_billers/operator_list") header = {'X-Api-Key' => '<your secure token>', 'Content-Type' => 'application/json'} body = { "location_id" => 1, "operator_category" => 1} http = Net::HTTP.new(uri.host, uri.port) http.use_ssl = true request = Net::HTTP::Get.new(uri.request_uri, header) request.body = body.to_json response = http.request(request)

const data = {
  "location_id": 1,
  "operator_category": 1
};

fetch('https://<environmenturl>/api/bbps_billers/operator_list', { method: 'GET', headers: { 'X-Api-Key': '<your secure token>', 'Content-Type': 'application/json' }, body: JSON.stringify(data) }) .then(response => response.json()) .then(data => console.log(data)) .catch(error => console.error(error));

The below example can be sent as a request to the API.

{
  "location_id": 1,
  "operator_category": 1
}

SUCCESS RESPONSE The request returns JSON structured like below

{
  "status": true,
  "total_count": 2,
  "billers": [
    {
      "operator_id": 001,
      "name": "WW2",
      "bill_fetch_response": 0,
      "high_commission_channel": 0,
      "kyc_required": 1,
      "operator_category": 1,
      "location_id": 1
    },
    {
      "operator_id": 002,
      "name": "KK Digital",
      "bill_fetch_response": 0,
      "high_commission_channel": 0,
      "kyc_required": 1,
      "operator_category": 1,
      "location_id": 1
    }
  ]
}

ERROR RESPONSE The request returns JSON structured like below for errors related to BBPS biller operator list

{
  "status": false,
  "errors": {
    "base": [
      "Invalid Biller Location / Category / combination"
    ]
  }
}

This endpoint will show registered operators.

UAT HTTP Request

GET https://nxt.api.q2pay.co.in/api/bbps_billers/operator_list

PRODUCTION HTTP Request

GET https://nxt.api.q2pay.in/api/bbps_billers/operator_list

Query Parameters

Parameter Default Description Required Sample
location_id N.A. biller require their location id for view operator list Yes 001
operator_category N.A. biller require their operator category for view operator list Yes 001

Service Details

Service ID Description
ViewBiller View bbps biller

Get Bill Customer Parameters

curl "https://<environmenturl>/api/bbps_billers/biller_bill_parameters"
  -H "X-Api-Key: <your secure token>"
  -H "Content-Type: application/json"
  -d "{
  "operator_id": 176
}"
require 'net/http'
require 'uri'
require 'json'

uri = URI.parse("https://<environmenturl>/api/bbps_billers/biller_bill_parameters") header = {'X-Api-Key' => '<your secure token>', 'Content-Type' => 'application/json'} body = { "operator_id" => 176} http = Net::HTTP.new(uri.host, uri.port) http.use_ssl = true request = Net::HTTP::Get.new(uri.request_uri, header) request.body = body.to_json response = http.request(request)

const data = {
  "operator_id": 176
};

fetch('https://<environmenturl>/api/bbps_billers/biller_bill_parameters', { method: 'GET', headers: { 'X-Api-Key': '<your secure token>', 'Content-Type': 'application/json' }, body: JSON.stringify(data) }) .then(response => response.json()) .then(data => console.log(data)) .catch(error => console.error(error));

The below example can be sent as a request to the API.

{
  "operator_id": 176
}

SUCCESS RESPONSE The request returns JSON structured like below

{
  "status": true,
  "data": {
    "operator_id": 176,
    "operator_name": "XXX XXXXX XXXXX",
    "params": [
      {
        "name": "utility_acc_no",
        "datatype": "XXXXX",
        "label": "BG No",
        "validation_regex": "^[0-45]{7,10}$",
        "validation_message": "XXXXXXXXXXX"
      },
      {
        "name": "cycle_number",
        "datatype": "XXXXX",
        "label": "B No",
        "validation_regex": "^[0-5]{7,0}$",
        "validation_message": "XXXXXXXXXXX"
      }
    ]
  }
}

ERROR RESPONSE The request returns JSON structured like below for errors related to operator id

{
  "status": false,
  "errors": {
    "base": [
      "Biller ID Cannot Be Blank",
      "Biller ID should be only integer",
      "Please try again some time"
    ]
  }
}

This endpoint will retrieve customer information parameters for the billers.

UAT HTTP Request

GET https://nxt.api.q2pay.co.in/api/bbps_billers/biller_bill_parameters

PRODUCTION HTTP Request

GET https://nxt.api.q2pay.in/api/bbps_billers/biller_bill_parameters

Query Parameters

Parameter Default Description Required Sample
operator_id N.A. biller require their operator id for view bill parameter Yes 176

Service Details

Service ID Description
ViewBiller View Biller Bill Parameter

Get All BBPS Billers

curl "https://<environmenturl>/api/bbps_billers"
  -H "X-Api-Key: <your secure token>"
  -H "Content-Type: application/json"
  -d { 
        "category_name": "Telecom Prepaid",
        "operator_name": "MSEDCL-Maharashtra State Electricity Distribution Co Limited",
        "due_date": "Closest due date",
        "search_string": "utility_acc_no",
        "page_size": 1,
        "page_no": 1
     }
require 'net/http'
require 'uri'
require 'json'
VCIN
uri = URI.parse("https://<environmenturl>/api/bbps_billers")
header = {'X-Api-Key' => '<your secure token>', 'Content-Type' => 'application/json'}
body = {
        "category_name": "Telecom Prepaid",
        "operator_name": "MSEDCL-Maharashtra State Electricity Distribution Co Limited",
        "due_date": "Closest due date",
        "search_string": "utility_acc_no",
        "page_size": 1,
        "page_no": 1
        }
http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = true
request = Net::HTTP::Get.new(uri.request_uri, header)
request.body = body.to_json
response = http.request(request)
const data = {
        "category_name": "Telecom Prepaid",
        "operator_name": "MSEDCL-Maharashtra State Electricity Distribution Co Limited",
        "due_date": "Closest due date",
        "search_string": "utility_acc_no",
        "page_size": 1,
        "page_no": 1
};
fetch('https://<environmenturl>/api/bbps_billers', {
  method: 'GET',
  headers: {
    'X-Api-Key': '<your secure token>',
    'Content-Type': 'application/json'
  },
   body: JSON.stringify(data)
})
  .then(response => response.json())
  .then(data => console.log(data))
  .catch(error => console.error(error));

The below example can be sent as a request to the API.

{
  "category_name": "Telecom Prepaid",
  "operator_name": "MSEDCL-Maharashtra State Electricity Distribution Co Limited",
  "due_date": "Closest due date",
  "search_string": "utility_acc_no",
  "page_size": 1,
  "page_no": 1
}

SUCCESS RESPONSE The request returns JSON structured like below

{
  "status": true,
  "total_count": 2,
  "summary": [
    {
      "category": "XXXX",
      "category_logo_url": "52bfe867285801b38953a2",
      "count": 08
    },
    {
      "category": "XXX Prepaid",
      "category_logo_url": "cdd111ecc1e9be65da5d7f2b62",
      "count": 011
    },
    {
      "category": "XXX",
      "category_logo_url": "6b11112a01f33054522712aae37d5a143",
      "count": 01
    }
  ],
  "billers": [
    {
      "id": 1,
      "entity_id": "XXXXX",
      "label": "XXXXXX",
      "user_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
      "operator": 18,
      "operator_name": "XXXXX-XXXXXXX",
      "category": 8,
      "category_name": "XXXXXX XXXX",
      "category_logo_url": "cdd111ecc1e9be65da5d7f2b62",
      "parameters": [
        {
          "name": "utility_acc_no",
          "label": "Consumer No",
          "value": "000083873830"
        },
        {
          "name": "cycle_number",
          "label": "BU",
          "value": "4600"
        }
      ],
      "created_by_name": "XXX XXX",
      "created_on": 1690559131,
      "bills": [
        {
          "amount": "1940.0",
          "due_date": 1691971200,
          "customer_name": "XXX XXX"
        },
        {
          "amount": "930.0",
          "due_date": 1691971200,
          "customer_name": "XXX XX"
        }
      ]
    },
    {
      "id": 2,
      "entity_id": "XXXXX",
      "label": "XXXX XXXXXX",
      "user_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
      "operator": 18,
      "operator_name": "XXXXX-XXXXXXX",
      "category": 8,
      "category_name": "XXXXXXX",
      "category_logo_url": "cdd111ecc1e9be65da5d7f2b62",
      "parameters": [
        {
          "name": "utility_acc_no",
          "label": "Consumer No",
          "value": "111118873265"
        },
        {
          "name": "cycle_number",
          "label": "BU",
          "value": "9999"
        }
      ],
      "created_by_name": "XXX XXX",
      "created_on": 1690733000,
      "bills": [
        {
          "amount": "1560.0",
          "due_date": 1695168000,
          "customer_name": "XXX XXX"
        },
        {
          "amount": "870.0",
          "due_date": 1689120000,
          "customer_name": "XXXXX XXXX XXXX"
        }
      ]
    },
    {
      "id": 3,
      "entity_id": "XXXXX",
      "label": "XXXX",
      "user_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
      "operator": 1,
      "operator_name": "XXXX XXXXX",
      "category": 01,
      "category_name": "XXXXX",
      "category_logo_url": "cdd111ecc1e9be65da5d7f2b62",
      "parameters": [
        {
          "name": "utility_acc_no",
          "label": "Mobile Number",
          "value": "1234567045"
        }
      ],
      "created_by_name": "XXXX XXXXX",
      "created_on": 2371266921,
      "bills": []
    },
    {
      "id": 4,
      "entity_id": "XXXXX",
      "label": "XXXX",
      "user_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
      "operator": 1,
      "operator_name": "XXXX XXXXX",
      "category": 89,
      "category_name": "XXXX XXXX",
      "category_logo_url": "cdd111ecc1e9be65da5d7f2b62",
      "parameters": [
        {
          "name": "utility_acc_no",
          "label": "Mobile Number",
          "value": "9087768786"
        }
      ],
      "created_by_name": "XXXX XXX",
      "created_on": 1712712989,
      "bills": []
    }
  ],
  "title": {
    "records": 2,
    "current_page": 1,
    "total_pages": 1,
    "page_item_count": 50
  }
}

This endpoint will show all registered billers from your entity.

UAT HTTP Request

GET https://nxt.api.q2pay.co.in/api/bbps_billers

PRODUCTION HTTP Request

GET https://nxt.api.q2pay.in/api/bbps_billers

Query Parameters

Parameter Default Description Required Sample
category_name N.A Category name is used to filter bbps billers optional Telecom Prepaid
operator_name N.A Operator name is used to filter bbps billers optional MSEDCL-Maharashtra State Electricity Distribution Co Limited
due_date N.A Due date is used to filter the value of bbps bills ascending or descending optional Closest due date
search_string N.A Search string is used to filter bbps billers based on the parameters optional Consumer No
page_size 50 If set to specific number, the result will include that number of bbps billers. No 10
page_no 1 If set to specific number, the result will include that page of bbps biller. No 2

Service Details

Service ID Description
ViewBiller View all bbps biller

Get specific BBPS Biller

curl "https://<environmenturl>/api/bbps_billers/:biller_id"
  -H "X-Api-Key: <your secure token>"
  -H "Content-Type: application/json"
require 'net/http'
require 'uri'
require 'json'
VCIN
uri = URI.parse("https://<environmenturl>/api/bbps_billers/:biller_id")
header = {'X-Api-Key' => '<your secure token>', 'Content-Type' => 'application/json'}
http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = true
request = Net::HTTP::Get.new(uri.request_uri, header)
response = http.request(request)
fetch('https://<environmenturl>/api/bbps_billers/:biller_id', {
  method: 'GET',
  headers: {
    'X-Api-Key': '<your secure token>',
    'Content-Type': 'application/json'
  }
})
  .then(response => response.json())
  .then(data => console.log(data))
  .catch(error => console.error(error));

SUCCESS RESPONSE The request returns JSON structured like below

{
  "status": true,
  "billers": [
    {
      "id": 005,
      "entity_id": "XXXX",
      "label": "XXXX",
      "user_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
      "operator": 1,
      "operator_name": "XXXX-XXXXX",
      "category": 89,
      "category_name": "XXXXX",
      "parameters": [
        {
          "name": "utility_acc_no",
          "label": "xxx xxx",
          "value": "1234567899"
        }
      ],
      "created_by_name": "xxx xxx",
      "created_on": 1690798558,
      "bills": [
        {
          "amount": "xxxx",
          "due_date": "xxxxxx",
          "customer_name": "xxxxxx"
        }
      ]
    }
  ]
}

This endpoint will show specific registered biller from your entity.

UAT HTTP Request

GET https://nxt.api.q2pay.co.in/api/bbps_billers/:biller_id

PRODUCTION HTTP Request

GET https://nxt.api.q2pay.in/api/bbps_billers/:biller_id

Service Details

Service ID Description
ViewBiller View bbps biller

Register Biller

curl -X POST "https://<environmenturl>/api/bbps_billers"
  -H "X-Api-Key: <your secure token>"
  -H "Content-Type: application/json"
  -d "{
      "label": "first",
      "operator": 1,
      "category": 78,
      "category_name": "XXXX XXXX",
      "parameters": [
    {
      "name": "utility_acc_no",
      "label": "Mobile Number",
      "value": "8567233446"
    }
    {
        "name": "cycle_number",
        "label": "BU",
        "value": "4599"
    }
  ]
}"
require 'net/http'
require 'uri'
require 'json'

uri = URI.parse("https://<environmenturl>/api/bbps_billers") header = {'X-Api-Key' => '<your secure token>', 'Content-Type' => 'application/json'} body = { "label": "first", "operator": 1, "category": 78, "category_name": "XXXX XXXX", "parameters": [ { "name": "utility_acc_no", "label": "Mobile Number", "value": "8567233446" } { "name": "cycle_number", "label": "BU", "value": "4599" } ] } http = Net::HTTP.new(uri.host, uri.port) http.use_ssl = true request = Net::HTTP::Post.new(uri.request_uri, header) request.body = body.to_json response = http.request(request)

const data = {
      "label": "first",
      "operator": 1,
      "category": 78,
      "category_name": "XXXX XXXX",
      "parameters": [
    {
      "name": "utility_acc_no",
      "label": "Mobile Number",
      "value": "8567233446"
    }
    {
      "name": "cycle_number",
      "label": "BU",
      "value": "4599"
    }
  ]
};

fetch('https://<environmenturl>/api/bbps_billers', { method: 'POST', headers: { 'X-Api-Key': '<your secure token>', 'Content-Type': 'application/json' }, body: JSON.stringify(data) }) .then(response => response.json()) .then(data => console.log(data)) .catch(error => console.error(error));

The below example can be sent as a request to the API.

{
  "label": "first",
  "operator": 1,
  "category": 14,
  "category_name": "XXXX XXXX",
  "parameters": [
    {
      "name": "utility_acc_no",
      "label": "Mobile Number",
      "value": "8567233446"
    },
    {
      "name": "cycle_number",
      "label": "BU",
      "value": "4599"
    }
  ]
}

SUCCESS RESPONSE The request returns JSON structured like below on bbps biller creation

{
  "status": true,
  "billers": [
    {
      "id": 1,
      "entity_id": "XXXER",
      "label": "first",
      "user_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
      "operator": 1,
      "operator_name": "XXXXX XXXXX",
      "category": 14,
      "category_name": "XXXX XXXX",
      "category_logo_url": "ddads-doop-ader-dad4a",
      "parameters": [
        {
          "name": "utility_acc_no",
          "label": "Mobile Number",
          "value": "8567233446"
        },
        {
          "name": "cycle_number",
          "label": "BU",
          "value": "4599"
        }
      ],
      "created_by_name": "XXXX XXXX",
      "created_on": 0987896797
    }
  ]
}

ERROR RESPONSE The request returns JSON structured like below for errors related to BBPS biller posting

{
  "status": false,
  "errors": {
    "label": [
      "Label can't be blank"
    ],
    "operator": [
      "Operator can't be blank",
      "Operator is not a number"
    ],
    "category": [
      "Category can't be blank"
    ],
    "base": [
      "Biller customer information is missing/incorrect"
    ]
  }
}

ERROR RESPONSE The request returns JSON structured like below for errors related to BBPS biller posting

{
  "status": false,
  "errors": {
    "parameters": [
      "Parameters [\"name\", \"label\"] is/are missing",
      "Parameters (name)  is incorrect, Kindly change it to utility_acc_no",
      "Parameters (label)  is incorrect, Kindly change it to Consumer No"
    ]
  }
}

ERROR RESPONSE The request returns JSON structured like below for errors related to BBPS biller posting

{
  "status": false,
  "errors": {
    "parameters": [
      "Parameters Biller details is already registered"
    ]
  }
}

This endpoint will register a biller via BBPS.

UAT HTTP Request

POST https://nxt.api.q2pay.co.in/api/bbps_billers

PRODUCTION HTTP Request

POST https://nxt.api.q2pay.in/api/bbps_billers

Query Parameters

Parameter Default Description Required Sample
label N.A. label for bbps biller Yes Anything
operator N.A. operator for bbps biller Yes 62
category N.A. category of operator Yes 2
category_name N.A. category_name of operator Yes Gas
parameters Yes parameter for bbps biller Yes [{ "name": "utility_acc_no","label": "Consumer No","value": "123456789012"}]

Service Details

Service ID Description
AddBiller Create bbps biller

Fetch Bill

curl "https://<environmenturl>/api/bbps_billers/:biller_id/fetch_bill"
  -H "X-Api-Key: <your secure token>"
  -H "Content-Type: application/json"
require 'net/http'
require 'uri'
require 'json'
VCIN
uri = URI.parse("https://<environmenturl>/api/bbps_billers/:biller_id/fetch_bill")
header = {'X-Api-Key' => '<your secure token>', 'Content-Type' => 'application/json'}
http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = true
request = Net::HTTP::Get.new(uri.request_uri, header)
response = http.request(request)
fetch('https://<environmenturl>/api/bbps_billers/:biller_id/fetch_bill', {
  method: 'GET',
  headers: {
    'X-Api-Key': '<your secure token>',
    'Content-Type': 'application/json'
  }
})
  .then(response => response.json())
  .then(data => console.log(data))
  .catch(error => console.error(error));

SUCCESS RESPONSE The request returns JSON structured like below

{
  "status": true,
  "data": {
    "bill_amount": "870.0",
    "customer_name": "ABCD GFRGF GHHJK",
    "due_date": 0987896797
    "bill_data": {
      "amount": "870.0",
      "billerstatus": "XX",
      "bbpstrxnrefid": "XX",
      "ifsc_status": 1,
      "utilitycustomername": "ABCD GFRGF GHHJK",
      "postalcode": "XXXXX",
      "billfetchresponse": "XXXXX",
      "geocode": "XXXXX",
      "billdate": "XXXXX",
      "customer_id": "XXXXXXXXXXXX",
      "billDueDate": "20230808",
      "billername": "ABSVV GSGFF"
    },
    "bill_message": "Due Bill Amount For utility"
  }
}

ERROR RESPONSE The request returns JSON structured like below for errors related to fetch bill

{
  "status": false,
  "error_code": "001",
  "errors_status": -1,
  "errors": {
    "base": [
      "Unable to fetch bill",
      "Operator Service is down,please wait."
    ]
  }
}

This endpoint will fetch the bill for the registered biller.

UAT HTTP Request

GET https://nxt.api.q2pay.co.in/api/bbps_billers/:biller_id/fetch_bill

PRODUCTION HTTP Request

GET https://nxt.api.q2pay.in/api/bbps_billers/:biller_id/fetch_bill

Service Details

Service ID Description
FetchBill Fetch Bill

Remove BBPS Biller

curl -X DELETE "https://<environmenturl>/api/bbps_billers/:biller_id"
  -H "X-Api-Key: <your secure token>"
  -H "Content-Type: application/json"
require 'net/http'
require 'uri'
require 'json'

uri = URI.parse("https://<environmenturl>/api/bbps_billers/:biller_id") header = {'X-Api-Key' => '<your secure token>', 'Content-Type' => 'application/json'} http = Net::HTTP.new(uri.host, uri.port) http.use_ssl = true request = Net::HTTP::delete.new(uri.request_uri, header) response = http.request(request)

fetch('https://<environmenturl>/api/bbps_billers/:biller_id', {
  method: 'DELETE',
  headers: {
    'X-Api-Key': '<your secure token>',
    'Content-Type': 'application/json'
  }
})
  .then(response => response.json())
  .then(data => console.log(data))
  .catch(error => console.error(error));

SUCCESS RESPONSE The request returns JSON structured like below

{
  "status": "true"
}

This endpoint will delete the registered BBPS biller.

UAT HTTP Request

DELETE https://nxt.api.q2pay.co.in/api/bbps_billers/:biller_id

PRODUCTION HTTP Request

DELETE https://nxt.api.q2pay.in/api/bbps_billers/:biller_id

Service Details

Service ID Description
RemoveBiller Delete bbps feature

Get Live Search Operator List

curl -X GET "https://<environmenturl>/api/bbps_billers/live_search_operator_list"
  -H "X-Api-Key: <your secure token>"
  -H "Content-Type: application/json"
  -d "{
     "operator_category": 5,
     "search_string": "airtel prepaid"
}"
require 'net/http'
require 'uri'
require 'json'

uri = URI.parse("https://<environmenturl>/api/bbps_billers/live_search_operator_list") header = {'X-Api-Key' => '<your secure token>', 'Content-Type' => 'application/json'} body = { "operator_category": 5, "search_string": "airtel prepaid" } http = Net::HTTP.new(uri.host, uri.port) http.use_ssl = true request = Net::HTTP::GET.new(uri.request_uri, header) request.body = body.to_json response = http.request(request)

const data = {
     "operator_category": 5,
     "search_string": "airtel prepaid"
};

fetch('https://<environmenturl>/api/bbps_billers/live_search_operator_list', { method: 'GET', headers: { 'X-Api-Key': '<your secure token>', 'Content-Type': 'application/json' }, body: JSON.stringify(data) }) .then(response => response.json()) .then(data => console.log(data)) .catch(error => console.error(error));

The below example can be sent as a request to the API.

{
  "operator_category": 5,
  "search_string": "airtel prepaid"
}

SUCCESS RESPONSE The request returns JSON structured like below on bbps biller

{
    "status":true,
    "live_operator_lists":[
        {
            "operator_id":3, 
            "name":"airtel prepaid", 
            "operator_category":5, 
            "location_id":0
        }
    ]
}

ERROR RESPONSE The request returns JSON structured like below for errors related to BBPS biller

{
  "status":false,
  "errors":{
  "base":[
      "Invalid Biller Operator Name / Category / combination",
      "Missing required parameters: Operator Name and/or Category."
    ]
  }
}

This endpoint will get live search operator list BBPS.

UAT HTTP Request

GET https://nxt.api.q2pay.co.in/api/bbps_billers/live_search_operator_list

PRODUCTION HTTP Request

GET https://nxt.api.q2pay.in/api/bbps_billers/live_search_operator_list

Query Parameters

Parameter Default Description Required Sample
operator_category N.A. operator category for bbps biller Yes 5
search_string N.A. search string is used to search a name of bbps biller Yes airtel prepaid

Service Details

Service ID Description
ViewBiller View bbps biller

MIS Report

Generate MIS Report

curl -X POST "https://<environmenturl>/api/mis_report"
  -H "X-Api-Key: <your secure token>"
  -H "Content-Type: application/json"
  -d "{
    "report_details": {
        "report_type": "beneficiary_transaction",
        "selected_columns": ["entity_id", "amount", "payment_method", "lifecycle_status", "txn_initiator", "beneficiary_account_approval_status"],
        "date_from": "07/10/2019",
        "date_to": "07/02/2025"
    },
    "filters": [
        {
            "field": "payment_method",
            "include_value": "NEFT"
        }
    ],
    "sort_by": [
        {
            "field": "amount",
            "order": "desc"
        }
    ]
}"
require 'net/http'
require 'uri'
require 'json'

uri = URI.parse("https://<environmenturl>/api/mis_report") header = {'X-Api-Key' => '<your secure token>', 'Content-Type' => 'application/json'} body = { "report_details": { "report_type": "beneficiary_transaction", "selected_columns": ["entity_id", "amount", "payment_method", "lifecycle_status", "txn_initiator", "beneficiary_account_approval_status"], "date_from": "07/10/2019", "date_to": "07/02/2025" }, "filters": [ { "field": "payment_method", "include_value": "NEFT" } ], "sort_by": [ { "field": "amount", "order": "desc" } ] } http = Net::HTTP.new(uri.host, uri.port) http.use_ssl = true request = Net::HTTP::Post.new(uri.request_uri, header) request.body = body.to_json response = http.request(request)

const data = {
    "report_details": {
        "report_type": "beneficiary_transaction",
        "selected_columns": ["entity_id", "amount", "payment_method", "lifecycle_status", "txn_initiator", "beneficiary_account_approval_status"],
        "date_from": "07/10/2019",
        "date_to": "07/02/2025"
    },
    "filters": [
        {
            "field": "payment_method",
            "include_value": "NEFT"
        }
    ],
    "sort_by": [
        {
            "field": "amount",
            "order": "desc"
        }
    ]
};
fetch('https://<environmenturl>/api/mis_report', {
  method: 'POST',
  headers: {
    'X-Api-Key': '<your secure token>',
    'Content-Type': 'application/json'
  },
  body: JSON.stringify(data)
})
  .then(response => response.json())
  .then(data => console.log(data))
  .catch(error => console.error(error));

The below example can be sent as a request to the API where sending single filter.

{
    "report_details": {
        "report_type": "beneficiary_transaction",
        "selected_columns": ["entity_id", "amount", "payment_method", "lifecycle_status", "txn_initiator", "beneficiary_account_approval_status"],
        "date_from": "07/10/2019",
        "date_to": "07/02/2025"
    },
    "filters": [
        {
            "field": "payment_method",
            "include_value": "NEFT"
        }
    ],
    "sort_by": [
        {
            "field": "amount",
            "order": "desc"
        }
    ]
}

The below example can be sent as a request to the API where sending multiple filter.

{
    "report_details": {
        "report_type": "beneficiary_transaction",
        "selected_columns": ["entity_id", "amount", "payment_method", "lifecycle_status", "txn_initiator", "beneficiary_account_approval_status"],
        "date_from": "07/10/2019",
        "date_to": "07/02/2025"
    },
    "filters": [
        {
            "field": "payment_method",
            "include_value": "NEFT"
        },
        {
            "field": "amount",
            "max_value": "500",
            "min_value": "200"
        }
    ],
    "sort_by": [
        {
            "field": "amount",
            "order": "desc"
        }
    ]
}

SUCCESS RESPONSE The request returns JSON structured like below on successful MIS Report generation where sending single filter

{
    "status": true,
    "total_count": 2,
    "result": [
        {
            "entity_id": "xxxxxxxx",
            "amount": "288.0",
            "payment_method": "NEFT",
            "lifecycle_status": "rejected",
            "txn_initiator": "internal Txnnn",
            "distribution_lifecycle_status": null,
            "beneficiary_account_name": "Tannyyyyyyy Pendhariiiiiiiiiiiiiiiiiiiiiiiiii",
            "beneficiary_account_approval_status": "approved",
            "beneficiary_account_bank_name": "Union Bank of India"
        },
        {
            "entity_id": "xxxxxxxx",
            "amount": "280.0",
            "payment_method": "NEFT",
            "lifecycle_status": "approved",
            "txn_initiator": "Internal Test User",
            "distribution_lifecycle_status": "created",
            "beneficiary_account_name": "TRACK COMPONENTS LIMITEDrtrtrtvwqeq wqewqe wewqewtttttttttttttttttytyt",
            "beneficiary_account_approval_status": "approved",
            "beneficiary_account_bank_name": "Bank of India"
        }
      ]
}

SUCCESS RESPONSE The request returns JSON structured like below on successful MIS Report generation where sending multiple filter

{
    "status": true,
    "total_count": 3,
    "result": [
              {
            "entity_id": "xxxxxxxx",
            "amount": "1.0",
            "payment_method": "NEFT",
            "lifecycle_status": "rejected",
            "txn_initiator": "Harshalii Ghodee",
            "distribution_lifecycle_status": null,
            "beneficiary_account_name": "Harshali for testing purpose",
            "beneficiary_account_approval_status": "approved",
            "beneficiary_account_bank_name": "Canara Bank"
        },
        {
            "entity_id": "xxxxxxxx",
            "amount": "1.0",
            "payment_method": "NEFT",
            "lifecycle_status": "pending",
            "txn_initiator": "Harshalii Ghodee",
            "distribution_lifecycle_status": null,
            "beneficiary_account_name": "MAHINDRA AND MAHINDRA LTD",
            "beneficiary_account_approval_status": "approved",
            "beneficiary_account_bank_name": "State Bank of India"
        },
        {
            "entity_id": "xxxxxxxx",
            "amount": "1.0",
            "payment_method": "NEFT",
            "lifecycle_status": "approved",
            "txn_initiator": "Harshalii Ghodee",
            "distribution_lifecycle_status": "created",
            "beneficiary_account_name": "RELIANCE INDUSTRIES LIMITED",
            "beneficiary_account_approval_status": "approved",
            "beneficiary_account_bank_name": "Ujjivan Small Finance Bank"
        }
      ]
}

ERROR RESPONSE The request returns JSON structured like below for errors related to MIS Report

{
  "status": false,
  "errors": [
    {
      "base": 
      [
        "service: invalid report_type. Allowed: beneficiary_transaction internal_transaction"
      ],
      [
        "selected_columns: Invalid columns: mamount",
        "filters: Fields used in filters/sorting must be present in 'selected_columns': amount"
      ],
      [
        "date_from: is required."
      ],
      [
        "date_to: is required."
      ],
      [
        "date_from: must be a valid date (DD/MM/YYYY)."
      ],
      [
        "date_to: must be a valid date (DD/MM/YYYY)."
      ],
      [
        "selected_columns: 'selected_columns' is required."
      ],
      [
        "sort_by: #1: 'order' must be 'asc' or 'desc'."
      ],
      [
        "filters: #1: Min/Max not allowed for 'payment_method' of type 'string'."
      ],
      [
        "filters: #1: 'field' is required."
      ],
      [
        "filters: #2: 'min_value' must be numeric."
      ],
      [
        "filters: #2: 'similar_value' only allowed on string fields."
      ],
      [
        "Invalid date range"
      ],
      [
        "selected_column: column user_full_name should be present in selected_columns for user report_type"
      ],
      [
        "selected_column: column account_id should be present in selected_columns for statement report_type"
      ],
      [
        "filters: #1: Invalid numeric value 'NEFT' for 'opening_balance'."
      ],
      [
        "filters: #1: Invalid numeric value 'NEFT' for 'closing_balance'."
      ],
      [
        "filters: #1: 'similar_value' only allowed on string fields."
      ],
      [
        "selected_column: Invalid columns: bank", "allowed_columns:  account_id, account_statement_entry_date, opening_balance, closing_balance"
      ]
    } 
  ]
}

This endpoint will generate a MIS Report.

UAT HTTP Request

POST https://nxt.api.q2pay.co.in/api/mis_report.:format

PRODUCTION HTTP Request

POST https://nxt.api.q2pay.in/api/mis_report.:format

Query Parameters

Parameter Default Description Required Sample
report_type N.A Which type of report is generated Yes beneficiary_transaction,internal_transaction, user, statement
selected_columns N.A. Column shown in mis report Yes [entity_id, total_amount, txn_id, amount, category, lifecycle_status, payment_method, distribution_remark, txn_initiator, approved, confidential_transaction, approved_at, payment_charge, tax_amount, rejected, rejected_by, rejected_at, beneficiary_account_id, created_on, distribution_lifecycle_status, beneficiary_account_name, beneficiary_account_bank_acc_no, beneficiary_account_ifsc_code, beneficiary_account_bank_name, owner_account_id, owner_account_bank_acc_no, owner_account_ifsc_code, owner_account_bank_name, owner_account_type, owner_account_balance, owner_account_balance_last_fetched_at, user_full_name, total_beneficiary_account_created_count, total_beneficiary_transaction_created_count, total_beneficiary_transaction_approved_count, total_internal_transaction_created_count, internal_transaction_approved_count, opening_balance, closing_balance, account_statement_entry_date, account_id]
date_from N.A Start Date Yes 07/10/2019
date_to N.A End Date Yes 07/02/2025
filters
field N.A. Column from selected columns No XYZ
include_value N.A. Value should present in column No XYZ
OR
exclude_value N.A. Value should absent in column No XYZ
max_value N.A. Value should less than max value in column No XYZ
min_value N.A. Value should more then min value in column No XYZ
similar_value N.A. Value should be a similar match in column No XYZ
sort_by
field N.A. Column from selected columns No XYZ
order N.A. Order by ascending or descending No asc,desc

File Format

Format Default Description Required Sample URL
json N.A. To generate mis report in json format No https://<environmenturl>/api/mis_report.json
csv N.A. To generate mis report in csv format No https://<environmenturl>/api/mis_report.csv

Service Details

Service ID Description
SMisUser Generate MIS Report

Utilities

Utilities helps you to get the list of various details related to identifiers like PAN, GSTIN etc.

View GSTIN Details

curl "https://<environmenturl>/api/utilities/view_gstin_details"
  -H "X-Api-Key: <your secure token>"
  -H "Content-Type: application/json"
  -d "{
        "pan": "AABCA1234A"
      }"
require 'net/http'
require 'uri'
require 'json'

uri = URI.parse("https://<environmenturl>/api/utilities/view_gstin_details") header = {'X-Api-Key' => '<your secure token>', 'Content-Type' => 'application/json'} body = { "pan": "AABCA1234A" } http = Net::HTTP.new(uri.host, uri.port) http.use_ssl = true request = Net::HTTP::Get.new(uri.request_uri, header) request.body = body.to_json response = http.request(request)

const data = {
         'pan': 'AABCA1234A'
      };

fetch('https://<environmenturl>/api/utilities/view_gstin_details', { method: 'GET', headers: { 'X-Api-Key': '<your secure token>', 'Content-Type': 'application/json' }, body: JSON.stringify(data) }) .then(response => response.json()) .then(data => console.log(data)) .catch(error => console.error(error));

The below example can be sent as a request to the API.

{
   "pan": "AABCA1234A"
}

The below example can be sent as an alternative request to the API.

{
   "entity_id": "xxxxxx"
}

The below example can be sent as an alternative request to the API.

{
   "gstin": "xxxxxxxxxxxx"
}

SUCCESS RESPONSE The request returns JSON structured like below on successful fetching of GSTIN details related to PAN

{
  "status": true,
  "gst_details": [
    {
      "pan_no": "AAACQ0519P",
      "gstin_no": "27AAACQ0519P1Z7",
      "business_name": "QUEST 2 TRAVEL.COM INDIA PVT LTD",
      "address": "A - Wing, 6th, MET Educational Complex, Gen . A. K . Vaidya Marg, Bandra West, Mumbai Suburban, Maharashtra, 400050",
      "date_of_registration": "2017-07-01",
      "state": "Maharashtra",
      "state_code": "27",
      "state_jurisdiction": "SHIVAJI_PARK_701",
      "status": "Active",
      "field_visit_conducted": "No",
      "constitution_of_business": "Private Limited Company",
      "taxpayer_type": "Regular"
    },
    {
      "pan_no": "AAACQ0519P",
      "gstin_no": "38AAACQ0519P1CF",
      "business_name": "QUEST 2 TRAVEL.COM INDIA PRIVATE LIMITED",
      "address": "A WING, 6TH FLOOR, MET EDUCATIONAL COMPLEX, GEN. A. K. VAIDYA MARG, BANDRA RECLAMATION BANDRA WEST, Ladakh, 400050",
      "date_of_registration": "2021-12-07",
      "state": "Ladakh",
      "state_code": "38",
      "state_jurisdiction": "Kargil",
      "status": "Active",
      "field_visit_conducted": "No",
      "constitution_of_business": "Private Limited Company",
      "taxpayer_type": "Tax Collector (Electronic Commerce Operator)"
    }
  ],
  "title": {
    "records": 39,
    "current_page": 1,
    "total_pages": 1,
    "page_item_count": 50
  }
}

ERROR RESPONSE The request returns JSON structured like below when PAN is not found in system

{
  "status": false,
  "errors": "GSTIN details not found for PAN.",
            "GSTIN details not found."
}

This endpoint fetches the GSTIN details related to the PAN number provided or PAN associated with the entity ID provided or Fetches the GSTIN details with GSTIN number.

UAT HTTP Request

GET https://nxt.api.q2pay.co.in/api/utilities/view_gstin_details

PRODUCTION HTTP Request

GET https://nxt.api.q2pay.in/api/utilities/view_gstin_details

Query Parameters

Parameter Default Description Required Sample
pan or entity_id N.A. PAN,Entity ID or GSTIN for fetching GSTIN details Yes "AABCA1234A" or "Q1234" or "24AAACQ8319P1PO"
page_size 50 If set to specific number, the result will include that number of GSTIN details. No
page_no 1 If set to specific number, the result will include that page of GSTIN details. No

Service Details

Service ID Description
VGSTIN View GSTIN Details

Collect GSTIN Details

curl -X POST "https://<environmenturl>/api/utilities/collect_gstin_details"
  -H "X-Api-Key: <your secure token>"
  -H "Content-Type: application/json"
  -d "{
        "pan": "AABCA1234A"
      }"
require 'net/http'
require 'uri'
require 'json'

uri = URI.parse("https://<environmenturl>/api/utilities/collect_gstin_details") header = {'X-Api-Key' => '<your secure token>', 'Content-Type' => 'application/json'} body = { "pan": "AABCA1234A" } http = Net::HTTP.new(uri.host, uri.port) http.use_ssl = true request = Net::HTTP::Post.new(uri.request_uri, header) request.body = body.to_json response = http.request(request)

const data = {
        'pan': 'AABCA1234A'
      };

fetch('https://<environmenturl>/api/utilities/collect_gstin_details', { method: 'POST', headers: { 'X-Api-Key': '<your secure token>', 'Content-Type': 'application/json' }, body: JSON.stringify(data) }) .then(response => response.json()) .then(data => console.log(data)) .catch(error => console.error(error));

The below example can be sent as a request to the API.

{
  "pan": "AABCA1234A"
}

SUCCESS RESPONSE The request returns JSON structured like below if PAN is already present.

{
  "status": true
}

SUCCESS RESPONSE The request returns JSON structured like below if request for fetching GSTIN detail is enqueued

{
  "status": true,
  "message": "GSTIN details will be fetched in 24 hours."
}

ERROR RESPONSE The request returns JSON structured like below for errors related to PAN data

{
  "status": false,
  "error": [
    "PAN should be in the format AAAAA9999A",
    "User can't be blank",
    "Request submitted by id can't be blank"
  ]
}

This endpoint performs collection of GSTIN details for a PAN number.

UAT HTTP Request

POST https://nxt.api.q2pay.co.in/api/utilities/collect_gstin_details

PRODUCTION HTTP Request

POST https://nxt.api.q2pay.in/api/utilities/collect_gstin_details

Query Parameters

Parameter Default Description Required Sample
pan N.A. PAN for fetching GSTIN details Yes "AABCA1234A"

Service Details

Service ID Description
VPAN View PAN details

Force Collect GSTIN Details

curl -X POST "https://<environmenturl>/api/utilities/force_collect_gstin_details"
  -H "X-Api-Key: <your secure token>"
  -H "Content-Type: application/json"
  -d "{
        "pan": "AABCA1234A"
      }"
require 'net/http'
require 'uri'
require 'json'

uri = URI.parse("https://<environmenturl>/api/utilities/force_collect_gstin_details") header = {'X-Api-Key' => '<your secure token>', 'Content-Type' => 'application/json'} body = { "pan": "AABCA1234A" } http = Net::HTTP.new(uri.host, uri.port) http.use_ssl = true request = Net::HTTP::Post.new(uri.request_uri, header) request.body = body.to_json response = http.request(request)

const data = {
        'pan': 'AABCA1234A'
      };

fetch('https://<environmenturl>/api/utilities/force_collect_gstin_details', { method: 'POST', headers: { 'X-Api-Key': '<your secure token>', 'Content-Type': 'application/json' }, body: JSON.stringify(data) }) .then(response => response.json()) .then(data => console.log(data)) .catch(error => console.error(error));

The below example can be sent as a request to the API.

{
  "pan": "AABCA1234A"
}

SUCCESS RESPONSE The request returns JSON structured like below if request is successfully accepted.

{
  "status": true
}

ERROR RESPONSE The request returns JSON structured like below for errors related to PAN data

{
  "status": false,
  "errors": "Permanent Account Number not found. Issue normal request."
}

This endpoint refreshes collection of GSTIN details for a PAN number which are present in the system. It will update existing & add new GSTIN details for the PAN number.

UAT HTTP Request

POST https://nxt.api.q2pay.co.in/api/utilities/force_collect_gstin_details

PRODUCTION HTTP Request

POST https://nxt.api.q2pay.in/api/utilities/force_collect_gstin_details

Query Parameters

Parameter Default Description Required Sample
pan N.A. PAN for fetching GSTIN details Yes "AABCA1234A"

Service Details

Service ID Description
Admin Admin

What is my IP

curl "https://<environmenturl>/api/utilities/whatismyip"
  -H "Content-Type: application/json"

require 'net/http'
require 'uri'
require 'json'

uri = URI.parse("https://<environmenturl>/api/utilities/whatismyip") header = {'Content-Type' => 'application/json'} http = Net::HTTP.new(uri.host, uri.port) http.use_ssl = true request = Net::HTTP::Get.new(uri.request_uri, header) request.body = body.to_json response = http.request(request)


fetch('https://<environmenturl>/api/utilities/whatismyip', {
  method: 'GET',
  headers: {
    'Content-Type': 'application/json'
  },
  body: JSON.stringify(data)
})
  .then(response => response.json())
  .then(data => console.log(data))
  .catch(error => console.error(error));

SUCCESS RESPONSE The request returns JSON structured like below on successful

{
   "ip": "127.0.0.1"
}

This endpoint retrieve what is my ip

UAT HTTP Request

GET https://nxt.api.q2pay.co.in/api/utilities/whatismyip

PRODUCTION HTTP Request

GET https://nxt.api.q2pay.in/api/utilities/whatismyip

Transaction Upload

Transaction Upload

curl -X POST "https://<environmenturl>/api/transactions/upload"
  -H "X-Api-Key: <your secure token>"
  -H "Content-Type: application/json"
  -d "{ 
    "category":"Vendor",
    "uploaded_file_data": {
        "id": "0a205eb07c7f497bf62d60807bfcaa47.xlsx",
        "storage": "cache",
        "metadata": {
            "filename": "Dev_bulk_transaction.xlsx",
            "size": 7715,
            "mime_type": "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"
        }
    }
  }"
require 'net/http'
require 'uri'
require 'json'

uri = URI.parse("https://<environmenturl>/api/transactions/upload") header = {'X-Api-Key' => '<your secure token>', 'Content-Type' => 'application/json'} body = { "category":"Vendor", "uploaded_file_data": { "id": "0a205eb07c7f497bf62d60807bfcaa47.xlsx", "storage": "cache", "metadata": { "filename": "Dev_bulk_transaction.xlsx", "size": 7715, "mime_type": "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet" } } } http = Net::HTTP.new(uri.host, uri.port) http.use_ssl = true request = Net::HTTP::Post.new(uri.request_uri, header) request.body = body.to_json response = http.request(request)

const data = {
    "category":"Vendor",
    "uploaded_file_data": {
        "id": "0a205eb07c7f497bf62d60807bfcaa47.xlsx",
        "storage": "cache",
        "metadata": {
            "filename": "Dev_bulk_transaction.xlsx",
            "size": 7715,
            "mime_type": "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"
        }
    }
};

fetch('https://<environmenturl>/api/transactions/upload', { method: 'POST', headers: { 'X-Api-Key': '<your secure token>', 'Content-Type': 'application/json' }, body: JSON.stringify(data) }) .then(response => response.json()) .then(data => console.log(data)) .catch(error => console.error(error));

The below example can be sent as a request to the API.

{
   "category":"Vendor",
    "uploaded_file_data": {
        "id": "0a205eb07c7f497bf62d60807bfcaa47.xlsx",
        "storage": "cache",
        "metadata": {
            "filename": "Dev_bulk_transaction.xlsx",
            "size": 7715,
            "mime_type": "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"
        }
    }
}

SUCCESS RESPONSE The request returns JSON structured like below on successful bulk upload

{
    "status": true,
    "message": "Transaction uploaded successfully"
}

ERROR RESPONSE The request returns JSON structured like below for errors related bulk upload

{ 
  "status": false,
  "errors": {
    "base": [
      "Uploaded file data cannot be blank"
    ],
    "base": [
      "Invalid file format. Only CSV, XLSX files are allowed."
    ],
     "base": [
      "Operation failed: Insufficient privileges. Appropriate services are required to create Beneficiary Transactions and view Beneficiary Accounts."
    ]
  }
}

This endpoint creates a transactions upload.

UAT HTTP Request

POST https://nxt.api.q2pay.co.in/api/transactions/upload

PRODUCTION HTTP Request

POST https://nxt.api.q2pay.in/api/transactions/upload

Query Parameters

Parameter Default Description Required Sample
category N.A category of transactions upload Yes "Vendor"
uploaded_file_data N.A Upload file data of transactions upload Yes { "id":"ca75c5ce08935b8459e649d16365eed4.xlsx", "storage":"cache","metadata": {"filename":"026883000000545.xlsx", "size": 7693, "mime_type": "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet" }}

Service Details

Service ID Description
CTransactionUpload To Upload Transaction

Get All Transactions Upload

curl -X GET "https://<environmenturl>/api/transactions/upload"
  -H "X-Api-Key: <your secure token>"
  -H "Content-Type: application/json"

require 'net/http'
require 'uri'
require 'json'

uri = URI.parse("https://<environmenturl>/api/transactions/upload") header = {'X-Api-Key' => '<your secure token>', 'Content-Type' => 'application/json'} http = Net::HTTP.new(uri.host, uri.port) http.use_ssl = true request = Net::HTTP::Get.new(uri.request_uri, header) request.body = body.to_json response = http.request(request)

fetch('https://<environmenturl>/api/transactions/upload', { method: 'GET', headers: { 'X-Api-Key': '<your secure token>', 'Content-Type': 'application/json' }, body: JSON.stringify(data) }) .then(response => response.json()) .then(data => console.log(data)) .catch(error => console.error(error));

SUCCESS RESPONSE The request returns JSON structured like below

{
    "status": true,
    "total_count": 2,
    "transactions_file": [
        {
            "id": 365,
            "file_name": "Dev_bulk_transaction.xlsx",
            "category": "testing LIST",
            "file_status": "processed",
            "uploaded_by": "Ashish Wadekar",
            "created_at": "2025-06-23T12:16:07.008Z"
        },
        {
            "id": 366,
            "file_name": "Dev_bulk_transaction.xlsx",
            "category": "testing LIST",
            "file_status": "failed",
            "uploaded_by": "Ashish Wadekar",
            "created_at": "2025-06-23T12:17:30.697Z"
        }
    ],
    "title": {
        "records": 2,
        "current_page": 1,
        "total_pages": 1,
        "page_item_count": 50
    }
}

This endpoint retrieves all Transaction Upload.

UAT HTTP Request

GET https://nxt.api.q2pay.co.in/api/transactions/upload

PRODUCTION HTTP Request

GET https://nxt.api.q2pay.in/api/transactions/upload

Query Parameters

Parameter Default Description Required Sample
file_name N.A. File name is used to filter for transaction upload optional "Dev_bulk_transaction.xlsx"
file_status N.A. File status is used to filter for transaction upload optional "failed" ,"processed"
category N.A. Category is used to filter for transaction upload optional "Vendor"
from_date N.A. From date to filter transaction uploads. Works in combination with to date. optional "01-06-2025"
to_date N.A. To date to filter transaction uploads. Works in combination with from date. optional "30-06-2025"

Service Details

Service ID Description
VTransactionUpload To Get all Transactions

Get Specific Transaction Upload

curl -X GET "https://<environmenturl>/api/transactions/:id/upload"
  -H "X-Api-Key: <your secure token>"
  -H "Content-Type: application/json"

require 'net/http'
require 'uri'
require 'json'

uri = URI.parse("https://<environmenturl>/api/transactions/:id/upload") header = {'X-Api-Key' => '<your secure token>', 'Content-Type' => 'application/json'} http = Net::HTTP.new(uri.host, uri.port) http.use_ssl = true request = Net::HTTP::Get.new(uri.request_uri, header) request.body = body.to_json response = http.request(request)

fetch('https://<environmenturl>/api/transactions/:id/upload', { method: 'GET', headers: { 'X-Api-Key': '<your secure token>', 'Content-Type': 'application/json' }, body: JSON.stringify(data) }) .then(response => response.json()) .then(data => console.log(data)) .catch(error => console.error(error));

SUCCESS RESPONSE The request returns JSON structured like below

{
    "status": true,
    "transaction_file": {
        "id": 365,
        "file_name": "Dev_bulk_transaction.xlsx",
        "category": "testing LIST",
        "file_status": "processed",
        "uploaded_by": "Ashish Wadekar",
        "transctions_ids": [
            "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx"
        ],
        "failed_transctions": [
            {
                "error": "Owner account not found for Debit Bank Account: 123456789D, PAN: ADDDYTGK, IFSC code: HDFC0001000",
                "row_number": 3
            }
        ],
        "created_at": "2025-06-23T12:16:07.008Z"
    },
    "title": {
        "records": 1,
        "current_page": 1,
        "total_pages": 1,
        "page_item_count": 1
    }
}

ERROR RESPONSE The request returns JSON structured like below for errors related transaction upload

{
    "status": false,
    "error": {
        "base": [
            "Not found"
        ]
    }
}

This endpoint retrieves specific transaction upload.

UAT HTTP Request

GET https://nxt.api.q2pay.co.in/api/transactions/:id/upload

PRODUCTION HTTP Request

GET https://nxt.api.q2pay.in/api/transactions/:id/upload

Service Details

Service ID Description
VTransactionUpload To Get Specific Transactions

Get Sample File Transaction Upload

curl "https://<environmenturl>/api/transactions/sample_file.:format"
  -H "X-Api-Key: <your secure token>"
  -H "Content-Type: application/json"
   -d "{
       "category":"Vendor",
    }"
require 'net/http'
require 'uri'
require 'json'

uri = URI.parse("https://<environmenturl>/api/transactions/sample_file.:format") header = {'X-Api-Key' => '<your secure token>', 'Content-Type' => 'application/json'} body = { "category":"Vendor", } http = Net::HTTP.new(uri.host, uri.port) http.use_ssl = true request = Net::HTTP::Get.new(uri.request_uri, header) request.body = body.to_json response = http.request(request)

const data = {
  "category":"Vendor",
};

fetch('https://<environmenturl>/api/transactions/sample_file.:format', { method: 'GET', headers: { 'X-Api-Key': '<your secure token>', 'Content-Type': 'application/json' }, body: JSON.stringify(data) }) .then(response => response.json()) .then(data => console.log(data)) .catch(error => console.error(error));

The below example can be sent as a request to the API.

{
  "category":"Vendor",
}

SUCCESS RESPONSE The request returns JSON structured like below

{
   "status": 200 
}

ERROR RESPONSE The request returns JSON structured like below for errors related to transaction upload

{
    "status":false,
    "error":{
        "base":"Transaction category 'abc' not found or inactive.",
        "base":"Transaction category 'Vendor' includes an 'upload' field, which is not supported for bulk transactions."
    }
}

ERROR RESPONSE The request returns JSON structured like below for errors related to transaction upload

{
    "status":false,
    "error": "Unsupported format. Please request .csv or .xlsx."
}

This endpoint will retrieve sample file .

UAT HTTP Request

GET https://nxt.api.q2pay.co.in/api/transactions/sample_file.:format

PRODUCTION HTTP Request

GET https://nxt.api.q2pay.in/api/transactions/sample_file.:format

Query Parameters

Parameter Default Description Required Sample
category N.A. category for sample file Yes "Vendor"

File Format

Format Default Description Required Sample URL
csv N.A. csv format for sample file Yes https://<environmenturl>/api/transactions/sample_file.csv
xlsx N.A. xlsx format for sample file Yes https://<environmenturl>/api/transactions/sample_file.xlsx

Service Details

Service ID Description
VTransactionUpload To Get Sample File Transactions

Statement Upload

Statement Upload

curl -X POST "https://<environmenturl>/api/statements/upload"
  -H "X-Api-Key: <your secure token>"
  -H "Content-Type: application/json"
  -d "{ 
    "bank_name": "Yes Bank",
    "account_no": 1234567900,
    "uploaded_file_data": {
        "id": "ca75c5ce08935b8459e649d16365eed4.csv",
        "storage": "cache",
        "metadata": {
            "filename": "026883000000545.csv",
            "size": 26620,
            "mime_type": "application/csv"
        }
    }
  }"
require 'net/http'
require 'uri'
require 'json'

uri = URI.parse("https://<environmenturl>/api/statements/upload") header = {'X-Api-Key' => '<your secure token>', 'Content-Type' => 'application/json'} body = { "bank_name": "Yes Bank", "account_no": 1234567900, "uploaded_file_data": { "id": "ca75c5ce08935b8459e649d16365eed4.csv", "storage": "cache", "metadata": { "filename": "026883000000545.csv", "size": 26620, "mime_type": "application/csv" } } } http = Net::HTTP.new(uri.host, uri.port) http.use_ssl = true request = Net::HTTP::Post.new(uri.request_uri, header) request.body = body.to_json response = http.request(request)

const data = {
    "bank_name": "Yes Bank",
    "account_no": 1234567900,
    "uploaded_file_data": {
        "id": "ca75c5ce08935b8459e649d16365eed4.csv",
        "storage": "cache",
        "metadata": {
            "filename": "026883000000545.csv",
            "size": 26620,
            "mime_type": "application/csv"
        }
    }
};

fetch('https://<environmenturl>/api/statements/upload', { method: 'POST', headers: { 'X-Api-Key': '<your secure token>', 'Content-Type': 'application/json' }, body: JSON.stringify(data) }) .then(response => response.json()) .then(data => console.log(data)) .catch(error => console.error(error));

The below example can be sent as a request to the API.

{
    "bank_name": "Yes Bank",
    "account_no": 1234567900,
    "uploaded_file_data": {
        "id": "ca75c5ce08935b8459e649d16365eed4.csv",
        "storage": "cache",
        "metadata": {
            "filename": "026883000000545.csv",
            "size": 26620,
            "mime_type": "application/csv"
        }
    }
}

SUCCESS RESPONSE The request returns JSON structured like below on successful statement upload

{
  "status": true, 
  "message": "Statement uploaded successfully"
}

ERROR RESPONSE The request returns JSON structured like below for errors related statement upload

{
    "status": false, 
    "errors": {
        "base": [
            "Bank name and account number are required."
        ],
        "base": [
            "Uploaded file data cannot be blank"
        ],
        "base": [
            "Missing required parameters: bank_name or account_no"
        ],
        "base": [
            "Failed to upload Statement"
        ],
        "base": [
            "Invalid file format. Only CSV, XLSX, and XLS files are allowed."
        ],
        "base": [
            "The uploaded file is password-protected. Please provide an unprotected file."
        ]
    }
}

This endpoint creates a statement upload.

UAT HTTP Request

POST https://nxt.api.q2pay.co.in/api/statements/upload

PRODUCTION HTTP Request

POST https://nxt.api.q2pay.in/api/statements/upload

Query Parameters

Parameter Default Description Required Sample
bank_name N.A. Bank name of statement upload Yes yes bank,axis bank,federal bank,hdfc bank,icici bank,idbi bank,idfc bank,indusind bank,kotak bank,nsdl bank,sbm bank,ubi bank
account_no N.A Account number of statement upload Yes 1234567900
uploaded_file_data N.A Upload file data of statement upload Yes { "id":"ca75c5ce08935b8459e649d16365eed4.csv", "storage":"cache","metadata": {"filename":"026883000000545.csv","size":26620,"mime_type":"application/csv" }}

Service Details

Service ID Description
CStatementUpload To Upload Statement

Upload

Upload helps you to send document to Q2Pay platform.

Upload Image

curl -X POST "https://<environmenturl>/api/images/upload"
  -H "X-Api-Key: <your secure token>"
  -H "Content-Type: application/json"
  --form "file=@/location_of_file.jpg"
require 'net/http'
require 'uri'
require 'json'

uri = URI.parse("https://<environmenturl>/api/images/upload") header = {'X-Api-Key' => '<your secure token>', 'Content-Type' => 'application/json'} body = { require 'uri' require 'net/http' require 'net/https' require 'json'

# Replace with your secure token api_key = "<secure token>"

# Replace with the environment URL environment_url = "<environment_url>"

# Replace with the file path file_path = "/location_of_file.jpg"

# Build the API endpoint URL url = URI.join(environment_url, "/api/images/upload")

# Create a new HTTP client http = Net::HTTP.new(url.host, url.port)

# Use HTTPS if required if url.scheme == "https" http.use_ssl = true end

# Set the request headers request = Net::HTTP::Post.new(url) request["X-Api-Key"] = api_key

# Add the file data to the request body request.set_form( file: UploadIO.new(file_path, "image/jpeg") )

# Send the request and get the response response = http.request(request)

# Check the response status if response.is_a?(Net::HTTPSuccess) # Parse the JSON response data = JSON.parse(response.body) puts "Image uploaded successfully: #{data}" else puts "Error uploading image: #{response.code} - #{response.message}" end } http = Net::HTTP.new(uri.host, uri.port) http.use_ssl = true request = Net::HTTP::Post.new(uri.request_uri, header) request.body = body.to_json response = http.request(request)

const data = {
  let formData = new FormData();
        formData.append('file', {
          uri: response.assets[0].uri,
          name: response.assets[0].fileName,
          type: response.assets[0].type,
        });

var url = baseUrl + 'upload';

var responseData = await axios({ method: 'POST', url: url, headers: { 'Content-Type': 'multipart/form-data', }, data: data, }) .then(response => { console.log(response); return response; }) .catch(err => { console.log("Error msg: "+err);

return err.response; }); };

fetch('https://<environmenturl>/api/images/upload', { method: 'POST', headers: { 'X-Api-Key': '<your secure token>', 'Content-Type': 'application/json' }, body: JSON.stringify(data) }) .then(response => response.json()) .then(data => console.log(data)) .catch(error => console.error(error));

SUCCESS RESPONSE The request returns JSON structured like below on successful upload image

{
    "id":"c68cc4e7d54381cc46384f194c09ce2c.png",
    "storage":"cache",
    "metadata": {
        "filename":"favicon.png",
        "size":62260,
        "mime_type":"image/png"
        }
}

This endpoint is used to upload an image to Q2Pay platform.

UAT HTTP Request

POST https://nxt.api.q2pay.co.in/api/images/upload

PRODUCTION HTTP Request

POST https://nxt.api.q2pay.in/api/images/upload

Service Details

Service ID Description
PLogin To Login User

File Upload

curl -X POST "https://<environmenturl>/api/files/upload"
  -H "X-Api-Key: <your secure token>"
  -H "Content-Type: application/json"
  --form "file=@/location_of_file.jpg"
require 'net/http'
require 'uri'
require 'json'

uri = URI.parse("https://<environmenturl>/api/files/upload") header = {'X-Api-Key' => '<your secure token>', 'Content-Type' => 'application/json'} body = { require 'uri' require 'net/http' require 'net/https' require 'json'

# Replace with your secure token api_key = "<secure token>"

# Replace with the environment URL environment_url = "<environment_url>"

# Replace with the file path file_path = "/location_of_file.jpg"

# Build the API endpoint URL url = URI.join(environment_url, "/api/files/upload")

# Create a new HTTP client http = Net::HTTP.new(url.host, url.port)

# Use HTTPS if required if url.scheme == "https" http.use_ssl = true end

# Set the request headers request = Net::HTTP::Post.new(url) request["X-Api-Key"] = api_key

# Add the file data to the request body request.set_form( file: UploadIO.new(file_path, "image/jpeg") )

# Send the request and get the response response = http.request(request)

# Check the response status if response.is_a?(Net::HTTPSuccess) # Parse the JSON response data = JSON.parse(response.body) puts "Image uploaded successfully: #{data}" else puts "Error uploading image: #{response.code} - #{response.message}" end } http = Net::HTTP.new(uri.host, uri.port) http.use_ssl = true request = Net::HTTP::Post.new(uri.request_uri, header) request.body = body.to_json response = http.request(request)

const data = {
  let formData = new FormData();
        formData.append('file', {
          uri: response.assets[0].uri,
          name: response.assets[0].fileName,
          type: response.assets[0].type,
        });

var url = baseUrl + 'upload';

var responseData = await axios({ method: 'POST', url: url, headers: { 'Content-Type': 'multipart/form-data', }, data: data, }) .then(response => { console.log(response); return response; }) .catch(err => { console.log("Error msg: "+err);

return err.response; }); };

fetch('https://<environmenturl>/api/files/upload', { method: 'POST', headers: { 'X-Api-Key': '<your secure token>', 'Content-Type': 'application/json' }, body: JSON.stringify(data) }) .then(response => response.json()) .then(data => console.log(data)) .catch(error => console.error(error));

SUCCESS RESPONSE The request returns JSON structured like below on successful statement upload

{
    "id": "ca75c5ce08935b8459e649d16365eed4.csv",
    "storage": "cache",
    "metadata": {
        "filename": "026883000000545.csv",
        "size": 26620,
        "mime_type": "application/csv"
    }
}

This endpoint is used to upload an file to Q2Pay platform.

UAT HTTP Request

POST https://nxt.api.q2pay.co.in/api/files/upload

PRODUCTION HTTP Request

POST https://nxt.api.q2pay.in/api/files/upload

Service Details

Service ID Description
PLogin To Login User

Holiday List

Holiday List helps user to see all the holidays

Get all Holiday List

curl -X GET "https://<environmenturl>/api/holidays"
  -H "X-Api-Key: <your secure token>"
  -H "Content-Type: application/json"
  -d "{
    "page_no": "1",
    "page_size": "1"
    }"
require 'net/http'
require 'uri'
require 'json'

uri = URI.parse("https://<environmenturl>/api/holidays") header = {'X-Api-Key' => '<your secure token>', 'Content-Type' => 'application/json'} body = { "page_no": "1", "page_size": "1" } http = Net::HTTP.new(uri.host, uri.port) http.use_ssl = true request = Net::HTTP::GET.new(uri.request_uri, header) request.body = body.to_json response = http.request(request)

const data = {
  "page_no": "1",
  "page_size": "1"
};

fetch('https://<environmenturl>/api/holidays', { method: 'GET', headers: { 'X-Api-Key': '<your secure token>', 'Content-Type': 'application/json' }, body: JSON.stringify(data) }) .then(response => response.json()) .then(data => console.log(data)) .catch(error => console.error(error));

The below example can be sent as a request to the API.

{
  "page_no": "1",
  "page_size": "1"
}

SUCCESS RESPONSE The request returns JSON structured like below on successful get holiday list from today to the future

{
  "status": true,
  "total_count": 3,
  "holidays": [
    {
      "id": 1,
      "date": "XX-XX-XX",
      "occasion": "XXXX"
    },
    {
      "id": 2,
      "date": "XX-XX-XX",
      "occasion": "XXXX"
    },
    {
      "id": 3,
      "date": "XX-XX-XX",
      "occasion": "XXXX"
    }
  ],
  "title": {
    "records": 3,
    "current_page": 1,
    "total_pages": 1,
    "page_item_count": 50
  }
}

This endpoint will show all holidays from today to the future.

UAT HTTP Request

GET https://nxt.api.q2pay.co.in/api/holidays

PRODUCTION HTTP Request

GET https://nxt.api.q2pay.in/api/holidays

Query Parameters

Parameter Default Description Required Sample
page_size N.A. If set to specific number, the result will include that number of holiday list No 1
page_no N.A. If set to specific number, the result will include that page of holiday list No 1

Service Details

Service ID Description
PLogin Get Holiday List

Get specific Holiday List

curl -X GET "https://<environmenturl>/api/holidays/:holiday_id"
  -H "X-Api-Key: <your secure token>"
  -H "Content-Type: application/json"
require 'net/http'
require 'uri'
require 'json'

uri = URI.parse("https://<environmenturl>/api/holidays/:holiday_id") header = {'X-Api-Key' => '<your secure token>', 'Content-Type' => 'application/json'} http = Net::HTTP.new(uri.host, uri.port) http.use_ssl = true request = Net::HTTP::GET.new(uri.request_uri, header) request.body = body.to_json response = http.request(request)

fetch('https://<environmenturl>/api/holidays/:holiday_id', {
  method: 'GET',
  headers: {
    'X-Api-Key': '<your secure token>',
    'Content-Type': 'application/json'
  },
  body: JSON.stringify(data)
})
  .then(response => response.json())
  .then(data => console.log(data))
  .catch(error => console.error(error));

SUCCESS RESPONSE The request returns JSON structured like below on successful view specific holiday list

{
  "status": true,
  "holidays": [
    {
      "id": 52,
      "date": "2023-12-31",
      "occasion": "New Year"
    }
  ]
}

This endpoint will view specific holiday list.

UAT HTTP Request

GET https://nxt.api.q2pay.co.in/api/holidays/:holiday_id

PRODUCTION HTTP Request

GET https://nxt.api.q2pay.in/api/holidays/:holiday_id

Service Details

Service ID Description
PLogin Get specific Holiday List

Create Holiday List

curl -X POST "https://<environmenturl>/api/holidays"
  -H "X-Api-Key: <your secure token>"
  -H "Content-Type: application/json"
  -d "{
      "date":"XX-XX-XX",
      "occasion":"XXXX XXX"
    }"
require 'net/http'
require 'uri'
require 'json'

uri = URI.parse("https://<environmenturl>/api/holidays") header = {'X-Api-Key' => '<your secure token>', 'Content-Type' => 'application/json'} body = { "date":"XX-XX-XX", "occasion":"XXXX XXX" } http = Net::HTTP.new(uri.host, uri.port) http.use_ssl = true request = Net::HTTP::Post.new(uri.request_uri, header) request.body = body.to_json response = http.request(request)

const data = {
      "date":"XX-XX-XX",
      "occasion":"XXXX XXX"
};

fetch('https://<environmenturl>/api/holidays', { method: 'POST', headers: { 'X-Api-Key': '<your secure token>', 'Content-Type': 'application/json' }, body: JSON.stringify(data) }) .then(response => response.json()) .then(data => console.log(data)) .catch(error => console.error(error));

The below example can be sent as a request to the API.

{
      "date":"XX-XX-XX",
      "occasion":"XXXX XXX"
}

SUCCESS RESPONSE The request returns JSON structured like below on successful holiday list creation

{
  "status": true,
  "holidays": [
    {
      "id": 54,
      "date": "2023-12-27",
      "occasion": "New Year Holiday "
    }
  ]
}

ERROR RESPONSE The request returns JSON structured like below for errors related to holiday posting

{
  "status": false,
  "errors": {
    "date": [
      "Date can't be blank"
    ]
  }
}

This endpoint will create a holiday list.

UAT HTTP Request

POST https://nxt.api.q2pay.co.in/api/holidays

PRODUCTION HTTP Request

POST https://nxt.api.q2pay.in/api/holidays

Query Parameters

Parameter Default Description Required Sample
date N.A. Date for holiday Yes 2023-12-27
occasion N.A. Occasion for holiday No Holi

Service Details

Service ID Description
Admin Create Holiday List

Update Holiday List

curl -X PUT "https://<environmenturl>/api/holidays/:holiday_id"
  -H "X-Api-Key: <your secure token>"
  -H "Content-Type: application/json"
  -d "{
      "date":"XX-XX-XX",
      "occasion":"XXXX XXX"
    }"
require 'net/http'
require 'uri'
require 'json'

uri = URI.parse("https://<environmenturl>/api/holidays/:holiday_id") header = {'X-Api-Key' => '<your secure token>', 'Content-Type' => 'application/json'} body = { "date":"XX-XX-XX", "occasion":"XXXX XXX" } http = Net::HTTP.new(uri.host, uri.port) http.use_ssl = true request = Net::HTTP::PUT.new(uri.request_uri, header) request.body = body.to_json response = http.request(request)

const data = {
      "date":"XX-XX-XX",
      "occasion":"XXXX XXX"
};

fetch('https://<environmenturl>/api/holidays/:holiday_id', { method: 'PUT', headers: { 'X-Api-Key': '<your secure token>', 'Content-Type': 'application/json' }, body: JSON.stringify(data) }) .then(response => response.json()) .then(data => console.log(data)) .catch(error => console.error(error));

The below example can be sent as a request to the API.

{
      "date":"XX-XX-XX",
      "occasion":"XXXX XXX"
}

SUCCESS RESPONSE The request returns JSON structured like below on successful holiday list updation

{
  "status": true,
  "holidays": [
    {
      "id": 01,
      "date": "XXXX-XX-XX",
      "occasion": "XXXX"
    }
  ]
}

ERROR RESPONSE The request returns JSON structured like below for errors related to holiday list updating

{
  "status": false,
  "errors": {
    "date": [
      "Date can't be blank"
    ]
  }
}

This endpoint will update a holiday list.

UAT HTTP Request

PUT https://nxt.api.q2pay.co.in/api/holidays/:holiday_id

PRODUCTION HTTP Request

PUT https://nxt.api.q2pay.in/api/holidays/:holiday_id

Query Parameters

Parameter Default Description Required Sample
date N.A. Date for holiday Yes 2023-12-27
occasion N.A. Occasion for holiday No Holi

Service Details

Service ID Description
Admin Update Holiday List

Delete Holiday List

curl -X DELETE "https://<environmenturl>/api/holidays/:holiday_id"
  -H "X-Api-Key: <your secure token>"
  -H "Content-Type: application/json"
require 'net/http'
require 'uri'
require 'json'

uri = URI.parse("https://<environmenturl>/api/holidays/:holiday_id") header = {'X-Api-Key' => '<your secure token>', 'Content-Type' => 'application/json'} http = Net::HTTP.new(uri.host, uri.port) http.use_ssl = true request = Net::HTTP::DELETE.new(uri.request_uri, header) request.body = body.to_json response = http.request(request)

fetch('https://<environmenturl>/api/holidays/:holiday_id', {
  method: 'DELETE',
  headers: {
    'X-Api-Key': '<your secure token>',
    'Content-Type': 'application/json'
  },
  body: JSON.stringify(data)
})
  .then(response => response.json())
  .then(data => console.log(data))
  .catch(error => console.error(error));

SUCCESS RESPONSE The request returns JSON structured like below

{
  "status": true
}

This endpoint will delete holiday list.

UAT HTTP Request

DELETE https://nxt.api.q2pay.co.in/api/holidays/:holiday_id

PRODUCTION HTTP Request

DELETE https://nxt.api.q2pay.in/api/holidays/:holiday_id

Service Details

Service ID Description
Admin Delete holiday list

Market Holiday

Market Holiday List helps user to see all the market holidays

Get all Market Holidays

curl -X GET "https://<environmenturl>/api/market_holidays"
  -H "X-Api-Key: <your secure token>"
  -H "Content-Type: application/json"
  -d "{
    "page_no": "1",
    "page_size": "1"
    }"
require 'net/http'
require 'uri'
require 'json'

uri = URI.parse("https://<environmenturl>/api/market_holidays") header = {'X-Api-Key' => '<your secure token>', 'Content-Type' => 'application/json'} body = { "page_no": "1", "page_size": "1" } http = Net::HTTP.new(uri.host, uri.port) http.use_ssl = true request = Net::HTTP::GET.new(uri.request_uri, header) request.body = body.to_json response = http.request(request)

const data = {
  "page_no": "1",
  "page_size": "1"
};

fetch('https://<environmenturl>/api/market_holidays', { method: 'GET', headers: { 'X-Api-Key': '<your secure token>', 'Content-Type': 'application/json' }, body: JSON.stringify(data) }) .then(response => response.json()) .then(data => console.log(data)) .catch(error => console.error(error));

The below example can be sent as a request to the API.

{
  "page_no": "1",
  "page_size": "1"
}

SUCCESS RESPONSE The request returns JSON structured like below on successful get market holidays from today to the future

{
  "status": true,
  "total_count": 3,
  "holidays": [
    {
      "id": 1,
      "date": "XX-XX-XX",
      "occasion": "XXXX"
    },
    {
      "id": 2,
      "date": "XX-XX-XX",
      "occasion": "XXXX"
    },
    {
      "id": 3,
      "date": "XX-XX-XX",
      "occasion": "XXXX"
    }
  ],
  "title": {
    "records": 3,
    "current_page": 1,
    "total_pages": 1,
    "page_item_count": 50
  }
}

This endpoint will show all Market holidays from today to the future.

UAT HTTP Request

GET https://nxt.api.q2pay.co.in/api/market_holidays

PRODUCTION HTTP Request

GET https://nxt.api.q2pay.in/api/market_holidays

Query Parameters

Parameter Default Description Required Sample
page_size N.A. If set to specific number, the result will include that number of holiday list No 1
page_no N.A. If set to specific number, the result will include that page of holiday list No 1

Service Details

Service ID Description
VReconciliationReport Get all Market Holidays

Reconciliation Report

ReconciliationReport List helps user to see all the report

Summary Report

curl -X POST "https://<environmenturl>/api/reconciliation/summary_report"
  -H "X-Api-Key: <your secure token>"
  -H "Content-Type: application/json"
  -d "{
  "client": "XXX",
  "report_date": "00/00/0000",
  "scheme": "XX"
}"
require 'net/http'
require 'uri'
require 'json'

uri = URI.parse("https://<environmenturl>/api/reconciliation/summary_report") header = {'X-Api-Key' => '<your secure token>', 'Content-Type' => 'application/json'} body = { "client": "XXX", "report_date": "00/00/0000", "scheme": "XX" } http = Net::HTTP.new(uri.host, uri.port) http.use_ssl = true request = Net::HTTP::POST.new(uri.request_uri, header) request.body = body.to_json response = http.request(request)

const data = {
  "client": "XXX",
  "report_date": "00/00/0000",
  "scheme": "XX"
};

fetch('https://<environmenturl>/api/reconciliation/summary_report', { method: 'POST', headers: { 'X-Api-Key': '<your secure token>', 'Content-Type': 'application/json' }, body: JSON.stringify(data) }) .then(response => response.json()) .then(data => console.log(data)) .catch(error => console.error(error));

The below example can be sent as a request to the API.

{
  "client": "XXX",
  "report_date": "00/00/0000",
  "scheme": "XX"
}

SUCCESS RESPONSE The request returns JSON structured like below on successful summary report

{
  "status": true,
  "report_date": "0000-00-00",
  "summary": [
    {
      "scheme": "XX",
      "name": "Hello Fund",
      "payment_confirmation_date": "0000-00-00",
      "ucr_date": "0000-00-00",
      "ucr_date_short": "0000-00-00",
      "payout_cycle": "XX",
      "funding_amount": 00000,
      "funding_count": 00000,
      "funding_ageing": "0000-00-00 => 00, 0000-00-00 => 00",
      "cob_funding_count": 0,
      "exception_funding_amount": 00000,
      "deferred_cob_count": 00000,
      "net_funding_amount": 00000.00,
      "ucr_amount": 00000.00,
      "ucr_count": 0000,
      "ucr_ageing": "0000-00-00 => 00",
      "difference": 000.0,
      "negative_ucr_amount": 0.0,
      "negative_ucr_count": 0,
      "exception_ucr_amount": 0.0,
      "cob_funding_amount": {
        "cob_funding_amount": 0000.00,
        "description": "Funding"
      },
      "deferred_cob_amount": {
        "deferred_cob_amount": 0000.00,
        "description": "Future Date"
      }
    }
  ]
}

SUCCESS RESPONSE The request returns JSON structured like below on empty summary report

{
  "status": true,
  "report_date": "2023-12-13",
  "summary": {}
}

ERROR RESPONSE The request returns JSON structured like below for error related to missing X-Api-Key in headers

{
  "status": false,
  "errors": {
    "base": [
      "Client/Report date cannot be blank",
      "Scheme cannot be blank",
      "Insufficient parameters"
    ]
  }
}

This endpoint will show Summary Report.

UAT HTTP Request

POST https://nxt.api.q2pay.co.in/api/reconciliation/summary_report

PRODUCTION HTTP Request

POST https://nxt.api.q2pay.in/api/reconciliation/summary_report

Query Parameters

Parameter Default Description Required Sample
client N.A. client name Yes Q2pay
report_date N.A. date of report Yes 13/12/2023
scheme N.A. name of the scheme No XX

Service Details

Service ID Description
VReconciliationReport Get Summary Report

Redemption Register

curl -X POST "https://<environmenturl>/api/reconciliation/redemption_register"
  -H "X-Api-Key: <your secure token>"
  -H "Content-Type: application/json"
  -d "{
  "client": "XXX",
  "report_date": "00/00/0000",
  "scheme": "XX"
}"
require 'net/http'
require 'uri'
require 'json'

uri = URI.parse("https://<environmenturl>/api/reconciliation/redemption_register") header = {'X-Api-Key' => '<your secure token>', 'Content-Type' => 'application/json'} body = { "client": "XXX", "report_date": "00/00/0000", "scheme": "XX" } http = Net::HTTP.new(uri.host, uri.port) http.use_ssl = true request = Net::HTTP::POST.new(uri.request_uri, header) request.body = body.to_json response = http.request(request)

const data = {
  "client": "XXX",
  "report_date": "00/00/0000",
  "scheme": "XX"
};

fetch('https://<environmenturl>/api/reconciliation/redemption_register', { method: 'POST', headers: { 'X-Api-Key': '<your secure token>', 'Content-Type': 'application/json' }, body: JSON.stringify(data) }) .then(response => response.json()) .then(data => console.log(data)) .catch(error => console.error(error));

The below example can be sent as a request to the API.

{
  "client": "XXX",
  "report_date": "00/00/0000",
  "scheme": "XX"
}

SUCCESS RESPONSE The request returns JSON structured like below on successful redemption register

{
  "status": true,
  "scheme": "XX",
  "report_date": "0000-00-00",
  "register": [
    {
      "scheme_code": "XXX",
      "folio_no": "XXXXXXX",
      "trades_amount": "00000",
      "trade_date_time": "0000-00-00",
      "posted_date": "0000-00-00"
    },
    {
      "scheme_code": "XXX",
      "folio_no": "XXXXXXX",
      "trades_amount": "00000",
      "trade_date_time": "0000-00-00",
      "posted_date": "0000-00-00"
    },
    {
      "scheme_code": "XXX",
      "folio_no": "XXXXXXX",
      "trades_amount": "00000",
      "trade_date_time": "0000-00-00",
      "posted_date": "0000-00-00"
    }
  ]
}

SUCCESS RESPONSE The request returns JSON structured like below on empty redemption register

{
  "status": true,
  "report": [],
  "message": [
    "No transactions found for scheme XX"
  ]
}

ERROR RESPONSE The request returns JSON structured like below for error related to missing X-Api-Key in headers

{
  "status": false,
  "errors": {
    "base": [
      "Client/Report date cannot be blank",
      "Scheme cannot be blank",
      "Insufficient parameters"
    ]
  }
}

This endpoint will show redemption register.

UAT HTTP Request

POST https://nxt.api.q2pay.co.in/api/reconciliation/redemption_register

PRODUCTION HTTP Request

POST https://nxt.api.q2pay.in/api/reconciliation/redemption_register

Query Parameters

Parameter Default Description Required Sample
client N.A. client name Yes Q2pay
report_date N.A. date of report Yes 13/12/2023
scheme N.A. name of the scheme Yes XX

Service Details

Service ID Description
VReconciliationReport Get redemption register

Funding Register

curl -X POST "https://<environmenturl>/api/reconciliation/funding_register"
  -H "X-Api-Key: <your secure token>"
  -H "Content-Type: application/json"
  -d "{
  "client": "XXX",
  "report_date": "00/00/0000",
  "scheme": "XX"
}"
require 'net/http'
require 'uri'
require 'json'

uri = URI.parse("https://<environmenturl>/api/reconciliation/funding_register") header = {'X-Api-Key' => '<your secure token>', 'Content-Type' => 'application/json'} body = { "client": "XXX", "report_date": "00/00/0000", "scheme": "XX" } http = Net::HTTP.new(uri.host, uri.port) http.use_ssl = true request = Net::HTTP::POST.new(uri.request_uri, header) request.body = body.to_json response = http.request(request)

const data = {
  "client": "XXX",
  "report_date": "00/00/0000",
  "scheme": "XX"
};

fetch('https://<environmenturl>/api/reconciliation/funding_register', { method: 'POST', headers: { 'X-Api-Key': '<your secure token>', 'Content-Type': 'application/json' }, body: JSON.stringify(data) }) .then(response => response.json()) .then(data => console.log(data)) .catch(error => console.error(error));

The below example can be sent as a request to the API.

{
  "client": "XXX",
  "report_date": "00/00/0000",
  "scheme": "XX"
}

SUCCESS RESPONSE The request returns JSON structured like below on successful funding register

{
  "status": true,
  "scheme": "XX",
  "report_date": "0000-00-00",
  "register": [
    {
      "scheme": "XXXX",
      "investor_folio": "XXXXXXX",
      "amount": "0000.0",
      "funding_date": "0000-00-00"
    },
    {
      "scheme": "XXXX",
      "investor_folio": "XXXXXXX",
      "amount": "00000.0",
      "funding_date": "0000-00-00"
    }
  ]
}

SUCCESS RESPONSE The request returns JSON structured like below on empty funding register

{
  "status": true,
  "report": [],
  "message": [
    "No transactions found for scheme XX"
  ]
}

ERROR RESPONSE The request returns JSON structured like below for error related to missing X-Api-Key in headers

{
  "status": false,
  "errors": {
    "base": [
      "Client/Report date cannot be blank",
      "Scheme cannot be blank",
      "Insufficient parameters"
    ]
  }
}

This endpoint will show funding register.

UAT HTTP Request

POST https://nxt.api.q2pay.co.in/api/reconciliation/funding_register

PRODUCTION HTTP Request

POST https://nxt.api.q2pay.in/api/reconciliation/funding_register

Query Parameters

Parameter Default Description Required Sample
client N.A. client name Yes Q2pay
report_date N.A. date of report Yes 13/12/2023
scheme N.A. name of the scheme Yes XX

Service Details

Service ID Description
VReconciliationReport Get funding register

COB Register

curl -X POST "https://<environmenturl>/api/reconciliation/cob_register"
  -H "X-Api-Key: <your secure token>"
  -H "Content-Type: application/json"
  -d "{
  "client": "XXX",
  "report_date": "00/00/0000",
  "scheme": "XX"
}"
require 'net/http'
require 'uri'
require 'json'

uri = URI.parse("https://<environmenturl>/api/reconciliation/cob_register") header = {'X-Api-Key' => '<your secure token>', 'Content-Type' => 'application/json'} body = { "client": "XXX", "report_date": "00/00/0000", "scheme": "XX" } http = Net::HTTP.new(uri.host, uri.port) http.use_ssl = true request = Net::HTTP::POST.new(uri.request_uri, header) request.body = body.to_json response = http.request(request)

const data = {
  "client": "XXX",
  "report_date": "00/00/0000",
  "scheme": "XX"
};

fetch('https://<environmenturl>/api/reconciliation/cob_register', { method: 'POST', headers: { 'X-Api-Key': '<your secure token>', 'Content-Type': 'application/json' }, body: JSON.stringify(data) }) .then(response => response.json()) .then(data => console.log(data)) .catch(error => console.error(error));

The below example can be sent as a request to the API.

{
  "client": "XXX",
  "report_date": "00/00/0000",
  "scheme": "XX"
}

SUCCESS RESPONSE The request returns JSON structured like below on successful cob register

{
  "status": true,
  "scheme": "XX",
  "report_date": "0000-00-00",
  "register": [
    {
     "scheme": "XXX",
      "acc_no": "0000000000000000",
      "amount": "00000.0",
      "funding_date": "0000-00-00",
      "actual_funding_date": "0000-00-00"
    }
  ]
}

SUCCESS RESPONSE The request returns JSON structured like below on empty cob register

{
  "status": true,
  "report": [],
  "message": [
    "No transactions found for scheme XX"
  ]
}

ERROR RESPONSE The request returns JSON structured like below for error related to missing X-Api-Key in headers

{
  "status": false,
  "errors": {
    "base": [
      "Client/Report date cannot be blank",
      "Scheme cannot be blank",
      "Insufficient parameters"
    ]
  }
}

This endpoint will show cob register.

UAT HTTP Request

POST https://nxt.api.q2pay.co.in/api/reconciliation/cob_register

PRODUCTION HTTP Request

POST https://nxt.api.q2pay.in/api/reconciliation/cob_register

Query Parameters

Parameter Default Description Required Sample
client N.A. client name Yes Q2pay
report_date N.A. date of report Yes 13/12/2023
scheme N.A. name of the scheme Yes XX

Service Details

Service ID Description
VReconciliationReport Get cob register

Deffered Cob Register

curl -X POST "https://<environmenturl>/api/reconciliation/deffered_cob_register"
  -H "X-Api-Key: <your secure token>"
  -H "Content-Type: application/json"
  -d "{
  "client": "XXX",
  "report_date": "00/00/0000",
  "scheme": "XX"
}"
require 'net/http'
require 'uri'
require 'json'

uri = URI.parse("https://<environmenturl>/api/reconciliation/deffered_cob_register") header = {'X-Api-Key' => '<your secure token>', 'Content-Type' => 'application/json'} body = { "client": "XXX", "report_date": "00/00/0000", "scheme": "XX" } http = Net::HTTP.new(uri.host, uri.port) http.use_ssl = true request = Net::HTTP::POST.new(uri.request_uri, header) request.body = body.to_json response = http.request(request)

const data = {
  "client": "XXX",
  "report_date": "00/00/0000",
  "scheme": "XX"
};

fetch('https://<environmenturl>/api/reconciliation/deffered_cob_register', { method: 'POST', headers: { 'X-Api-Key': '<your secure token>', 'Content-Type': 'application/json' }, body: JSON.stringify(data) }) .then(response => response.json()) .then(data => console.log(data)) .catch(error => console.error(error));

The below example can be sent as a request to the API.

{
  "client": "XXX",
  "report_date": "00/00/0000",
  "scheme": "XX"
}

SUCCESS RESPONSE The request returns JSON structured like below on successful deffered cob register

{
  "status": true,
  "scheme": "XX",
  "report_date": "0000-00-00",
  "register": [
    {
      "scheme": "XXXX",
      "acc_no": "0000000",
      "amount": "0000.00",
      "funding_date": "0000-00-00",
      "actual_funding_date": "0000-00-00"
    },
    {
      "scheme": "XXXX",
      "acc_no": "0000000",
      "amount": "0000.00",
      "funding_date": "0000-00-00",
      "actual_funding_date": "0000-00-00"
    }
  ]
}

SUCCESS RESPONSE The request returns JSON structured like below on empty deffered cob register

{
  "status": true,
  "report": [],
  "message": [
    "No transactions found for scheme XX"
  ]
}

ERROR RESPONSE The request returns JSON structured like below for error related to missing X-Api-Key in headers

{
  "status": false,
  "errors": {
    "base": [
      "Client/Report date cannot be blank",
      "Scheme cannot be blank",
      "Insufficient parameters"
    ]
  }
}

This endpoint will show deffered cob register.

UAT HTTP Request

POST https://nxt.api.q2pay.co.in/api/reconciliation/deffered_cob_register

PRODUCTION HTTP Request

POST https://nxt.api.q2pay.in/api/reconciliation/deffered_cob_register

Query Parameters

Parameter Default Description Required Sample
client N.A. client name Yes Q2pay
report_date N.A. date of report Yes 13/12/2023
scheme N.A. name of the scheme Yes XX

Service Details

Service ID Description
VReconciliationReport Get deffered cob register

Pending Redemption Register

curl -X POST "https://<environmenturl>/api/reconciliation/pending_redemption_register"
  -H "X-Api-Key: <your secure token>"
  -H "Content-Type: application/json"
  -d "{
        "client": "XXX",
        "report_date": "00/00/0000",
        "scheme": "XX"
      }"
require 'net/http'
require 'uri'
require 'json'

uri = URI.parse("https://<environmenturl>/api/reconciliation/pending_redemption_register") header = {'X-Api-Key' => '<your secure token>', 'Content-Type' => 'application/json'} body ={ "client": "XXX", "report_date": "00/00/0000", "scheme": "XX" } http = Net::HTTP.new(uri.host, uri.port) http.use_ssl = true request = Net::HTTP::POST.new(uri.request_uri, header) request.body = body.to_json response = http.request(request)

const data ={
              "client": "XXX",
              "report_date": "00/00/0000",
              "scheme": "XX"
            };

fetch('https://<environmenturl>/api/reconciliation/pending_redemption_register', { method: 'POST', headers: { 'X-Api-Key': '<your secure token>', 'Content-Type': 'application/json' }, body: JSON.stringify(data) }) .then(response => response.json()) .then(data => console.log(data)) .catch(error => console.error(error));

The below example can be sent as a request to the API.

{
  "client": "XXX",
  "report_date": "00/00/0000",
  "scheme": "XX"
}

SUCCESS RESPONSE The request returns JSON structured like below on successful pending redemption report

{
  "status": true,
  "scheme": "xx",
  "report_date": "0000-00-00",
  "register": [
    {
      "scheme_code": "xxxx",
      "folio_no": "xxxx-xxx-xxxx",
      "trades_amount": "0000.00",
      "trade_date_time": "0000-00-00",
      "posted_date": "0000-00-00"
    },
   {
      "scheme_code": "xxxx",
      "folio_no": "xxxx-xxx-xxxx",
      "trades_amount": "0000.00",
      "trade_date_time": "0000-00-00",
      "posted_date": "0000-00-00"
    }
  ]
}

SUCCESS RESPONSE The request returns JSON structured like below on empty pending redemption report

{
  "status": true,
  "report": [],
  "message": [
    "No transactions found for scheme XX"
  ]
}

ERROR RESPONSE The request returns JSON structured like below for errors related to pending redemption report

{
  "status": false,
  "errors": {
    "base": [
      "Client/Report date cannot be blank",
      "Scheme cannot be blank",
      "Insufficient parameters"
    ]
  }
}

This endpoint will show pending redemption report.

UAT HTTP Request

POST https://nxt.api.q2pay.co.in/api/reconciliation/pending_redemption_register

PRODUCTION HTTP Request

POST https://nxt.api.q2pay.in/api/reconciliation/pending_redemption_register

Query Parameters

Parameter Default Description Required Sample
client N.A. client name Yes Q2pay
report_date N.A. date of report Yes 13/12/2023
scheme N.A. name of the scheme Yes XX

Service Details

Service ID Description
VReconciliationReport Get pending redemption report

Pending Funding Register

curl -X POST "https://<environmenturl>/api/reconciliation/pending_funding_register"
  -H "X-Api-Key: <your secure token>"
  -H "Content-Type: application/json"
  -d "{
        "client": "XXX",
        "report_date": "00/00/0000",
        "scheme": "XX"
      }"
require 'net/http'
require 'uri'
require 'json'

uri = URI.parse("https://<environmenturl>/api/reconciliation/pending_funding_register") header = {'X-Api-Key' => '<your secure token>', 'Content-Type' => 'application/json'} body ={ "client": "XXX", "report_date": "00/00/0000", "scheme": "XX" } http = Net::HTTP.new(uri.host, uri.port) http.use_ssl = true request = Net::HTTP::POST.new(uri.request_uri, header) request.body = body.to_json response = http.request(request)

const data ={
              "client": "XXX",
              "report_date": "00/00/0000",
              "scheme": "XX"
            };

fetch('https://<environmenturl>/api/reconciliation/pending_funding_register', { method: 'POST', headers: { 'X-Api-Key': '<your secure token>', 'Content-Type': 'application/json' }, body: JSON.stringify(data) }) .then(response => response.json()) .then(data => console.log(data)) .catch(error => console.error(error));

The below example can be sent as a request to the API.

{
  "client": "XXX",
  "report_date": "00/00/0000",
  "scheme": "XX"
}

SUCCESS RESPONSE The request returns JSON structured like below on successful pending funding report


{
  "status": true,
  "scheme": "EF",
  "report_date": "0000-00-00",
  "register": [
    {
      "scheme": "xxxx",
      "investor_folio": "xxxx-xxxx-xxx",
      "amount": "0000.0",
      "funding_date": "0000-00-00"
    },
    {
      "scheme": "xxxx",
      "investor_folio": "xxxx-xxxx-xxx",
      "amount": "0000.0",
      "funding_date": "0000-00-00"
    }
  ]
}

SUCCESS RESPONSE The request returns JSON structured like below on empty pending funding report

{
  "status": true,
  "report": [],
  "message": [
    "No transactions found for scheme XX"
  ]
}

ERROR RESPONSE The request returns JSON structured like below for errors related to pending funding report

{
  "status": false,
  "errors": {
    "base": [
      "Client/Report date cannot be blank",
      "Scheme cannot be blank",
      "Insufficient parameters"
    ]
  }
}

This endpoint will show pending funding report.

UAT HTTP Request

POST https://nxt.api.q2pay.co.in/api/reconciliation/pending_funding_register

PRODUCTION HTTP Request

POST https://nxt.api.q2pay.in/api/reconciliation/pending_funding_register

Query Parameters

Parameter Default Description Required Sample
client N.A. client name Yes Q2pay
report_date N.A. date of report Yes 13/12/2023
scheme N.A. name of the scheme Yes XX

Service Details

Service ID Description
VReconciliationReport Get pending funding report

Negative Redemption Register

curl -X POST "https://<environmenturl>/api/reconciliation/pending_negative_redemption_register"
  -H "X-Api-Key: <your secure token>"
  -H "Content-Type: application/json"
  -d "{
        "client": "XXX",
        "report_date": "00/00/0000",
        "scheme": "XX"
      }"
require 'net/http'
require 'uri'
require 'json'

uri = URI.parse("https://<environmenturl>/api/reconciliation/pending_negative_redemption_register") header = {'X-Api-Key' => '<your secure token>', 'Content-Type' => 'application/json'} body ={ "client": "XXX", "report_date": "00/00/0000", "scheme": "XX" } http = Net::HTTP.new(uri.host, uri.port) http.use_ssl = true request = Net::HTTP::POST.new(uri.request_uri, header) request.body = body.to_json response = http.request(request)

const data ={
              "client": "XXX",
              "report_date": "00/00/0000",
              "scheme": "XX"
            };

fetch('https://<environmenturl>/api/reconciliation/pending_negative_redemption_register', { method: 'POST', headers: { 'X-Api-Key': '<your secure token>', 'Content-Type': 'application/json' }, body: JSON.stringify(data) }) .then(response => response.json()) .then(data => console.log(data)) .catch(error => console.error(error));

The below example can be sent as a request to the API.

{
  "client": "XXX",
  "report_date": "00/00/0000",
  "scheme": "XX"
}

SUCCESS RESPONSE The request returns JSON structured like below on successful pending negative redemption report


{
  "status": true,
  "scheme": "xx",
  "report_date": "0000-00-00",
  "register": [
    {
      "scheme_code": "xxxx",
      "folio_no": "xxxxxxxxx",
      "trades_amount": "0000.00",
      "trade_date_time": "0000-00-00",
      "posted_date": "0000-00-00"
    },
    {
      "scheme_code": "xxxx",
      "folio_no": "xxxxxxxxx",
      "trades_amount": "0000.00",
      "trade_date_time": "0000-00-00",
      "posted_date": "0000-00-00"
    }
  ]
}

SUCCESS RESPONSE The request returns JSON structured like below on empty pending negative redemption report

{
  "status": true,
  "report": [],
  "message": [
    "No transactions found for scheme XX"
  ]
}

ERROR RESPONSE The request returns JSON structured like below for errors related to pending negative redemption report

{
  "status": false,
  "errors": {
    "base": [
      "Client/Report date cannot be blank",
      "Scheme cannot be blank",
      "Insufficient parameters"
    ]
  }
}

This endpoint will show pending negative redemption report.

UAT HTTP Request

POST https://nxt.api.q2pay.co.in/api/reconciliation/pending_negative_redemption_register

PRODUCTION HTTP Request

POST https://nxt.api.q2pay.in/api/reconciliation/pending_negative_redemption_register

Query Parameters

Parameter Default Description Required Sample
client N.A. client name Yes Q2pay
report_date N.A. date of report Yes 13/12/2023
scheme N.A. name of the scheme Yes XX

Service Details

Service ID Description
VReconciliationReport Get pending redemption exceptions report

Redemption Posting Register

curl -X POST "https://<environmenturl>/api/reconciliation/redemption_posting_exceptions_register"
  -H "X-Api-Key: <your secure token>"
  -H "Content-Type: application/json"
  -d "{
        "client": "XXX",
        "report_date": "00/00/0000",
        "scheme": "XX"
      }"
require 'net/http'
require 'uri'
require 'json'

uri = URI.parse("https://<environmenturl>/api/reconciliation/redemption_posting_exceptions_register") header = {'X-Api-Key' => '<your secure token>', 'Content-Type' => 'application/json'} body ={ "client": "XXX", "report_date": "00/00/0000", "scheme": "XX" } http = Net::HTTP.new(uri.host, uri.port) http.use_ssl = true request = Net::HTTP::POST.new(uri.request_uri, header) request.body = body.to_json response = http.request(request)

const data ={
              "client": "XXX",
              "report_date": "00/00/0000",
              "scheme": "XX"
            };

fetch('https://<environmenturl>/api/reconciliation/redemption_posting_exceptions_register', { method: 'POST', headers: { 'X-Api-Key': '<your secure token>', 'Content-Type': 'application/json' }, body: JSON.stringify(data) }) .then(response => response.json()) .then(data => console.log(data)) .catch(error => console.error(error));

The below example can be sent as a request to the API.

{
  "client": "XXX",
  "report_date": "00/00/0000",
  "scheme": "XX"
}

SUCCESS RESPONSE The request returns JSON structured like below on successful redemption posting report


{
  "status": true,
  "scheme": "xx",
  "report_date": "0000-00-00",
  "register": [
    {
      "scheme_code": "xxxx",
      "folio_no": "xxxxxxxxxx",
      "trades_amount": "000.00",
      "trade_date_time": "0000-00-00",
      "posted_date": "0000-00-00"
    },
    {
      "scheme_code": "xxxx",
      "folio_no": "xxxxxxxxxx",
      "trades_amount": "000.00",
      "trade_date_time": "0000-00-00",
      "posted_date": "0000-00-00"
    }
  ]
}

SUCCESS RESPONSE The request returns JSON structured like below on empty redemption posting report

{
  "status": true,
  "report": [],
  "message": [
    "No transactions found for scheme XX"
  ]
}

ERROR RESPONSE The request returns JSON structured like below for errors related to redemption posting report

{
  "status": false,
  "errors": {
    "base": [
      "Client/Report date cannot be blank",
      "Scheme cannot be blank",
      "Insufficient parameters"
    ]
  }
}

This endpoint will show Redemption posting report.

UAT HTTP Request

POST https://nxt.api.q2pay.co.in/api/reconciliation/redemption_posting_exceptions_register

PRODUCTION HTTP Request

POST https://nxt.api.q2pay.in/api/reconciliation/redemption_posting_exceptions_register

Query Parameters

Parameter Default Description Required Sample
client N.A. client name Yes Q2pay
report_date N.A. date of report Yes 13/12/2023
scheme N.A. name of the scheme Yes XX

Service Details

Service ID Description
VReconciliationReport Get redemption posting exceptions report

Reconciliation Upload

Reconciliation Upload

curl -X POST "https://<environmenturl>/api/reconciliations/upload"
  -H "X-Api-Key: <your secure token>"
  -H "Content-Type: application/json"
  -d "{
    "client": "Q2pay",
    "owner_account_ids": ["a1f2c3d4-5678-490a-9123-456789abcdef","fafaef-5678-490a-9123efaf-456789abcdef"],,
    "uploaded_file_data": {
        "id": "ca75c5ce08935b8459e649d16365eed4.xlsx",
        "storage": "cache",
        "metadata": {
            "filename": "026883000000545.xlsx",
            "size": 26620,
            "mime_type": "application/xlsx"
        }
    }
}"
require 'net/http'
require 'uri'
require 'json'

uri = URI.parse("https://<environmenturl>/api/reconciliations/upload") header = {'X-Api-Key' => '<your secure token>', 'Content-Type' => 'application/json'} body = { "client": "Q2pay", "owner_account_ids": ["a1f2c3d4-5678-490a-9123-456789abcdef","fafaef-5678-490a-9123efaf-456789abcdef"],, "uploaded_file_data": { "id": "ca75c5ce08935b8459e649d16365eed4.xlsx", "storage": "cache", "metadata": { "filename": "026883000000545.xlsx", "size": 26620, "mime_type": "application/xlsx" } } } http = Net::HTTP.new(uri.host, uri.port) http.use_ssl = true request = Net::HTTP::Post.new(uri.request_uri, header) request.body = body.to_json response = http.request(request)

const data = {
    "client": "Q2pay",
    "owner_account_ids": ["a1f2c3d4-5678-490a-9123-456789abcdef","fafaef-5678-490a-9123efaf-456789abcdef"],,
    "uploaded_file_data": {
        "id": "ca75c5ce08935b8459e649d16365eed4.xlsx",
        "storage": "cache",
        "metadata": {
            "filename": "026883000000545.xlsx",
            "size": 26620,
            "mime_type": "application/xlsx"
        }
    }
};

fetch('https://<environmenturl>/api/reconciliations/upload', { method: 'POST', headers: { 'X-Api-Key': '<your secure token>', 'Content-Type': 'application/json' }, body: JSON.stringify(data) }) .then(response => response.json()) .then(data => console.log(data)) .catch(error => console.error(error));

The below example can be sent as a request to the API.

{
    "client": "Q2pay",
    "owner_account_ids": ["a1f2c3d4-5678-490a-9123-456789abcdef","fafaef-5678-490a-9123efaf-456789abcdef"],,
    "uploaded_file_data": {
        "id": "ca75c5ce08935b8459e649d16365eed4.xlsx",
        "storage": "cache",
        "metadata": {
            "filename": "026883000000545.xlsx",
            "size": 26620,
            "mime_type": "application/xlsx"
        }
    }
}

SUCCESS RESPONSE The request returns JSON structured like below on successful reconciliations upload

{
  "status": true, 
  "message": "reconciliations recon uploaded successfully"
}

ERROR RESPONSE The request returns JSON structured like below for errors related reconciliations upload

{
    "status": false, 
    "errors": {
        "base": [
                    "Missing required fields: owner_account_ids",
                    "Missing required fields: uploaded_file_data",
                    "Owner Account not present" 
                ]

} }

This endpoint creates a reconciliations upload.

UAT HTTP Request

POST https://nxt.api.q2pay.co.in/api/reconciliations/upload

PRODUCTION HTTP Request

POST https://nxt.api.q2pay.in/api/reconciliations/upload

Query Parameters

Parameter Default Description Required Sample
client Q2pay client name N.A q2pay
owner_account_ids N.A owner account ids upload Yes ["234242-23134sdad-11aaa", "3423as-234525s-2342as"]
uploaded_file_data N.A Upload file data of reconciliations upload Yes { "id":"ca75c5ce08935b8459e649d16365eed4.xlsx", "storage":"cache","metadata": {"filename":"026883000000545.xlsx","size":26620,"mime_type":"application/xlsx" }}

Service Details

Service ID Description
CReconsilationUpload To Upload Reconsilations Files

Standard Reconciliation

Reconciliation Report List helps users view all reports and perform forced matching.

Standard Summary Report

curl -X GET "https://<environmenturl>/api/reconciliation/recon_summary"
  -H "X-Api-Key: <your secure token>"
  -H "Content-Type: application/json"
  -d "{
  "start_date": "15/08/2023",
  "end_date": "30/08/2023"
}"
require 'net/http'
require 'uri'
require 'json'

uri = URI.parse("https://<environmenturl>/api/reconciliation/recon_summary") header = {'X-Api-Key' => '<your secure token>', 'Content-Type' => 'application/json'} body = { "start_date": "15/08/2023", "end_date": "30/08/2023" } http = Net::HTTP.new(uri.host, uri.port) http.use_ssl = true request = Net::HTTP::GET.new(uri.request_uri, header) request.body = body.to_json response = http.request(request)

const data = {
  "start_date": "15/08/2023",
  "end_date": "30/08/2023"
};

fetch('https://<environmenturl>/api/reconciliation/recon_summary', { method: 'GET', headers: { 'X-Api-Key': '<your secure token>', 'Content-Type': 'application/json' }, body: JSON.stringify(data) }) .then(response => response.json()) .then(data => console.log(data)) .catch(error => console.error(error));

The below example can be sent as a request to the API.

{
  "start_date": "15/08/2023",
  "end_date": "30/08/2023"
}

SUCCESS RESPONSE The request returns JSON structured like below on successful summary report

{"status":true,
 "summary":
  {"total_payable_entries":32,
   "total_payable_amount":"193500.0",
   "total_matched_payable_entries":30,
   "total_matched_payable_amount":"193500.0",
   "total_unmatched_payable_entries":2,
   "total_unmatched_payable_amount":"0.0",
   "total_forcefully_matched_payable_entries":0,
   "total_forcefully_matched_payable_amount":"0.0",
   "total_receivable_entries":30,
   "total_receivable_amount":"163500.0",
   "total_matched_receivable_entries":30,
   "total_matched_receivable_amount":"163500.0",
   "total_unmatched_receivable_entries":0,
   "total_unmatched_receivable_amount":"0.0",
   "total_forcefully_matched_receivable_entries":0,
   "total_forcefully_matched_receivable_amount":"0.0"}}

ERROR RESPONSE The request returns JSON structured like below for error related to missing X-Api-Key in headers

{
  "status": false,
  "errors": {
    "base": [
     "Something went wrong. Please try again later."
    ]
  }
}

This endpoint will show Summary Report.

UAT HTTP Request

GET https://nxt.api.q2pay.co.in/api/reconciliation/recon_summary

PRODUCTION HTTP Request

GET https://nxt.api.q2pay.in/api/reconciliation/recon_summary

Query Parameters

Parameter Default Description Required Sample
start_date, end_date N.A. If the start date and end date parameters are not provided, it will fetch data for the last 1 day. optional "15/08/2023","30/08/2023"

Service Details

Service ID Description
VReconciliationReport Get Summary Report

Standard Bank Statement Unmatched Entries

curl -X GET "https://<environmenturl>/api/reconciliation/bank_statements/unmatched_entries"
  -H "X-Api-Key: <your secure token>"
  -H "Content-Type: application/json"
  -d "{
  "start_date": "15/08/2023",
  "end_date": "30/08/2023"
}"
require 'net/http'
require 'uri'
require 'json'

uri = URI.parse("https://<environmenturl>/api/reconciliation/bank_statements/unmatched_entries") header = {'X-Api-Key' => '<your secure token>', 'Content-Type' => 'application/json'} body = { "start_date": "15/08/2023", "end_date": "30/08/2023" } http = Net::HTTP.new(uri.host, uri.port) http.use_ssl = true request = Net::HTTP::GET.new(uri.request_uri, header) request.body = body.to_json response = http.request(request)

const data = {
  "start_date": "15/08/2023",
  "end_date": "30/08/2023"
};

fetch('https://<environmenturl>/api/reconciliation/bank_statements/unmatched_entries', { method: 'GET', headers: { 'X-Api-Key': '<your secure token>', 'Content-Type': 'application/json' }, body: JSON.stringify(data) }) .then(response => response.json()) .then(data => console.log(data)) .catch(error => console.error(error));

The below example can be sent as a request to the API.

{
  "start_date": "15/08/2023",
  "end_date": "30/08/2023"
}

SUCCESS RESPONSE The request returns JSON structured like below on successful bank statement unmatched entries

{
  "status": true,
  "bank_statements": [
    {
      "id":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
      "narration": "Payment 29",
      "customer_name": "Bob 29",
      "ifsc_code": "ICIC2029",
      "bank_reference": null,
      "date": "2025-07-27",
      "credit_debit": "debit",
      "amount": "6900.0"
    },
    {
      "id":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
      "narration": "Payment 28",
      "customer_name": "Bob 28",
      "ifsc_code": "ICIC2028",
      "bank_reference": null,
      "date": "2025-07-28",
      "credit_debit": "credit",
      "amount": "6800.0"
    },
    {
      "id":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
      "narration": "Payment 27",
      "customer_name": "Bob 27",
      "ifsc_code": "ICIC2027",
      "bank_reference": null,
      "date": "2025-07-29",
      "credit_debit": "credit",
      "amount": "6700.0"
    },
    {
      "id":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
      "narration": "Payment 26",
      "customer_name": "Bob 26",
      "ifsc_code": "ICIC2026",
      "bank_reference": null,
      "date": "2025-07-30",
      "credit_debit": "debit",
      "amount": "6600.0"
    }
  ]
}

ERROR RESPONSE The request returns JSON structured like below for error related to missing X-Api-Key in headers

{
  "status": false,
  "errors": {
    "base": [
     "Something went wrong. Please try again later.",
     "Records not found"
    ]
  }
}

This endpoint will show bank statement unmatched entries.

UAT HTTP Request

GET https://nxt.api.q2pay.co.in/api/reconciliation/bank_statements/unmatched_entries

PRODUCTION HTTP Request

GET https://nxt.api.q2pay.in/api/reconciliation/bank_statements/unmatched_entries

Query Parameters

Parameter Default Description Required Sample
start_date, end_date N.A. If the start date and end date parameters are not provided, it will fetch data for the last 1 day. optional "15/08/2023","30/08/2023"

Service Details

Service ID Description
VReconciliationUnmatched Get bank statement unmatched entries

Standard Payable Receivable Unmatched Entries

curl -X GET "https://<environmenturl>/api/reconciliation/unmatched_entries"
  -H "X-Api-Key: <your secure token>"
  -H "Content-Type: application/json"
  -d "{
  "start_date": "15/08/2023",
  "end_date": "30/08/2023"
}"
require 'net/http'
require 'uri'
require 'json'

uri = URI.parse("https://<environmenturl>/api/reconciliation/unmatched_entries") header = {'X-Api-Key' => '<your secure token>', 'Content-Type' => 'application/json'} body = { "start_date": "15/08/2023", "end_date": "30/08/2023" } http = Net::HTTP.new(uri.host, uri.port) http.use_ssl = true request = Net::HTTP::GET.new(uri.request_uri, header) request.body = body.to_json response = http.request(request)

const data = {
  "start_date": "15/08/2023",
  "end_date": "30/08/2023"
};

fetch('https://<environmenturl>/api/reconciliation/unmatched_entries', { method: 'GET', headers: { 'X-Api-Key': '<your secure token>', 'Content-Type': 'application/json' }, body: JSON.stringify(data) }) .then(response => response.json()) .then(data => console.log(data)) .catch(error => console.error(error));

The below example can be sent as a request to the API.

{
  "start_date": "15/08/2023",
  "end_date": "30/08/2023"
}

SUCCESS RESPONSE The request returns JSON structured like below on successful payable/receivable unmatched entries

{
  "status": true,
  "payable_receivable": [
    {
      "id":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
      "invoice": "UTR12345707",
      "date": "2025-07-27",
      "account_no": "ACC1029",
      "beneficiary_name": "John Doe 29",
      "bank_name": "HDFC Bank",
      "credit_debit": "debit",
      "amount": "7900.0"
    },
    {
      "id":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
      "invoice": "UTR12345706",
      "date": "2025-07-28",
      "account_no": "ACC1028",
      "beneficiary_name": "John Doe 28",
      "bank_name": "HDFC Bank",
      "credit_debit": "credit",
      "amount": "7800.0"
    },
    {
      "id":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
      "invoice": "UTR12345705",
      "date": "2025-07-29",
      "account_no": "ACC1027",
      "beneficiary_name": "John Doe 27",
      "bank_name": "HDFC Bank",
      "credit_debit": "credit",
      "amount": "7700.0"
    }
  ]
}

ERROR RESPONSE The request returns JSON structured like below for error related to missing X-Api-Key in headers

{
  "status": false,
  "errors": {
    "base": [
     "Something went wrong. Please try again later.",
     "Records not found"
    ]
  }
}

This endpoint will show payable/receivable unmatched entries.

UAT HTTP Request

GET https://nxt.api.q2pay.co.in/api/reconciliation/unmatched_entries

PRODUCTION HTTP Request

GET https://nxt.api.q2pay.in/api/reconciliation/unmatched_entries

Query Parameters

Parameter Default Description Required Sample
start_date, end_date N.A. If the start date and end date parameters are not provided, it will fetch data for the last 1 day. optional "15/08/2023","30/08/2023"

Service Details

Service ID Description
VReconciliationUnmatched Get payable/receivable unmatched entries

Standard Bank Statement Matched Entries

curl -X GET "https://<environmenturl>/api/reconciliation/bank_statements/matched_entries"
  -H "X-Api-Key: <your secure token>"
  -H "Content-Type: application/json"
  -d "{
  "start_date": "15/08/2023",
  "end_date": "30/08/2023"
}"
require 'net/http'
require 'uri'
require 'json'

uri = URI.parse("https://<environmenturl>/api/reconciliation/bank_statements/matched_entries") header = {'X-Api-Key' => '<your secure token>', 'Content-Type' => 'application/json'} body = { "start_date": "15/08/2023", "end_date": "30/08/2023" } http = Net::HTTP.new(uri.host, uri.port) http.use_ssl = true request = Net::HTTP::GET.new(uri.request_uri, header) request.body = body.to_json response = http.request(request)

const data = {
  "start_date": "15/08/2023",
  "end_date": "30/08/2023"
};

fetch('https://<environmenturl>/api/reconciliation/bank_statements/matched_entries', { method: 'GET', headers: { 'X-Api-Key': '<your secure token>', 'Content-Type': 'application/json' }, body: JSON.stringify(data) }) .then(response => response.json()) .then(data => console.log(data)) .catch(error => console.error(error));

The below example can be sent as a request to the API.

{
  "start_date": "15/08/2023",
  "end_date": "30/08/2023"
}

SUCCESS RESPONSE The request returns JSON structured like below on successful bank statement matched entries

{
  "status": true,
  "bank_statements": [
    {
      "id":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
      "narration": "Payment 29",
      "customer_name": "Bob 29",
      "ifsc_code": "ICIC2029",
      "bank_reference": "wqffw89779fwf",
      "date": "2025-07-27",
      "credit_debit": "debit",
      "amount": "6900.0"
    },
    {
      "id":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
      "narration": "Payment 28",
      "customer_name": "Bob 28",
      "ifsc_code": "ICIC2028",
      "bank_reference": "wqffw89779fwf",
      "date": "2025-07-28",
      "credit_debit": "credit",
      "amount": "6800.0"
    },
    {
      "id":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
      "narration": "Payment 27",
      "customer_name": "Bob 27",
      "ifsc_code": "ICIC2027",
      "bank_reference": "wqffw89779fwf",
      "date": "2025-07-29",
      "credit_debit": "credit",
      "amount": "6700.0"
    },
    {
      "id":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
      "narration": "Payment 26",
      "customer_name": "Bob 26",
      "ifsc_code": "ICIC2026",
      "bank_reference": "wqffw89779fwf",
      "date": "2025-07-30",
      "credit_debit": "debit",
      "amount": "6600.0"
    }
  ]
}

ERROR RESPONSE The request returns JSON structured like below for error related to missing X-Api-Key in headers

{
  "status": false,
  "errors": {
    "base": [
     "Something went wrong. Please try again later.",
     "Records not found"
    ]
  }
}

This endpoint will show bank statement matched entries.

UAT HTTP Request

GET https://nxt.api.q2pay.co.in/api/reconciliation/bank_statements/matched_entries

PRODUCTION HTTP Request

GET https://nxt.api.q2pay.in/api/reconciliation/bank_statements/matched_entries

Query Parameters

Parameter Default Description Required Sample
start_date, end_date N.A. If the start date and end date parameters are not provided, it will fetch data for the last 1 day. optional "15/08/2023","30/08/2023"

Service Details

Service ID Description
VReconciliationMatched Get bank statement matched entries

Standard Payable Receivable Matched Entries

curl -X GET "https://<environmenturl>/api/reconciliation/matched_entries"
  -H "X-Api-Key: <your secure token>"
  -H "Content-Type: application/json"
  -d "{
  "start_date": "15/08/2023",
  "end_date": "30/08/2023"
}"
require 'net/http'
require 'uri'
require 'json'

uri = URI.parse("https://<environmenturl>/api/reconciliation/matched_entries") header = {'X-Api-Key' => '<your secure token>', 'Content-Type' => 'application/json'} body = { "start_date": "15/08/2023", "end_date": "30/08/2023" } http = Net::HTTP.new(uri.host, uri.port) http.use_ssl = true request = Net::HTTP::GET.new(uri.request_uri, header) request.body = body.to_json response = http.request(request)

const data = {
  "start_date": "15/08/2023",
  "end_date": "30/08/2023"
};

fetch('https://<environmenturl>/api/reconciliation/matched_entries', { method: 'GET', headers: { 'X-Api-Key': '<your secure token>', 'Content-Type': 'application/json' }, body: JSON.stringify(data) }) .then(response => response.json()) .then(data => console.log(data)) .catch(error => console.error(error));

The below example can be sent as a request to the API.

{
  "start_date": "15/08/2023",
  "end_date": "30/08/2023"
}

SUCCESS RESPONSE The request returns JSON structured like below on successful payable/receivable matched entries

{
  "status": true,
  "payable_receivable": [
    {
      "id":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
      "invoice": "UTR12345707",
      "date": "2025-07-27",
      "account_no": "ACC1029",
      "beneficiary_name": "John Doe 29",
      "bank_name": "HDFC Bank",
      "credit_debit": "debit",
      "amount": "7900.0"
    },
    {
      "id":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
      "invoice": "UTR12345706",
      "date": "2025-07-28",
      "account_no": "ACC1028",
      "beneficiary_name": "John Doe 28",
      "bank_name": "HDFC Bank",
      "credit_debit": "credit",
      "amount": "7800.0"
    },
    {
      "id":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
      "invoice": "UTR12345705",
      "date": "2025-07-29",
      "account_no": "ACC1027",
      "beneficiary_name": "John Doe 27",
      "bank_name": "HDFC Bank",
      "credit_debit": "credit",
      "amount": "7700.0"
    }
  ]
}

ERROR RESPONSE The request returns JSON structured like below for error related to missing X-Api-Key in headers

{
  "status": false,
  "errors": {
    "base": [
     "Something went wrong. Please try again later.",
     "Records not found"
    ]
  }
}

This endpoint will show payable/receivable matched entries.

UAT HTTP Request

GET https://nxt.api.q2pay.co.in/api/reconciliation/matched_entries

PRODUCTION HTTP Request

GET https://nxt.api.q2pay.in/api/reconciliation/matched_entries

Query Parameters

Parameter Default Description Required Sample
start_date, end_date N.A. If the start date and end date parameters are not provided, it will fetch data for the last 1 day. optional "15/08/2023","30/08/2023"

Service Details

Service ID Description
VReconciliationMatched Get payable/receivable matched entries

Forcefully Matched

curl -X POST "https://<environmenturl>/api/reconciliation/forcefully/matched"
  -H "X-Api-Key: <your secure token>"
  -H "Content-Type: application/json"
  -d "{
  "bank_statements": ["a1f2c3d4-5678-490a-9123-456789abcdef","fafaef-5678-490a-9123efaf-456789abcdef"],
  "receivable_payable": ["a1f2c3d4-5678-490a-9123-456789abcdef","fafaef-5678-490a-9123efaf-456789abcdef"]
}"
require 'net/http'
require 'uri'
require 'json'

uri = URI.parse("https://<environmenturl>/api/reconciliation/forcefully/matched") header = {'X-Api-Key' => '<your secure token>', 'Content-Type' => 'application/json'} body = { "bank_statements": ["a1f2c3d4-5678-490a-9123-456789abcdef","fafaef-5678-490a-9123efaf-456789abcdef"], "receivable_payable": ["a1f2c3d4-5678-490a-9123-456789abcdef","fafaef-5678-490a-9123efaf-456789abcdef"] } http = Net::HTTP.new(uri.host, uri.port) http.use_ssl = true request = Net::HTTP::POST.new(uri.request_uri, header) request.body = body.to_json response = http.request(request)

const data = {
  "bank_statements": ["a1f2c3d4-5678-490a-9123-456789abcdef","fafaef-5678-490a-9123efaf-456789abcdef"],
  "receivable_payable": ["a1f2c3d4-5678-490a-9123-456789abcdef","fafaef-5678-490a-9123efaf-456789abcdef"]
};

fetch('https://<environmenturl>/api/reconciliation/forcefully/matched', { method: 'POST', headers: { 'X-Api-Key': '<your secure token>', 'Content-Type': 'application/json' }, body: JSON.stringify(data) }) .then(response => response.json()) .then(data => console.log(data)) .catch(error => console.error(error));

The below example can be sent as a request to the API.

{
  "bank_statements": ["a1f2c3d4-5678-490a-9123-456789abcdef","fafaef-5678-490a-9123efaf-456789abcdef"],
  "receivable_payable": ["a1f2c3d4-5678-490a-9123-456789abcdef","fafaef-5678-490a-9123efaf-456789abcdef"]
}

SUCCESS RESPONSE The request returns JSON structured like below on successful forcefully matched entries

  {
  "status": true,
  "message": "Force match successful for all entries."
}

ERROR RESPONSE The request returns JSON structured like below for error related to missing X-Api-Key in headers

{
  "status": false,
  "errors": {
    "base": [
     "One or more entries not found. Force match aborted.",
     "bank statements and receivable/payable cannot be empty"
    ]
  }
}

This endpoint will show forcefully unmatched entries.

UAT HTTP Request

POST https://nxt.api.q2pay.co.in/api/reconciliation/forcefully/matched

PRODUCTION HTTP Request

POST https://nxt.api.q2pay.in/api/reconciliation/forcefully/matched

Query Parameters

Parameter Default Description Required Sample
bank_statements N.A. List of UUIDs representing bank statement entries to be matched. YES ["a1f2c3d4-5678-490a-9123-456789abcdef","fafaef-5678-490a-9123efaf-456789abcdef"]
receivable_payable N.A. List of UUIDs representing receivable/payable entries to be matched. YES ["a1f2c3d4-5678-490a-9123-456789abcdef","fafaef-5678-490a-9123efaf-456789abcdef"]

Service Details

Service ID Description
ReconciliationMatched forcefully matched entries

Standard Bank Statement Forcefully Matched Entries

curl -X GET "https://<environmenturl>/api/reconciliation/bank_statements/forcefully_matched_entries"
  -H "X-Api-Key: <your secure token>"
  -H "Content-Type: application/json"
  -d "{
  "start_date": "15/08/2023",
  "end_date": "30/08/2023"
}"
require 'net/http'
require 'uri'
require 'json'

uri = URI.parse("https://<environmenturl>/api/reconciliation/bank_statements/forcefully_matched_entries") header = {'X-Api-Key' => '<your secure token>', 'Content-Type' => 'application/json'} body = { "start_date": "15/08/2023", "end_date": "30/08/2023" } http = Net::HTTP.new(uri.host, uri.port) http.use_ssl = true request = Net::HTTP::GET.new(uri.request_uri, header) request.body = body.to_json response = http.request(request)

const data = {
  "start_date": "15/08/2023",
  "end_date": "30/08/2023"
};

fetch('https://<environmenturl>/api/reconciliation/bank_statements/forcefully_matched_entries', { method: 'GET', headers: { 'X-Api-Key': '<your secure token>', 'Content-Type': 'application/json' }, body: JSON.stringify(data) }) .then(response => response.json()) .then(data => console.log(data)) .catch(error => console.error(error));

The below example can be sent as a request to the API.

{
  "start_date": "15/08/2023",
  "end_date": "30/08/2023"
}

SUCCESS RESPONSE The request returns JSON structured like below on successful bank statement forcefully matched entries

{
  "status": true,
  "bank_statements": [
    {
      "id":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
      "narration": "Payment 29",
      "customer_name": "Bob 29",
      "ifsc_code": "ICIC2029",
      "bank_reference": "wqffw89779fwf",
      "date": "2025-07-27",
      "credit_debit": "debit",
      "amount": "6900.0"
    },
    {
      "id":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
      "narration": "Payment 28",
      "customer_name": "Bob 28",
      "ifsc_code": "ICIC2028",
      "bank_reference": "wqffw89779fwf",
      "date": "2025-07-28",
      "credit_debit": "credit",
      "amount": "6800.0"
    },
    {
      "id":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
      "narration": "Payment 27",
      "customer_name": "Bob 27",
      "ifsc_code": "ICIC2027",
      "bank_reference": "wqffw89779fwf",
      "date": "2025-07-29",
      "credit_debit": "credit",
      "amount": "6700.0"
    },
    {
      "id":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
      "narration": "Payment 26",
      "customer_name": "Bob 26",
      "ifsc_code": "ICIC2026",
      "bank_reference": "wqffw89779fwf",
      "date": "2025-07-30",
      "credit_debit": "debit",
      "amount": "6600.0"
    }
  ]
}

ERROR RESPONSE The request returns JSON structured like below for error related to missing X-Api-Key in headers

{
  "status": false,
  "errors": {
    "base": [
     "Something went wrong. Please try again later.",
     "Records not found"
    ]
  }
}

This endpoint will show bank statement matched entries.

UAT HTTP Request

GET https://nxt.api.q2pay.co.in/api/reconciliation/bank_statements/forcefully_matched_entries

PRODUCTION HTTP Request

GET https://nxt.api.q2pay.in/api/reconciliation/bank_statements/forcefully_matched_entries

Query Parameters

Parameter Default Description Required Sample
start_date, end_date N.A. If the start date and end date parameters are not provided, it will fetch data for the last 1 day. optional "15/08/2023","30/08/2023"

Service Details

Service ID Description
VReconciliationMatched Get bank statement forcefully matched entries

Standard Payable Receivable Forcefully Matched Entries

curl -X GET "https://<environmenturl>/api/reconciliation/forcefully_matched_entries"
  -H "X-Api-Key: <your secure token>"
  -H "Content-Type: application/json"
  -d "{
  "start_date": "15/08/2023",
  "end_date": "30/08/2023"
}"
require 'net/http'
require 'uri'
require 'json'

uri = URI.parse("https://<environmenturl>/api/reconciliation/forcefully_matched_entries") header = {'X-Api-Key' => '<your secure token>', 'Content-Type' => 'application/json'} body = { "start_date": "15/08/2023", "end_date": "30/08/2023" } http = Net::HTTP.new(uri.host, uri.port) http.use_ssl = true request = Net::HTTP::GET.new(uri.request_uri, header) request.body = body.to_json response = http.request(request)

const data = {
  "start_date": "15/08/2023",
  "end_date": "30/08/2023"
};

fetch('https://<environmenturl>/api/reconciliation/forcefully_matched_entries', { method: 'GET', headers: { 'X-Api-Key': '<your secure token>', 'Content-Type': 'application/json' }, body: JSON.stringify(data) }) .then(response => response.json()) .then(data => console.log(data)) .catch(error => console.error(error));

The below example can be sent as a request to the API.

{
  "start_date": "15/08/2023",
  "end_date": "30/08/2023"
}

SUCCESS RESPONSE The request returns JSON structured like below on successful payable/receivable forcefully matched entries

{
  "status": true,
  "payable_receivable": [
    {
      "id":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
      "invoice": "UTR12345707",
      "date": "2025-07-27",
      "account_no": "ACC1029",
      "beneficiary_name": "John Doe 29",
      "bank_name": "HDFC Bank",
      "credit_debit": "debit",
      "amount": "7900.0"
    },
    {
      "id":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
      "invoice": "UTR12345706",
      "date": "2025-07-28",
      "account_no": "ACC1028",
      "beneficiary_name": "John Doe 28",
      "bank_name": "HDFC Bank",
      "credit_debit": "credit",
      "amount": "7800.0"
    },
    {
      "id":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
      "invoice": "UTR12345705",
      "date": "2025-07-29",
      "account_no": "ACC1027",
      "beneficiary_name": "John Doe 27",
      "bank_name": "HDFC Bank",
      "credit_debit": "credit",
      "amount": "7700.0"
    }
  ]
}

ERROR RESPONSE The request returns JSON structured like below for error related to missing X-Api-Key in headers

{
  "status": false,
  "errors": {
    "base": [
     "Something went wrong. Please try again later.",
     "Records not found"
    ]
  }
}

This endpoint will show payable/receivable matched entries.

UAT HTTP Request

GET https://nxt.api.q2pay.co.in/api/reconciliation/forcefully_matched_entries

PRODUCTION HTTP Request

GET https://nxt.api.q2pay.in/api/reconciliation/forcefully_matched_entries

Query Parameters

Parameter Default Description Required Sample
start_date, end_date N.A. If the start date and end date parameters are not provided, it will fetch data for the last 1 day. optional "15/08/2023","30/08/2023"

Service Details

Service ID Description
VReconciliationMatched Get payable/receivable forcefully matched entries

Reconciliation Uploaded Status

curl -X GET "https://<environmenturl>/api/reconciliation/uploaded_status"
  -H "X-Api-Key: <your secure token>"
  -H "Content-Type: application/json"
  -d "{
   "start_date": "15/08/2023",
  "end_date": "30/08/2023"
}"
require 'net/http'
require 'uri'
require 'json'

uri = URI.parse("https://<environmenturl>/api/reconciliation/uploaded_status") header = {'X-Api-Key' => '<your secure token>', 'Content-Type' => 'application/json'} body = { "start_date": "15/08/2023", "end_date": "30/08/2023" } http = Net::HTTP.new(uri.host, uri.port) http.use_ssl = true request = Net::HTTP::GET.new(uri.request_uri, header) request.body = body.to_json response = http.request(request)

const data = {
   "start_date": "15/08/2023",
  "end_date": "30/08/2023"
};

fetch('https://<environmenturl>/api/reconciliation/uploaded_status', { method: 'GET', headers: { 'X-Api-Key': '<your secure token>', 'Content-Type': 'application/json' }, body: JSON.stringify(data) }) .then(response => response.json()) .then(data => console.log(data)) .catch(error => console.error(error));

The below example can be sent as a request to the API.

{
  "start_date": "15/08/2023",
  "end_date": "30/08/2023"
}

SUCCESS RESPONSE The request returns a JSON response structured as shown below for successfully uploaded status.

 {
  "status": true,
  "summary": [
    {
      "user_name": "John Doe",
      "processed": false,
      "processed_at": "15-09-2025"
    },
    {
      "user_name": "John Doe",
      "processed": true,
      "processed_at": "16-09-2025"
    }
  ]
}

ERROR RESPONSE The request returns JSON structured like below for error related to missing X-Api-Key in headers

{
  "status": false,
  "errors": {
    "base": [
     "An error occurred while loading the uploaded summary.",
     "No data found for the given date range: 15-09-2025 to 20-09-2025"
    ]
  }
}

This endpoint will show Uploaded files Status.

UAT HTTP Request

GET https://nxt.api.q2pay.co.in/api/reconciliation/uploaded_status

PRODUCTION HTTP Request

GET https://nxt.api.q2pay.in/api/reconciliation/uploaded_status

Query Parameters

Parameter Default Description Required Sample
start_date, end_date N.A. If the start date and end date parameters are not provided, it will fetch data for the last 1 day. optional "15/08/2023","30/08/2023"

Service Details

Service ID Description
ReconciliationStatus Uploaded files Status

Summary Report Download

curl -X PUT "https://<environmenturl>/api/reconciliation/summary_report_download.:format"
  -H "X-Api-Key: <your secure token>"
  -H "Content-Type: application/json"
  -d "{
   "start_date": "15/08/2023",
  "end_date": "30/08/2023"
}"
require 'net/http'
require 'uri'
require 'json'

uri = URI.parse("https://<environmenturl>/api/reconciliation/summary_report_download.:format") header = {'X-Api-Key' => '<your secure token>', 'Content-Type' => 'application/json'} body = { "start_date": "15/08/2023", "end_date": "30/08/2023" } http = Net::HTTP.new(uri.host, uri.port) http.use_ssl = true request = Net::HTTP::PUT.new(uri.request_uri, header) request.body = body.to_json response = http.request(request)

const data = {
   "start_date": "15/08/2023",
  "end_date": "30/08/2023"
};

fetch('https://<environmenturl>/api/reconciliation/summary_report_download.:format', { method: 'PUT', headers: { 'X-Api-Key': '<your secure token>', 'Content-Type': 'application/json' }, body: JSON.stringify(data) }) .then(response => response.json()) .then(data => console.log(data)) .catch(error => console.error(error));

The below example can be sent as a request to the API.

{
  "start_date": "15/08/2023",
  "end_date": "30/08/2023"
}

SUCCESS RESPONSE The request returns a JSON response structured as shown below for summary report download.

{
   "status": 200 
}

ERROR RESPONSE The request returns JSON structured like below for error related to missing X-Api-Key in headers

{
  "status": false,
  "errors": {
    "base": [
     "Unsupported format requested. Please use PDF and XLSX.",
     "Failed to generate reconciliation report.",
     "Required parameters start_date and end_date are missing."
    ]
  }
}

This endpoint will summary report download.

UAT HTTP Request

PUT https://nxt.api.q2pay.co.in/api/reconciliation/summary_report_download.:format

PRODUCTION HTTP Request

PUT https://nxt.api.q2pay.in/api/reconciliation/summary_report_download.:format

Query Parameters

Parameter Default Description Required Sample
start_date, end_date N.A Start date & End date for fetching data. Must be provided. Yes "15/08/2023","30/08/2023"

Service Details

Service ID Description
VReconciliationReport Summary Report Download

Api Banking Credential

Api Banking Credential helps you to create,update & manage credentials.

Create Api Banking Credential

curl -X POST "https://<environmenturl>/api/api_banking_credentials"
  -H "X-Api-Key: <your secure token>"
  -H "Content-Type: application/json"
  -d "{
    "entity_id": "Q581",
    "bank": "XXXX Bank",
    "environment": "Testing",
    "credential_store_id": "1",
    "credentials": {}
}"
require 'net/http'
require 'uri'
require 'json'

uri = URI.parse("https://<environmenturl>/api/api_banking_credentials") header = {'X-Api-Key' => '<your secure token>', 'Content-Type' => 'application/json'} body = { "entity_id": "Q581", "bank": "XXXX Bank", "environment": "Testing", "credential_store_id": "1", "credentials": {} } http = Net::HTTP.new(uri.host, uri.port) http.use_ssl = true request = Net::HTTP::Post.new(uri.request_uri, header) request.body = body.to_json response = http.request(request)

const data = {
  "entity_id": "Q581",
  "bank": "XXXX Bank",
  "environment": "Testing",
  "credential_store_id": "1",
  "credentials": {}
};

fetch('https://<environmenturl>/api/api_banking_credentials', { method: 'POST', headers: { 'X-Api-Key': '<your secure token>', 'Content-Type': 'application/json' }, body: JSON.stringify(data) }) .then(response => response.json()) .then(data => console.log(data)) .catch(error => console.error(error));

The below example can be sent as a request to the API.

{
  "entity_id": "Q581",
  "bank": "XXXX Bank",
  "environment": "Testing",
  "credential_store_id": "1",
  "credentials": {"cib_url": "xxxxxxx",
                  "payment_url": "xxxxxxx"}
}

SUCCESS RESPONSE The request returns JSON structured like below on successful Api Banking Credential creation

{
  "status": true,
  "total_count": 1,
  "api_banking_credentials": [
    {
      "id": 18,
      "entity_id": "Q581",
      "bank": "Standard Chartered Bank",
      "environment": "Testing",
      "credentials": "{\"cib_url\"xxxxx}",
      "credential_store_id": "1",
      "deleted": false,
      "created_on": 1752737655,
      "updated_on": 1752737655
    }
  ],
  "title": {
    "records": 1,
    "current_page": 1,
    "total_pages": 1,
    "page_item_count": 1
  }
}

ERROR RESPONSE The request returns JSON structured like below for errors related Api Banking Credential

{
  "status": false,
  "errors":{
    "base":
    [
      "Entity must exist",
      "Credential store is required for this bank",
      "Credentials missing required keys: xxxx",
      "Credentials contains unexpected keys: xxxx",
      "Credentials xxxx must be a valid URL",
      "Credentials xxxx must be a string",
      "Credential store is invalid or does not exist",
      "Bank is not configured in BankIntegration"
    ]
  }
}

This endpoint creates a Api Banking Credential.

UAT HTTP Request

POST https://nxt.api.q2pay.co.in/api/api_banking_credentials

PRODUCTION HTTP Request

POST https://nxt.api.q2pay.in/api/api_banking_credentials

Query Parameters

Parameter Default Description Required Sample
entity_id N.A. Entity id for Api Banking Credential Yes Q581
bank N.A. Bank for Api Banking Credential Yes HDFC Bank
environment N.A. Environment for Api Banking Credential Optional Testing
credential_store_id N.A. Credential store id for Api Banking Credential Optional 25
credentials N.A. Credentials for Api Banking Credential Yes CGHFG78J

Service Details

Service ID Description
Admin Create Api Banking Credential

Update Api Banking Credential

curl -X PUT "https://<environmenturl>/api/api_banking_credentials/:id"
  -H "X-Api-Key: <your secure token>"
  -H "Content-Type: application/json"
  -d "{
    "entity_id": "Q581",
    "bank": "XXXX Bank",
    "environment": "Testing",
    "credential_store_id": "1",
    "credentials": {}
}"
require 'net/http'
require 'uri'
require 'json'

uri = URI.parse("https://<environmenturl>/api/api_banking_credentials/:id") header = {'X-Api-Key' => '<your secure token>', 'Content-Type' => 'application/json'} body = { "entity_id": "Q581", "bank": "XXXX Bank", "environment": "Testing", "credential_store_id": "1", "credentials": {} } http = Net::HTTP.new(uri.host, uri.port) http.use_ssl = true request = Net::HTTP::PUT.new(uri.request_uri, header) request.body = body.to_json response = http.request(request)

const data = {
  "entity_id": "Q581",
  "bank": "XXXX Bank",
  "environment": "Testing",
  "credential_store_id": "1",
  "credentials": {}
};

fetch('https://<environmenturl>/api/api_banking_credentials/:id', { method: 'PUT', headers: { 'X-Api-Key': '<your secure token>', 'Content-Type': 'application/json' }, body: JSON.stringify(data) }) .then(response => response.json()) .then(data => console.log(data)) .catch(error => console.error(error));

The below example can be sent as a request to the API.

{
  "entity_id": "Q581",
  "bank": "XXXX Bank",
  "environment": "Testing",
  "credential_store_id": "1",
  "credentials": {}
}

SUCCESS RESPONSE The request returns JSON structured like below on successful api banking credential updation

{
  "status": true,
  "total_count": 1,
  "api_banking_credentials": [
    {
      "id": 3,
      "entity_id": "FBT3907",
      "bank": "ICICI Bank",
      "environment": "Testing",
      "credentials": "{ \"cib_key\": \"XXXXX\", \"cib_url\": \"xxxxxxxx\"}",
      "credential_store_id": "1",
      "deleted": false,
      "created_on": 1699622700,
      "updated_on": 1752494579
    }
  ],
  "title": {
    "records": 1,
    "current_page": 1,
    "total_pages": 1,
    "page_item_count": 1
  }
}

ERROR RESPONSE The request returns JSON structured like below for errors related to api banking credential updating

{
  "status": false,
  "errors":{
    "base":
    [
      "Entity must exist",
      "Credential store is required for this bank",
      "Credentials missing required keys: xxxx",
      "Credentials contains unexpected keys: xxxx",
      "Credentials xxxx must be a valid URL",
      "Credentials xxxx must be a string",
      "Credential store is invalid or does not exist",
      "Bank is not configured in BankIntegration"
    ]
  }
}

This endpoint will update a Api Banking Credential.

UAT HTTP Request

PUT https://nxt.api.q2pay.co.in/api/api_banking_credentials/:id

PRODUCTION HTTP Request

PUT https://nxt.api.q2pay.in/api/api_banking_credentials/:id

Query Parameters

Parameter Default Description Required Sample
entity_id N.A. Entity id for Api Banking Credential Optional Q581
bank N.A. Bank for Api Banking Credential Optional HDFC Bank
environment N.A. Environment for Api Banking Credential Optional Testing
credential_store_id N.A. Credential store id for Api Banking Credential Optional 25
credentials N.A. Credentials for Api Banking Credential Optional CGHFG78J

Service Details

Service ID Description
Admin Update Api Banking Credential

Get All Api Banking Credentials

curl -X GET "https://<environmenturl>/api/api_banking_credentials"
  -H "X-Api-Key: <your secure token>"
  -H "Content-Type: application/json"

require 'net/http'
require 'uri'
require 'json'

uri = URI.parse("https://<environmenturl>/api/api_banking_credentials") header = {'X-Api-Key' => '<your secure token>', 'Content-Type' => 'application/json'} http = Net::HTTP.new(uri.host, uri.port) http.use_ssl = true request = Net::HTTP::Get.new(uri.request_uri, header) request.body = body.to_json response = http.request(request)

fetch('https://<environmenturl>/api/api_banking_credentials', { method: 'GET', headers: { 'X-Api-Key': '<your secure token>', 'Content-Type': 'application/json' }, body: JSON.stringify(data) }) .then(response => response.json()) .then(data => console.log(data)) .catch(error => console.error(error));

SUCCESS RESPONSE The request returns JSON structured like below

{
  "status": true,
  "total_count": 2,
  "api_banking_credentials": [
    {
      "id": 5,
      "entity_id": "FBT3907",
      "bank": "ICICI Bank",
      "environment": "Testing",
      "credentials": "{\"client_key\": \"xxxxx\", \"client_secret\": \"xxxxx\"}",
      "credential_store_id": "1",
      "deleted": false,
      "created_on": 1699622700,
      "updated_on": 1699622700
    },
    {
      "id": 7,
      "entity_id": "FBT3907",
      "bank": "HDFC Bank",
      "environment": "Testing",
      "credentials": "{ \"client_key\": \"xxxxxx\", \"client_secret\": \"xxxxx\"}",
      "credential_store_id": "1",
      "deleted": false,
      "created_on": 1699622700,
      "updated_on": 1699622700
    }
  ],
  "title": {
      "records": 2,
      "current_page": 1,
      "total_pages": 1,
      "page_item_count": 50
  }
}

This endpoint retrieves all Api Banking Credentials.

UAT HTTP Request

GET https://nxt.api.q2pay.co.in/api/api_banking_credentials

PRODUCTION HTTP Request

GET https://nxt.api.q2pay.in/api/api_banking_credentials

Service Details

Service ID Description
PLogin View all Api Banking Credentials

Get specific Api Banking Credential

curl -X GET "https://<environmenturl>/api/api_banking_credentials/:id"
  -H "X-Api-Key: <your secure token>"
  -H "Content-Type: application/json"
require 'net/http'
require 'uri'
require 'json'

uri = URI.parse("https://<environmenturl>/api/api_banking_credentials/:id") header = {'X-Api-Key' => '<your secure token>', 'Content-Type' => 'application/json'} http = Net::HTTP.new(uri.host, uri.port) http.use_ssl = true request = Net::HTTP::GET.new(uri.request_uri, header) request.body = body.to_json response = http.request(request)

fetch('https://<environmenturl>/api/api_banking_credentials/:id', {
  method: 'GET',
  headers: {
    'X-Api-Key': '<your secure token>',
    'Content-Type': 'application/json'
  },
  body: JSON.stringify(data)
})
  .then(response => response.json())
  .then(data => console.log(data))
  .catch(error => console.error(error));

SUCCESS RESPONSE The request returns JSON structured like below on successful view specific api banking credential

{
  "status": true,
  "total_count": 1,
  "api_banking_credentials": [
    {
      "id": 1,
      "entity_id": "Q581",
      "bank": "Q2pay Bank",
      "environment": "Testing",
      "credentials": "{ \"cib_url\": \"xxxxxx\", \"client_key\": \"xxxxx\" }",
      "credential_store_id": "1",
      "deleted": false,
      "created_on": 1699622700,
      "updated_on": 1750140673
    }
  ],
  "title": {
    "records": 1,
    "current_page": 1,
    "total_pages": 1,
    "page_item_count": 1
  }
}

ERROR RESPONSE The request returns JSON structured like below for errors related api banking credential

{
  "status":false,
  "errors":{
    "base":[
      "Api Banking Credential not present"
    ]
  }
}

This endpoint will view specific api banking credential.

UAT HTTP Request

GET https://nxt.api.q2pay.co.in/api/api_banking_credentials/:id

PRODUCTION HTTP Request

GET https://nxt.api.q2pay.in/api/api_banking_credentials/:id

Service Details

Service ID Description
PLogin View specific Api Banking Credential

Restore Credential

curl -X PUT "https://<environmenturl>/api/api_banking_credentials/:id/restore_credential"
  -H "X-Api-Key: <your secure token>"
  -H "Content-Type: application/json"

require 'net/http'
require 'uri'
require 'json'

uri = URI.parse("https://<environmenturl>/api/api_banking_credentials/:id/restore_credential") header = {'X-Api-Key' => '<your secure token>', 'Content-Type' => 'application/json'} http = Net::HTTP.new(uri.host, uri.port) http.use_ssl = true request = Net::HTTP::Put.new(uri.request_uri, header) request.body = body.to_json response = http.request(request)


fetch('https://<environmenturl>/api/api_banking_credentials/:id/restore_credential', {
  method: 'PUT',
  headers: {
    'X-Api-Key': '<your secure token>',
    'Content-Type': 'application/json'
  },
  body: JSON.stringify(data)
})
  .then(response => response.json())
  .then(data => console.log(data))
  .catch(error => console.error(error));

SUCCESS RESPONSE The request returns JSON structured like below on successful restore credential

{
  "status": true,
  "total_count": 1,
  "api_banking_credentials": [
    {
      "id": 1,
      "entity_id": "Q581",
      "bank": "HDFC Bank",
      "environment": "Testing",
      "credentials": "{ \"client_key\": \"xxxxx\", \"client_secret\": \"xxxxxx\" }",
      "credential_store_id": "1",
      "deleted": false,
      "created_on": 1699622700,
      "updated_on": 1752745062
    }
  ],
  "title": {
    "records": 1,
    "current_page": 1,
    "total_pages": 1,
    "page_item_count": 1
  }
}

ERROR RESPONSE The request returns JSON structured like below for errors related restore credential

{
  "status": false,
  "errors": {
    "base": [
      "Api Banking Credential is already active (not deleted)"
    ]
  }
}

This endpoint will restore credential.

UAT HTTP Request

PUT https://nxt.api.q2pay.co.in/api/api_banking_credentials/:id/restore_credential

PRODUCTION HTTP Request

PUT https://nxt.api.q2pay.in/api/api_banking_credentials/:id/restore_credential

Service Details

Service ID Description
Admin Restore Credential

Delete Credential

curl -X PUT "https://<environmenturl>/api/api_banking_credentials/:id/delete_credential"
  -H "X-Api-Key: <your secure token>"
  -H "Content-Type: application/json"

require 'net/http'
require 'uri'
require 'json'

uri = URI.parse("https://<environmenturl>/api/api_banking_credentials/:id/delete_credential") header = {'X-Api-Key' => '<your secure token>', 'Content-Type' => 'application/json'} http = Net::HTTP.new(uri.host, uri.port) http.use_ssl = true request = Net::HTTP::Put.new(uri.request_uri, header) request.body = body.to_json response = http.request(request)


fetch('https://<environmenturl>/api/api_banking_credentials/:id/delete_credential', {
  method: 'PUT',
  headers: {
    'X-Api-Key': '<your secure token>',
    'Content-Type': 'application/json'
  },
  body: JSON.stringify(data)
})
  .then(response => response.json())
  .then(data => console.log(data))
  .catch(error => console.error(error));

SUCCESS RESPONSE The request returns JSON structured like below on successful delete credential

{
  "status": true,
  "total_count": 1,
  "api_banking_credentials": [
    {
      "id": 1,
      "entity_id": "FBT3907",
      "bank": "ICICI Bank",
      "environment": "Testing",
      "credentials": "{ \"cib_key\": \"xxxxx\", \"cib_url\": \"xxxxxxxx\"}",
      "credential_store_id": "1",
      "deleted": true,
      "created_on": 1699622700,
      "updated_on": 1752745601
    }
  ],
  "title": {
    "records": 1,
    "current_page": 1,
    "total_pages": 1,
    "page_item_count": 1
  }
}

ERROR RESPONSE The request returns JSON structured like below for errors related delete credential

{
  "status": false,
  "errors": {
    "base": [
      "Api Banking Credential is already soft deleted"
    ]
  }
}

This endpoint will delete credential.

UAT HTTP Request

PUT https://nxt.api.q2pay.co.in/api/api_banking_credentials/:id/delete_credential

PRODUCTION HTTP Request

PUT https://nxt.api.q2pay.in/api/api_banking_credentials/:id/delete_credential

Service Details

Service ID Description
Admin Delete Credential

Bank Integration

Bank Integration helps you to create & manage mapping.

Create Mapping

curl -X POST "https://<environmenturl>/api/bank_integrations"
  -H "X-Api-Key: <your secure token>"
  -H "Content-Type: application/json"
  -d "{
    "bank_name": "AXIS BANK",
    "credential_store_required": "Yes",
    "credential_keys": [
      {
        "system_key": "demo_key",
        "bank_key": "DEMO KEY",
        "key_type": "string"
      },
      {
        "system_key": "demo_url",
        "bank_key": "DEMO URL",
        "key_type": "url"
      }
    ]
  }"
require 'net/http'
require 'uri'
require 'json'

uri = URI.parse("https://<environmenturl>/api/bank_integrations") header = {'X-Api-Key' => '<your secure token>', 'Content-Type' => 'application/json'} body = { "bank_name": "AXIS BANK", "credential_store_required": "Yes", "credential_keys": [ { "system_key": "demo_key", "bank_key": "DEMO KEY", "key_type": "string" }, { "system_key": "demo_url", "bank_key": "DEMO URL", "key_type": "url" } ] } http = Net::HTTP.new(uri.host, uri.port) http.use_ssl = true request = Net::HTTP::Post.new(uri.request_uri, header) request.body = body.to_json response = http.request(request)

const data = {
    "bank_name": "AXIS BANK",
    "credential_store_required": "Yes",
    "credential_keys": [
      {
        "system_key": "demo_key",
        "bank_key": "DEMO KEY",
        "key_type": "string"
      },
      {
        "system_key": "demo_url",
        "bank_key": "DEMO URL",
        "key_type": "url"
      }
    ]
  };

fetch('https://<environmenturl>/api/bank_integrations', { method: 'POST', headers: { 'X-Api-Key': '<your secure token>', 'Content-Type': 'application/json' }, body: JSON.stringify(data) }) .then(response => response.json()) .then(data => console.log(data)) .catch(error => console.error(error));

The below example can be sent as a request to the API.

{
  "bank_name": "AXIS BANK",
  "credential_store_required": "Optional",
  "credential_keys": [
    {
      "system_key": "demo_key",
      "bank_key": "DEMO KEY",
      "key_type": "string"
    },
    {
      "system_key": "demo_identifier",
      "bank_key": "DEMO IDENTIFIER",
      "key_type": "string"
    }
  ]
}

SUCCESS RESPONSE The request returns JSON structured like below on successful Mapping creation

{
    "status": true,
    "data": {
        "id": 6,
        "bank_name": "AXIS BANK",
        "credential_keys": [
            {
                "system_key": "demo_key",
                "bank_key": "DEMO KEY",
                "key_type": "string"
            },
            {
                "system_key": "demo_identifier",
                "bank_key": "DEMO IDENTIFIER",
                "key_type": "string"
            }
        ],
        "credential_store_required": "Optional",
        "created_at": "2025-08-05T09:38:55.599Z",
        "updated_at": "2025-08-05T09:38:55.599Z"
    }
}

ERROR RESPONSE The request returns JSON structured like below for errors related mapping

{
  "status": false,
  "errors":{
    "credential_keys":
    [
      "Credential keys entry 1 'system_key' is missing",
      "Credential keys entry 1 'bank_key' is missing",
      "Credential keys entry 1 'key_type' is missing",
      "Credential keys must have at least one entry"
    ]

"bank_name": [ "Bank name can't be blank", "Bank name is not included in the list", "Bank name has already been taken" ]

"credential_store_required": [ "Credential store required can't be blank", "Credential store required is not included in the list" ]

"base": [ "Credential store is required for this bank" ] } }

This endpoint creates a Mapping.

UAT HTTP Request

POST https://nxt.api.q2pay.co.in/api/bank_integrations

PRODUCTION HTTP Request

POST https://nxt.api.q2pay.in/api/bank_integrations

Query Parameters

Parameter Default Description Required Sample
bank_name N.A. Bank name for mapping Yes AXIS BANK
credential_store_required N.A. Credential store required for mapping Yes Yes/No/Optional
credential_keys N.A. Credential keys for mapping Yes { bank_key: "xxx", system_key: "xxx", key_type: "xxx" }

Service Details

Service ID Description
Admin Create Mapping

Get specific mapping

curl -X GET "https://<environmenturl>/api/bank_integrations/get_mapping/:bank_name"
  -H "X-Api-Key: <your secure token>"
  -H "Content-Type: application/json"
require 'net/http'
require 'uri'
require 'json'

uri = URI.parse("https://<environmenturl>/api/bank_integrations/get_mapping/:bank_name") header = {'X-Api-Key' => '<your secure token>', 'Content-Type' => 'application/json'} http = Net::HTTP.new(uri.host, uri.port) http.use_ssl = true request = Net::HTTP::GET.new(uri.request_uri, header) request.body = body.to_json response = http.request(request)

fetch('https://<environmenturl>/api/bank_integrations/get_mapping/:bank_name', {
  method: 'GET',
  headers: {
    'X-Api-Key': '<your secure token>',
    'Content-Type': 'application/json'
  },
  body: JSON.stringify(data)
})
  .then(response => response.json())
  .then(data => console.log(data))
  .catch(error => console.error(error));

SUCCESS RESPONSE The request returns JSON structured like below on successful view specific bank mapping

{
    "status": true,
    "credential_keys": [
        {
            "system_key": "client_key",
            "bank_key": "CLIENT KEY",
            "key_type": "string"
        },
        {
            "system_key": "payment_certificate",
            "bank_key": "PAYMENT CERTIFICATE",
            "key_type": "file"
        },
        {
            "system_key": "login_phrase",
            "bank_key": "LOGIN PHRASE",
            "key_type": "string"
        }
    ],
    "credential_store_required": "Yes"
}

ERROR RESPONSE The request returns JSON structured like below for errors related mapping

{
  "status":false,
  "errors":{
    "base":[
      "Bank Integration not found for 'xxx Bank'"
    ]
  }
}

This endpoint will view specific bank mapping.

UAT HTTP Request

GET https://nxt.api.q2pay.co.in/api/bank_integrations/get_mapping/:bank_name

PRODUCTION HTTP Request

GET https://nxt.api.q2pay.in/api/bank_integrations/get_mapping/:bank_name

Service Details

Service ID Description
Admin View specific bank mapping

Statistics

Fetch Beneficiary Transaction Count

curl -X GET "https://<environmenturl>/api/statistics/beneficiary/transaction_count"
  -H "X-Api-Key: <your secure token>"
  -H "Content-Type: application/json"
  -d "{
    "entity_id": "Q581",
    "period": "last 28 days"
    }"
require 'net/http'
require 'uri'
require 'json'

uri = URI.parse("https://<environmenturl>/api/statistics/beneficiary/transaction_count") header = {'X-Api-Key' => '<your secure token>', 'Content-Type' => 'application/json'} body = { "entity_id": "Q581", "period": "last 28 days" } http = Net::HTTP.new(uri.host, uri.port) http.use_ssl = true request = Net::HTTP::GET.new(uri.request_uri, header) request.body = body.to_json response = http.request(request)

const data = {
    "entity_id": "Q581",
    "period": "last 28 days"
    };

fetch('https://<environmenturl>/api/statistics/beneficiary/transaction_count', { method: 'GET', headers: { 'X-Api-Key': '<your secure token>', 'Content-Type': 'application/json' }, body: JSON.stringify(data) }) .then(response => response.json()) .then(data => console.log(data)) .catch(error => console.error(error));

The below example can be sent as a request to the API.

{
  "entity_id": "Q581",
  "period": "last 28 days"
}

SUCCESS RESPONSE The request returns JSON structured like below on successful get beneficiary transaction count

{
  "status": true,
  "report_data": {
      "beneficiary_transaction_count": {
          "total_transaction": 12,
          "successful_transaction": 2,
          "unsuccessful_transaction": 10
      }
  }
}

ERROR RESPONSE The request returns JSON structured like below for errors related fetch beneficiary transaction count

{
    "status": false,
    "errors": {
        "base": [
            "Entity ID is missing",
            "Entity ID not found",
            "Access denied for this entity",
            "No Transaction data available for the selected period."
        ]
    }
}

This endpoint will show beneficiary transaction count.

UAT HTTP Request

GET https://nxt.api.q2pay.co.in/api/statistics/beneficiary/transaction_count

PRODUCTION HTTP Request

GET https://nxt.api.q2pay.in/api/statistics/beneficiary/transaction_count

Query Parameters

Parameter Default Description Required Sample
entity_id N.A. Entity ID to fetch beneficiary transaction count Yes Q581
period last 7 days Period to fetch beneficiary transaction count Yes last 28 days

Service Details

Service ID Description
VStatistics Fetch Beneficiary transaction count

Fetch Internal Transaction Count

curl -X GET "https://<environmenturl>/api/statistics/internal/transaction_count"
  -H "X-Api-Key: <your secure token>"
  -H "Content-Type: application/json"
  -d "{
    "entity_id": "Q581",
    "period": "last 28 days"
    }"
require 'net/http'
require 'uri'
require 'json'

uri = URI.parse("https://<environmenturl>/api/statistics/internal/transaction_count") header = {'X-Api-Key' => '<your secure token>', 'Content-Type' => 'application/json'} body = { "entity_id": "Q581", "period": "last 28 days" } http = Net::HTTP.new(uri.host, uri.port) http.use_ssl = true request = Net::HTTP::GET.new(uri.request_uri, header) request.body = body.to_json response = http.request(request)

const data = {
    "entity_id": "Q581",
    "period": "last 28 days"
    };

fetch('https://<environmenturl>/api/statistics/internal/transaction_count', { method: 'GET', headers: { 'X-Api-Key': '<your secure token>', 'Content-Type': 'application/json' }, body: JSON.stringify(data) }) .then(response => response.json()) .then(data => console.log(data)) .catch(error => console.error(error));

The below example can be sent as a request to the API.

{
  "entity_id": "Q581",
  "period": "last 28 days"
}

SUCCESS RESPONSE The request returns JSON structured like below on successful get internal transaction count

{
  "status": true,
  "report_data": {
      "internal_transaction_count": {
          "total_transaction": 12,
          "successful_transaction": 2,
          "unsuccessful_transaction": 10
      }
  }
}

ERROR RESPONSE The request returns JSON structured like below for errors related fetch internal transaction count

{
    "status": false,
    "errors": {
        "base": [
            "Entity ID is missing",
            "Entity ID not found",
            "Access denied for this entity",
            "No Transaction data available for the selected period."
        ]
    }
}

This endpoint will show internal transaction count.

UAT HTTP Request

GET https://nxt.api.q2pay.co.in/api/statistics/internal/transaction_count

PRODUCTION HTTP Request

GET https://nxt.api.q2pay.in/api/statistics/internal/transaction_count

Query Parameters

Parameter Default Description Required Sample
entity_id N.A. Entity ID to fetch internal transaction count Yes Q581
period last 7 days Period to fetch internal transaction count Yes last 28 days

Service Details

Service ID Description
VStatistics Fetch internal transaction count

Get Cash Coverage Report

curl -X GET "https://<environmenturl>/api/statistics/statement/cash_coverage_report"
  -H "X-Api-Key: <your secure token>"
  -H "Content-Type: application/json"
  -d "{
    "entity_id": "Q581"
    }"
require 'net/http'
require 'uri'
require 'json'

uri = URI.parse("https://<environmenturl>/api/statistics/statement/cash_coverage_report") header = {'X-Api-Key' => '<your secure token>', 'Content-Type' => 'application/json'} body = { "entity_id": "Q581" } http = Net::HTTP.new(uri.host, uri.port) http.use_ssl = true request = Net::HTTP::GET.new(uri.request_uri, header) request.body = body.to_json response = http.request(request)

const data = {
    "entity_id": "Q581"
    };

fetch('https://<environmenturl>/api/statistics/statement/cash_coverage_report', { method: 'GET', headers: { 'X-Api-Key': '<your secure token>', 'Content-Type': 'application/json' }, body: JSON.stringify(data) }) .then(response => response.json()) .then(data => console.log(data)) .catch(error => console.error(error));

The below example can be sent as a request to the API.

{
  "entity_id": "Q581"
}

SUCCESS RESPONSE The request returns JSON structured like below on successful get cash coverage report

{
  "status": true,
  "report_data": {
    "day_wise_entries": [
      { "day": "Sunday", "amount": 0 },
      { "day": "Monday", "amount": 1798.0 },
      { "day": "Tuesday", "amount": 6000.0 },
      { "day": "Wednesday", "amount": 2950.0 },
      { "day": "Thursday", "amount": 7500.0 },
      { "day": "Friday", "amount": 2400.0 },
      { "day": "Saturday", "amount": 3400.0 }
    ],
    "total_debit_amount": 24048.0,
    "predicted_cash_period": 0.32,
    "total_current_balance": 7802.23,
    "day_wise_total_debit_amount": 4048.0
  }
}

ERROR RESPONSE The request returns JSON structured like below for errors related get cash coverage report

{
    "status": false,
    "errors": {
        "base": [
            "Entity ID not found",
            "Entity ID is missing",
            "Access denied for this entity",
            "No Transaction data available for the selected period."
] } }

This endpoint will show cash coverage report.

UAT HTTP Request

GET https://nxt.api.q2pay.co.in/api/statistics/statement/cash_coverage_report

PRODUCTION HTTP Request

GET https://nxt.api.q2pay.in/api/statistics/statement/cash_coverage_report

Query Parameters

Parameter Default Description Required Sample
entity_id N.A. Entity ID to fetch cash coverage report Yes Q581

Service Details

Service ID Description
VStatistics Fetch cash_coverage_report

Get Idle Funds

curl -X GET "https://<environmenturl>/api/statistics/statement/:id/idle_funds"
  -H "X-Api-Key: <your secure token>"
  -H "Content-Type: application/json"
  -d "{
    "period": "last 28 days"
    }"
require 'net/http'
require 'uri'
require 'json'

uri = URI.parse("https://<environmenturl>/api/statistics/statement/:id/idle_funds") header = {'X-Api-Key' => '<your secure token>', 'Content-Type' => 'application/json'} body = { "period": "last 28 days" } http = Net::HTTP.new(uri.host, uri.port) http.use_ssl = true request = Net::HTTP::GET.new(uri.request_uri, header) request.body = body.to_json response = http.request(request)

const data = {
    "period": "last 28 days"
    };

fetch('https://<environmenturl>/api/statistics/statement/:id/idle_funds', { method: 'GET', headers: { 'X-Api-Key': '<your secure token>', 'Content-Type': 'application/json' }, body: JSON.stringify(data) }) .then(response => response.json()) .then(data => console.log(data)) .catch(error => console.error(error));

The below example can be sent as a request to the API.

{
  "period": "last 28 days"
}

SUCCESS RESPONSE The request returns JSON structured like below on successful get idle funds

{
  "status": true,
  "report_data": {
    "idle_fund_data": [
      {
        "day": "Thursday",
        "total_idle_funds": 50003.0
      }
    ],
    "total_idle_fund": 50003.0
  }
}

ERROR RESPONSE The request returns JSON structured like below for errors related fetch idle funds

{
    "status": false,
    "errors": {
        "base": [
            "Owner account is not present",
            "Access denied for this entity",
            "No Transaction data available for the selected period."
        ]
    }
}

This endpoint will show idle funds.

UAT HTTP Request

GET https://nxt.api.q2pay.co.in/api/statistics/statement/:id/idle_funds

PRODUCTION HTTP Request

GET https://nxt.api.q2pay.in/api/statistics/statement/:id/idle_funds

Query Parameters

Parameter Default Description Required Sample
period last 7 days Period to fetch idle funds Yes last 28 days

Service Details

Service ID Description
VStatistics fetch idle funds

Get Generate Od Interest

curl -X GET "https://<environmenturl>/api/statistics/generate_on_idle_fund_report"
  -H "X-Api-Key: <your secure token>"
  -H "Content-Type: application/json"
  -d "{
    "entity_id": "Q581",
    "owner_account_ids": ["xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxx"],
    "period": "last 7 days"
    }"
require 'net/http'
require 'uri'
require 'json'

uri = URI.parse("https://<environmenturl>/api/statistics/generate_on_idle_fund_report") header = {'X-Api-Key' => '<your secure token>', 'Content-Type' => 'application/json'} body = { "entity_id": "Q581" "owner_account_ids": ["xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxx"], "period": "last 7 days" } http = Net::HTTP.new(uri.host, uri.port) http.use_ssl = true request = Net::HTTP::GET.new(uri.request_uri, header) request.body = body.to_json response = http.request(request)

const data = {
    "entity_id": "Q581"
    "owner_account_ids": ["xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxx"],
    "period": "last 7 days"
    };

fetch('https://<environmenturl>/api/statistics/generate_on_idle_fund_report', { method: 'GET', headers: { 'X-Api-Key': '<your secure token>', 'Content-Type': 'application/json' }, body: JSON.stringify(data) }) .then(response => response.json()) .then(data => console.log(data)) .catch(error => console.error(error));

The below example can be sent as a request to the API.

{
   "entity_id": "Q581"
   "owner_account_ids": ["xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxx"],
   "period": "last 7 days"
}

SUCCESS RESPONSE The request returns JSON structured like below on successful get generate OD interest

{
    "status": true,
    "report_data": {
        "od_total_amount": 5.64,
        "daily_breakdown": {
            "13-11-2025": 1.93,
            "14-11-2025": 1.89,
            "17-11-2025": 1.82
        },
        "interest_rate": 13
    }
}

ERROR RESPONSE The request returns JSON structured like below for errors related get generate OD interest

{
    "status": false,
    "errors": {
        "base": [
            "Entity ID is missing",
            "Entity ID not found",
            "Access denied for this entity",
            "Owner account IDs are required for this action",
            "Owner accounts belong to different entities"
        ]
    }
}

This endpoint will show the OD Interest report.

UAT HTTP Request

GET https://nxt.api.q2pay.co.in/api/statistics/generate_on_idle_fund_report

PRODUCTION HTTP Request

GET https://nxt.api.q2pay.in/api/statistics/generate_on_idle_fund_report

Query Parameters

Parameter Default Description Required Sample
entity_id N.A. Entity ID to generate OD interest Yes Q581
period last 7 days Period to generate OD interest Yes last 28 days
owner_account_ids N.A. Owner account IDs to generate OD interest Yes ["xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxx"]

Service Details

Service ID Description
VStatistics Generate OD Interest

Fetch Credit And Debit Amount

curl -X GET "https://<environmenturl>/api/statistics/statement/credit_and_debit_amounts"
  -H "X-Api-Key: <your secure token>"
  -H "Content-Type: application/json"
  -d "{
    "entity_id": "FBT3907",
    "period": "last 28 days"
    }"
require 'net/http'
require 'uri'
require 'json'

uri = URI.parse("https://<environmenturl>/api/statistics/statement/credit_and_debit_amounts") header = {'X-Api-Key' => '<your secure token>', 'Content-Type' => 'application/json'} body = { "entity_id": "Q581", "period": "last 28 days" } http = Net::HTTP.new(uri.host, uri.port) http.use_ssl = true request = Net::HTTP::GET.new(uri.request_uri, header) request.body = body.to_json response = http.request(request)

const data = {
    "entity_id": "FBT3907",
    "period": "last 28 days"
    };

fetch('https://<environmenturl>/api/statistics/statement/credit_and_debit_amounts', { method: 'GET', headers: { 'X-Api-Key': '<your secure token>', 'Content-Type': 'application/json' }, body: JSON.stringify(data) }) .then(response => response.json()) .then(data => console.log(data)) .catch(error => console.error(error));

The below example can be sent as a request to the API.

{
  "entity_id": "FBT3907",
  "period": "last 28 days"
}

SUCCESS RESPONSE The request returns JSON structured like below on successful get credit and debit amount

{
  "status": true,
  "report_data": {
    "generate_reports": [
      { "day": "Sunday", "debit": 137712.0, "credit": 73606.0 },
      { "day": "Monday", "debit": 52640.0, "credit": 158388.0 },
      { "day": "Tuesday", "debit": 147141.0, "credit": 63666.0 },
      { "day": "Wednesday", "debit": 104357.0, "credit": 149895.0 },
      { "day": "Thursday", "debit": 85105.0, "credit": 126652.0 },
      { "day": "Friday", "debit": 83953.0, "credit": 125521.0 },
      { "day": "Saturday", "debit": 104920.0, "credit": 104800.0 }
    ],
    "total_debit_amount": 715828.0,
    "total_credit_amount": 802528.0
  }
}

ERROR RESPONSE The request returns JSON structured like below for errors related fetch credit and debit amount

{
    "status": false,
    "errors": {
        "base": [
            "Entity ID is missing",
            "Entity ID not found",
            "Access denied for this entity",
            "No credit or debit data available for the selected period."
        ]
    }
}

This endpoint will show credit and debit amount.

UAT HTTP Request

GET https://nxt.api.q2pay.co.in/api/statistics/statement/credit_and_debit_amounts

PRODUCTION HTTP Request

GET https://nxt.api.q2pay.in/api/statistics/statement/credit_and_debit_amounts

Query Parameters

Parameter Default Description Required Sample
entity_id N.A. Entity ID to fetch credit and debit amounts Yes FBT3907
period last 7 days Period to fetch credit and debit amounts Yes last 28 days

Service Details

Service ID Description
VStatistics Fetch credit_and_debit_amounts

Fetch Internal Productivity Tracker

curl -X GET "https://<environmenturl>/api/statistics/internal/user_productivity_tracker"
  -H "X-Api-Key: <your secure token>"
  -H "Content-Type: application/json"
  -d "{
    "entity_id": "Q581",
    "period": "last 28 days",
    "user_ids": ["xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxx"]
    }"
require 'net/http'
require 'uri'
require 'json'

uri = URI.parse("https://<environmenturl>/api/statistics/internal/user_productivity_tracker") header = {'X-Api-Key' => '<your secure token>', 'Content-Type' => 'application/json'} body = { "entity_id": "Q581", "period": "last 28 days" } http = Net::HTTP.new(uri.host, uri.port) http.use_ssl = true request = Net::HTTP::GET.new(uri.request_uri, header) request.body = body.to_json response = http.request(request)

const data = {
    "entity_id": "Q581",
    "period": "last 28 days",
    "user_ids": ["xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxx"]
    };

fetch('https://<environmenturl>/api/statistics/internal/user_productivity_tracker', { method: 'GET', headers: { 'X-Api-Key': '<your secure token>', 'Content-Type': 'application/json' }, body: JSON.stringify(data) }) .then(response => response.json()) .then(data => console.log(data)) .catch(error => console.error(error));

The below example can be sent as a request to the API.

{
  "entity_id": "Q581",
  "period": "last 28 days",
  "user_ids": ["xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxx"]
}

SUCCESS RESPONSE The request returns JSON structured like below on successful get internal productivity tracker.

{
  "status": true,
  "report_data": {
    "productivity_tracker": [
      {
        "user_id": "Q2P2770",
        "user_full_name": "Kapil Pagrut",
        "transaction_created_count": 1,
        "transaction_approved_count": 0
      }
    ],
    "total_transaction_created_count": 1,
    "total_transaction_approved_count": 0
  }
}

ERROR RESPONSE The request returns JSON structured like below for errors related fetch internal productivity tracker.

{
    "status": false,
    "errors": {
        "base": [
            "Entity ID is missing",
            "Entity ID not found",
            "Access denied for this entity",
            "User IDs are invalid or do not belong to the specified entity",
            "No productivity data available for the selected period."
        ]
    }
}

This endpoint will show internal productivity tracker.

UAT HTTP Request

GET https://nxt.api.q2pay.co.in/api/statistics/internal/user_productivity_tracker

PRODUCTION HTTP Request

GET https://nxt.api.q2pay.in/api/statistics/internal/user_productivity_tracker

Query Parameters

Parameter Default Description Required Sample
entity_id N.A. Entity ID to fetch internal productivity tracker. Yes Q581
period last 7 days Period to fetch internal productivity tracker. Yes last 28 days
user_ids N.A. User IDs to fetch internal productivity tracker. Yes xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxx

Service Details

Service ID Description
VStatistics Fetch internal productivity tracker.

Fetch Beneficiary Productivity Tracker

curl -X GET "https://<environmenturl>/api/statistics/beneficiary/user_productivity_tracker"
  -H "X-Api-Key: <your secure token>"
  -H "Content-Type: application/json"
  -d "{
    "entity_id": "Q581",
    "period": "last 28 days",
    "user_ids": ["xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxx"]
    }"
require 'net/http'
require 'uri'
require 'json'

uri = URI.parse("https://<environmenturl>/api/statistics/beneficiary/user_productivity_tracker") header = {'X-Api-Key' => '<your secure token>', 'Content-Type' => 'application/json'} body = { "entity_id": "Q581", "period": "last 28 days", "user_ids": ["xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxx"] } http = Net::HTTP.new(uri.host, uri.port) http.use_ssl = true request = Net::HTTP::GET.new(uri.request_uri, header) request.body = body.to_json response = http.request(request)

const data = {
    "entity_id": "Q581",
    "period": "last 28 days",
    "user_ids": ["xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxx"]
    };

fetch('https://<environmenturl>/api/statistics/beneficiary/user_productivity_tracker', { method: 'GET', headers: { 'X-Api-Key': '<your secure token>', 'Content-Type': 'application/json' }, body: JSON.stringify(data) }) .then(response => response.json()) .then(data => console.log(data)) .catch(error => console.error(error));

The below example can be sent as a request to the API.

{
  "entity_id": "Q581",
  "period": "last 28 days",
  "user_ids": ["xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxx"]
}

SUCCESS RESPONSE The request returns JSON structured like below on successful get beneficiary productivity tracker

{
  "status": true,
  "report_data": {
    "productivity_tracker": [
      {
        "user_id": "Q2P2770",
        "user_full_name": "Kapil Pagrut",
        "transaction_created_count": 6,
        "transaction_approved_count": 1
      }
    ],
    "total_transaction_created_count": 6,
    "total_transaction_approved_count": 1
  }
}

ERROR RESPONSE The request returns JSON structured like below for errors related fetch beneficiary productivity tracker

{
    "status": false,
    "errors": {
        "base": [
            "Entity ID is missing",
            "Entity ID not found",
            "Access denied for this entity",
            "User IDs are invalid or do not belong to the specified entity",
            "No productivity data available for the selected period."
        ]
    }
}

This endpoint will show beneficiary productivity tracker.

UAT HTTP Request

GET https://nxt.api.q2pay.co.in/api/statistics/beneficiary/user_productivity_tracker

PRODUCTION HTTP Request

GET https://nxt.api.q2pay.in/api/statistics/beneficiary/user_productivity_tracker

Query Parameters

Parameter Default Description Required Sample
entity_id N.A. Entity ID to fetch beneficiary productivity tracker Yes Q581
period last 7 days Period to fetch beneficiary productivity tracker Yes last 28 days
user_ids N.A. User IDs to fetch beneficiary productivity tracker Yes xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxx

Service Details

Service ID Description
VStatistics Fetch beneficiary productivity tracker

HTTP Error Codes

The Xpentra API uses the following error codes:

Error Code Meaning
400 Bad Request -- Your request is invalid.
401 Unauthorized -- Your token has either expired or you are not authorized to perform the action.
403 Forbidden -- The record requested is hidden for administrators only.
404 Not Found -- The specified record could not be found.
405 Method Not Allowed -- You tried to access a record with an invalid method.
406 Not Acceptable -- You requested a format that isn't json.
410 Gone -- The record requested has been removed from our servers.
418 I'm a teapot.
422 Unprocessable Entity -- Your request is not as per is specification or cannot be processed.
429 Too Many Requests -- You're requesting too many records! Slow down!
500 Internal Server Error -- We had a problem with our server. Try again later.
503 Service Unavailable -- We're temporarily offline for maintenance. Please try again later.