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 "Content-Type: application/json"
-d "{
"identifier": "xxxxxx",
"password": "xxxxxx",
"device_info":
{
"uuid": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
"platform": "android",
"os_version": "1.6",
"ip_address": "103.67.90.00",
"app_version_code": 49,
"app_version_name": 2.48,
"brand": "Android",
"manufacturer": "realme",
"device_model": "realme 11 pro",
"sdk_version": "60",
"serial_number": "9876bcde234",
"fcm_token": "klmnopfghjkl"
}
}"
require 'net/http'
require 'uri'
require 'json'
uri = URI.parse("https://<environmenturl>/api/users/token")
header = {'Content-Type' => 'application/json'}
body = {
"identifier": "xxxxxx",
"password": "xxxxxx",
"device_info":
{
"uuid": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
"platform": "android",
"os_version": "1.6",
"ip_address": "103.67.90.00",
"app_version_code": 55,
"app_version_name": 2.48,
"brand": "Android",
"manufacturer": "realme",
"device_model": "realme 11 pro",
"sdk_version": "60",
"serial_number": "9876bcde234",
"fcm_token": "klmnopfghjkl"
}
}
http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = true
request = Net::HTTP::Get.new(uri.request_uri, header)
request.body = body.to_json
response = http.request(request)
const data =
{
"identifier": "xxxxxx",
"password": "xxxxxx",
"device_info":
{
"uuid": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
"platform": "android",
"os_version": "1.6",
"ip_address": "103.67.90.00",
"app_version_code": 55,
"app_version_name": 2.48,
"brand": "Android",
"manufacturer": "realme",
"device_model": "realme 11 pro",
"sdk_version": "60",
"serial_number": "9876bcde234",
"fcm_token": "klmnopfghjkl"
}
};
fetch('https://<environmenturl>/api/users/token',
{
method: 'POST',
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify(data)
})
.then(response => response.json())
.then(data => console.log(data))
.catch(error => console.error(error));
The below example can be sent as a request to the API for Android.
{
"identifier": "xxxxxx",
"password": "xxxxxx",
"device_info": {
"uuid": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
"platform": "android",
"os_version": "1.6",
"ip_address": "103.67.90.00",
"app_version_code": 55,
"app_version_name": 2.48,
"brand": "Android",
"manufacturer": "realme",
"device_model": "realme 11 pro",
"sdk_version": "60"
}
}
The below example can be sent as a request to the API for Web.
{
"identifier": "xxxxxx",
"password": "xxxxxx",
"device_info": {
"uuid": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
"platform": "web",
"os_version": "4.6",
"ip_address": "103.67.90.00",
"browser_name": "FireFox"
}
}
SUCCESS RESPONSE The request returns JSON structured like below successful login for Android
{
"status": true,
"employees": {
"id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
"user_id": "xxxxxx",
"first_name": "Rajesh",
"last_name": "Jadhav",
"mob_no": "9876567890",
"email": "rajesh@gmail.com",
"created_by": "1",
"grade": "Approver",
"alias_name": "xzyu",
"android_setting": ""{"demo_target_filter":false,"demo_target_navigation":false,"demo_target_create":false,"demo_target_alias":false}"",
"approval_status": "Y",
"active_status": "N",
"is_authorized": "Y",
"verified_email": "Y",
"verified_sms": "Y",
"first_login_flag": "Y"
},
"entity": {
"entity_id": "xxxxxx",
"entity_name": "Manufacturing Entity",
"entity_pan": "xxxxxxxx"
},
"services": [
{
"service_id": "manage",
"service_header": "client",
"service_name": "client Details 2",
"service_desc": "To Verify Details 2",
"is_delete": false,
"status": "Development Complete"}
],
"q2p_token": "<your secure token>"
}
ERROR RESPONSE The request returns JSON structured like below for errors related to missing identifier
{
"status": false,
"errors": {
"base": [
"Your account is Blocked"
],
"uuid": [
"Uuid can't be blank",
"Uuid is the wrong length (should be 36 characters)",
"Uuid (Device identifier) is not provided in a valid uuid format"
],
"os_version": [
"Os version can't be blank"
],
"ip_address": [
"Ip address can't be blank"
],
"app_version_code": [
"App version code can't be blank"
],
"app_version_name": [
"App version name can't be blank"
],
"brand": [
"Brand can't be blank"
],
"manufacturer": [
"Manufacturer can't be blank"
],
"device_model": [
"Device model can't be blank"
],
"sdk_version": [
"Sdk version can't be blank"
],
"serial_number": [
"Serial number can't be blank"
],
"browser_name": [
"Browser name can't be blank"
],
"user_unauthorized": [
"Sorry! You are not authorized to perform this action"
],
"base": [
"Unauthorized User"
]
}
}
This endpoint will login user for your entity.
UAT HTTP Request
POST https://nxt.api.q2pay.co.in/api/users/token
PRODUCTION HTTP Request
POST https://nxt.api.q2pay.in/api/users/token
Query Parameters for Android
| Parameter | Default | Description | Required | Sample |
|---|---|---|---|---|
| identifier | N.A. | Identifier for login | Yes | xxxxxx |
| password | N.A. | Password for Login | Yes | xxxxxx |
| device_info | N.A. | Include device info parameter (Refer Table below) | Yes |
Device Info for Android
| Parameter | Default | Description | Required | Sample |
|---|---|---|---|---|
| uuid | N.A. | Unique Device Id | Yes | xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx |
| platform | N.A. | Platform Value | Yes | android |
| os_version | N.A. | OS Version | Yes | Android 11 |
| ip_address | N.A. | IP Address | Yes | 188.101.98.00 |
| app_version_code | N.A. | App Version Code | Yes | 77 |
| app_version_name | N.A. | App Version Nmae | Yes | 2.68 |
| brand | N.A. | Brand | Yes | android |
| manufacturer | N.A. | Manufacturer | Yes | motorola |
| device_model | N.A. | Device Model | Yes | generation3 |
| sdk_version | N.A. | SDK Version | Yes | 50 |
| serial_number | N.A. | Serial Number | Yes | 4567cfgj67 |
| fcm_token | N.A. | FCM Token | No | kjlhnmugjk |
| primary_device | false | Primary Device | No | Y |
| verified | false | Verified | No | N |
Query Parameters for Web
| Parameter | Default | Description | Required | Sample |
|---|---|---|---|---|
| identifier | N.A. | Identifier for login | Yes | xxxxxx |
| password | N.A. | Password for login | Yes | xxxxxx |
| device_info | N.A. | Include device info parameter (Refer Table below) | Yes |
Device Info for Web
| Parameter | Default | Description | Required | Sample |
|---|---|---|---|---|
| uuid | N.A. | Unique Device Id | Yes | xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx |
| platform | N.A. | Platform Value | Yes | web |
| os_version | N.A. | OS Version | Yes | Versions 1.0 |
| ip_address | N.A. | IP Address | Yes | 188.101.98.00 |
| browser_name | N.A. | Browser Name | Yes | FireFox |
Device Info for PWA
| Parameter | Default | Description | Required | Sample |
|---|---|---|---|---|
| uuid | N.A. | Unique Device Id | Yes | xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx |
| platform | N.A. | Platform Value | Yes | PWA |
| os_version | N.A. | OS Version | Yes | Versions 1.0 |
| ip_address | N.A. | IP Address | Yes | 188.101.98.00 |
| browser_name | N.A. | Browser Name | Yes | FireFox |
Service Details
| Service ID | Description |
|---|---|
| PLogin | To Login User |
Refresh
curl -X POST "https://<environmenturl>/api/me/refresh"
-H "X-Api-Key: <your secure token>"
-H "Content-Type: application/json"
-d
"{
"device_info":
{
"uuid": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
"platform": "android",
"os_version": "1.6",
"ip_address": "103.67.90.00",
"app_version_code": 49,
"app_version_name": 2.48,
"brand": "Android",
"manufacturer": "realme",
"device_model": "realme 11 pro",
"sdk_version": "60",
"serial_number": "9876bcde234",
"fcm_token": "klmnopfghjkl"
}
}"
require 'net/http'
require 'uri'
require 'json'
uri = URI.parse("https://<environmenturl>/api/me/refresh")
header = {'X-Api-Key' => '<your secure token>', 'Content-Type' => 'application/json'}
body =
{
"device_info":
{
"uuid": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
"platform": "android",
"os_version": "1.6",
"ip_address": "103.67.90.00",
"app_version_code": 55,
"app_version_name": 2.48,
"brand": "Android",
"manufacturer": "realme",
"device_model": "realme 11 pro",
"sdk_version": "60",
"serial_number": "9876bcde234",
"fcm_token": "klmnopfghjkl"
}
}
http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = true
request = Net::HTTP::POST.new(uri.request_uri, header)
request.body = body.to_json
response = http.request(request)
const data =
{
"device_info":
{
"uuid": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
"platform": "android",
"os_version": "1.6",
"ip_address": "103.67.90.00",
"app_version_code": 55,
"app_version_name": 2.48,
"brand": "Android",
"manufacturer": "realme",
"device_model": "realme 11 pro",
"sdk_version": "60",
"serial_number": "9876bcde234",
"fcm_token": "klmnopfghjkl"
}
};
fetch('https://<environmenturl>/api/me/refresh',
{
method: 'POST',
headers: {
'X-Api-Key': '<your secure token>',
'Content-Type': 'application/json'
},
body: JSON.stringify(data)
})
.then(response => response.json())
.then(data => console.log(data))
.catch(error => console.error(error));
The below example can be sent as a request to the API for Android.
{
"device_info":
{
"uuid": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
"platform": "android",
"os_version": "1.6",
"ip_address": "103.67.90.00",
"app_version_code": 55,
"app_version_name": 2.48,
"brand": "Android",
"manufacturer": "realme",
"device_model": "realme 11 pro",
"sdk_version": "60",
"serial_number": "9876bcde234",
"fcm_token": "klmnopfghjkl"
}
}
The below example can be sent as a request to the API for Web.
{
"device_info":
{
"uuid": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
"platform": "web",
"os_version": "4.6",
"ip_address": "103.67.90.00",
"browser_name": "FireFox"
}
}
SUCCESS RESPONSE The request returns JSON structured like below on Refresh User
{
"status": true,
"employees": {
"id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
"user_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
"first_name": "Rajesh",
"last_name": "Jadhav",
"mob_no": "9876567890",
"email": "rajesh@gmail.com",
"created_by": "1",
"grade": "Approver",
"alias_name": "xzyu",
"android_setting": ""{"demo_target_filter":false,"demo_target_navigation":false,"demo_target_create":false,"demo_target_alias":false}"",
"approval_status": "Y",
"active_status": "N",
"is_authorized": "Y",
"verified_email": "Y",
"verified_sms": "Y",
"first_login_flag": "Y"
},
"entity": {
"entity_id": "xxxxxx",
"entity_name": "Manufacturing Entity",
"entity_pan": "xxxxxxxxx"
},
"services": [
{
"service_id": "manage",
"service_header": "client",
"service_name": "client Details 2",
"service_desc": "To Verify Details 2",
"is_delete": false,
"status": "Development Complete"}
]
}
ERROR RESPONSE The request returns JSON structured like below when token has expired
{
"errors": {
"user_unauthorized":[
"Sorry! You are not authorized to perform this action"
],
"token_expired":[
"Sorry! Your token is expired. Please login again!"
]
},
"status": false
}
ERROR RESPONSE The request returns JSON structured like below for error response related to missing X-Api-Key in headers
{
"errors": {
"user_unauthorized": [
"Sorry! You are not authorized to perform this action"
],
"base": [
"Something went wrong! Please contact admin!"
],
"base": [
"Invalid token format"
]
}
"status": false
}
This endpoint will refresh user token with extended validity.
UAT HTTP Request
POST https://nxt.api.q2pay.co.in/api/me/refresh
PRODUCTION HTTP Request
POST https://nxt.api.q2pay.in/api/me/refresh
Query Parameters
| Parameter | Default | Description | Required | Sample |
|---|---|---|---|---|
| device_info | ||||
| uuid | N.A. | Unique Device Id | No | xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx |
| platform | N.A. | Platform Value | Yes | android |
| os_version | N.A. | OS Version | No | Android 11 |
| ip_address | N.A. | IP Address | No | 188.101.98.00 |
| app_version_code | N.A. | App Version Code | No | 77 |
| app_version_name | N.A. | App Version Nmae | No | 2.68 |
| brand | N.A. | Brand | No | android |
| manufacturer | N.A. | Manufacturer | No | motorola |
| device_model | N.A. | Device Model | No | generation3 |
| sdk_version | N.A. | SDK Version | No | 50 |
| serial_number | N.A. | Serial Number | No | 4567cfgj67 |
| fcm_token | N.A. | FCM Token | Yes | kjlhnmugjk |
| primary_device | false | Primary Device | No | Y |
| verified | false | Verified | No | N |
Query Parameters for Web
| Parameter | Default | Description | Required | Sample |
|---|---|---|---|---|
| device_info | ||||
| uuid | N.A. | Unique Device Id | Yes | xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx |
| platform | N.A. | Platform Value | Yes | web |
| os_version | N.A. | OS Version | Yes | Versions 1.0 |
| ip_address | N.A. | IP Address | Yes | 188.101.98.00 |
| browser_name | N.A. | Browser Name | Yes | FireFox |
Device Info for PWA
| Parameter | Default | Description | Required | Sample |
|---|---|---|---|---|
| uuid | N.A. | Unique Device Id | Yes | xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx |
| platform | N.A. | Platform Value | Yes | PWA |
| os_version | N.A. | OS Version | Yes | Versions 1.0 |
| ip_address | N.A. | IP Address | Yes | 188.101.98.00 |
| browser_name | N.A. | Browser Name | Yes | FireFox |
Service Details
| Service ID | Description |
|---|---|
| PLogin | To Refresh User |
Logout
curl "https://<environmenturl>/api/users/logout"
-H "X-Api-Key: <your secure token>"
-H "Content-Type: application/json"
require 'net/http'
require 'uri'
require 'json'
uri = URI.parse("https://<environmenturl>/api/users/logout")
header = {'X-Api-Key' => '<your secure token>', 'Content-Type' => 'application/json'}
http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = true
request = Net::HTTP::Delete.new(uri.request_uri, header)
request.body = body.to_json
response = http.request(request)
fetch('https://<environmenturl>/api/users/logout',
{
method: 'DELETE',
headers: {
'X-Api-Key': '<your secure token>',
'Content-Type': 'application/json'
},
body: JSON.stringify(data)
})
.then(response => response.json())
.then(data => console.log(data))
.catch(error => console.error(error));
SUCCESS RESPONSE The request returns JSON structured like below User Logout successfully.
{
"status": true,
"message": "User logged out"
}
ERROR RESPONSE The request returns JSON structured like below for error related to missing X-Api-Key in headers
{
"errors": {
"user_unauthorized": [
"Sorry! You are not authorized to perform this action"
],
"base": [
"Invalid token format"
]
},
"status": false
}
This endpoint will logout user for your entity.
UAT HTTP Request
DELETE https://nxt.api.q2pay.co.in/api/users/logout
PRODUCTION HTTP Request
DELETE https://nxt.api.q2pay.in/api/users/logout
Service Details
| Service ID | Description |
|---|---|
| PLogout | To Logout User |
Owner Account
Owner Accounts helps you create, maintain & manage lifecycle of owner account for your organization.
Get All Owner Account
curl -X GET "https://<environmenturl>/api/accounts/owner"
-H "X-Api-Key: <your secure token>"
-H "Content-Type: application/json"
require 'net/http'
require 'uri'
require 'json'
uri = URI.parse("https://<environmenturl>/api/accounts/owner")
header = {'X-Api-Key' => '<your secure token>', 'Content-Type' => 'application/json'}
http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = true
request = Net::HTTP::Get.new(uri.request_uri, header)
request.body = body.to_json
response = http.request(request)
fetch('https://<environmenturl>/api/accounts/owner', {
method: 'GET',
headers: {
'X-Api-Key': '<your secure token>',
'Content-Type': 'application/json'
},
body: JSON.stringify(data)
})
.then(response => response.json())
.then(data => console.log(data))
.catch(error => console.error(error));
SUCCESS RESPONSE The request returns JSON structured like below
{
"status": true,
"total_count": 2,
"total_balance": "1500.0",
"summary": {
"approved_accounts_count": 4,
"pending_accounts_count": 7,
"connected_banking_count": 7,
"non_connected_banking_count": 4,
"available_banks": [
"Axis Bank",
"Canara Bank",
"HDFC Bank",
"ICICI Bank",
"IDBI",
"Jammu and Kashmir Bank",
"Kotak Mahindra Bank",
"Punjab National Bank",
"State Bank of India"
],
"available_tags": [
"pune",
"mumbai",
"gulmarg",
"nashik",
"goa"
]
},
"owner_accounts": [
{
"id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
"account_type": "Current Account",
"entity_id": "EQ582",
"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"],
"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"
},
{
"id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
"account_type": "Current Account",
"entity_id": "EQ582",
"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"
}
],
"title": {
"records": 2,
"current_page": 1,
"total_pages": 1,
"page_item_count": 50
}
}
This endpoint retrieves all Owner Accounts.
UAT HTTP Request
GET https://nxt.api.q2pay.co.in/api/accounts/owner
PRODUCTION HTTP Request
GET https://nxt.api.q2pay.in/api/accounts/owner
Query Parameters
| Parameter | Default | Description | Required | Sample |
|---|---|---|---|---|
| approval_status | N.A. | approval_status for owner account | optional | pending |
| type_of_account | N.A. | type of account for owner account | optional | Current Account |
| connected_banking | N.A. | connected banking for owner account | optional | "Y","N" |
| start_date, end_date | N.A. | start date and end date for owner account | optional | xxxxxxxx,xxxxxxxx |
| bank_account_no | N.A. | bank account number for owner account | optional | 1234567897 |
| ifsc | N.A. | ifsc code for owner account | optional | IBKL0001957 |
| pan | N.A. | pan for owner account | optional | AAACR5055K |
| search_string | N.A. | search string for id/name/contact no/email of owner account | optional | xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx,Q2pay technology,12356789,abc@gmail.com |
| bank_name | N.A. | bank name for owner account | optional | ICICI Bank |
| active_status | N.A. | active status for owner account | optional | "Y","N" |
| entity_id | N.A. | entity id for owner account | optional | EQ582 |
| 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"} |
Service Details
| Service ID | Description |
|---|---|
| VAccount | View All Owner Accounts |
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": "Q581",
"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",
"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"
}
],
"title": {
"records": 1,
"current_page": 1,
"total_pages": 1,
"page_item_count": 1
}
}
This endpoint retrieves Owner Accounts.
UAT HTTP Request
GET https://nxt.api.q2pay.co.in/api/accounts/owner/:id
PRODUCTION HTTP Request
GET https://nxt.api.q2pay.in/api/accounts/owner/:id
Service Details
| Service ID | Description |
|---|---|
| VAccount | View specific Owner Accounts |
Get Balance Owner Account
curl -X PUT "https://<environmenturl>/api/accounts/owner/:id/balance"
-H "X-Api-Key: <your secure token>"
-H "Content-Type: application/json"
require 'net/http'
require 'uri'
require 'json'
uri = URI.parse("https://<environmenturl>/api/accounts/owner/:id/balance")
header = {'X-Api-Key' => '<your secure token>', 'Content-Type' => 'application/json'}
http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = true
request = Net::HTTP::Put.new(uri.request_uri, header)
request.body = body.to_json
response = http.request(request)
fetch('https://<environmenturl>/api/accounts/owner/:id/balance', {
method: 'PUT',
headers: {
'X-Api-Key': '<your secure token>',
'Content-Type': 'application/json'
},
body: JSON.stringify(data)
})
.then(response => response.json())
.then(data => console.log(data))
.catch(error => console.error(error));
SUCCESS RESPONSE The request returns JSON structured like below on successful Owner accounts balance
{
"status":true,
"total_count":1,
"owner_accounts":[
{
"owner_account_id":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
"owner_account_bank_acc_no":"123456788993",
"owner_account_ifsc_code":"ICIC0000112",
"owner_account_bank_name":"ICICI Bank",
"owner_account_type":"Other",
"owner_account_balance":"1500.0",
"owner_account_balance_last_fetched_at":"xxxxxxxx",
"owner_account_balance_last_fetched_at_in_words":"less than a minute ago"
}
],
"title":{
"records":1,
"current_page":1,
"total_pages":1,
"page_item_count":1
}
}
ERROR RESPONSE The request returns JSON structured like below for errors related Owner account
{
"status":false,
"errors":{
"base":[
"Connected Banking is not enabled for this account. Kindly contact support!"
]
}
}
This endpoint fetch current account balance for Owner Account.
UAT HTTP Request
PUT https://nxt.api.q2pay.co.in/api/accounts/owner/:id/balance
PRODUCTION HTTP Request
PUT https://nxt.api.q2pay.in/api/accounts/owner/:id/balance
Service Details
| Service ID | Description |
|---|---|
| Admin | Admin |
| CBeneficiaryTxn | Create Beneficiary Transactions |
| ABeneficiaryTxn | Approve Beneficiary Transactions |
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
}"
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
}
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
};
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
}
SUCCESS RESPONSE The request returns JSON structured like below on successful display statement of owner accounts
{
"status":true,
"total_count":3,
"owner_account_details": {
"owner_bank_account_number":"8009403836",
"ifsc_code":"ICIC0000303",
"bank_name":"ICICI Bank",
"branch":"PUNE - PASHAN",
"name":"Q2PAY TECHNOLOGIES P",
"account_type":"OwnerAccount",
"statement":[
{
"transaction_date":"2023-03-30T09:07:38.893Z", "value_date":"2023-03-30", "narration":"cash paid from ICICI Bank user", "amount":"50003.0", "credit_debit":"Credit", "closing_balance":"50003.0"
},
{
"transaction_date":"2023-03-30T09:07:38.893Z", "value_date":"2023-03-30", "narration":"cash paid from ICICI Bank user", "amount":"50003.0", "credit_debit":"Debit", "closing_balance":"50003.0"
},
{
"transaction_date":"2023-03-30T09:07:38.893Z", "value_date":"2023-03-30", "narration":"cash paid from ICICI Bank user", "amount":"50003.0", "credit_debit":"Credit", "closing_balance":"50003.0"
}
]
},
"title":{
"records":1,
"current_page":1,
"total_pages":1,
"page_item_count":1
}
}
ERROR RESPONSE The request returns JSON structured like below for errors related display statement of owner accounts
{
"status": false,
"errors": {
"base": [
"Kindly check start date or end date for fetching statements."
],
"base":[
"Start amount and end amount must be numeric."
]
}
}
This endpoint Display Statement of Owner Account.
UAT HTTP Request
PUT https://nxt.api.q2pay.co.in/api/accounts/owner/:id/display_statement
PRODUCTION HTTP Request
PUT https://nxt.api.q2pay.in/api/accounts/owner/:id/display_statement
Query Parameters
| Parameter | Default | Description | Required | Sample |
|---|---|---|---|---|
| start_date ,end_date | N.A. | start date and end date of owner account | Yes | "15 Mar 2023","30 Apr 2023" or "15/3/2023", "15/5/2023" |
| credit_debit | N.A. | credit or debit of owner account | Yes | "credit","debit" |
| start_amount,end_amount | N.A. | start amount and end amount of owner account | Yes | 200,1000 |
Service Details
| Service ID | Description |
|---|---|
| VAccount | View Statement of 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
}"
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
}
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
};
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
}
SUCCESS RESPONSE The request returns JSON structured like below on successful display statement download of owner accounts
{
"status": 200
}
ERROR RESPONSE The request returns JSON structured like below for errors related display statement download of owner accounts
{
"status": false,
"errors": {
"base": [
"Kindly check start date or end date for fetching statements."
],
"base":[
"Start amount and end amount must be numeric."
]
}
}
ERROR RESPONSE The request returns JSON structured like below for errors related display statement download of owner accounts
{
"status": false,
"message": "Unsupported format requested. Please use PDF, CSV, TSV, or XLSX."
}
This endpoint Display Statement Download of Owner Account.
UAT HTTP Request
PUT https://nxt.api.q2pay.co.in/api/accounts/owner/:id/display_statement_download.:format
PRODUCTION HTTP Request
PUT https://nxt.api.q2pay.in/api/accounts/owner/:id/display_statement_download.:format
Query Parameters
| Parameter | Default | Description | Required | Sample |
|---|---|---|---|---|
| start_date ,end_date | N.A. | start date and end date of owner account | Yes | "15 Mar 2023","30 Apr 2023" or "15/3/2023", "15/5/2023" |
| credit_debit | N.A. | credit or debit of owner account | Yes | "credit","debit" |
| start_amount,end_amount | N.A. | start amount and end amount of owner account | Yes | 200,1000 |
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 |
|---|---|
| VAccount | View Statement of Owner Account |
Beneficiary Account
Beneficiary account helps you create,maintain & manage of Beneficary account.
Get All Beneficiary Accounts
curl -X GET "https://<environmenturl>/api/accounts/beneficiary"
-H "X-Api-Key: <your secure token>"
-H "Content-Type: application/json"
require 'net/http'
require 'uri'
require 'json'
uri = URI.parse("https://<environmenturl>/api/accounts/beneficiary")
header = {'X-Api-Key' => '<your secure token>', 'Content-Type' => 'application/json'}
http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = true
request = Net::HTTP::Get.new(uri.request_uri, header)
request.body = body.to_json
response = http.request(request)
fetch('https://<environmenturl>/api/accounts/beneficiary', {
method: 'GET',
headers: {
'X-Api-Key': '<your secure token>',
'Content-Type': 'application/json'
},
body: JSON.stringify(data)
})
.then(response => response.json())
.then(data => console.log(data))
.catch(error => console.error(error));
SUCCESS RESPONSE The request returns JSON structured like below
{
"status":true,
"total_count":2,
"summary": {
"blocked_accounts_count": 1,
"archived_accounts_count": 10,
"pending_accounts_count": 13,
"rejected_accounts_count": 1,
"approved_accounts_count": 6
},
"beneficiary_accounts":[
{
"id":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
"category": "Vendor",
"entity_id":"FBT3907",
"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":"FBT3907",
"name":"Q2pay technology",
"contact_no":"9876545676",
"email_id":"hgf@gmail.com",
"bank_acc_no":"4567893467",
"bank_account_holder_full_name": "SUMAN INDIA",
"bank_account_holder_legal_name": "Q2PAY TECHNOLOGIES P",
"ifsc_code":"HDFC0000212",
"bank_name":"Abhyudaya Co-operative Bank",
"pan_no":"WASED4723H",
"approval_status":"pending",
"active_status":"N",
"vendor_payment":"N",
"archived":"N",
"maintenance":"N",
"internal_account":"Y",
"created_by":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
"created_by_name":"Ashish Wadekar",
"created_on":"xxxxxxxx"
}
],
"title":{
"records":2,
"current_page":1,
"total_pages":1,
"page_item_count":1
}
}
This endpoint retrieves all Beneficiary Accounts.
UAT HTTP Request
GET https://nxt.api.q2pay.co.in/api/accounts/beneficiary
PRODUCTION HTTP Request
GET https://nxt.api.q2pay.in/api/accounts/beneficiary
Query Parameters
| Parameter | Default | Description | Required | Sample |
|---|---|---|---|---|
| approval_status | N.A. | approval status for beneficiary account | optional | pending |
| 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 | FBT3907 |
Service Details
| Service ID | Description |
|---|---|
| Admin | Admin |
| MimicEntity | View All entities |
| BVAccount | View All Beneficiary Accounts |
Get Specific Beneficiary Accounts
curl -X GET "https://<environmenturl>/api/accounts/beneficiary/:id"
-H "X-Api-Key: <your secure token>"
-H "Content-Type: application/json"
require 'net/http'
require 'uri'
require 'json'
uri = URI.parse("https://<environmenturl>/api/accounts/beneficiary/:id")
header = {'X-Api-Key' => '<your secure token>', 'Content-Type' => 'application/json'}
http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = true
request = Net::HTTP::Get.new(uri.request_uri, header)
request.body = body.to_json
response = http.request(request)
fetch('https://<environmenturl>/api/accounts/beneficiary/:id', {
method: 'GET',
headers: {
'X-Api-Key': '<your secure token>',
'Content-Type': 'application/json'
},
body: JSON.stringify(data)
})
.then(response => response.json())
.then(data => console.log(data))
.catch(error => console.error(error));
SUCCESS RESPONSE The request returns JSON structured like below
{
"status":true,
"total_count":1,
"beneficiary_accounts":[
{
"id":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
"category": "Salary,Vendor",
"entity_id":"FBT3907",
"name":"Q2pay technology",
"contact_no":"9876545676",
"email_id":"hgf@gmail.com",
"bank_acc_no":"12345678",
"bank_account_holder_full_name": "SUMAN INDIA",
"bank_account_holder_legal_name": "Q2PAY TECHNOLOGIES P",
"ifsc_code":"HDFC0000278",
"bank_name":"Abhyudaya Co-operative Bank",
"pan_no":"WASED4723H",
"pan_legal_name": "JITENDRA KIRAN KAKADE",
"approval_status":"approved",
"active_status":"Y",
"vendor_payment":"Y",
"archived":"N",
"maintenance":"N",
"approved_by":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
"approved_by_name":"Ashish Wadekar",
"approved_on":"xxxxxxxx",
"internal_account":"N",
"created_by":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
"created_by_name":"Ashish Wadekar",
"created_on":"xxxxxxxx",
"logs":[
{
"brand": "Android",
"model": "Android SDK built for x86",
"action": "Archived",
"user_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
"platform": "android",
"last_name": "Wadekar",
"last_used": "2023-11-25T05:34:28.181Z",
"timestamp": "2023-11-25T05:34:28.216Z",
"first_name": "Ashish",
"ip_address": "127.0.0.1",
"is_primary": false,
"os_version": "6.0",
"is_verified": false,
"sdk_version": "23",
"manufacturer": "unknown",
"serial_number": "EMULATOR32X1X14X0",
"logged_in_flag": true,
"logged_in_time": "2023-11-25T05:14:02.874Z",
"user_full_name": "Ashish Wadekar",
"app_version_code": "54",
"app_version_name": "1.43"
}
]
}
],
"title":{
"records":1,
"current_page":1,
"total_pages":1,
"page_item_count":1
}
}
This endpoint retrieves specific Beneficiary Accounts.
UAT HTTP Request
GET https://nxt.api.q2pay.co.in/api/accounts/beneficiary/:id
PRODUCTION HTTP Request
GET https://nxt.api.q2pay.in/api/accounts/beneficiary/:id
Service Details
| Service ID | Description |
|---|---|
| BVAccount | View specific Beneficiary Accounts |
Create Beneficiary Account
curl -X POST "https://<environmenturl>/api/accounts/beneficiary"
-H "X-Api-Key: <your secure token>"
-H "Content-Type: application/json"
-d "{
"beneficiary_accounts": {
"bank_account_no": "12345678",
"contact_no": "7486756685",
"email": "abc@gmail.com",
"ifsc": "HDFC1111237",
"pan": "WASED4723H",
}
}"
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",
}
}
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",
}
};
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",
}
}
SUCCESS RESPONSE The request returns JSON structured like below on successful Beneficiary accounts creation
{
"status": true,
"total_count": 1,
"beneficiary_accounts": [
{
"id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
"category": "Salary,Vendor",
"entity_id": "Q581",
"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",
"active_status": "N",
"vendor_payment": "N",
"archived": "N",
"maintenance":"N",
"internal_account":"N",
"created_by": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
"created_by_name": "Akshay Rangnekar",
"created_on": "xxxxxxxx",
"logs": [
{
"action": "Created",
"user_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
"user_full_name": "Akshay Rangnekar",
"timestamp": "2023-11-27T04:06:01.340Z",
"last_used": "2023-11-27T04:06:01.282Z",
"logged_in_flag": true,
"logged_in_time": "2023-11-27T04:01:08.120Z",
"app_version_name": "1.43",
"app_version_code": "54",
"platform": "android",
"model": "Android SDK built for x86",
"manufacturer": "unknown",
"brand": "Android",
"serial_number": "EMULATOR32X1X14X0",
"os_version": "6.0",
"sdk_version": "23",
"ip_address": "127.0.0.1",
"is_primary": false,
"is_verified": false,
"first_name": "Akshay",
"last_name": "Rangnekar"
}
]
}
],
"title":{
"records": 1,
"current_page": 1,
"total_pages": 1,
"page_item_count": 1
}
}
ERROR RESPONSE The request returns JSON structured like below for errors related beneficiary account
{
"status": false,
"errors":{
"bank_account_number":
[
"Bank account number this bank account is already linked with an existing beneficiary"
],
"permanent_account_number":
[
"Permanent account number is already linked with an existing beneficiary"
],
"category":
[
"Category is not valid/active for the account type"
],
"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"
]
}
}
}
This endpoint creates a Beneficiary Account.
UAT HTTP Request
POST https://nxt.api.q2pay.co.in/api/accounts/beneficiary
PRODUCTION HTTP Request
POST https://nxt.api.q2pay.in/api/accounts/beneficiary
Query Parameters
| Parameter | Default | Description | Required | Sample |
|---|---|---|---|---|
| bank_account_no | N.A. | Bank account number for beneficiary account | Yes | 123456 |
| contact_no | N.A. | contact no for beneficiary account | Yes | 9867454325 |
| N.A. | email id for beneficiary account | Yes | abc@gmail.com | |
| ifsc | N.A. | ifsc for beneficiary account | Yes | HDFC1234 |
| pan | N.A. | pan for beneficiary account | Yes | CGHFG78J |
| gstin | N.A. | gstin for beneficiary account | No | 12AANCA2275G2ZO |
| name | N.A. | name for Virtual Account of beneficiary account | Yes | Q2PAY TECHNOLOGIES P |
| category | N.A. | category for beneficiary account | No | Vendor |
| address | N.A. | address for beneficiary account | No | Pune |
Service Details
| Service ID | Description |
|---|---|
| BUAccount | Create Beneficiary Account |
Update Beneficiary Account
curl -X PUT "https://<environmenturl>/api/accounts/beneficiary/:id"
-H "X-Api-Key: <your secure token>"
-H "Content-Type: application/json"
-d "{
"beneficiary_accounts": {
"bank_account_no": "12345678",
"ifsc": "HDFC1111237",
"name":"Q2pay technology"
}
}"
require 'net/http'
require 'uri'
require 'json'
uri = URI.parse("https://<environmenturl>/api/accounts/beneficiary/:id")
header = {'X-Api-Key' => '<your secure token>', 'Content-Type' => 'application/json'}
body = {
"beneficiary_accounts": {
"bank_account_no": "12345678",
"ifsc": "HDFC1111237",
"name":"Q2pay technology"
}
}
http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = true
request = Net::HTTP::Put.new(uri.request_uri, header)
request.body = body.to_json
response = http.request(request)
const data = {
"beneficiary_accounts": {
"bank_account_no": "12345678",
"ifsc": "HDFC1111237",
"name":"Q2pay technology"
}
};
fetch('https://<environmenturl>/api/accounts/beneficiary/:id', {
method: 'PUT',
headers: {
'X-Api-Key': '<your secure token>',
'Content-Type': 'application/json'
},
body: JSON.stringify(data)
})
.then(response => response.json())
.then(data => console.log(data))
.catch(error => console.error(error));
The below example can be sent as a request to the API.
{
"beneficiary_accounts": {
"bank_account_no": "12345678",
"ifsc": "HDFC1111237",
"name":"Q2pay technology"
}
}
SUCCESS RESPONSE The request returns JSON structured like below on successful Beneficiary accounts update
{
"status":true,
"total_count":1,
"beneficiary_accounts":[
{
"id":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
"category": "Salary,Vendor",
"entity_id":"Q581",
"name":"Q2pay technology",
"contact_no":"9578655641",
"email_id":"Q2@pay.com",
"bank_acc_no":"12345678",
"bank_account_holder_full_name": "SUMAN INDIA",
"bank_account_holder_legal_name": "Q2PAY TECHNOLOGIES P",
"ifsc_code":"HDFC0000298",
"bank_name":"HDFC Bank",
"pan_no":"WASED4723H",
"pan_legal_name": "JITENDRA KIRAN KAKADE",
"approval_status":"pending",
"active_status":"N",
"vendor_payment":"N",
"archived":"N",
"maintenance":"N",
"internal_account":"N",
"created_by":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
"created_by_name":"Ashish Wadekar",
"created_on":"xxxxxxxx",
"logs":[
{
"action":"Updated",
"user_id":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
"user_full_name":"Ashish Wadekar",
"timestamp": "2023-11-27T04:06:38.602Z",
"last_used": "2023-11-27T04:06:38.533Z",
"logged_in_flag": true,
"logged_in_time": "2023-11-27T04:01:08.120Z",
"app_version_name": "1.43",
"app_version_code": "54",
"platform": "android",
"model": "Android SDK built for x86",
"manufacturer": "unknown",
"brand": "Android",
"serial_number": "EMULATOR32X1X14X0",
"os_version": "6.0",
"sdk_version": "23",
"ip_address": "127.0.0.1",
"is_primary": false,
"is_verified": false,
"first_name":"Ashish",
"last_name":"Wadekar"
}
]
}
],
"title":{
"records":1,
"current_page":1,
"total_pages":1,
"page_item_count":1
}
}
ERROR RESPONSE The request returns JSON structured like below for errors related beneficiary account
{
"status": false,
"errors":{
"bank_account_number":
[
"Bank account number this bank account is already linked with an existing beneficiary"
],
"base":
[
"Bank Account Number / IFSC cannot be blank"
],
"base": [
"Beneficiary_account cannot be edited as account is archived/blocked"
],
"bank_account_number":{
"base":[
"Full Name / Legal Name is mandatory for Virtual Accounts"
]
}
}
}
This endpoint updates a Beneficiary Account.
UAT HTTP Request
PUT https://nxt.api.q2pay.co.in/api/accounts/beneficiary/:id
PRODUCTION HTTP Request
PUT https://nxt.api.q2pay.in/api/accounts/beneficiary/:id
Query Parameters
| Parameter | Default | Description | Required | Sample |
|---|---|---|---|---|
| bank_account_no | N.A. | Bank account number for beneficiary account | Yes | 123456 |
| ifsc | N.A. | ifsc for beneficiary account | Yes | HDFC1234 |
| name | N.A. | name for Virtual Account of beneficiary account | Yes | Q2pay technology |
Service Details
| Service ID | Description |
|---|---|
| BUAccount | Update Beneficiary Account |
Approve Beneficiary Account
curl -X PUT "https://<environmenturl>/api/accounts/beneficiary/:id/approve"
-H "X-Api-Key: <your secure token>"
-H "Content-Type: application/json"
require 'net/http'
require 'uri'
require 'json'
uri = URI.parse("https://<environmenturl>/api/accounts/beneficiary/:id/approve")
header = {'X-Api-Key' => '<your secure token>', 'Content-Type' => 'application/json'}
http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = true
request = Net::HTTP::Put.new(uri.request_uri, header)
request.body = body.to_json
response = http.request(request)
fetch('https://<environmenturl>/api/accounts/beneficiary/:id/approve', {
method: 'PUT',
headers: {
'X-Api-Key': '<your secure token>',
'Content-Type': 'application/json'
},
body: JSON.stringify(data)
})
.then(response => response.json())
.then(data => console.log(data))
.catch(error => console.error(error));
SUCCESS RESPONSE The request returns JSON structured like below on successful Beneficiary accounts approve
{
"status":true,
"total_count":1,
"beneficiary_accounts":[
{
"id":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
"category": "Salary,Vendor",
"entity_id":"WEJ3907",
"name":"Q2pay technology",
"contact_no":"9876545676",
"email_id":"hgf@gmail.com",
"bank_acc_no":"12345678",
"bank_account_holder_full_name": "SUMAN INDIA",
"bank_account_holder_legal_name": "Q2PAY TECHNOLOGIES P",
"ifsc_code":"HDFC000296",
"bank_name":"Abhyudaya Co-operative Bank",
"pan_no":"CQSED4723H",
"pan_legal_name": "JITENDRA KIRAN KAKADE",
"approval_status":"approved",
"active_status":"Y",
"vendor_payment":"Y",
"archived":"N",
"maintenance":"N",
"approved_by":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
"approved_by_name":"Ashish Wadekar",
"approved_on":"xxxxxxxx",
"internal_account":"N",
"created_by":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
"created_by_name":"Ashish Wadekar",
"created_on":"xxxxxxxx",
"logs":[
{
"action": "Approved",
"user_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
"user_full_name": "Akshay Rangnekar",
"timestamp": "2023-11-27T04:06:56.304Z",
"last_used": "2023-11-27T04:06:56.254Z",
"logged_in_flag": true,
"logged_in_time": "2023-11-27T04:01:08.120Z",
"app_version_name": "1.43",
"app_version_code": "54",
"platform": "android",
"model": "Android SDK built for x86",
"manufacturer": "unknown",
"brand": "Android",
"serial_number": "EMULATOR32X1X14X0",
"os_version": "6.0",
"sdk_version": "23",
"ip_address": "127.0.0.1",
"is_primary": false,
"is_verified": false,
"first_name":"Ashish",
"last_name":"Wadekar"
}
]
}
],
"title":{
"records":1,
"current_page":1,
"total_pages":1,
"page_item_count":1
}
}
ERROR RESPONSE The request returns JSON structured like below for errors related beneficiary account
{
"status":false,
"errors":
{
"beneficiary_account":
[
"Beneficiary account can't be approved"
],
[
"Beneficiary account already approved"
],
[
"Beneficiary account can not be approved as there are queued transactions associated with this account",
],
[
"Beneficiary account can not be approved as there are queued distribution transactions associated with this account"
]
}
}
This endpoint approve a Beneficiary Account.
UAT HTTP Request
PUT https://nxt.api.q2pay.co.in/api/accounts/beneficiary/:id/approve
PRODUCTION HTTP Request
PUT https://nxt.api.q2pay.in/api/accounts/beneficiary/:id/approve
Service Details
| Service ID | Description |
|---|---|
| BAAccount | Approve Beneficiary Account |
Archive Beneficiary Account
curl -X PUT "https://<environmenturl>/api/accounts/beneficiary/:id/archive"
-H "X-Api-Key: <your secure token>"
-H "Content-Type: application/json"
require 'net/http'
require 'uri'
require 'json'
uri = URI.parse("https://<environmenturl>/api/accounts/beneficiary/:id/archive")
header = {'X-Api-Key' => '<your secure token>', 'Content-Type' => 'application/json'}
http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = true
request = Net::HTTP::Put.new(uri.request_uri, header)
request.body = body.to_json
response = http.request(request)
fetch('https://<environmenturl>/api/accounts/beneficiary/:id/archive, {
method: 'PUT',
headers: {
'X-Api-Key': '<your secure token>',
'Content-Type': 'application/json'
},
body: JSON.stringify(data)
})
.then(response => response.json())
.then(data => console.log(data))
.catch(error => console.error(error));
SUCCESS RESPONSE The request returns JSON structured like below on successful Beneficiary accounts archive
{
"status":true,
"total_count":1,
"beneficiary_accounts":[
{
"id":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
"category": "Salary,Vendor",
"entity_id":"FTYT3907",
"name":"Q2pay technology",
"contact_no":"9876545676",
"email_id":"hgf@gmail.com",
"bank_acc_no":"12345678",
"bank_account_holder_full_name": "SUMAN INDIA",
"bank_account_holder_legal_name": "Q2PAY TECHNOLOGIES P",
"ifsc_code":"HDFC01233237",
"bank_name":"Abhyudaya Co-operative Bank",
"pan_no":"WASED4723H",
"pan_legal_name": "JITENDRA KIRAN KAKADE",
"approval_status":"archived",
"active_status":"N",
"vendor_payment": "N",
"archived":"Y",
"maintenance":"N",
"archived_by":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
"archived_by_name":"Ashish Wadekar",
"archived_on":"xxxxxxxx",
"internal_account":"N",
"created_by":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
"created_by_name":"Ashish Wadekar",
"created_on":"xxxxxxxx",
"logs":[
{
"action": "Archived",
"user_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
"user_full_name": "Akshay Rangnekar",
"timestamp": "2023-11-27T04:07:07.978Z",
"last_used": "2023-11-27T04:07:07.935Z",
"logged_in_flag": true,
"logged_in_time": "2023-11-27T04:01:08.120Z",
"app_version_name": "1.43",
"app_version_code": "54",
"platform": "android",
"model": "Android SDK built for x86",
"manufacturer": "unknown",
"brand": "Android",
"serial_number": "EMULATOR32X1X14X0",
"os_version": "6.0",
"sdk_version": "23",
"ip_address": "127.0.0.1",
"is_primary": false,
"is_verified": false,
"first_name":"Ashish",
"last_name":"Wadekar"
}
]
}
],
"title":{
"records":1,
"current_page":1,
"total_pages":1,
"page_item_count":1
}
}
ERROR RESPONSE The request returns JSON structured like below for errors related beneficiary account
{
"status":false,
"errors":
{
"beneficiary_account":
[
"Beneficiary account can't be archived"
],
[
"Beneficiary account already archived"
],
[
"Beneficiary account can not be archived as there are queued transactions associated with this account",
],
[
"Beneficiary account can not be archived as there are queued distribution transactions associated with this account"
]
}
}
This endpoint archive a Beneficiary Account.
UAT HTTP Request
PUT https://nxt.api.q2pay.co.in/api/accounts/beneficiary/:id/archive
PRODUCTION HTTP Request
PUT https://nxt.api.q2pay.in/api/accounts/beneficiary/:id/archive
Service Details
| Service ID | Description |
|---|---|
| BAAccountArchive | Archive Beneficiary Account |
Unarchive Beneficiary Account
curl -X PUT "https://<environmenturl>/api/accounts/beneficiary/:id/unarchive"
-H "X-Api-Key: <your secure token>"
-H "Content-Type: application/json"
require 'net/http'
require 'uri'
require 'json'
uri = URI.parse("https://<environmenturl>/api/accounts/beneficiary/:id/unarchive")
header = {'X-Api-Key' => '<your secure token>', 'Content-Type' => 'application/json'}
http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = true
request = Net::HTTP::Put.new(uri.request_uri, header)
request.body = body.to_json
response = http.request(request)
fetch('https://<environmenturl>/api/accounts/beneficiary/:id/unarchive, {
method: 'PUT',
headers: {
'X-Api-Key': '<your secure token>',
'Content-Type': 'application/json'
},
body: JSON.stringify(data)
})
.then(response => response.json())
.then(data => console.log(data))
.catch(error => console.error(error));
SUCCESS RESPONSE The request returns JSON structured like below on successful Beneficiary accounts unarchive
{
"status":true,
"total_count":1,
"beneficiary_accounts":[
{
"id":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
"category": "Salary,Vendor",
"entity_id":"FTYT3907",
"name":"Q2pay technology",
"contact_no":"9876545676",
"email_id":"hgf@gmail.com",
"bank_acc_no":"12345678",
"bank_account_holder_full_name": "SUMAN INDIA",
"bank_account_holder_legal_name": "Q2PAY TECHNOLOGIES P",
"ifsc_code":"HDFC01233237",
"bank_name":"Abhyudaya Co-operative Bank",
"pan_no":"WASED4723H",
"pan_legal_name": "JITENDRA KIRAN KAKADE",
"approval_status":"pending",
"active_status":"N",
"vendor_payment": "N",
"archived":"N",
"maintenance":"N",
"unarchived_by":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
"unarchived_by_name":"Ashish Wadekar",
"unarchived_on":"xxxxxxxx",
"internal_account":"N",
"created_by":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
"created_by_name":"Ashish Wadekar",
"created_on":"xxxxxxxx",
"logs":[
{
"action": "Unarchived",
"user_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
"user_full_name": "Akshay Rangnekar",
"timestamp": "2023-11-27T04:07:07.978Z",
"last_used": "2023-11-27T04:07:07.935Z",
"logged_in_flag": true,
"logged_in_time": "2023-11-27T04:01:08.120Z",
"app_version_name": "1.43",
"app_version_code": "54",
"platform": "android",
"model": "Android SDK built for x86",
"manufacturer": "unknown",
"brand": "Android",
"serial_number": "EMULATOR32X1X14X0",
"os_version": "6.0",
"sdk_version": "23",
"ip_address": "127.0.0.1",
"is_primary": false,
"is_verified": false,
"first_name":"Ashish",
"last_name":"Wadekar"
}
]
}
],
"title":{
"records":1,
"current_page":1,
"total_pages":1,
"page_item_count":1
}
}
ERROR RESPONSE The request returns JSON structured like below for errors related beneficiary account
{
"status":false,
"errors":
{
"beneficiary_account":
[
"Beneficiary account can't be unarchived"
],
[
"Beneficiary account already unarchived"
]
}
}
This endpoint unarchive a Beneficiary Account.
UAT HTTP Request
PUT https://nxt.api.q2pay.co.in/api/accounts/beneficiary/:id/unarchive
PRODUCTION HTTP Request
PUT https://nxt.api.q2pay.in/api/accounts/beneficiary/:id/unarchive
Service Details
| Service ID | Description |
|---|---|
| BAAccountArchive | Unarchive Beneficiary Account |
Block Beneficiary Account
curl -X PUT "https://<environmenturl>/api/accounts/beneficiary/:id/block"
-H "X-Api-Key: <your secure token>"
-H "Content-Type: application/json"
require 'net/http'
require 'uri'
require 'json'
uri = URI.parse("https://<environmenturl>/api/accounts/beneficiary/:id/block")
header = {'X-Api-Key' => '<your secure token>', 'Content-Type' => 'application/json'}
http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = true
request = Net::HTTP::Put.new(uri.request_uri, header)
request.body = body.to_json
response = http.request(request)
fetch('https://<environmenturl>/api/accounts/beneficiary/:id/block, {
method: 'PUT',
headers: {
'X-Api-Key': '<your secure token>',
'Content-Type': 'application/json'
},
body: JSON.stringify(data)
})
.then(response => response.json())
.then(data => console.log(data))
.catch(error => console.error(error));
SUCCESS RESPONSE The request returns JSON structured like below on successful Beneficiary accounts block
{
"status":true,
"total_count":1,
"beneficiary_accounts":[
{
"id":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
"category": "Salary,Vendor",
"entity_id":"FBT3789",
"name":"Q2pay technology",
"contact_no":"9876545676",
"email_id":"hgf@gmail.com",
"bank_acc_no":"12345678",
"bank_account_holder_full_name": "SUMAN INDIA",
"bank_account_holder_legal_name": "Q2PAY TECHNOLOGIES P",
"ifsc_code":"HDFC55555237",
"bank_name":"Abhyudaya Co-operative Bank",
"pan_no":"WASED4723H",
"pan_legal_name": "JITENDRA KIRAN KAKADE",
"approval_status":"blocked",
"active_status":"N",
"vendor_payment": "N",
"archived":"N",
"maintenance":"Y",
"blocked_by":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
"blocked_by_name":"Ashish Wadekar",
"blocked_on":"xxxxxxxx",
"internal_account":"N",
"created_by":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
"created_by_name":"Ashish Wadekar",
"created_on":"xxxxxxxx",
"logs":[
{
"action":"Blocked",
"user_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
"user_full_name": "Akshay Rangnekar",
"timestamp": "2023-11-27T04:07:07.978Z",
"last_used": "2023-11-27T04:07:07.935Z",
"logged_in_flag": true,
"logged_in_time": "2023-11-27T04:01:08.120Z",
"app_version_name": "1.43",
"app_version_code": "54",
"platform": "android",
"model": "Android SDK built for x86",
"manufacturer": "unknown",
"brand": "Android",
"serial_number": "EMULATOR32X1X14X0",
"os_version": "6.0",
"sdk_version": "23",
"ip_address": "127.0.0.1",
"is_primary": false,
"is_verified": false,
"first_name":"Ashish",
"last_name":"Wadekar"
}
]
}
],
"title":{
"records":1,
"current_page":1,
"total_pages":1,
"page_item_count":1
}
}
ERROR RESPONSE The request returns JSON structured like below for errors related beneficiary account
{
"status":false,
"errors":
{
"beneficiary_account":
[
"Beneficiary account can't be blocked"
],
[
"Beneficiary account already blocked"
],
[
"Beneficiary account can not be blocked as there are queued transactions associated with this account",
],
[
"Beneficiary account can not be blocked as there are queued distribution transactions associated with this account"
]
}
}
This endpoint blocked a Beneficiary Account.
UAT HTTP Request
PUT https://nxt.api.q2pay.co.in/api/accounts/beneficiary/:id/block
PRODUCTION HTTP Request
PUT https://nxt.api.q2pay.in/api/accounts/beneficiary/:id/block
Service Details
| Service ID | Description |
|---|---|
| BAAccountBlock | Block Beneficiary Account |
Reject Beneficiary Account
curl -X PUT "https://<environmenturl>/api/accounts/beneficiary/:id/reject"
-H "X-Api-Key: <your secure token>"
-H "Content-Type: application/json"
-d "{
"rejection_reason": "rejected account"
}"
require 'net/http'
require 'uri'
require 'json'
uri = URI.parse("https://<environmenturl>/api/accounts/beneficiary/:id/reject")
header = {'X-Api-Key' => '<your secure token>', 'Content-Type' => 'application/json'}
body = {
"rejection_reason": "rejected account"
}
http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = true
request = Net::HTTP::Put.new(uri.request_uri, header)
request.body = body.to_json
response = http.request(request)
const data = {
"rejection_reason": "rejected account"
};
fetch('https://<environmenturl>/api/accounts/beneficiary/:id/reject, {
method: 'PUT',
headers: {
'X-Api-Key': '<your secure token>',
'Content-Type': 'application/json'
},
body: JSON.stringify(data)
})
.then(response => response.json())
.then(data => console.log(data))
.catch(error => console.error(error));
The below example can be sent as a request to the API.
{
"rejection_reason": "rejected account"
}
SUCCESS RESPONSE The request returns JSON structured like below on successful Beneficiary accounts reject
{
"status": true,
"total_count": 1,
"beneficiary_accounts": [
{
"id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
"category": "Salary,Vendor,Cat_test",
"entity_id": "Q581",
"name": "Q2PAY TECHNOLOGIES P",
"contact_no": "8698111627",
"email_id": "anuj@gmail.com",
"bank_acc_no": "1234567890",
"bank_account_holder_full_name": "SUMAN INDIA",
"bank_account_holder_legal_name": "Q2PAY TECHNOLOGIES P",
"ifsc_code": "HDFC000296",
"bank_name": "HDFC Bank",
"pan_no": "AAJCQ0511P",
"pan_legal_name": "QUEST 2 TRAVEL.COM INDIA PRIVATE LIMITED",
"approval_status": "rejected",
"active_status": "N",
"vendor_payment": "N",
"archived": "N",
"maintenance": "N",
"rejection_reason": "rejected account",
"rejected_by": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
"rejected_by_name": "Akshay Rangnekar",
"rejected_on": "xxxxxxxx",
"internal_account": "N",
"created_by": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
"created_by_name": "Akshay Rangnekar",
"created_on": "xxxxxxxx",
"logs": [
{
"action": "Rejected",
"user_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
"user_full_name": "Akshay Rangnekar",
"timestamp": "2024-07-03T11:33:54.523Z",
"last_used": "2024-07-03T11:33:54.490Z",
"logged_in_flag": true,
"logged_in_time": "2024-07-03T11:30:11.971Z",
"app_version_name": "1.43",
"app_version_code": "54",
"platform": "android",
"model": "Android SDK built for x86",
"manufacturer": "unknown",
"brand": "Android",
"serial_number": "EMULATOR32X1X14X0",
"os_version": "6.0",
"sdk_version": "23",
"ip_address": "127.0.0.1",
"is_primary": false,
"is_verified": false,
"first_name": "Akshay",
"last_name": "Rangnekar"
}
]
}
],
"title": {
"records": 1,
"current_page": 1,
"total_pages": 1,
"page_item_count": 1
}
}
ERROR RESPONSE The request returns JSON structured like below for errors related beneficiary account
{
"status":false,
"errors":
{
"beneficiary_account":
[
"Beneficiary account can't be rejected"
],
[
"Beneficiary account already rejected"
],
[
"Beneficiary account can not be rejected as there are queued transactions associated with this account",
],
[
"Beneficiary account can not be rejected as there are queued distribution transactions associated with this account"
],
[
"Beneficiary account rejection reason is mandatory"
],
"base":
[
"rejection reason must be at least 10 characters"
]
}
}
This endpoint reject a Beneficiary Account.
UAT HTTP Request
PUT https://nxt.api.q2pay.co.in/api/accounts/beneficiary/:id/reject
PRODUCTION HTTP Request
PUT https://nxt.api.q2pay.in/api/accounts/beneficiary/:id/reject
Query Parameters
| Parameter | Default | Description | Required | Sample |
|---|---|---|---|---|
| rejection_reason | N.A. | rejection reason for beneficiary account | Yes | rejected account |
Service Details
| Service ID | Description |
|---|---|
| BAAccount | Reject Beneficary Account |
Get Lookup Beneficiary Account
curl -X GET "https://<environmenturl>/api/accounts/beneficiary/lookup"
-H "X-Api-Key: <your secure token>"
-H "Content-Type: application/json"
-d "{
"bank_account_no": "1234567890",
"ifsc": "IBKL0002000",
}"
require 'net/http'
require 'uri'
require 'json'
uri = URI.parse("https://<environmenturl>/api/accounts/beneficiary/lookup")
header = {'X-Api-Key' => '<your secure token>', 'Content-Type' => 'application/json'}
body = {
"bank_account_no": "1234567890",
"ifsc": "IBKL0002000",
}
http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = true
request = Net::HTTP::Get.new(uri.request_uri, header)
request.body = body.to_json
response = http.request(request)
const data = {
"bank_account_no": "1234567890",
"ifsc": "IBKL0002000",
};
fetch('https://<environmenturl>/api/accounts/beneficiary/lookup', {
method: 'GET',
headers: {
'X-Api-Key': '<your secure token>',
'Content-Type': 'application/json'
},
body: JSON.stringify(data)
})
.then(response => response.json())
.then(data => console.log(data))
.catch(error => console.error(error));
The below example can be sent as a request to the API.
{
"bank_account_no": "1234567890",
"ifsc": "IBKL0002000",
}
The below example can be sent as a request to the API.
{
"pan": "EPTPK9508Q"
}
SUCCESS RESPONSE The request returns JSON structured like below
{
"status":true,
"total_count":2,
"beneficiary_accounts":[
{
"id":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
"category": "Vendor",
"entity_id":"FBT3907",
"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":"FBT3907",
"name":"Q2pay technology",
"contact_no":"9876545676",
"email_id":"hgf@gmail.com",
"bank_acc_no":"4567893467",
"bank_account_holder_full_name": "SUMAN INDIA",
"bank_account_holder_legal_name": "Q2PAY TECHNOLOGIES P",
"ifsc_code":"HDFC0000212",
"bank_name":"Abhyudaya Co-operative Bank",
"pan_no":"WASED4723H",
"approval_status":"pending",
"active_status":"N",
"vendor_payment":"N",
"archived":"N",
"maintenance":"N",
"internal_account":"Y",
"created_by":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
"created_by_name":"Ashish Wadekar",
"created_on":"xxxxxxxx",
}
],
"title":{
"records":2,
"current_page":1,
"total_pages":1,
"page_item_count":1
}
}
ERROR RESPONSE The request returns JSON structured like below for errors related beneficiary account
{
"status":false,
"errors":{
"base":[
"Bank Account Number / IFSC / Permanent Account Number not provided"
],
"base":[
"Invalid Bank Account Number / IFSC"
],
"base":[
"No beneficiary data for Bank Account Number: 8482940354"
],
"base":[
"Invalid / Insufficient PAN ID"
],
"base":[
"No beneficiary data for PAN ID: AAACQ0519P"
],
"base":[
"Bank Account Number / IFSC / Permanent Account Number cannot be processed together"
]
}
}
This endpoint get lookup of Beneficiary Account.
UAT HTTP Request
GET https://nxt.api.q2pay.co.in/api/accounts/beneficiary/lookup
PRODUCTION HTTP Request
GET https://nxt.api.q2pay.in/api/accounts/beneficiary/lookup
Query Parameters
| Parameter | Default | Description | Required | Sample |
|---|---|---|---|---|
| bank_account_no | N.A. | Bank account number for beneficiary account | Yes | 1234567890 |
| ifsc | N.A. | ifsc for beneficiary account | Yes | IBKL0002000" |
Query Parameters
| Parameter | Default | Description | Required | Sample |
|---|---|---|---|---|
| pan | N.A. | pan for beneficiary account | Yes | EPTPK9508Q |
Service Details
| Service ID | Description |
|---|---|
| BVAccount | Get Lookup Beneficiary Account |
Edit Other Details Beneficiary Account
curl -X PUT "https://<environmenturl>/api/accounts/beneficiary/:id/edit_other_details"
-H "X-Api-Key: <your secure token>"
-H "Content-Type: application/json"
-d "{
"beneficiary_accounts": {
"contact_no": "7486756685",
"email": "abc@gmail.com",
"pan": "MASED4723H",
"gstin": "12AANCA2275G2ZO",
"name": "Q2pay technology",
"category": "Salary"
}
}"
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"
}
}
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"
}
};
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"
}
}
SUCCESS RESPONSE The request returns JSON structured like below on successful Beneficiary accounts edit other details
{
"status":true,
"total_count":1,
"beneficiary_accounts":[
{
"id":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
"category": "Salary,Vendor",
"entity_id":"Q581",
"name":"Q2pay technology",
"contact_no":"9578655641",
"email_id":"Q2@pay.com",
"bank_acc_no":"12345678",
"bank_account_holder_full_name": "SUMAN INDIA",
"bank_account_holder_legal_name": "Q2PAY TECHNOLOGIES P",
"ifsc_code":"HDFC0000298",
"bank_name":"HDFC Bank",
"pan_no":"WASED4723H",
"pan_legal_name": "JITENDRA KIRAN KAKADE",
"approval_status":"pending",
"active_status":"N",
"vendor_payment":"N",
"archived":"N",
"maintenance":"N",
"internal_account":"N",
"created_by":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
"created_by_name":"Ashish Wadekar",
"created_on":"xxxxxxxx",
"logs":[
{
"action":"Updated",
"user_id":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
"user_full_name":"Ashish Wadekar",
"timestamp": "2023-11-27T04:06:38.602Z",
"last_used": "2023-11-27T04:06:38.533Z",
"logged_in_flag": true,
"logged_in_time": "2023-11-27T04:01:08.120Z",
"app_version_name": "1.43",
"app_version_code": "54",
"platform": "android",
"model": "Android SDK built for x86",
"manufacturer": "unknown",
"brand": "Android",
"serial_number": "EMULATOR32X1X14X0",
"os_version": "6.0",
"sdk_version": "23",
"ip_address": "127.0.0.1",
"is_primary": false,
"is_verified": false,
"first_name":"Ashish",
"last_name":"Wadekar"
}
]
}
],
"title":{
"records":1,
"current_page":1,
"total_pages":1,
"page_item_count":1
}
}
ERROR RESPONSE The request returns JSON structured like below for errors related beneficiary account
{
"status": false,
"errors":{
"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."
]
}
}
This endpoint edit other details a Beneficiary Account.
UAT HTTP Request
PUT https://nxt.api.q2pay.co.in/api/accounts/beneficiary/:id/edit_other_details
PRODUCTION HTTP Request
PUT https://nxt.api.q2pay.in/api/accounts/beneficiary/:id/edit_other_details
Query Parameters
| Parameter | Default | Description | Required | Sample |
|---|---|---|---|---|
| contact_no | N.A. | contact no for beneficiary account | optional | 9867454325 |
| N.A. | email id for beneficiary account | optional | abc@gmail.com | |
| pan | N.A. | pan for beneficiary account | optional | CGHFG78J |
| gstin | N.A. | gstin for beneficiary account | optional | 12AANCA2275G2ZO |
| name | N.A. | name for beneficiary account | optional | Q2PAY TECHNOLOGIES P |
| category | N.A. | category for beneficiary account | optional | Vendor |
| address | N.A. | address for beneficiary account | optional | Pune |
Service Details
| Service ID | Description |
|---|---|
| BUAccount | Edit Details of Beneficiary Account |
Beneficary Transaction
Beneficiary transaction helps you create, maintain & manage lifecycle of beneficiary transactions for your organization
Get All Beneficiary Transactions
curl -X GET "https://<environmenturl>/api/transactions/beneficiary"
-H "X-Api-Key: <your secure token>"
-H "Content-Type: application/json"
require 'net/http'
require 'uri'
require 'json'
uri = URI.parse("https://<environmenturl>/api/transactions/beneficiary")
header = {'X-Api-Key' => '<your secure token>', 'Content-Type' => 'application/json'}
http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = true
request = Net::HTTP::Get.new(uri.request_uri, header)
request.body = body.to_json
response = http.request(request)
fetch('https://<environmenturl>/api/transactions/beneficiary', {
method: 'GET',
headers: {
'X-Api-Key': '<your secure token>',
'Content-Type': 'application/json'
},
body: JSON.stringify(data)
})
.then(response => response.json())
.then(data => console.log(data))
.catch(error => console.error(error));
SUCCESS RESPONSE The request returns JSON structured like below
{
"status": true,
"total_count": 2,
"total_amount": "2000.0",
"summary": {
"cancelled_transaction_count":3,
"approved_transaction_count": 21,
"rejected_transaction_count": 3,
"denied_transaction_count": 1,
"archived_transaction_count":5,
"abandoned_transaction_count": 4,
"pending_transaction_count": 18,
"blocked_transaction_count":4,
"actionable_transaction_count":1,
"created_distribution_transaction_count":3,
"awaiting_funds_distribution_transaction_count":2,
"rejected_distribution_transaction_count":1
},
"transactions": [
{
"total_amount": "1000.0",
"txn_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
"amount": "1000.0",
"category": "Beneficiary",
"lifecycle_status": "approved",
"distribution_lifecycle_status": "created",
"payment_method":"RTGS",
"txn_initiator": "Priya jawale",
"approved": "Y",
"approved_at": "xxxxxxxx",
"payment_charge": "0.0",
"tax_amount": "0.0",
"entity_id": "QRT457",
"rejected": false,
"rejected_at": 0,
"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"
"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"
},
{
"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": "QRT457",
"rejected": false,
"rejected_at": 0,
"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, denied, blocked, archived, rejected, abandoned, cancelled |
| 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 |
| 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 | QRT457 |
| 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, approved, awaiting_funds, distribution_initiated, distribution_complete, distribution_pending, reversal, denied, rejected, abandoned, failed |
| additional_data | N.A. | additional data for beneficiary transaction | optional | "Mon" |
Service Details
| Service ID | Description |
|---|---|
| VBeneficiaryTxn | View All Beneficiary Transactions |
Get Specific Beneficiary Transactions
curl -X GET "https://<environmenturl>/api/transactions/beneficiary/:id"
-H "X-Api-Key: <your secure token>"
-H "Content-Type: application/json"
require 'net/http'
require 'uri'
require 'json'
uri = URI.parse("https://<environmenturl>/api/transactions/beneficiary/:id")
header = {'X-Api-Key' => '<your secure token>', 'Content-Type' => 'application/json'}
http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = true
request = Net::HTTP::Get.new(uri.request_uri, header)
request.body = body.to_json
response = http.request(request)
fetch('https://<environmenturl>/api/transactions/beneficiary/:id', {
method: 'GET',
headers: {
'X-Api-Key': '<your secure token>',
'Content-Type': 'application/json'
},
body: JSON.stringify(data)
})
.then(response => response.json())
.then(data => console.log(data))
.catch(error => console.error(error));
SUCCESS RESPONSE The request returns JSON structured like below
{
"status": true,
"total_count": 1,
"total_amount": "512.0",
"transaction": [
{
"total_amount": "512.0",
"txn_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
"amount": "512.0",
"category": "Salary",
"lifecycle_status": "approved",
"payment_method":"RTGS",
"txn_initiator": "Akshay Rangnekar",
"approved": "Y",
"approved_at": "xxxxxxxx",
"payment_charge": "0.0",
"tax_amount": "0.0",
"entity_id": "Q581",
"rejected": false,
"rejected_at": 0,
"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": "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": "Approved",
"last_updated_timestamp": "xxxxxxxx",
"last_updated_user_name": "Akshay Rangnekar",
"distribution_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
"distribution_identifier": "xxxxxxxxxxxxxxxxxxxxxxxx",
"distribution_settlement_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
"distribution_bank": "HDFC Bank",
"distribution_amount": "512.0",
"distribution_mode_of_payment": "NEFT",
"distribution_lifecycle_status": "awaiting_funds",
"distribution_utr": "xxxxxxx",
"distribution_initiated_at": "xxxxxxx",
"distribution_credited_at": "xxxxxxx",
"distribution_credit_remarks": "xxxxxxx",
"distribution_approved": true,
"distribution_approved_at": "2024-01-12T10:27:20.033Z",
"distribution_approved_by": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
"distribution_approval_strategy": "user",
"distribution_logs": [
{
"action": "Created",
"user_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
"timestamp": "2024-01-12T10:09:53.886Z",
"user_full_name": "Akshay Rangnekar"
},
{
"brand": "Android",
"model": "Android SDK built for x86",
"action": "Approved",
"user_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
"platform": "android",
"last_name": "Rangnekar",
"last_used": "2024-01-12T10:27:19.963Z",
"timestamp": "2024-01-12T10:27:20.044Z",
"first_name": "Akshay",
"ip_address": "127.0.0.1",
"is_primary": false,
"os_version": "6.0",
"request_ip": "127.0.0.1",
"user_grade": "Director",
"is_verified": false,
"sdk_version": "23",
"manufacturer": "unknown",
"serial_number": "EMULATOR32X1X14X0",
"final_approval": true,
"logged_in_flag": true,
"logged_in_time": "2024-01-11T10:27:49.369Z",
"user_full_name": "Akshay Rangnekar",
"app_version_code": "54",
"app_version_name": "1.43"
}
],
"logs": [
{
"brand": "Android",
"model": "Android SDK built for x86",
"action": "Created",
"user_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
"platform": "android",
"last_name": "Rangnekar",
"last_used": "2024-01-12T10:09:53.679Z",
"timestamp": "2024-01-12T10:09:53.714Z",
"first_name": "Akshay",
"ip_address": "127.0.0.1",
"is_primary": false,
"os_version": "6.0",
"request_ip": "127.0.0.1",
"is_verified": false,
"sdk_version": "23",
"manufacturer": "unknown",
"serial_number": "EMULATOR32X1X14X0",
"logged_in_flag": true,
"logged_in_time": "2024-01-11T10:27:49.369Z",
"user_full_name": "Akshay Rangnekar",
"app_version_code": "54",
"app_version_name": "1.43"
},
{
"brand": "Android",
"model": "Android SDK built for x86",
"action": "Approved",
"user_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
"platform": "android",
"last_name": "Rangnekar",
"last_used": "2024-01-12T10:09:53.679Z",
"timestamp": "2024-01-12T10:09:53.734Z",
"first_name": "Akshay",
"ip_address": "127.0.0.1",
"is_primary": false,
"os_version": "6.0",
"request_ip": "127.0.0.1",
"is_verified": false,
"sdk_version": "23",
"manufacturer": "unknown",
"serial_number": "EMULATOR32X1X14X0",
"final_approval": true,
"logged_in_flag": true,
"logged_in_time": "2024-01-11T10:27:49.369Z",
"user_full_name": "Akshay Rangnekar",
"app_version_code": "54",
"app_version_name": "1.43",
"authorization_rule": "Director~1"
}
]
}
],
"title": {
"records": 1,
"current_page": 1,
"total_pages": 1,
"page_item_count": 1
}
}
This endpoint retrieves specific Beneficiary Transactions.
UAT HTTP Request
GET https://nxt.api.q2pay.co.in/api/transactions/beneficiary/:id
PRODUCTION HTTP Request
GET https://nxt.api.q2pay.in/api/transactions/beneficiary/:id
Service Details
| Service ID | Description |
|---|---|
| VBeneficiaryTxn | View specific Beneficiary Transactions |
Create Beneficiary Transactions
curl -X POST "https://<environmenturl>/api/transactions/beneficiary"
-H "X-Api-Key: <your secure token>"
-H "Content-Type: application/json"
-d "{
"amount" : "67000.0",
"owner_account_id":"xxxxxxxx-xxxx-xxxx-xxxxxx",
"beneficiary_account_id" :"xxxxxxxx-xxxx-xxxx-xxxxxx",
"payment_method":"RTGS",
"category": "Beneficiary",
"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"
]
}
]
}
}"
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",
"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"
]
}
]
}
}
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",
"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"
]
}
]
}
};
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",
"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"
]
}
]
}
}
SUCCESS RESPONSE The request returns JSON structured like below on successful Beneficiary transactions creation
{
"status": true,
"total_count": 1,
"total_amount": "512.0",
"transaction": [
{
"total_amount": "512.0",
"txn_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
"amount": "512.0",
"category": "Salary",
"lifecycle_status": "pending",
"payment_method":"RTGS",
"txn_initiator": "Akshay Rangnekar",
"approved": "N",
"approved_at": 0,
"payment_charge": "0.0",
"tax_amount": "0.0",
"entity_id": "Q581",
"rejected": false,
"rejected_at": 0,
"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": "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": "Approved",
"last_updated_timestamp": "xxxxxxxx",
"last_updated_user_name": "Akshay Rangnekar",
"distribution_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
"distribution_identifier": "xxxxxxxxxxxxxxxxxxxxxxxx",
"distribution_settlement_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
"distribution_bank": "HDFC Bank",
"distribution_amount": "512.0",
"distribution_mode_of_payment": "NEFT",
"distribution_lifecycle_status": "created",
"distribution_approved": false,
"distribution_approval_strategy": "system",
"distribution_logs": [
{
"action": "Created",
"user_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
"timestamp": "2024-01-12T10:09:53.886Z",
"user_full_name": "Akshay Rangnekar"
}
],
"logs": [
{
"action": "Created",
"user_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
"user_full_name": "Akshay Rangnekar",
"timestamp": "2024-01-12T10:09:53.714Z",
"request_ip": "127.0.0.1",
"last_used": "2024-01-12T10:09:53.679Z",
"logged_in_flag": true,
"logged_in_time": "2024-01-11T10:27:49.369Z",
"app_version_name": "1.43",
"app_version_code": "54",
"platform": "android",
"model": "Android SDK built for x86",
"manufacturer": "unknown",
"brand": "Android",
"serial_number": "EMULATOR32X1X14X0",
"os_version": "6.0",
"sdk_version": "23",
"ip_address": "127.0.0.1",
"is_primary": false,
"is_verified": false,
"first_name": "Akshay",
"last_name": "Rangnekar"
},
{
"action": "Approved",
"user_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
"user_full_name": "Akshay Rangnekar",
"authorization_rule": "Director~1",
"final_approval": true,
"timestamp": "2024-01-12T10:09:53.734Z",
"request_ip": "127.0.0.1",
"last_used": "2024-01-12T10:09:53.679Z",
"logged_in_flag": true,
"logged_in_time": "2024-01-11T10:27:49.369Z",
"app_version_name": "1.43",
"app_version_code": "54",
"platform": "android",
"model": "Android SDK built for x86",
"manufacturer": "unknown",
"brand": "Android",
"serial_number": "EMULATOR32X1X14X0",
"os_version": "6.0",
"sdk_version": "23",
"ip_address": "127.0.0.1",
"is_primary": false,
"is_verified": false,
"first_name": "Akshay",
"last_name": "Rangnekar"
}
]
}
],
"title": {
"records": 1,
"current_page": 1,
"total_pages": 1,
"page_item_count": 1
}
}
ERROR RESPONSE The request returns JSON structured like below for errors related beneficiary transaction
{
"status":false,
"errors":{
"beneficiary_account":[
"Beneficiary account is not approved"
],
"beneficiary_account": [
"Beneficiary account must exist"
],
"owner_account": [
"Owner account must exist"
],
"amount":[
"Amount can't be blank"
],
"category":[
"Category can't be blank",
"Category is not valid/active for the transaction type",
"Category is not valid for the transaction type"
],
"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",
"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"
]
}
}
This endpoint creates a Beneficiary Transaction.
UAT HTTP Request
POST https://nxt.api.q2pay.co.in/api/transactions/beneficiary
PRODUCTION HTTP Request
POST https://nxt.api.q2pay.in/api/transactions/beneficiary
Query Parameters
| Parameter | Default | Description | Required | Sample |
|---|---|---|---|---|
| amount | N.A. | amount for beneficiary transaction | Yes | 67000.0 |
| beneficiary_account_id | N.A. | beneficiary account id for beneficiary transaction | Yes | xxxxxxxx-xxxx-xxxx-xxxxxx |
| owner_account_id | N.A. | beneficiary 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 |
Service Details
| Service ID | Description |
|---|---|
| CBeneficiaryTxn | Create Beneficiary Transaction |
Approve Beneficiary Transaction
curl -X PUT "https://<environmenturl>/api/transactions/beneficiary/approve"
-H "X-Api-Key: <your secure token>"
-H "Content-Type: application/json"
-d "{
"txn_id": ["xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx"]
}"
require 'net/http'
require 'uri'
require 'json'
uri = URI.parse("https://<environmenturl>/api/transactions/beneficiary/approve")
header = {'X-Api-Key' => '<your secure token>', 'Content-Type' => 'application/json'}
body = {
"txn_id": ["xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx"]
}
http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = true
request = Net::HTTP::Put.new(uri.request_uri, header)
request.body = body.to_json
response = http.request(request)
const data = {
"txn_id": ["xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx"]
};
fetch('https://<environmenturl>/api/transactions/beneficiary/approve', {
method: 'PUT',
headers: {
'X-Api-Key': '<your secure token>',
'Content-Type': 'application/json'
},
body: JSON.stringify(data)
})
.then(response => response.json())
.then(data => console.log(data))
.catch(error => console.error(error));
The below example can be sent as a request to the API.
{
"txn_id": ["xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx"]
}
The below example can be sent as a request to the API for multiple transaction id.
{
"txn_id": ["xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx","xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx"]
}
SUCCESS RESPONSE The request returns JSON structured like below on successful Beneficiary transaction approve
{
"status": true,
"total_count": 1,
"total_amount": "25.0",
"transactions": [
{
"total_amount": "25.0",
"txn_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
"amount": "25.0",
"category": "Mobile Bill",
"lifecycle_status": "approved",
"distribution_remark": "Testing",
"txn_initiator": "Sneha Gaikwad",
"approved": "Y",
"approved_at": "xxxxxxxx",
"payment_charge": "0.0",
"tax_amount": "0.0",
"entity_id": "EQ567",
"rejected": false,
"rejected_at": 0,
"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": "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": "Approved",
"last_updated_timestamp": "xxxxxxxx",
"last_updated_user_name": "sidharth shukla",
"distribution_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
"distribution_identifier": "xxxxxxxxxxxxxxxxxxxxxxxx",
"distribution_settlement_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
"distribution_bank": "State Bank of India",
"distribution_amount": "25.0",
"distribution_mode_of_payment": "NEFT",
"distribution_lifecycle_status": "created",
"distribution_approved": false,
"distribution_approval_strategy": "system",
"distribution_logs": [
{
"action": "Created",
"user_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
"timestamp": "2024-04-10T09:55:17.671Z",
"user_full_name": "sidharth shukla",
"user_platform_details": null
}
],
"logs": [
{
"action": "Created",
"user_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
"platform": "web",
"last_name": "Gaikwad",
"last_used": "2024-04-10T09:51:29.895Z",
"timestamp": "2024-04-10T09:51:29.923Z",
"first_name": "Sneha",
"ip_address": "103.212.154.226",
"is_primary": false,
"os_version": "Windows 10",
"request_ip": "103.212.154.226",
"is_verified": false,
"browser_name": "google chrome",
"logged_in_flag": true,
"logged_in_time": "2024-04-10T09:48:56.117Z",
"user_full_name": "Sneha Gaikwad"
},
{
"action": "Approved",
"user_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
"platform": "web",
"last_name": "shukla",
"last_used": "2024-04-10T09:55:17.533Z",
"timestamp": "2024-04-10T09:55:17.604Z",
"first_name": "sidharth",
"ip_address": "103.212.154.226",
"is_primary": false,
"os_version": "Windows 10",
"request_ip": "103.212.154.226",
"is_verified": false,
"browser_name": "google chrome",
"final_approval": true,
"logged_in_flag": true,
"logged_in_time": "2024-04-10T09:55:06.039Z",
"user_full_name": "sidharth shukla",
"authorization_rule": "Approver~1"
}
]
}
],
"title": {
"records": 1,
"current_page": 1,
"total_pages": 1,
"page_item_count": 50
}
}
ERROR RESPONSE The request returns JSON structured like below for errors related beneficiary transaction
{
"status":false,
"action":"Not performed",
"errors":{
"base":[
"Invalid / Insufficient parameters"
],
"base":[
"No transactions found for transaction ids: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx"
],
"base":[
"All transactions do not belong to the same entity / Few transactions are already approved or are abandoned/cancelled"
],
"base":[
{
"id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
"reason":[
"User is not authorized to approve transaction."
]
}
],
"base": [
{
"id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
"errors": "Beneficiary account is not approved"
}
],
"base":[
{
"id":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
"errors":[
{
"reason":"User is not authorized to approve (duplicate approval)"
}
]
}
]
}
}
This endpoint approve a Beneficiary Transaction.
UAT HTTP Request
PUT https://nxt.api.q2pay.co.in/api/transactions/beneficiary/approve
PRODUCTION HTTP Request
PUT https://nxt.api.q2pay.in/api/transactions/beneficiary/approve
Query Parameters
| Parameter | Default | Description | Required | Sample |
|---|---|---|---|---|
| txn_id | N.A. | txn id for beneficiary transaction | Yes | [xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxx ,xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxx] |
Service Details
| Service ID | Description |
|---|---|
| ABeneficiaryTxn | Approve Beneficiary Transaction |
Reject Beneficiary Transaction
curl -X PUT "https://<environmenturl>/api/transactions/beneficiary/reject"
-H "X-Api-Key: <your secure token>"
-H "Content-Type: application/json"
-d "{
"txn_id": ["xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx"],
"reason" : "Another transaction is already in progress"
}"
require 'net/http'
require 'uri'
require 'json'
uri = URI.parse("https://<environmenturl>/api/transactions/beneficiary/reject")
header = {'X-Api-Key' => '<your secure token>', 'Content-Type' => 'application/json'}
body = {
"txn_id": ["xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx"],
"reason" : "Another transaction is already in progress"
}
http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = true
request = Net::HTTP::Put.new(uri.request_uri, header)
request.body = body.to_json
response = http.request(request)
const data = {
"txn_id": ["xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx"],
"reason" : "Another transaction is already in progress"
};
fetch('https://<environmenturl>/api/transactions/beneficiary/reject', {
method: 'PUT',
headers: {
'X-Api-Key': '<your secure token>',
'Content-Type': 'application/json'
},
body: JSON.stringify(data)
})
.then(response => response.json())
.then(data => console.log(data))
.catch(error => console.error(error));
The below example can be sent as a request to the API.
{
"txn_id": ["xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx"],
"reason" : "Another transaction is already in progress"
}
The below example can be sent as a request to the API for multiple transaction id.
{
"txn_id": ["xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx","xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx"],
"reason" : "Another transaction is already in progress"
}
SUCCESS RESPONSE The request returns JSON structured like below on successful Beneficiary transaction reject
{
"status": true,
"total_count": 1,
"total_amount": "25.0",
"transactions": [
{
"total_amount": "25.0",
"txn_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
"amount": "25.0",
"category": "Mobile Bill",
"lifecycle_status": "rejected",
"distribution_remark": "Testing",
"txn_initiator": "Sneha Gaikwad",
"approved": "N",
"approved_at": 0,
"payment_charge": "0.0",
"tax_amount": "0.0",
"entity_id": "ERT567",
"rejected": true,
"rejection_reason": "update transaction method",
"rejected_by": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
"rejected_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": "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": "Rejected",
"last_updated_timestamp": "xxxxxxxx",
"last_updated_user_name": "Sneha Gaikwad",
"logs": [
{
"action": "Created",
"user_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
"platform": "web",
"last_name": "Gaikwad",
"last_used": "2024-04-10T10:17:46.130Z",
"timestamp": "2024-04-10T10:17:46.159Z",
"first_name": "Neha",
"ip_address": "182.79.233.142",
"is_primary": false,
"os_version": "Windows 10",
"request_ip": "182.79.233.142",
"is_verified": false,
"browser_name": "google chrome",
"logged_in_flag": true,
"logged_in_time": "2024-04-10T10:15:42.396Z",
"user_full_name": "Sneha Gaikwad"
},
{
"action": "Rejected",
"user_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
"platform": "web",
"last_name": "Gaikwad",
"last_used": "2024-04-10T10:18:09.398Z",
"timestamp": "2024-04-10T10:18:09.454Z",
"first_name": "Sneha",
"ip_address": "103.212.154.226",
"is_primary": false,
"os_version": "Windows 10",
"request_ip": "103.212.154.226",
"is_verified": false,
"browser_name": "google chrome",
"logged_in_flag": true,
"logged_in_time": "2024-04-10T10:15:42.396Z",
"user_full_name": "Sneha Gaikwad",
"rejection_reason": "update transaction method"
}
]
}
],
"title": {
"records": 1,
"current_page": 1,
"total_pages": 1,
"page_item_count": 50
}
}
ERROR RESPONSE The request returns JSON structured like below for errors related beneficiary transaction
{
"status":false,
"action":"Not performed",
"errors":{
"base":[
"Invalid / Insufficient parameters"
],
"base":
[
"No transactions found for transaction ids: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx"
],
"base":
[
"All transactions do not belong to the same entity"
],
"base":[
{
"id":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
"errors":[
"Reason must be at least 10 characters"
]
}
],
"base":[
{
"id":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
"errors":"Transaction cannot be rejected due to current status"
}
]
}
}
This endpoint reject a Beneficiary Transaction.
UAT HTTP Request
PUT https://nxt.api.q2pay.co.in/api/transactions/beneficiary/reject
PRODUCTION HTTP Request
PUT https://nxt.api.q2pay.in/api/transactions/beneficiary/reject
Query Parameters
| Parameter | Default | Description | Required | Sample |
|---|---|---|---|---|
| txn_id | N.A. | txn id for beneficiary transaction | Yes | [xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxx ,xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxx] |
| reason | N.A. | reason for beneficiary transaction | Yes | Another transaction is already in progress |
Service Details
| Service ID | Description |
|---|---|
| ABeneficiaryTxn | Reject Beneficiary Transaction |
Actionable Beneficiary Transaction
curl -X GET "https://<environmenturl>/api/transactions/beneficiary/actionable"
-H "X-Api-Key: <your secure token>"
-H "Content-Type: application/json"
-d "{
"entity_id" : "QRT457",
"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" : "QRT457",
"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" : "QRT457",
"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" : "QRT457",
"category": "Beneficiary"
}
SUCCESS RESPONSE The request returns JSON structured like below on successful Beneficiary transaction actionable
{
"status": true,
"total_count": 1,
"total_amount": "2000.0",
"transactions": [
{
"total_amount": "1000.0",
"txn_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
"amount": "1000.0",
"category": "Beneficiary",
"lifecycle_status": "pending",
"txn_initiator": "Priya jawale",
"approved": "N",
"approved_at": 0,
"payment_charge": "0.0",
"tax_amount": "0.0",
"entity_id": "QRT457",
"rejected": false,
"rejected_at": 0,
"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": "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": 1,
"current_page": 1,
"total_pages": 1,
"page_item_count": 50
}
}
This endpoint actionable a Beneficiary Transaction.
UAT HTTP Request
GET https://nxt.api.q2pay.co.in/api/transactions/beneficiary/actionable
PRODUCTION HTTP Request
GET https://nxt.api.q2pay.in/api/transactions/beneficiary/actionable
Query Parameters
| Parameter | Default | Description | Required | Sample |
|---|---|---|---|---|
| entity_id | N.A. | entity id for beneficiary transaction | Yes (Admin) | QRT457 |
| category | N.A. | category for beneficiary transaction | No | Beneficiary |
Service Details
| Service ID | Description |
|---|---|
| VBeneficiaryTxn | Actionable 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 like below on successful get holiday list from today to the future
{
"status": true,
"total_count": 3,
"holidays": [
{
"id": 1,
"date": "XX-XX-XX",
"occasion": "XXXX"
},
{
"id": 2,
"date": "XX-XX-XX",
"occasion": "XXXX"
},
{
"id": 3,
"date": "XX-XX-XX",
"occasion": "XXXX"
}
],
"title": {
"records": 3,
"current_page": 1,
"total_pages": 1,
"page_item_count": 50
}
}
This endpoint will show all holidays from today to the future.
UAT HTTP Request
GET https://nxt.api.q2pay.co.in/api/holidays
PRODUCTION HTTP Request
GET https://nxt.api.q2pay.in/api/holidays
Query Parameters
| Parameter | Default | Description | Required | Sample |
|---|---|---|---|---|
| page_size | N.A. | If set to specific number, the result will include that number of holiday list | No | 1 |
| page_no | N.A. | If set to specific number, the result will include that page of holiday list | No | 1 |
Service Details
| Service ID | Description |
|---|---|
| PLogin | Get Holiday List |
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. |