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": "web",
"os_version": "1.6",
"ip_address": "103.67.90.00",
"app_version_code": 49,
"app_version_name": 2.48,
"brand": "web",
"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": "web",
"os_version": "1.6",
"ip_address": "103.67.90.00",
"app_version_code": 55,
"app_version_name": 2.48,
"brand": "web",
"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": "web",
"os_version": "1.6",
"ip_address": "103.67.90.00",
"app_version_code": 55,
"app_version_name": 2.48,
"brand": "web",
"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 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 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 as shown below on successful login for Web.
{
"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 as shown below for errors related to login.
{
"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 log in a 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 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 |
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 as shown below on refreshing a 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 as shown below when the 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 as shown below for error responses related to Refresh.
{
"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 a users 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 as shown below on system refresh.
{
"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 as shown below for errors related to system refresh
{
"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 a 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 as shown below on successful User Logout.
{
"status": true,
"message": "User logged out"
}
ERROR RESPONSE The request returns JSON structured as shown below for errors related to logout.
{
"errors": {
"user_unauthorized": [
"Sorry! You are not authorized to perform this action"
],
"base": [
"Invalid token format"
]
},
"status": false
}
This endpoint will log out a 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 as shown below on 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 as shown below for errors related to missing mapping.
{
"status": false,
"errors": "Mapping Not Found"
}
ERROR RESPONSE The request returns JSON structured as shown below for errors related to missing mapping.
{
"status": false,
"errors": "Sub Entity Access Denied!"
}
ERROR RESPONSE The request returns JSON structured as shown below for errors related to missing mapping.
{
"status": false,
"errors": "Please login again and retry"
}
ERROR RESPONSE The request returns JSON structured as shown below for errors related to missing mapping.
{
"status": false,
"errors": "Login with Primary User and Retry"
}
ERROR RESPONSE The request returns JSON structured as shown below for errors related to missing mapping.
{
"status": false,
"errors": "User not registered for Multi Entity Access"
}
This endpoint will log in a user for 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 |
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 as shown 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 will retrieve 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 will retrieve an Owner Account
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 as shown below upon successful creation of an 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": "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 as shown below for errors related to the 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 will create an 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 |
Set Limit Owner Account
curl -X PUT "https://<environmenturl>/api/accounts/owner/set_limit/:id"
-H "X-Api-Key: <your secure token>"
-H "Content-Type: application/json"
-d "{
"type_of_account": "Current Account",
"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/set_limit/:id")
header = {'X-Api-Key' => '<your secure token>', 'Content-Type' => 'application/json'}
body = {
"type_of_account": "Current Account",
"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 = {
"type_of_account": "Current Account",
"od_limit":"0.0",
"min_limit": "2.0",
"max_limit":"100.0"
};
fetch('https://<environmenturl>/api/accounts/owner/set_limit/: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.
{
"type_of_account": "Current Account",
"od_limit":"0.0",
"min_limit": "2.0",
"max_limit":"100.0"
}
SUCCESS RESPONSE The request returns JSON structured as shown below upon successfully setting the limit for an 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": "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 as shown below for errors related to setting the limit for an Owner Account.
{
"status": false,
"errors": {
"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"],
type_of_account: ["cannot be updated for existing Overdraft Account",
"cannot be changed to Overdraft Account"],
"type_of_account":
[
"Type of account is not included in the list"
]
}
}
This endpoint will set the limit for an Owner Account.
UAT HTTP Request
PUT https://nxt.api.q2pay.co.in/api/accounts/owner/set_limit/:id
PRODUCTION HTTP Request
PUT https://nxt.api.q2pay.in/api/accounts/owner/set_limit/:id
Query Parameters
| Parameter | Default | Description | Required | Sample |
|---|---|---|---|---|
| type_of_account | N.A. | type of account for owner account | optional | Current Account |
| 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 | optional | 500.0 |
| max_limit | 0.0 | Maximum limit required for all owner account | optional | 500.0 |
Service Details
| Service ID | Description |
|---|---|
| UAccount | Update 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"
}"
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"
}
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"
};
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"
}
SUCCESS RESPONSE The request returns JSON structured as shown below upon successfully updating an 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": "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 as shown below for errors related to updating an 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."
]
}
}
This endpoint will update an 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 |
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 as shown below upon successful deactivation of an Owner Account.
{
"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 will deactivate an 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 as shown below upon successfully enabling connected banking for an 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": "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 as shown below for errors related to the 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 will enable connected banking for an 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 as shown below upon successfully disabling connected banking for an 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": "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 as shown below for errors related to disabling an Owner Account.
{
"status":false,
"errors":{
"owner_account":[
"Owner account can not be disabled"
]
}
}
This endpoint will disable connected banking for an 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 as shown below upon successful retrieval of the balance for an Owner Account.
{
"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 as shown below for errors related to the Owner Account.
{
"status":false,
"errors":{
"base":[
"Connected Banking is not enabled for this account. Kindly contact support!"
]
}
}
This endpoint will fetch the 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 as shown below upon successful display of the statement for an Owner Account.
{
"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 as shown below for errors related to the display of the statement for an Owner Account.
{
"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 will fetch 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 as shown below upon successful display of the itemised report for an 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 as shown below for errors related to the Itemised Statement of an Owner Account.
{
"status": false,
"errors": {
"base": "'Owner Account not present'"
}
}
This endpoint will display the Itemised Statement of an 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 as shown below on successfully adding a tag to 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 as shown below for errors related to adding a tag to 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 will Add Tags to Owner Accounts.
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 as shown below upon successful removal of a tag from 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 as shown below for errors related to the removal of a tag from 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 will remove tags from Owner Accounts.
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 as shown below upon successful download of the statement for an Owner Account.
{
"status": 200
}
ERROR RESPONSE The request returns JSON structured as shown below for errors related to the download of the statement for an Owner Account.
{
"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 will display the statement download of an 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 as shown below for a 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 as shown below for errors related to the 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 will return the Consolidated Statement of Owner Accounts.
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 as shown below on successfully retrieving the 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 as shown below for errors related to the Consolidated Itemised Statement of Owner Accounts.
{
"status": false,
"errors": {
"base": [
"'Owner Account not present'"
]
}
}
This endpoint retrieves the Consolidated Statements of Owner Accounts. It will return only 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 as shown below on successfully downloading the Consolidated Statement of Owner Accounts.
{
"status": 200
}
ERROR RESPONSE The request returns JSON structured as shown below for errors related to downloading the 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."
]
}
}
ERROR RESPONSE The request returns JSON structured as shown below for errors related to downloading the Consolidated Statement 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 will download Consolidated Statements of Owner Accounts.
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 |
| 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","Description","Statement Source"] |
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 as shown below on successfully downloading the Consolidated Itemised Statement of Owner Accounts.
{
"status": 200
}
ERROR RESPONSE The request returns JSON structured as shown below for errors related to downloading the Consolidated Itemised Statement of Owner Accounts.
{
"status": false,
"errors": {
"base": [
"'Owner Account not present'"
]
}
}
ERROR RESPONSE The request returns JSON structured as shown below for errors related to downloading the Consolidated Itemised Statement of Owner Accounts.
{
"status": false,
"message": "Unsupported format requested. Please use PDF, CSV, TSV, or XLSX."
}
This endpoint downloads Consolidated Itemised Statements of Owner Accounts. It will return only 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 as shown below upon successful display of the balance report for an 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 will return JSON structured as shown below for errors related to the display of the balance report for an Owner Account.
{
"status": false,
"errors": {
"base": "Unable to fetch account balance report"
}
}
This endpoint will display the balance report of an 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 as shown below upon successful retrieval of the historic income balance report for an 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 as shown below for errors related to the historic income balance report of an 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 retrieve the historic income balance report of an 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 as shown below on successfully adding a 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 as shown below for errors related to adding a favourite Owner Account.
{
"status":false,
"errors":{
"base":[
"Already marked as favourite"
]
}
}
This endpoint will add a favourite 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 as shown below upon successful removal of a 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 as shown below for errors related to the removal of a favourite Owner Account.
{
"status":false,
"errors":{
"base":[
"Not marked as favourite"
]
}
}
This endpoint will remove a favourite from an 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 as shown below on successfully adding labels to 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 as shown below for errors related to adding labels to Owner Accounts.
{
"status": false,
"errors": {
"base": [
"Missing required parameters: record_ids and/or labels."
],
"base":[
"The owner account IDs are not present."
]
}
}
This endpoint will add labels to Owner Accounts.
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 as shown below upon successful removal of labels from an Owner Account.
{
"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 as shown below for errors related to the removal of labels from an Owner Account.
{
"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 will remove labels from Owner Accounts.
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 as shown below on successfully adding a description in the 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 as shown below for errors related to adding a description in the 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 will add a description to the Itemised Statement of an 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 as shown below on successfully adding a description in the Consolidated Statement of an 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 as shown below for errors related to adding a description in the 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 will add a description to the Statement of an 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 API helps you create, maintain & manage of life cycle of Beneficiary accounts.
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 as shown 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 will retrieve 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 as shown 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 will retrieve a specific Beneficiary Account.
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 as shown below on successful creation of a Beneficiary Account.
{
"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 as shown below for errors related to a 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 will create 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 as shown below on successfully updating a Beneficiary Account.
{
"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 as shown below for errors related to a 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 will update 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 as shown below on successfully approving a Beneficiary Account.
{
"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 as shown below for errors related to a 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 will 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 as shown below on successfully archiving a Beneficiary Account.
{
"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 as shown below for errors related to a 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 will 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 as shown below on successfully unarchiving a Beneficiary Account.
{
"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 as shown below for errors related to a Beneficiary Account.
{
"status":false,
"errors":
{
"beneficiary_account":
[
"Beneficiary account can't be unarchived"
],
[
"Beneficiary account already unarchived"
]
}
}
This endpoint will 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 as shown below on successfully blocking a Beneficiary Account.
{
"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 as shown below for errors related to a 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 will block 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 as shown below on successfully rejecting a Beneficiary Account.
{
"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 as shown below for errors related to a 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 will 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 as shown 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 as shown below for errors related to Beneficiary Accounts.
{
"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 will perform lookup for a specific 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 as shown below on successfully editing other details of a Beneficiary Account.
{
"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 as shown below for errors related to a 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 will edit other details of 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 as shown below on successfully adding labels to 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 as shown below for errors related to adding labels to Beneficiary Accounts.
{
"status": false,
"errors": {
"base": [
"Missing required parameters: record_ids and/or labels."
],
"base":[
"The beneficiary account IDs are not present."
]
}
}
This endpoint will add labels to a 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 as shown below on successfully removing labels from 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 as shown below for errors related to removing labels from 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 will remove labels from Beneficiary Accounts.
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 |
Beneficary Transaction
Beneficiary Transaction API helps you create, maintain & manage of life cycle of Beneficiary transactions.
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 responds with JSON, structured as shown 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 as shown 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 a specific Beneficiary Transaction.
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 as shown below on successful creation of Beneficiary Transactions
{
"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 as shown below for errors related to a 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 will create 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 as shown below on successfully approving Beneficiary Transactions
{
"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 as shown below for errors related to Beneficiary Transactions.
{
"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 will approve Beneficiary Transactions
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 will reject Beneficiary Transactions
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 as shown below for successful actionable Beneficiary Transactions
{
"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 will return a list of actionable.
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 as shown below on successfully adding a status to Beneficiary Transactions.
{
"status":true,
"lifecycle_status":"abandoned",
"txn_id":[
"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx"
]
}
ERROR RESPONSE The request returns JSON structured as shown below for errors related to Beneficiary Transactions.
{
"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 will add a status to Beneficiary Transactions.
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 |
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 will refactor Beneficiary Transactions.
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 as shown below on successfully adding labels to 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 as shown below for errors related to adding labels to Beneficiary Transactions.
{
"status": false,
"errors": {
"base": [
"Missing required parameters: record_ids and/or labels."
],
"base":[
"The beneficiary transaction IDs are not present."
]
}
}
This endpoint will add labels to Beneficiary Transactions.
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 as shown below on successfully removing labels from 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 as shown below for errors related to removing labels from 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 will remove labels from Beneficiary Transactions.
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 |
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 as shown below on successfully retrieving the Holiday List from today onwards.
{
"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 retrieve all holidays from today onwards.
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 as shown below on successfully viewing a specific Holiday List.
{
"status": true,
"holidays": [
{
"id": 52,
"date": "2023-12-31",
"occasion": "New Year"
}
]
}
This endpoint will retrieve a 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 as shown below on successful creation of a Holiday List.
{
"status": true,
"holidays": [
{
"id": 54,
"date": "2023-12-27",
"occasion": "New Year Holiday "
}
]
}
ERROR RESPONSE The request returns JSON structured as shown 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 as shown below on successful update of a Holiday List.
{
"status": true,
"holidays": [
{
"id": 01,
"date": "XXXX-XX-XX",
"occasion": "XXXX"
}
]
}
ERROR RESPONSE The request returns JSON structured as shown below for errors related to updating a Holiday List.
{
"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 as shown below.
{
"status": true
}
This endpoint will delete a 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 |
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. |
| 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. |