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 |
| 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 |
| 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 |
|---|---|---|---|---|
| N.A | Email Id for generation of OTP | Yes | xxxx@xxxx.xxx |
Query Parameters for verification of email
| Parameter | Default | Description | Required | Sample |
|---|---|---|---|---|
| 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 |
|---|---|---|---|---|
| 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 |
|---|---|---|---|---|
| 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 |
|---|---|---|---|---|
| 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 |
| 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 |
| 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 |
| 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 |
|---|---|---|---|---|
| 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. |