NAV
shell ruby javascript

Introduction

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

Authentication

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

X-Api-Key: <your secure token>

User Login

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

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

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

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

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

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

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

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

SUCCESS RESPONSE The request returns JSON structured as shown below on successful login for Web.

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

ERROR RESPONSE The request returns JSON structured as shown below for errors related to login.

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

This endpoint will log in a user for your entity.

UAT HTTP Request

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

PRODUCTION HTTP Request

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

Query Parameters for Web

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

Device Info for Web

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

Service Details

Service ID Description
PLogin To Login User

Refresh

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

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

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

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

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

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

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

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

SUCCESS RESPONSE The request returns JSON structured as shown below on refreshing a user.

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

ERROR RESPONSE The request returns JSON structured as shown below when the token has expired.

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

ERROR RESPONSE The request returns JSON structured as shown below for error responses related to Refresh.

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

This endpoint will refresh a users token with extended validity.

UAT HTTP Request

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

PRODUCTION HTTP Request

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

Query Parameters

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

Query Parameters for Web

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

Device Info for PWA

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

Service Details

Service ID Description
PLogin To Refresh User

System Refresh

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

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

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

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

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

SUCCESS RESPONSE The request returns JSON structured as shown below on system refresh.

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

ERROR RESPONSE The request returns JSON structured as shown below for errors related to system refresh

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

This endpoint will report service availability for a user.

UAT HTTP Request

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

PRODUCTION HTTP Request

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

Query Parameters

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

Service Details

Service ID Description
PLogin To report service availability

Logout

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

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

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


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

SUCCESS RESPONSE The request returns JSON structured as shown below on successful User Logout.

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

ERROR RESPONSE The request returns JSON structured as shown below for errors related to logout.

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

This endpoint will log out a user for your entity.

UAT HTTP Request

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

PRODUCTION HTTP Request

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

Service Details

Service ID Description
PLogout To Logout User

Concierge Login

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

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

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

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

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

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

SUCCESS RESPONSE The request returns JSON structured as shown below on successful login.

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

ERROR RESPONSE The request returns JSON structured as shown below for errors related to missing mapping.

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

ERROR RESPONSE The request returns JSON structured as shown below for errors related to missing mapping.

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

ERROR RESPONSE The request returns JSON structured as shown below for errors related to missing mapping.

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

ERROR RESPONSE The request returns JSON structured as shown below for errors related to missing mapping.

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

ERROR RESPONSE The request returns JSON structured as shown below for errors related to missing mapping.

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

This endpoint will log in a user for multi-entity mapping.

UAT HTTP Request

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

PRODUCTION HTTP Request

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

Query Parameters for Android

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

Service Details

Service ID Description
LMapping To Login User

Owner Account

Owner Accounts helps you create, maintain & manage lifecycle of owner account for your organization.

Get All Owner Account

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

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

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

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

SUCCESS RESPONSE The request returns JSON structured as shown below.

{
    "status": true,
    "total_count": 2,
    "total_balance": "1500.0",
    "summary": {
        "approved_accounts_count": 4,
        "pending_accounts_count": 7,
        "connected_banking_count": 7,
        "non_connected_banking_count": 4,
        "available_banks": [
          "Axis Bank",
          "Canara Bank",
          "HDFC Bank",
          "ICICI Bank",
          "IDBI",
          "Jammu and Kashmir Bank",
          "Kotak Mahindra Bank",
          "Punjab National Bank",
          "State Bank of India"
        ],
        "available_tags": [
          "pune",
          "mumbai",
          "gulmarg",
          "nashik",
          "goa"
        ],
        "available_labels":["audit expense", "employee expense", "health expense"]
      },
    "owner_accounts": [
        {
            "id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
            "account_type": "Current Account",
            "entity_id": "ABC12",
            "name": "Q2PAY TECHNOLOGIES P",
            "email_id": "akshay@q2pay.in",
            "bank_acc_no": "az501231981",
            "bank_account_holder_full_name": "SUMAN INDIA",
            "bank_account_holder_legal_name": "Q2PAY TECHNOLOGIES P",
            "ifsc_code": "SBIN0030185",
            "bank_name": "State Bank of India",
            "approval_status": "approved",
            "active_status": "Y",
            "tags":["mumbai", "pune"],
            "labels": ["building expense"],
            "owner_account_balance":"1500.0",
            "owner_account_balance_last_fetched_at":"xxxxxxxx",
            "owner_account_balance_last_fetched_at_in_words":"less than a minute ago",
            "created_by": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
            "created_on": "xxxxxxxx",
            "created_by_name": "Akshay Rangnekar",
            "pan_no": "JXVPS2378A",
            "gstin_detail": "07AANCA1175G2ZO",
            "connected_banking": "N",
            "favourite":"Y"
        },
        {
            "id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
            "account_type": "Current Account",
            "entity_id": "ABC12",
            "name": "Q2PAY TECHNOLOGIES P",
            "email_id": "akshay@q2pay.in",
            "bank_acc_no": "1234567900",
            "bank_account_holder_full_name": "SUMAN INDIA",
            "bank_account_holder_legal_name": "Q2PAY TECHNOLOGIES P",
            "ifsc_code": "IBKL0001960",
            "bank_name": "IDBI",
            "approval_status": "pending",
            "active_status": "N",
            "created_by": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
            "created_on": "xxxxxxxx",
            "created_by_name": "Akshay Rangnekar",
            "pan_no": "JXVPS2378A",
            "gstin_detail": "07AANCA1175G2ZO",
            "connected_banking": "N",
            "favourite":"N"
        }
    ],
    "title": {
        "records": 2,
        "current_page": 1,
        "total_pages": 1,
        "page_item_count": 50
    }
}

This endpoint will retrieve all Owner Accounts.

UAT HTTP Request

GET https://nxt.api.q2pay.co.in/api/accounts/owner

PRODUCTION HTTP Request

GET https://nxt.api.q2pay.in/api/accounts/owner

Query Parameters

Parameter Default Description Required Sample
approval_status N.A. approval_status for owner account optional pending
type_of_account N.A. type of account for owner account optional Current Account
connected_banking N.A. connected banking for owner account optional "Y","N"
start_date, end_date N.A. start date and end date for owner account optional xxxxxxxx,xxxxxxxx
bank_account_no N.A. bank account number for owner account optional 1234567897
ifsc N.A. ifsc code for owner account optional IBKL0001957
pan N.A. pan for owner account optional AAACR5055K
search_string N.A. search string for id/name/contact no/email of owner account optional xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx,Q2pay technology,12356789,abc@gmail.com
bank_name N.A. bank name for owner account optional ICICI Bank
active_status N.A. active status for owner account optional "Y","N"
entity_id N.A. entity id for owner account optional ABC12
tag N.A. tag for owner account optional ["Pune","Mumbai"]
sort_by_balance N.A. sort by balance for owner account optional sort_by_balance: { balance: "ascending"} or sort_by_balance: { balance: "descending"}
favourite N.A. favourite for owner account optional "Y","N"
labels N.A. labels for owner account optional ["audit expense"]

Service Details

Service ID Description
VAccount View All Owner Accounts
VAccountBalance View Balance of Owner Account

Get specific Owner Account

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

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

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

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

SUCCESS RESPONSE The request returns JSON structured like below

{
    "status": true,
    "total_count": 1,
    "total_balance":"1500.0",
    "owner_accounts": [
        {
            "id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
            "account_type": "Current Account",
            "entity_id": "ABC12",
            "name": "Q2PAY TECHNOLOGIES P",
            "email_id": "abc@q2pay.in",
            "bank_acc_no": "5234567896",
            "bank_account_holder_full_name": "SUMAN INDIA",
            "bank_account_holder_legal_name": "Q2PAY TECHNOLOGIES P",
            "ifsc_code": "HDFC0000229",
            "bank_name": "HDFC Bank",
            "approval_status": "approved",
            "active_status": "Y",
            "min_limit"=>"0.0",
            "max_limit"=>"100.0",
            "tags":["mumbai", "pune"],
            "owner_account_balance":"1500.0",
            "owner_account_balance_last_fetched_at":"xxxxxxxx",
            "owner_account_balance_last_fetched_at_in_words":"less than a minute ago",
            "approved_by": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
            "approved_by_name": "Akshay Rangnekar",
            "approved_on": "xxxxxxxx",
            "created_by": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
            "created_by_name": "Akshay Rangnekar",
            "created_on": "xxxxxxxx",
            "pan_no": "AAACR5055K",
            "gstin_detail": "27AAACR5055K1Z7",
            "connected_banking": "N",
            "favourite":"N"
        }
    ],
    "title": {
        "records": 1,
        "current_page": 1,
        "total_pages": 1,
        "page_item_count": 1
    }
}

This endpoint will retrieve an Owner Account

UAT HTTP Request

GET https://nxt.api.q2pay.co.in/api/accounts/owner/:id

PRODUCTION HTTP Request

GET https://nxt.api.q2pay.in/api/accounts/owner/:id

Service Details

Service ID Description
VAccount View specific Owner Accounts

Create Owner Account

curl -X POST "https://<environmenturl>/api/accounts/owner"
  -H "X-Api-Key: <your secure token>"
  -H "Content-Type: application/json"
  -d "{ 
       "name":"Q2PAY TECHNOLOGIES P",
       "type_of_account": "Current Account",
       "bank_account_no": "1234567897",
       "ifsc": "IBKL0001957",
       "gstin": "27AAACR5055K1Z7",
       "pan":"AAACR5055K",
       "od_limit":"0.0",
      "min_limit": "2.0",
      "max_limit":"100.0"
      }"
require 'net/http'
require 'uri'
require 'json'

uri = URI.parse("https://<environmenturl>/api/accounts/owner") header = {'X-Api-Key' => '<your secure token>', 'Content-Type' => 'application/json'} body = { "name":"Q2PAY TECHNOLOGIES P", "type_of_account": "Current Account", "bank_account_no": "1234567897", "ifsc": "IBKL0001957", "gstin": "27AAACR5055K1Z7", "pan":"AAACR5055K", "od_limit":"0.0", "min_limit": "2.0", "max_limit":"100.0" } http = Net::HTTP.new(uri.host, uri.port) http.use_ssl = true request = Net::HTTP::Post.new(uri.request_uri, header) request.body = body.to_json response = http.request(request)

const data = {
       "name":"Q2PAY TECHNOLOGIES P",
       "type_of_account": "Current Account",
       "bank_account_no": "1234567897",
       "ifsc": "IBKL0001957",
       "gstin": "27AAACR5055K1Z7",
       "pan":"AAACR5055K",
       "od_limit":"0.0",
       "min_limit": "2.0",
       "max_limit":"100.0"
};

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

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

{
  "name":"Q2PAY TECHNOLOGIES P",
  "type_of_account": "Current Account",
  "bank_account_no": "1234567897",
  "ifsc": "IBKL0001957",
  "gstin": "27AAACR5055K1Z7",
  "pan":"AAACR5055K",
  "od_limit":"0.0",
  "min_limit": "2.0",
  "max_limit":"100.0"
}

SUCCESS RESPONSE The request returns JSON structured as shown below upon successful creation of an Owner Account.

{
  "status": true,
  "total_count": 1,
  "total_balance": "0.0",
  "owner_accounts": [
    {
      "id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
      "account_type": "Current Account",
      "entity_id": "ABC12",
      "name": "Q2PAY TECHNOLOGIES P",
      "email_id": "abc@q2pay.in",
      "bank_acc_no": "1234567897",
      "bank_account_holder_full_name": "SUMAN INDIA",
      "bank_account_holder_legal_name": "Q2PAY TECHNOLOGIES P",
      "ifsc_code": "IBKL0001957",
      "bank_name": "IDBI",
      "approval_status": "approved",
      "active_status": "Y",
      "labels": ["building expense"],
      "od_limit": "500.0",
      "min_limit":"2.0",
      "max_limit":"100.0",
      "approved_by": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
      "approved_by_name": "Akshay Rangnekar",
      "approved_on": "xxxxxxxx",
      "created_by": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
      "created_by_name": "Akshay Rangnekar",
      "created_on": "xxxxxxxx",
      "pan_no": "AAACR5055K",
      "gstin_detail": "27AAACR5055K1Z7",
      "connected_banking": "N",
      "favourite":"N"
    }
  ],
  "title": {
    "records": 1,
    "current_page": 1,
    "total_pages": 1,
    "page_item_count": 1
  }
}

ERROR RESPONSE The request returns JSON structured as shown below for errors related to the Owner Account.

{
    "status":false, 
    "errors":
    {
        "bank_account_number": {
            "base": [
                "Bank Account Number / IFSC cannot be blank",
            ]
        },
        "permanent_account_number": {
            "base": [
                "PAN ID cannot be blank",
                "Invalid format for PAN ID"
            ]
        },
        "type_of_account":
        [
            "Type of account is not included in the list"
        ],
        "gstin_detail":
        [
            "Gstin detail must exist"
        ],
        "bank_account_number": [
            "Bank account number has already been taken"
        ],
        "base":
        [
            "GSTIN is not linked with provided PAN."
        ],
        "bank_account_number":{
            "base":[
                "Full Name / Legal Name is mandatory for Virtual Accounts"
            ]
        },
        "od_limit":
        [
          "Od limit must be greater than 0 for Overdraft Accounts",
          "Od limit should be blank for non-Overdraft Accounts"
        ],
        "min_limit": ["Min limit must be greater than to 0"],
        "max_limit": ["Max limit must be greater than 0"],
        "max_limit": ["Max limit must be greater than the minimum limit"]
    }
}

This endpoint will create an Owner Account.

UAT HTTP Request

POST https://nxt.api.q2pay.co.in/api/accounts/owner

PRODUCTION HTTP Request

POST https://nxt.api.q2pay.in/api/accounts/owner

Query Parameters

Parameter Default Description Required Sample
name N.A. name for owner account (will be updated forcefully) No vendor
type_of_account N.A. type of account for owner account Yes Current Account
bank_account_no N.A. bank account number for owner account Yes 1234567897
ifsc N.A. ifsc for owner account Yes IBKL0001957
pan N.A. pan for owner account No AAACR5055K
gstin N.A. gstin detail for owner account Yes 27AAACR5055K1Z7
contact_no N.A. contact no for owner account No 123456789
labels N.A labels for owner account No ["building expense"]
od_limit 0.0 od limit required for only overdraft owner account No 500.0
min_limit 0.0 Minimum limit required for all owner account No 500.0
max_limit 0.0 Maximum limit required for all owner account No 500.0

Service Details

Service ID Description
CAccount Create Owner Account

Set Limit Owner Account

curl -X PUT "https://<environmenturl>/api/accounts/owner/set_limit/:id"
  -H "X-Api-Key: <your secure token>"
  -H "Content-Type: application/json"
  -d "{ 
       "type_of_account": "Current Account",
       "od_limit":"0.0",
       "min_limit": "2.0",
       "max_limit":"100.0"
      }"
require 'net/http'
require 'uri'
require 'json'

uri = URI.parse("https://<environmenturl>/api/accounts/owner/set_limit/:id") header = {'X-Api-Key' => '<your secure token>', 'Content-Type' => 'application/json'} body = { "type_of_account": "Current Account", "od_limit":"0.0", "min_limit": "2.0", "max_limit":"100.0" } http = Net::HTTP.new(uri.host, uri.port) http.use_ssl = true request = Net::HTTP::Put.new(uri.request_uri, header) request.body = body.to_json response = http.request(request)

const data = {
        "type_of_account": "Current Account",
       "od_limit":"0.0",
       "min_limit": "2.0",
        "max_limit":"100.0"
};

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

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

{
       "type_of_account": "Current Account",
       "od_limit":"0.0",
       "min_limit": "2.0",
        "max_limit":"100.0"
}

SUCCESS RESPONSE The request returns JSON structured as shown below upon successfully setting the limit for an Owner Account.

{
    "status": true,
    "total_count": 1,
    "total_balance":"0.0",
    "owner_accounts": [
        {
            "id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
            "account_type": "Current Account",
            "entity_id": "ABC12",
            "name": "Q2PAY TECHNOLOGIES P",
            "email_id": "abc@q2pay.in",
            "bank_acc_no": "1134567898",
            "bank_account_holder_full_name": "SUMAN INDIA",
            "bank_account_holder_legal_name": "Q2PAY TECHNOLOGIES P",
            "ifsc_code": "HDFC0000231",
            "bank_name": "HDFC Bank",
            "approval_status": "pending",
            "active_status": "N",
            "od_limit":"1000.0",
            "min_limit":"2.0",
            "max_limit":"100.0",
            "created_by": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
            "created_by_name": "Akshay Rangnekar",
            "created_on": "xxxxxxxx",
            "pan_no": "AAACR5055K",
            "gstin_detail": "27AAACR5055K1Z7",
            "connected_banking": "N",
            "favourite":"N"
        }
    ],
    "title": {
        "records": 1,
        "current_page": 1,
        "total_pages": 1,
        "page_item_count": 1
    }
}

ERROR RESPONSE The request returns JSON structured as shown below for errors related to setting the limit for an Owner Account.

{
    "status": false,
    "errors": {
         "od_limit":
        [
          "Od limit must be greater than 0 for Overdraft Accounts",
          "Od limit should be blank for non-Overdraft Accounts"
        ],
        "min_limit": ["Min limit must be greater than to 0"],
        "max_limit": ["Max limit must be greater than 0"],
        "max_limit": ["Max limit must be greater than the minimum limit"],
        type_of_account: ["cannot be updated for existing Overdraft Account",
                         "cannot be changed to Overdraft Account"],
        "type_of_account":
        [
            "Type of account is not included in the list"
        ]
    }
}

This endpoint will set the limit for an Owner Account.

UAT HTTP Request

PUT https://nxt.api.q2pay.co.in/api/accounts/owner/set_limit/:id

PRODUCTION HTTP Request

PUT https://nxt.api.q2pay.in/api/accounts/owner/set_limit/:id

Query Parameters

Parameter Default Description Required Sample
type_of_account N.A. type of account for owner account optional Current Account
od_limit 0.0 od limit required for only overdraft owner account optional 500.0
min_limit 0.0 Minimum limit required for all owner account optional 500.0
max_limit 0.0 Maximum limit required for all owner account optional 500.0

Service Details

Service ID Description
UAccount Update Owner Account

Update Owner Account

curl -X PUT "https://<environmenturl>/api/accounts/owner/:id"
  -H "X-Api-Key: <your secure token>"
  -H "Content-Type: application/json"
  -d "{ 
       "name":"Q2PAY TECHNOLOGIES P",
       "type_of_account": "Current Account",
       "bank_account_no": "1234567897",
       "ifsc": "IBKL0001957",
       "gstin": "27AAACR5055K1Z7",
       "pan":"AAACR5055K"
      }"
require 'net/http'
require 'uri'
require 'json'

uri = URI.parse("https://<environmenturl>/api/accounts/owner/:id") header = {'X-Api-Key' => '<your secure token>', 'Content-Type' => 'application/json'} body = { "name":"Q2PAY TECHNOLOGIES P", "type_of_account": "Current Account", "bank_account_no": "1234567897", "ifsc": "IBKL0001957", "gstin": "27AAACR5055K1Z7", "pan":"AAACR5055K" } http = Net::HTTP.new(uri.host, uri.port) http.use_ssl = true request = Net::HTTP::Put.new(uri.request_uri, header) request.body = body.to_json response = http.request(request)

const data = {
       "name":"Q2PAY TECHNOLOGIES P",
       "type_of_account": "Current Account",
       "bank_account_no": "1234567897",
       "ifsc": "IBKL0001957",
       "gstin": "27AAACR5055K1Z7",
       "pan":"AAACR5055K"
};

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

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

{
  "name":"Q2PAY TECHNOLOGIES P",
  "type_of_account": "Current Account",
  "bank_account_no": "1234567897",
  "ifsc": "IBKL0001957",
  "gstin": "27AAACR5055K1Z7",
  "pan":"AAACR5055K"
}

SUCCESS RESPONSE The request returns JSON structured as shown below upon successfully updating an Owner Account.

{
    "status": true,
    "total_count": 1,
    "total_balance":"0.0",
    "owner_accounts": [
        {
            "id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
            "account_type": "Current Account",
            "entity_id": "ABC12",
            "name": "Q2PAY TECHNOLOGIES P",
            "email_id": "abc@q2pay.in",
            "bank_acc_no": "1134567898",
            "bank_account_holder_full_name": "SUMAN INDIA",
            "bank_account_holder_legal_name": "Q2PAY TECHNOLOGIES P",
            "ifsc_code": "HDFC0000231",
            "bank_name": "HDFC Bank",
            "approval_status": "pending",
            "active_status": "N",
            "od_limit":"1000.0",
            "min_limit":"2.0",
            "max_limit":"100.0",
            "created_by": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
            "created_by_name": "Akshay Rangnekar",
            "created_on": "xxxxxxxx",
            "pan_no": "AAACR5055K",
            "gstin_detail": "27AAACR5055K1Z7",
            "connected_banking": "N",
            "favourite":"N"
        }
    ],
    "title": {
        "records": 1,
        "current_page": 1,
        "total_pages": 1,
        "page_item_count": 1
    }
}

ERROR RESPONSE The request returns JSON structured as shown below for errors related to updating an Owner Account.

{
    "status": false,
    "errors": {
        "bank_account_number": [
            "Bank account number has already been taken"
        ],
        "base": [
            "Owner account cannot be edited as it is enabled."
        ],
        "bank_account_number": {
            "base": [
                "Bank Account Number / IFSC cannot be blank",
            ]
        },
        "type_of_account":
        [
            "Type of account is not included in the list"
        ],
        "base":
        [
            "GSTIN is not linked with provided PAN."
        ]
    }
}

This endpoint will update an Owner Account.

UAT HTTP Request

PUT https://nxt.api.q2pay.co.in/api/accounts/owner/:id

PRODUCTION HTTP Request

PUT https://nxt.api.q2pay.in/api/accounts/owner/:id

Query Parameters

Parameter Default Description Required Sample
name N.A. name for owner account (will be updated forcefully ) optional vendor
type_of_account N.A. type of account for owner account optional Current Account
bank_account_no N.A. bank account number for owner account optional 1234567897
ifsc N.A. ifsc for owner account optional IBKL0001957
pan N.A. pan for owner account optional AAACR5055K
gstin N.A. gstin detail for owner account optional 27AAACR5055K1Z7

Service Details

Service ID Description
CAccount Update Owner Account

Deactivate Owner Account

curl -X PUT "https://<environmenturl>/api/accounts/owner/:id/deactivate"
  -H "X-Api-Key: <your secure token>"
  -H "Content-Type: application/json"

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

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


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

SUCCESS RESPONSE The request returns JSON structured as shown below upon successful deactivation of an Owner Account.

{
  "status":true,
  "total_count":1,
  "total_balance":"0.0",
  "owner_accounts":[
    {
      "id":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
      "account_type":"Other",
      "entity_id":"ABC12",
      "name":"Q2PAY TECHNOLOGIES P",
      "bank_acc_no":"1234567890",
      "bank_account_holder_full_name":"Q2PAY TECHNOLOGIES P",
      "bank_account_holder_legal_name":"Q2PAY TECHNOLOGIES P",
      "ifsc_code":"HDFC0000133",
      "bank_name":"HDFC Bank",
      "approval_status":"deactivated",
      "active_status":"N",
      "created_by":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
      "created_by_name":"Ashish Wadekar",
      "created_on":"xxxxxxxx",
      "pan_no":"WASED4729K",
      "gstin_detail":"48AAACQ0519P2FG",
      "connected_banking":"N",
      "favourite":"N"
    }
  ],
  "title":{
    "records":1, 
    "current_page":1, 
    "total_pages":1, 
    "page_item_count":1
  }
}

This endpoint will deactivate an Owner Account.

UAT HTTP Request

PUT https://nxt.api.q2pay.co.in/api/accounts/owner/:id/deactivate

PRODUCTION HTTP Request

PUT https://nxt.api.q2pay.in/api/accounts/owner/:id/deactivate

Service Details

Service ID Description
CAccount Create Owner Account

Enable Connected Banking Owner Account

curl -X PUT "https://<environmenturl>/api/accounts/owner/:id/enable_connected_banking"
  -H "X-Api-Key: <your secure token>"
  -H "Content-Type: application/json"
  -d "{ 
      "banking_credential_id": 1
      }"
require 'net/http'
require 'uri'
require 'json'

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

const data = {
       "banking_credential_id": 1
};

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

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

{
  "banking_credential_id": 1
}

SUCCESS RESPONSE The request returns JSON structured as shown below upon successfully enabling connected banking for an Owner Account.

{
    "status": true,
    "total_count": 1,
    "total_balance":"0.0",
    "owner_accounts": [
        {
            "id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
            "account_type": "Current Account",
            "entity_id": "ABC12",
            "name": "Q2PAY TECHNOLOGIES P",
            "email_id": "abc@q2pay.in",
            "bank_acc_no": "6234567895",
            "bank_account_holder_full_name": "SUMAN INDIA",
            "bank_account_holder_legal_name": "Q2PAY TECHNOLOGIES P",
            "ifsc_code": "ICIC0000228",
            "bank_name": "ICICI Bank",
            "approval_status": "approved",
            "active_status": "Y",
            "approved_by": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
            "approved_by_name": "Akshay Rangnekar",
            "approved_on": "xxxxxxxx",
            "created_by": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
            "created_by_name": "Akshay Rangnekar",
            "created_on": "xxxxxxxx",
            "pan_no": "AAACR5055K",
            "gstin_detail": "27AAACR5055K1Z7",
            "connected_banking": "Y",
            "favourite":"N"
        }
    ],
    "title": {
        "records": 1,
        "current_page": 1,
        "total_pages": 1,
        "page_item_count": 1
    }
}

ERROR RESPONSE The request returns JSON structured as shown below for errors related to the Owner Account.

{
    "status":false, 
    "errors":{
        "owner_account":[
            "Owner account Banking creditional id must be exit",
            "Owner account which is pending cannot be enabled",
            "Owner account cannot be enabled as it is already enabled."
        ],
        "base":[
            "Banking credentials do not belong to Owner Account entity"
        ]
    }
}

This endpoint will enable connected banking for an Owner Account.

UAT HTTP Request

PUT https://nxt.api.q2pay.co.in/api/accounts/owner/:id/enable_connected_banking

PRODUCTION HTTP Request

PUT https://nxt.api.q2pay.in/api/accounts/owner/:id/enable_connected_banking

Query Parameters

Parameter Default Description Required Sample
banking_credential_id N.A. banking credential id for owner account Yes 1

Service Details

Service ID Description
Admin Admin

Disable Connected Banking Owner Account

curl -X PUT "https://<environmenturl>/api/accounts/owner/:id/disable_connected_banking"
  -H "X-Api-Key: <your secure token>"
  -H "Content-Type: application/json"

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

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

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

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

SUCCESS RESPONSE The request returns JSON structured as shown below upon successfully disabling connected banking for an Owner Account.

{
    "status": true,
    "total_count": 1,
    "total_balance":"0.0",
    "owner_accounts": [
        {
            "id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
            "account_type": "Current Account",
            "entity_id": "ABC12",
            "name": "Q2PAY TECHNOLOGIES P",
            "email_id": "abc@q2pay.in",
            "bank_acc_no": "6234567895",
            "bank_account_holder_full_name": "SUMAN INDIA",
            "bank_account_holder_legal_name": "Q2PAY TECHNOLOGIES P",
            "ifsc_code": "ICIC0000228",
            "bank_name": "ICICI Bank",
            "approval_status": "approved",
            "active_status": "Y",
            "approved_by": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
            "approved_by_name": "Akshay Rangnekar",
            "approved_on": "xxxxxxxx",
            "created_by": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
            "created_by_name": "Akshay Rangnekar",
            "created_on": "xxxxxxxx",
            "pan_no": "AAACR5055K",
            "gstin_detail": "27AAACR5055K1Z7",
            "connected_banking": "N",
            "favourite":"N"
        }
    ],
    "title": {
        "records": 1,
        "current_page": 1,
        "total_pages": 1,
        "page_item_count": 1
    }
}

ERROR RESPONSE The request returns JSON structured as shown below for errors related to disabling an Owner Account.

{
    "status":false, 
    "errors":{
        "owner_account":[
            "Owner account can not be disabled"
        ]
} }

This endpoint will disable connected banking for an Owner Account.

UAT HTTP Request

PUT https://nxt.api.q2pay.co.in/api/accounts/owner/:id/disable_connected_banking

PRODUCTION HTTP Request

PUT https://nxt.api.q2pay.in/api/accounts/owner/:id/disable_connected_banking

Service Details

Service ID Description
Admin Admin

Get Balance Owner Account

curl -X PUT "https://<environmenturl>/api/accounts/owner/:id/balance"
  -H "X-Api-Key: <your secure token>"
  -H "Content-Type: application/json"

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

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


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

SUCCESS RESPONSE The request returns JSON structured as shown below upon successful retrieval of the balance for an Owner Account.

{
    "status":true,
    "total_count":1,
    "owner_accounts":[
        {
            "owner_account_id":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
            "owner_account_bank_acc_no":"123456788993",
            "owner_account_ifsc_code":"ICIC0000112",
            "owner_account_bank_name":"ICICI Bank",
            "owner_account_type":"Other",
            "owner_account_balance":"1500.0",
            "owner_account_balance_last_fetched_at":"xxxxxxxx",
            "owner_account_balance_last_fetched_at_in_words":"less than a minute ago"
        }
    ],
    "title":{
        "records":1,
        "current_page":1, 
        "total_pages":1,
        "page_item_count":1
    }
}

ERROR RESPONSE The request returns JSON structured as shown below for errors related to the Owner Account.

{
    "status":false,
    "errors":{
        "base":[
            "Connected Banking is not enabled for this account. Kindly contact support!"
        ]
    }
}

This endpoint will fetch the current account balance for Owner Account.

UAT HTTP Request

PUT https://nxt.api.q2pay.co.in/api/accounts/owner/:id/balance

PRODUCTION HTTP Request

PUT https://nxt.api.q2pay.in/api/accounts/owner/:id/balance

Service Details

Service ID Description
Admin Admin
VAccountBalance View Balance of Owner Account

Display Statement of Owner Account

curl -X PUT "https://<environmenturl>/api/accounts/owner/:id/display_statement"
  -H "X-Api-Key: <your secure token>"
  -H "Content-Type: application/json"
  -d "{ 
       "start_date": "15 Mar 2023",
       "end_date": "30 Apr 2023",
       "credit_debit":"credit",
       "start_amount": 888.1,
       "end_amount": 1000,
       "entry_source": true
      }"
require 'net/http'
require 'uri'
require 'json'

uri = URI.parse("https://<environmenturl>/api/accounts/owner/:id/display_statement") header = {'X-Api-Key' => '<your secure token>', 'Content-Type' => 'application/json'} body = { "start_date": "15 Mar 2023", "end_date": "30 Apr 2023", "credit_debit":"credit", "start_amount": 888.1, "end_amount": 1000, "entry_source": true } http = Net::HTTP.new(uri.host, uri.port) http.use_ssl = true request = Net::HTTP::Put.new(uri.request_uri, header) request.body = body.to_json response = http.request(request)

const data = {
       "start_date": "15 Mar 2023",
       "end_date": "30 Apr 2023",
       "credit_debit":"credit",
       "start_amount": 888.1,
       "end_amount": 1000,
       "entry_source": true
};

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

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

{
  "start_date": "15 Mar 2023",
  "end_date": "30 Apr 2023",
  "credit_debit":"debit",
  "start_amount": 888.1,
  "end_amount": 1000,
  "entry_source": true
}

SUCCESS RESPONSE The request returns JSON structured as shown below upon successful display of the statement for an Owner Account.

{
    "status":true,
    "total_count":3,
    "owner_account_details": {
        "owner_bank_account_number":"8009403836",
        "ifsc_code":"ICIC0000303",
        "bank_name":"ICICI Bank",
        "branch":"PUNE - PASHAN",
        "name":"Q2PAY TECHNOLOGIES P",
        "account_type":"OwnerAccount",
        "statement":[
            {
               "account_statement_entry_id": 4, "transaction_date":"2023-03-30T09:07:38.893Z", "value_date":"2023-03-30", "narration":"cash paid from ICICI Bank user", "amount":"50003.0","bank_reference": "PILIMUIN01J74711", "credit_debit":"Credit", "closing_balance":"50003.0", "uploaded": true
            },
            {
               "account_statement_entry_id": 3, "transaction_date":"2023-03-30T09:07:38.893Z", "value_date":"2023-03-30", "narration":"cash paid from ICICI Bank user", "amount":"50003.0","bank_reference": "PILIMUIN01J74711", "credit_debit":"Debit", "closing_balance":"50003.0", "uploaded": true
            },
            {
               "account_statement_entry_id": 2, "transaction_date":"2023-03-30T09:07:38.893Z", "value_date":"2023-03-30", "narration":"cash paid from ICICI Bank user", "amount":"50003.0","bank_reference": "PILIMUIN01J74711", "credit_debit":"Credit", "closing_balance":"50003.0", "uploaded": true
            }
        ]
    },
    "title":{
        "records":3, 
        "current_page":1, 
        "total_pages":1,
        "page_item_count":50
    }
}

ERROR RESPONSE The request returns JSON structured as shown below for errors related to the display of the statement for an Owner Account.

{
  "status": false,
  "errors": {
    "base": [
      "Kindly check start date or end date for fetching statements."
    ],
    "base":[
      "Start amount and end amount must be numeric."
    ]
  }
}

This endpoint will fetch statement of Owner Account.

UAT HTTP Request

PUT https://nxt.api.q2pay.co.in/api/accounts/owner/:id/display_statement

PRODUCTION HTTP Request

PUT https://nxt.api.q2pay.in/api/accounts/owner/:id/display_statement

Query Parameters

Parameter Default Description Required Sample
start_date ,end_date N.A. start date and end date of owner account Yes "15 Mar 2023","30 Apr 2023" or "15/3/2023", "15/5/2023"
credit_debit N.A. credit or debit of owner account Yes "credit","debit"
start_amount,end_amount N.A. start amount and end amount of owner account Yes 200,1000
entry_source Both Determines whether the statement entry originates from uploaded data or bank data. Default returns both types. No true
page_size 50 If set to specific number, the result will include that number of transactions. No 10
page_no 1 If set to specific number, the result will include that page of transactions. No 2

Service Details

Service ID Description
Admin Admin
VAccountBalance View Balance of Owner Account

Display Itemised Statement Of Owner Account

curl -X GET "https://<environmenturl>/api/accounts/owner/:id/display_itemised_statement?from_date=1678818600&to_date=1678818600&credit_debit=credit"
  -H "X-Api-Key: <your secure token>"
  -H "Content-Type: application/json"
require 'net/http'
require 'uri'
require 'json'

uri = URI.parse("https://<environmenturl>/api/accounts/owner/:id/display_itemised_statement")
header = {'X-Api-Key' => '<your secure token>', 'Content-Type' => 'application/json'}
params = {
      "from_date": "1678818600",
      "to_date": "1678818600",
}
http = Net::HTTP.new(uri.host, uri.port)
uri.query = URI.encode_www_form(params)
http.use_ssl = true
request = Net::HTTP::Get.new(uri.request_uri, header)
request.body = body.to_json
response = http.request(request)
const data = {
     "from_date": "1678818600",
     "to_date": "1678818600",
};
const query = new URLSearchParams(data).toString();
fetch('https://<environmenturl>/api/accounts/owner/:id/display_itemised_statement?${query}', {
  method: 'GET',
  headers: {
    'X-Api-Key': '<your secure token>',
    'Content-Type': 'application/json'
  }
})
  .then(response => response.json())
  .then(data => console.log(data))
  .catch(error => console.error(error));

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

{
    "from_date": "1678818600",
    "to_date": "1678818600",
}

SUCCESS RESPONSE The request returns JSON structured as shown below upon successful display of the itemised report for an Owner Account.

{"status": true,
 "total_count": 5,
 "owner_account_details": 
  {"owner_bank_account_number": "0123456789",
   "ifsc_code": "HDFC0000224",
   "bank_name": "HDFC Bank",
   "branch": "ABHYUDAYA NAGAR",
   "name": "Q2PAY TECHNOLOGIES P",
   "account_type": "OwnerAccount",
   "ecollection_callbacks": 
    [{"ecollection_callback_id": "82241185-aad0-47cc-bede-4145c33bb989",
      "owner_account_id": "e2f2281a-bba8-4f39-aef9-b0773445cf41",
      "party_name": "BOM E Payment of Tax",
      "party_ifsc": "MAHB0000588",
      "party_account_number": "6457653969",
      "bank_reference": "MAHBR52025021219643482",
      "transaction_date": 1739298600,
      "value_date": 1739298600,
      "narration": "RTGS Cr-MAHB0000588-BOM E Payment of Tax-THE CLEARING CORPORATION OF INDIA",
      "amount": "123456789.0",
      "credit_debit": "credit"},
     {"ecollection_callback_id": "82241185-aad0-47cc-bede-4145c33bb989",
      "owner_account_id": "e2f2281a-bba8-4f39-aef9-b0773445cf41",
      "party_name": "BOM E Payment of Tax",
      "party_ifsc": "MAHB0000588",
      "party_account_number": "6457653969",
      "bank_reference": "MAHBR52025021219643482",
      "transaction_date": 1752690600,
      "value_date": 1752690600,
      "narration": "RTGS Cr-MAHB0000588-BOM E Payment of Tax-THE CLEARING CORPORATION OF INDIA",
      "amount": "4000.0",
      "credit_debit": "credit"},
     {"ecollection_callback_id": "82241185-aad0-47cc-bede-4145c33bb989",
      "owner_account_id": "e2f2281a-bba8-4f39-aef9-b0773445cf41",
      "party_name": "BOM E Payment of Tax",
      "party_ifsc": "MAHB0000588",
      "party_account_number": "6457653969",
      "bank_reference": "MAHBR52025021219643482",
      "transaction_date": 1749666600,
      "value_date": 1749666600,
      "narration": "RTGS Cr-MAHB0000588-BOM E Payment of Tax-THE CLEARING CORPORATION OF INDIA",
      "amount": "5000.0",
      "credit_debit": "debit"},
     {"ecollection_callback_id": "82241185-aad0-47cc-bede-4145c33bb989",
      "owner_account_id": "e2f2281a-bba8-4f39-aef9-b0773445cf41",
      "party_name": "BOM E Payment of Tax",
      "party_ifsc": "MAHB0000588",
      "party_account_number": "6457653969",
      "bank_reference": "MAHBR52025021219643482",
      "transaction_date": 1739298600,
      "value_date": 1739298600,
      "narration": "RTGS Cr-MAHB0000588-BOM E Payment of Tax-THE CLEARING CORPORATION OF INDIA",
      "amount": "6000.0",
      "credit_debit": "credit"},
     {"ecollection_callback_id": "82241185-aad0-47cc-bede-4145c33bb989",
      "owner_account_id": "e2f2281a-bba8-4f39-aef9-b0773445cf41",
      "party_name": "BOM E Payment of Tax",
      "party_ifsc": "MAHB0000588",
      "party_account_number": "6457653969",
      "bank_reference": "MAHBR52025021219643482",
      "transaction_date": 1739298600,
      "value_date": 1739298600,
      "narration": "RTGS Cr-MAHB0000588-BOM E Payment of Tax-THE CLEARING CORPORATION OF INDIA",
      "amount": "8000.0",
      "credit_debit": "credit"}],
 "title": {"records": 5, "current_page": 1, "total_pages": 1, "page_item_count": 50}}}

ERROR RESPONSE The request returns JSON structured as shown below for errors related to the Itemised Statement of an Owner Account.

{
    "status": false,
    "errors": { 
        "base": "'Owner Account not present'"
    } 
}

This endpoint will display the Itemised Statement of an Owner Account.

UAT HTTP Request

GET https://nxt.api.q2pay.co.in/api/accounts/owner/:id/display_itemised_statement

PRODUCTION HTTP Request

GET https://nxt.api.q2pay.in/api/accounts/owner/:id/display_itemised_statement

Query Parameters

Parameter Default Description Required Sample
from_date ,to_date N.A. start date and end date of ecollection No "1678818600", "1678818600"
credit_debit N.A. credit or debit of ecollection_callback No "credit","debit"
min_amount,max_amount N.A. start amount and end amount of ecollection_callback 200,1000
narration N.A narration of ecollection_callback No RTGS
entity_id N.A If Admin wants to filter entity of owner account Yes ( if Admin wants to mimic entity) ABC12
page_size 50 If set to specific number, the result will include that number of transactions. No 10
page_no 1 If set to specific number, the result will include that page of transactions. No 2

Service Details

Service ID Description
Admin Admin
VItemisedStatement View consolidated itemised statement of Owner Account

Add Tag of Owner Account

curl -X PUT "https://<environmenturl>/api/accounts/owner/add_tag"
  -H "X-Api-Key: <your secure token>"
  -H "Content-Type: application/json"
  -d "{
  "owner_id": [
    "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx","xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx"
  ],
  "tags": [
    "Pune",
    "Gulmarg"
  ]
}"
require 'net/http'
require 'uri'
require 'json'

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

const data = {
  "owner_id": [
     "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx","xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx"
  ],
  "tags": [
    "Pune",
    "Gulmarg"
  ]
};

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

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

{
  "owner_id": [
     "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx","xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx"
  ],
  "tags": [
    "Pune",
    "Gulmarg"
  ]
}

SUCCESS RESPONSE The request returns JSON structured as shown below on successfully adding a tag to Owner Accounts.

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

ERROR RESPONSE The request returns JSON structured as shown below for errors related to adding a tag to Owner Accounts.

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

This endpoint will Add Tags to Owner Accounts.

UAT HTTP Request

PUT https://nxt.api.q2pay.co.in/api/accounts/owner/add_tag

PRODUCTION HTTP Request

PUT https://nxt.api.q2pay.in/api/accounts/owner/add_tag

Query Parameters

Parameter Default Description Required Sample
owner_id N.A. owner id of owner account Yes ["xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx","xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx" ]
tags N.A. tags of owner account Yes ["Pune","Gulmarg" ]

Service Details

Service ID Description
COwnerTag Add tag for Owner Account

Remove Tag of Owner Account

curl -X PUT "https://<environmenturl>/api/accounts/owner/remove_tag"
  -H "X-Api-Key: <your secure token>"
  -H "Content-Type: application/json"
  -d "{
  "owner_id": [
    "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx","xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx"
  ],
  "tags": [
    "Pune",
    "Gulmarg"
  ]
}"
require 'net/http'
require 'uri'
require 'json'

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

const data = {
  "owner_id": [
     "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx","xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx"
  ],
  "tags": [
    "Pune",
    "Gulmarg"
  ]
};

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

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

{
  "owner_id": [
     "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx","xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx"
  ],
  "tags": [
    "Pune",
    "Gulmarg"
  ]
}

SUCCESS RESPONSE The request returns JSON structured as shown below upon successful removal of a tag from Owner Accounts.

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

ERROR RESPONSE The request returns JSON structured as shown below for errors related to the removal of a tag from Owner Accounts.

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

This endpoint will remove tags from Owner Accounts.

UAT HTTP Request

PUT https://nxt.api.q2pay.co.in/api/accounts/owner/remove_tag

PRODUCTION HTTP Request

PUT https://nxt.api.q2pay.in/api/accounts/owner/remove_tag

Query Parameters

Parameter Default Description Required Sample
owner_id N.A. owner id of owner account Yes ["xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx","xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx" ]
tags N.A. tags of owner account Yes ["Pune","Gulmarg" ]

Service Details

Service ID Description
DOwnerTag Remove tag for Owner Account

Display Statement Download of Owner Account

curl -X PUT "https://<environmenturl>/api/accounts/owner/:id/display_statement_download.:format"
  -H "X-Api-Key: <your secure token>"
  -H "Content-Type: application/json"
  -d "{ 
       "start_date": "15 Mar 2023",
       "end_date": "30 Apr 2023",
       "credit_debit":"credit",
       "start_amount": 888.1,
       "end_amount": 1000,
       "entry_source": true
      }"
require 'net/http'
require 'uri'
require 'json'

uri = URI.parse("https://<environmenturl>/api/accounts/owner/:id/display_statement_download.:format") header = {'X-Api-Key' => '<your secure token>', 'Content-Type' => 'application/json'} body = { "start_date": "15 Mar 2023", "end_date": "30 Apr 2023", "credit_debit":"credit", "start_amount": 888.1, "end_amount": 1000, "entry_source": true } http = Net::HTTP.new(uri.host, uri.port) http.use_ssl = true request = Net::HTTP::Put.new(uri.request_uri, header) request.body = body.to_json response = http.request(request)

const data = {
       "start_date": "15 Mar 2023",
       "end_date": "30 Apr 2023",
       "credit_debit":"credit",
       "start_amount": 888.1,
       "end_amount": 1000,
       "entry_source": true
};

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

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

{
  "start_date": "15 Mar 2023",
  "end_date": "30 Apr 2023",
  "credit_debit":"debit",
  "start_amount": 888.1,
  "end_amount": 1000,
   "entry_source": true
}

SUCCESS RESPONSE The request returns JSON structured as shown below upon successful download of the statement for an Owner Account.

{
   "status": 200 
}

ERROR RESPONSE The request returns JSON structured as shown below for errors related to the download of the statement for an Owner Account.

{
  "status": false,
  "errors": {
    "base": [
      "Kindly check start date or end date for fetching statements."
    ],
    "base":[
      "Start amount and end amount must be numeric."
    ]
  }
}

ERROR RESPONSE The request returns JSON structured like below for errors related display statement download of owner accounts

{
  "status": false,
  "message": "Unsupported format requested. Please use PDF, CSV, TSV, or XLSX."
}

This endpoint will display the statement download of an Owner Account.

UAT HTTP Request

PUT https://nxt.api.q2pay.co.in/api/accounts/owner/:id/display_statement_download.:format

PRODUCTION HTTP Request

PUT https://nxt.api.q2pay.in/api/accounts/owner/:id/display_statement_download.:format

Query Parameters

Parameter Default Description Required Sample
start_date ,end_date N.A. start date and end date of owner account Yes "15 Mar 2023","30 Apr 2023" or "15/3/2023", "15/5/2023"
credit_debit N.A. credit or debit of owner account Yes "credit","debit"
start_amount,end_amount N.A. start amount and end amount of owner account Yes 200,1000
entry_source Both Determines whether the statement entry originates from uploaded data or bank data. Default returns both types. No true

File Format

Format Default Description Required Sample URL
pdf N.A. pdf format to download statement of owner account Yes https://<environmenturl>/api/accounts/owner/:id/display_statement_download.pdf
csv N.A. csv format to download statement of owner account Yes https://<environmenturl>/api/accounts/owner/:id/display_statement_download.csv
tsv N.A. tsv format to download statement of owner account Yes https://<environmenturl>/api/accounts/owner/:id/display_statement_download.tsv
xlsx N.A. xlsx format to download statement of owner account Yes https://<environmenturl>/api/accounts/owner/:id/display_statement_download.xlsx

Service Details

Service ID Description
Admin Admin
VAccountBalance View Balance of Owner Account

Consolidated Statement of Owner Account

curl -X PUT "https://<environmenturl>/api/accounts/owner/consolidated_statement"
  -H "X-Api-Key: <your secure token>"
  -H "Content-Type: application/json"
  -d "{ 
       "start_date": "15 Mar 2023",
       "end_date": "30 Apr 2023",
       "credit_debit":"credit",
       "start_amount": 888.1,
       "end_amount": 1000,
       "entry_source": true,
       "owner_account_id":["xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx","xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx"]
      }"
require 'net/http'
require 'uri'
require 'json'

uri = URI.parse("https://<environmenturl>/api/accounts/owner/consolidated_statement") header = {'X-Api-Key' => '<your secure token>', 'Content-Type' => 'application/json'} body = { "start_date": "15 Mar 2023", "end_date": "30 Apr 2023", "credit_debit":"credit", "start_amount": 888.1, "end_amount": 1000, "entry_source": true, "owner_account_id":["xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx","xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx"] } http = Net::HTTP.new(uri.host, uri.port) http.use_ssl = true request = Net::HTTP::Put.new(uri.request_uri, header) request.body = body.to_json response = http.request(request)

const data = {
       "start_date": "15 Mar 2023",
       "end_date": "30 Apr 2023",
       "credit_debit":"credit",
       "start_amount": 888.1,
       "end_amount": 1000,
       "entry_source": true,
       "owner_account_id":["xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx","xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx"]
};

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

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

{
  "start_date": "15 Mar 2023",
  "end_date": "30 Apr 2023",
  "credit_debit":"debit",
  "start_amount": 888.1,
  "end_amount": 1000,
  "entry_source": true,
  "owner_account_id":["xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx","xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx"]
}

SUCCESS RESPONSE The request returns JSON structured as shown below for a successful Consolidated Statement of Owner Accounts.

{
    "status": true,
    "total_count": 1,
    "statement": [
        {   "account_statement_entry_id": 4,
            "owner_account_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
            "owner_bank_account_number": "1234567911",
            "ifsc_code": "IBKL0001964",
            "bank_name": "IDBI",
            "name": "prajakta",
            "transaction_date": "2024-09-02T07:38:00.000Z",
            "value_date": "2024-08-11",
            "narration": "light bill",
            "amount": "1100355.0",
            "bank_reference": "PILIMUIN01J74711",
            "credit_debit": "Credit",
            "closing_balance": "61500.0",
            "uploaded": true
        }
    ],
    "title": {
        "records": 1,
        "current_page": 1,
        "total_pages": 1,
        "page_item_count": 50
    }
}

ERROR RESPONSE The request returns JSON structured as shown below for errors related to the Consolidated Statement of Owner Accounts.

{
  "status": false,
  "errors": {
    "base": [
      "Kindly check start date or end date for fetching statements."
    ],
    "base":[
      "Start amount and end amount must be numeric."
    ]
  }
}

This endpoint will return the Consolidated Statement of Owner Accounts.

UAT HTTP Request

PUT https://nxt.api.q2pay.co.in/api/accounts/owner/consolidated_statement

PRODUCTION HTTP Request

PUT https://nxt.api.q2pay.in/api/accounts/owner/consolidated_statement

Query Parameters

Parameter Default Description Required Sample
start_date ,end_date N.A. start date and end date of owner account Yes "15 Mar 2023","30 Apr 2023" or "15/3/2023", "15/5/2023"
credit_debit N.A. credit or debit of owner account Yes "credit","debit"
start_amount,end_amount N.A. start amount and end amount of owner account Yes 200,1000
owner_account_id N.A Owner account id of owner account Yes ["xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx","xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx"]
entity_id N.A If Admin is present then entity id is required of owner account Yes (Admin) ABC12
entry_source Both Determines whether the statement entry originates from uploaded data or bank data. Default returns both types. No true
page_size 50 If set to specific number, the result will include that number of transactions. No 10
page_no 1 If set to specific number, the result will include that page of transactions. No 2

Service Details

Service ID Description
Admin Admin
VAccountBalance View Balance of Owner Account

Consolidated Itemised Statement of Owner Account

curl -X GET "https://<environmenturl>/api/accounts/owner/consolidated_itemised_statement?from_date=1678818600&to_date=1678818600&credit_debit=credit&min_amount=888.1&max_amount=1000&owner_account_id[]=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx&owner_account_id[]=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx" \
  -H "X-Api-Key: <your secure token>"

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

uri = URI.parse("https://<environmenturl>/api/accounts/owner/consolidated_itemised_statement")
header = {'X-Api-Key' => '<your secure token>', 'Content-Type' => 'application/json'}
params = {
       "from_date": "1678818600",
       "to_date": "1678818600",
       "min_amount": 888.1,
       "max_amount": 1000,
       "owner_account_id":["xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx","xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx"]
}
http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = true
uri.query = URI.encode_www_form(params)
request = Net::HTTP::Get.new(uri.request_uri, header)
response = http.request(request)
const data = {
       "from_date": "1678818600",
       "to_date": "1678818600",
       "min_amount": 888.1,
       "max_amount": 1000,
       "owner_account_id":["xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx","xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx"]
};
const query = new URLSearchParams(data).toString();
fetch(`https://<environmenturl>/api/accounts/owner/consolidated_itemised_statement?${query}`', {
  method: 'GET',
  headers: {
    'X-Api-Key': '<your secure token>',
    'Content-Type': 'application/json'
  }
})
  .then(response => response.json())
  .then(data => console.log(data))
  .catch(error => console.error(error));

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

{
  "from_date": "1678818600",
  "to_date": "1678818600",
  "min_amount": 888.1,
  "max_amount": 1000,
  "owner_account_id":["xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx","xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx"]
}

SUCCESS RESPONSE The request returns JSON structured as shown below on successfully retrieving the Consolidated Itemised Statement of Owner Accounts.

{
    "status": true,
    "total_count": 1,
    "ecollection_callbacks": [
         {"ecollection_callback_id": "82241185-aad0-47cc-bede-4145c33bb989",
          "owner_account_id": "1cc0ff08-7885-4fa4-a287-041908e41b3b",
          "owner_bank_account_number": "8482940313",
          "ifsc_code": "HDFC0000224",
          "bank_name": "HDFC Bank",
          "name": "Q3PAY TECHNOLOGIES P",
          "party_name": "BOM E Payment of Tax",
          "party_ifsc": "MAHB0000588",
          "party_account_number": "6457653969",
          "bank_reference": "MAHBR52025021219643482",
          "transaction_date": 1739298600,
          "value_date": 1739298600,
          "narration": "RTGS Cr-MAHB0000588-BOM E Payment of Tax-THE CLEARING CORPORATION OF INDIA",
          "amount": "3000.0",
          "credit_debit": "credit"
          }
    ],
    "title": {
        "records": 1,
        "current_page": 1,
        "total_pages": 1,
        "page_item_count": 50
    }
}

ERROR RESPONSE The request returns JSON structured as shown below for errors related to the Consolidated Itemised Statement of Owner Accounts.

{
  "status": false,
  "errors": {
    "base": [
      "'Owner Account not present'"
    ]
  }
}

This endpoint retrieves the Consolidated Statements of Owner Accounts. It will return only credit entries.

UAT HTTP Request

GET https://nxt.api.q2pay.co.in/api/accounts/owner/consolidated_itemised_statement

PRODUCTION HTTP Request

GET https://nxt.api.q2pay.in/api/accounts/owner/consolidated_itemised_statement

Query Parameters

Parameter Default Description Required Sample
from_date ,to_date N.A. start date and end date of ecollection No "1678818600", "1678818600"
min_amount,max_amount N.A. start amount and end amount of ecollection_callback 200,1000
owner_account_id N.A Owner account id of ecollection_callback Yes ["xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx","xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx"]
narration N.A narration filter for ecollection_callback [string similar match] No RTGS
entity_id N.A If Admin wants to filter entity of owner account No ( Yes if Admin wants to mimic entity) ABC12
page_size 50 If set to specific number, the result will include that number of transactions. No 10
page_no 1 If set to specific number, the result will include that page of transactions. No 2

Service Details

Service ID Description
Admin Admin
VItemisedStatement View consolidated itemised statement of Owner Account

Consolidated Statement Download of Owner Account

curl -X PUT "https://<environmenturl>/api/accounts/owner/consolidated_statement_download.:format"
  -H "X-Api-Key: <your secure token>"
  -H "Content-Type: application/json"
  -d "{ 
       "start_date": "15 Mar 2023",
       "end_date": "30 Apr 2023",
       "credit_debit":"credit",
       "start_amount": 888.1,
       "end_amount": 1000,
       "entry_source": true,
       "owner_account_id":["xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx","xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx"],
       "filter_columns": ["Amount"]
      }"
require 'net/http'
require 'uri'
require 'json'

uri = URI.parse("https://<environmenturl>/api/accounts/owner/consolidated_statement_download.:format") header = {'X-Api-Key' => '<your secure token>', 'Content-Type' => 'application/json'} body = { "start_date": "15 Mar 2023", "end_date": "30 Apr 2023", "credit_debit":"credit", "start_amount": 888.1, "end_amount": 1000, "entry_source": true, "owner_account_id":["xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx","xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx"], "filter_columns": ["Amount"] } http = Net::HTTP.new(uri.host, uri.port) http.use_ssl = true request = Net::HTTP::Put.new(uri.request_uri, header) request.body = body.to_json response = http.request(request)

const data = {
       "start_date": "15 Mar 2023",
       "end_date": "30 Apr 2023",
       "credit_debit":"credit",
       "start_amount": 888.1,
       "end_amount": 1000,
       "entry_source": true,
       "owner_account_id":["xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx","xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx"],
       "filter_columns": ["Amount"]
};

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

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

{
  "start_date": "15 Mar 2023",
  "end_date": "30 Apr 2023",
  "credit_debit":"debit",
  "start_amount": 888.1,
  "end_amount": 1000,
  "entry_source": true,
  "owner_account_id":["xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx","xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx"],
  "filter_columns": ["Amount"]
}

SUCCESS RESPONSE The request returns JSON structured as shown below on successfully downloading the Consolidated Statement of Owner Accounts.

{
   "status": 200 
}

ERROR RESPONSE The request returns JSON structured as shown below for errors related to downloading the Consolidated Statement of Owner Accounts.

{
  "status": false,
  "errors": {
    "base": [
      "Kindly check start date or end date for fetching statements."
    ],
    "base":[
      "Start amount and end amount must be numeric."
    ]
  }
}

ERROR RESPONSE The request returns JSON structured as shown below for errors related to downloading the Consolidated Statement of Owner Accounts.

{
  "status": false,
  "message": "Unsupported format requested. Please use PDF, CSV, TSV, or XLSX."
}
{
  "status":false,"errors":"Invalid column(s): Amounts."
}

This endpoint will download Consolidated Statements of Owner Accounts.

UAT HTTP Request

PUT https://nxt.api.q2pay.co.in/api/accounts/owner/consolidated_statement_download.:format

PRODUCTION HTTP Request

PUT https://nxt.api.q2pay.in/api/accounts/owner/consolidated_statement_download.:format

Query Parameters

Parameter Default Description Required Sample
start_date ,end_date N.A. start date and end date of owner account Yes "15 Mar 2023","30 Apr 2023" or "15/3/2023", "15/5/2023"
credit_debit N.A. credit or debit of owner account Yes "credit","debit"
start_amount,end_amount N.A. start amount and end amount of owner account Yes 200,1000
owner_account_id N.A Owner account id of owner account Yes ["xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx","xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx"]
entity_id N.A If Admin is present then entity id is required of owner account Yes (Admin) ABC12
filter_columns N.A filter columns to download itemised statement No ["Date and Time","Value Date","Bank Reference No.","Narration","Type","Amount","Debit Amount","Credit Amount","Bank Name","Account Number","IFSC Code","Vendor Code","Account Name","Sender A/c Number","Closing Balance","Description","Statement Source"]

File Format

Format Default Description Required Sample URL
pdf N.A. pdf format to download statement of owner account Yes https://<environmenturl>/api/accounts/owner/consolidated_statement_download.pdf
csv N.A. csv format to download statement of owner account Yes https://<environmenturl>/api/accounts/owner/consolidated_statement_download.csv
tsv N.A. tsv format to download statement of owner account Yes https://<environmenturl>/api/accounts/owner/consolidated_statement_download.tsv
xlsx N.A. xlsx format to download statement of owner account Yes https://<environmenturl>/api/accounts/owner/consolidated_statement_download.xlsx

Service Details

Service ID Description
Admin Admin
VAccountBalance View Balance of Owner Account

Consolidated Itemised Statement Download of Owner Account

curl -X PUT "https://<environmenturl>/api/accounts/owner/consolidated_itemised_statement_download.:format"
  -H "X-Api-Key: <your secure token>"
  -H "Content-Type: application/json"
  -d "{ 
       "from_date": "1678818600",
       "to_date": "1678818600",
       "min_amount": 10,
       "max_amount": 100,
       "owner_account_id":["xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx","xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx"],
       "filter_columns": ["bank_name","party_name"]
      }"
require 'net/http'
require 'uri'
require 'json'

uri = URI.parse("https://<environmenturl>/api/accounts/owner/consolidated_itemised_statement_download.:format")
header = {'X-Api-Key' => '<your secure token>', 'Content-Type' => 'application/json'}
body = {
       "from_date": "1678818600",
       "to_date": "1678818600",
       "min_amount": 10,
       "max_amount": 100,
       "owner_account_id":["xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx","xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx"],
       "filter_columns": ["bank_name","party_name"]
}
http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = true
request = Net::HTTP::Put.new(uri.request_uri, header)
request.body = body.to_json
response = http.request(request)
const data = {
       "from_date": "1678818600",
       "to_date": "1678818600",
       "min_amount": 10,
       "max_amount": 100,
       "owner_account_id":["xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx","xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx"],
       "filter_columns": ["bank_name","party_name"]
};

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

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

{
    "from_date": "1678818600",
    "to_date": "1678818600",
    "min_amount": 10,
    "max_amount": 100,
    "owner_account_id":["xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx","xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx"],
    "filter_columns": ["bank_name","party_name"]
}

SUCCESS RESPONSE The request returns JSON structured as shown below on successfully downloading the Consolidated Itemised Statement of Owner Accounts.

{
   "status": 200 
}

ERROR RESPONSE The request returns JSON structured as shown below for errors related to downloading the Consolidated Itemised Statement of Owner Accounts.

{
  "status": false,
  "errors": {
    "base": [
      "'Owner Account not present'"
    ]
  }
}

ERROR RESPONSE The request returns JSON structured as shown below for errors related to downloading the Consolidated Itemised Statement of Owner Accounts.

{
  "status": false,
  "message": "Unsupported format requested. Please use PDF, CSV, TSV, or XLSX."
}

This endpoint downloads Consolidated Itemised Statements of Owner Accounts. It will return only credit entries.

UAT HTTP Request

PUT https://nxt.api.q2pay.co.in/api/accounts/owner/consolidated_itemised_statement_download.:format

PRODUCTION HTTP Request

PUT https://nxt.api.q2pay.in/api/accounts/owner/consolidated_itemised_statement_download.:format

Query Parameters

Parameter Default Description Required Sample
from_date ,to_date N.A. from date and to date of owner account No "1678818600", "1678818600"
start_amount,end_amount N.A. start amount and end amount of owner account No 200,1000
owner_account_id N.A Owner account id of owner account Yes ["xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx","xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx"]
entity_id N.A If Admin wants to filter entity of owner account No ABC12
filter_columns N.A filter columns to download itemised statement No ["owner_bank_account_number","ifsc_code","bank_name","name","party_name","party_ifsc","party_account_number","transaction_date","value_date","narration","amount","bank_reference","credit_debit"]

File Format

Format Default Description Required Sample URL
pdf N.A. pdf format to download itemised statement of owner account Yes https://<environmenturl>/api/accounts/owner/consolidated_itemised_statement_download.pdf
csv N.A. csv format to download itemised statement of owner account Yes https://<environmenturl>/api/accounts/owner/consolidated_itemised_statement_download.csv
tsv N.A. tsv format to download itemised statement of owner account Yes https://<environmenturl>/api/accounts/owner/consolidated_itemised_statement_download.tsv
xlsx N.A. xlsx format to download itemised statement of owner account Yes https://<environmenturl>/api/accounts/owner/consolidated_itemised_statement_download.xlsx

Service Details

Service ID Description
Admin Admin
VItemisedStatement View consolidated itemised statement of Owner Account

Display Balance Report Of Owner Account

curl -X PUT "https://<environmenturl>/api/accounts/owner/:id/display_balance_report"
  -H "X-Api-Key: <your secure token>"
  -H "Content-Type: application/json"
  -d "{ 
       "start_date": "15 Mar 2023",
       "end_date": "30 Apr 2023",
      }"
require 'net/http'
require 'uri'
require 'json'

uri = URI.parse("https://<environmenturl>/api/accounts/owner/:id/display_balance_report") header = {'X-Api-Key' => '<your secure token>', 'Content-Type' => 'application/json'} body = { "start_date": "15 Mar 2023", "end_date": "30 Apr 2023", } http = Net::HTTP.new(uri.host, uri.port) http.use_ssl = true request = Net::HTTP::Put.new(uri.request_uri, header) request.body = body.to_json response = http.request(request)

const data = {
      "start_date": "15 Mar 2023",
      "end_date": "30 Apr 2023",
};

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

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

{
    "start_date": "15 Mar 2023",
    "end_date": "30 Apr 2023",
}

SUCCESS RESPONSE The request returns JSON structured as shown below upon successful display of the balance report for an Owner Account.

{
  "status":true,
  "total_count":5,
  "owner_account_details":{
    "owner_bank_account_number":"8482940312",
    "ifsc_code":"HDFC0000100",
    "bank_name":"HDFC Bank",
    "branch":"ABHYUDAYA NAGAR",
    "name":"Q3PAY TECHNOLOGIES P",
    "account_type":"Current Account",
    "from_date":"2024-12-16",
    "to_date":"2024-12-21",
    "account_balances_report": [
      {
        "date":"2024-12-16",
        "lowest_balance":13302.23,
        "highest_balance":19552.23,
        "closing_balance":19552.23
      },
      {
        "date":"2024-12-17",
        "lowest_balance":14300.23,
        "highest_balance":20352.23,
        "closing_balance":15802.23
      },
      {
        "date":"2024-12-18",
        "lowest_balance":15352.23,
        "highest_balance":17300.23,
        "closing_balance":17300.23
      },
      {
        "date":"2024-12-19",
        "lowest_balance":9152.23,
        "highest_balance":19800.23,
        "closing_balance":19800.23
      },
      {
        "date":"2024-12-20",
        "lowest_balance":4800.23,
        "highest_balance":14152.23,
        "closing_balance":4800.23
      }
    ]
  }
}

ERROR RESPONSE The request will return JSON structured as shown below for errors related to the display of the balance report for an Owner Account.

{
    "status": false,
    "errors": { 
        "base": "Unable to fetch account balance report"
    } 
}

This endpoint will display the balance report of an Owner Account.

UAT HTTP Request

PUT https://nxt.api.q2pay.co.in/api/accounts/owner/:id/display_balance_report

PRODUCTION HTTP Request

PUT https://nxt.api.q2pay.in/api/accounts/owner/:id/display_balance_report

Query Parameters

Parameter Default Description Required Sample
start_date, end_date N.A. If start date and end date param not passed then it will fetch last 7 days of lookup data of owner account No "15 Mar 2023", "30 Apr 2023"

Service Details

Service ID Description
Admin Admin
VAccountBalance View Balance of Owner Account

Historic Balance Report Income Of Owner Account

curl -X PUT "https://<environmenturl>/api/accounts/owner/:id/historic_balance_report_income"
  -H "X-Api-Key: <your secure token>"
  -H "Content-Type: application/json"
  -d "{ 
       "start_date": "15 Jan 2023",
       "end_date": "30 Jun 2023",
       "investment_percent": 35.5,
       "interest_rate": 6.5
      }"
require 'net/http'
require 'uri'
require 'json'

uri = URI.parse("https://<environmenturl>/api/accounts/owner/:id/historic_balance_report_income") header = {'X-Api-Key' => '<your secure token>', 'Content-Type' => 'application/json'} body = { "start_date": "15 Jan 2023", "end_date": "30 Jun 2023", "investment_percent": 35.5, "interest_rate": 6.5 } http = Net::HTTP.new(uri.host, uri.port) http.use_ssl = true request = Net::HTTP::Put.new(uri.request_uri, header) request.body = body.to_json response = http.request(request)

const data = {
      "start_date": "15 Jan 2023",
      "end_date": "30 Jun 2023",
      "investment_percent": 35.5,
      "interest_rate": 6.5
};

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

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

{
    "start_date": "15 Jan 2023",
    "end_date": "30 Jun 2023",
    "investment_percent": 35.5,
    "interest_rate": 6.5
}

SUCCESS RESPONSE The request returns JSON structured as shown below upon successful retrieval of the historic income balance report for an Owner Account.

{
    "status":true,
    "total_count":5,
    "investment_percent":100,
    "interest_rate":6.5,
    "owner_account_details":{
        "owner_bank_account_number":"8482940456",
        "ifsc_code":"ICIC0000295",
        "bank_name":"ICICI Bank",
        "branch":"PUNE - PASHAN",
        "name":"Q2PAY TECHNOLOGIES P",
        "account_type":"Current Account",
        "from_date":"2023-01-02",
        "to_date":"2023-07-02",
        "account_balances_report":[
            {
                "date":"2023-03-15", "lowest_balance":50003.0, "highest_balance":50003.0, "closing_balance":50003.0, "daily_interest":8.96604554794524
            },
            {
                "date":"2023-03-30", "lowest_balance":50003.0, "highest_balance":50003.0, "closing_balance":50003.0, "daily_interest":8.96604554794524
            },
            {
                "date":"2023-04-15", "lowest_balance":50003.0, "highest_balance":50003.0, "closing_balance":50003.0, "daily_interest":8.96604554794524
            },
            {
                "date":"2023-04-30", "lowest_balance":50003.0, "highest_balance":50003.0, "closing_balance":50003.0, "daily_interest":8.96604554794524
            },
            {
                "date":"2023-05-15", "lowest_balance":400.0, "highest_balance":1000.23, "closing_balance":1000.23, "daily_interest":0.1896604554794524
            }
        ]
    }
}

ERROR RESPONSE The request returns JSON structured as shown below for errors related to the historic income balance report of an Owner Account.

{
  "status": false, 
  "errors": {
    "base": [
      "Investment percent must be a valid number."
    ],
    "base": [
      "Investment percent must be between 0 and 100."
    ],
    "base": [
      "Difference between the start_date and end_date should not be greater than 6 months."
    ],
    "base": [
      "Balance report data is unavailable."
    ],
    "base": [
      "Interest rate must be a valid number."
    ],
    "base": [
      "Interest rate must be a positive number."
    ]
  }
}

This endpoint will retrieve the historic income balance report of an Owner Account.

UAT HTTP Request

PUT https://nxt.api.q2pay.co.in/api/accounts/owner/:id/historic_balance_report_income

PRODUCTION HTTP Request

PUT https://nxt.api.q2pay.in/api/accounts/owner/:id/historic_balance_report_income

Query Parameters

Parameter Default Description Required Sample
start_date, end_date N.A. If start date and end date param not passed then it will fetch last 7 days of lookup data of owner account optional "15 Jan 2023", "30 Jun 2023" or "2023-01-15","2023-06-16"
investment_percent N.A. Investment percent must be between 0 to 100 of owner account optional 35
interest_rate N.A Interest rate by default 6.5 of owner account optional 6.5

Service Details

Service ID Description
Admin Admin
VAccountBalance View Balance of Owner Account

Add Favourite to Owner Account

curl -X PUT "https://<environmenturl>/api/accounts/owner/:id/add_favourite"
  -H "X-Api-Key: <your secure token>"
  -H "Content-Type: application/json"

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

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


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

SUCCESS RESPONSE The request returns JSON structured as shown below on successfully adding a favourite Owner Account.

{
  "status":true,
  "total_count":1,
  "total_balance":"0.0",
  "owner_accounts":[
    {
      "id":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
      "account_type":"Current Account",
      "entity_id":"ABC12",
      "name":"Q59PAY TECHNOLOGIES P",
      "email_id":"abc@q2pay.in",
      "bank_acc_no":"8482940369",
      "bank_account_holder_full_name":"Q59PAY TECHNOLOGIES P",
      "bank_account_holder_legal_name":"Q59PAY TECHNOLOGIES P",
      "ifsc_code":"HDFC0000111",
      "bank_name":"HDFC Bank",
      "approval_status":"approved",
      "active_status":"Y",
      "tags":[],
      "approved_by":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
      "approved_by_name":"Ashish Wadekar",
      "approved_on":"xxxxxxxx",
      "created_by":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
      "created_by_name":"Ashish Wadekar",
      "created_on":"xxxxxxxx",
      "pan_no":"YASED47232H",
      "gstin_detail":"18AAACQ0519CTYu",
      "connected_banking":"N",
      "favourite":"Y"
    }
  ],
  "title":{
    "records":1, 
    "current_page":1, 
    "total_pages":1, 
    "page_item_count":1
  }
}

ERROR RESPONSE The request returns JSON structured as shown below for errors related to adding a favourite Owner Account.

{
  "status":false,
  "errors":{
    "base":[
      "Already marked as favourite"
    ]
  }
}

This endpoint will add a favourite Owner Account.

UAT HTTP Request

PUT https://nxt.api.q2pay.co.in/api/accounts/owner/:id/add_favourite

PRODUCTION HTTP Request

PUT https://nxt.api.q2pay.in/api/accounts/owner/:id/add_favourite

Service Details

Service ID Description
AFavourite Add Favourite Owner Account

Remove Favourite From Owner Account

curl -X PUT "https://<environmenturl>/api/accounts/owner/:id/remove_favourite"
  -H "X-Api-Key: <your secure token>"
  -H "Content-Type: application/json"

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

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


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

SUCCESS RESPONSE The request returns JSON structured as shown below upon successful removal of a favourite Owner Account.

{
  "status":true,
  "total_count":1,
  "total_balance":"0.0",
  "owner_accounts":[
    {
      "id":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
      "account_type":"Current Account",
      "entity_id":"ABC12",
      "name":"Q59PAY TECHNOLOGIES P",
      "email_id":"abc@q2pay.in",
      "bank_acc_no":"8482940369",
      "bank_account_holder_full_name":"Q59PAY TECHNOLOGIES P",
      "bank_account_holder_legal_name":"Q59PAY TECHNOLOGIES P",
      "ifsc_code":"HDFC0000111",
      "bank_name":"HDFC Bank",
      "approval_status":"approved",
      "active_status":"Y",
      "tags":[],
      "approved_by":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
      "approved_by_name":"Ashish Wadekar",
      "approved_on":"xxxxxxxx",
      "created_by":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
      "created_by_name":"Ashish Wadekar",
      "created_on":"xxxxxxxx",
      "pan_no":"YASED47232H",
      "gstin_detail":"18AAACQ0519CTYu",
      "connected_banking":"N",
      "favourite":"N"
    }
  ],
  "title":{
    "records":1, 
    "current_page":1, 
    "total_pages":1, 
    "page_item_count":1
  }
}

ERROR RESPONSE The request returns JSON structured as shown below for errors related to the removal of a favourite Owner Account.

{
  "status":false,
  "errors":{
    "base":[
      "Not marked as favourite"
    ]
  }
}

This endpoint will remove a favourite from an Owner Account.

UAT HTTP Request

PUT https://nxt.api.q2pay.co.in/api/accounts/owner/:id/remove_favourite

PRODUCTION HTTP Request

PUT https://nxt.api.q2pay.in/api/accounts/owner/:id/remove_favourite

Service Details

Service ID Description
AFavourite Remove Favourite Owner Account

Add Labels of Owner Account

curl -X PUT "https://<environmenturl>/api/accounts/owner/add_label"
  -H "X-Api-Key: <your secure token>"
  -H "Content-Type: application/json"
  -d "{
  "record_ids": [
    "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx","xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx"
  ],
  "labels": [
    "audit expense",
    "Infrastructure"
  ]
}"
require 'net/http'
require 'uri'
require 'json'

uri = URI.parse("https://<environmenturl>/api/accounts/owner/add_label") header = {'X-Api-Key' => '<your secure token>', 'Content-Type' => 'application/json'} body = {
"record_ids": [ "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx","xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx" ], "labels": [ "audit expense", "Infrastructure" ] } http = Net::HTTP.new(uri.host, uri.port) http.use_ssl = true request = Net::HTTP::Put.new(uri.request_uri, header) request.body = body.to_json response = http.request(request)

const data = {
  "record_ids": [
     "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx","xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx"
  ],
  "labels": [
    "audit expense",
     "Infrastructure"
  ]
};

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

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

{
  "record_ids": [
     "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx","xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx"
  ],
  "labels": [
    "audit expense",
    "Infrastructure"
  ]
}

SUCCESS RESPONSE The request returns JSON structured as shown below on successfully adding labels to Owner Accounts.

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

ERROR RESPONSE The request returns JSON structured as shown below for errors related to adding labels to Owner Accounts.

{
  "status": false,
  "errors": {
    "base": [
      "Missing required parameters: record_ids and/or labels."
    ],
    "base":[
      "The owner account IDs are not present."
    ]
  }
}

This endpoint will add labels to Owner Accounts.

UAT HTTP Request

PUT https://nxt.api.q2pay.co.in/api/accounts/owner/add_label

PRODUCTION HTTP Request

PUT https://nxt.api.q2pay.in/api/accounts/owner/add_label

Query Parameters

Parameter Default Description Required Sample
record_ids N.A. record ids of owner account Yes ["xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx","xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx" ]
labels N.A. labels of owner account Yes ["audit expense","Infrastructure"]

Service Details

Service ID Description
ALabel Add labels for Owner Account

Remove Labels of Owner Account

curl -X PUT "https://<environmenturl>/api/accounts/owner/remove_label"
  -H "X-Api-Key: <your secure token>"
  -H "Content-Type: application/json"
  -d "{
  "record_ids": [
    "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx","xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx"
  ],
  "labels": [
    "audit expense",
    "Infrastructure"
  ]
}"
require 'net/http'
require 'uri'
require 'json'

uri = URI.parse("https://<environmenturl>/api/accounts/owner/remove_label") header = {'X-Api-Key' => '<your secure token>', 'Content-Type' => 'application/json'} body = {
"record_ids": [ "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx","xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx" ], "labels": [ "audit expense", "Infrastructure" ] } http = Net::HTTP.new(uri.host, uri.port) http.use_ssl = true request = Net::HTTP::Put.new(uri.request_uri, header) request.body = body.to_json response = http.request(request)

const data = {
  "record_ids": [
     "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx","xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx"
  ],
  "labels": [
    "audit expense",
     "Infrastructure"
  ]
};

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

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

{
  "record_ids": [
     "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx","xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx"
  ],
  "labels": [
    "audit expense",
    "Infrastructure"
  ]
}

SUCCESS RESPONSE The request returns JSON structured as shown below upon successful removal of labels from an Owner Account.

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

ERROR RESPONSE The request returns JSON structured as shown below for errors related to the removal of labels from an Owner Account.

{
  "status": false,
  "errors": {
    "base": [
      "Missing required parameters: record_ids and/or labels."
    ],
    "base":[
      "The owner account IDs are not present."
    ],
    "base":[
      "Labels are not present in some owner accounts."
    ]
  }
}

This endpoint will remove labels from Owner Accounts.

UAT HTTP Request

PUT https://nxt.api.q2pay.co.in/api/accounts/owner/remove_label

PRODUCTION HTTP Request

PUT https://nxt.api.q2pay.in/api/accounts/owner/remove_label

Query Parameters

Parameter Default Description Required Sample
record_ids N.A. records ids of owner account Yes ["xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx","xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx" ]
labels N.A. labels of owner account Yes ["audit expense","Infrastructure"]

Service Details

Service ID Description
RLabel Remove labels for Owner Account

Adds Description in Itemised Statement of Owner Account

curl -X PUT "https://<environmenturl>/api/accounts/owner/itemised_statement_entry/add_description
  -H "X-Api-Key: <your secure token>"
  -H "Content-Type: application/json"
  -d "{
  "id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
  "statement_entry_id": "xxxxxxxx",
  "description": "audit expense"
}"

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

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

const data = {
  "id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
  "statement_entry_id": "xxxxxxxx",
  "description": "audit expense"
};

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

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

{
  "id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
  "statement_entry_id": "xxxxxxxx",
  "description": "audit expense"
}

SUCCESS RESPONSE The request returns JSON structured as shown below on successfully adding a description in the Consolidated Itemised Statement Owner Account.

{
    "status": true,
    "total_count": 1,
    "owner_account_details": {
        "owner_bank_account_number": "1234567899",
        "ifsc_code": "IBKL0001959",
        "bank_name": "IDBI",
        "branch": "MAHARAJGANJ",
        "name": "Q2pay Technologies",
        "account_type": "OwnerAccount",
        "ecollection_callbacks": [
            {
                "ecollection_callback_id": "xxxx-xx-xxx-xxxx-xxxx",
                "owner_account_id": "xxxxx-xxx-xx-xx-xxxx",
                "party_name": "Test User100000",
                "party_ifsc": "IBKL0001959",
                "party_account_number": "1234567899",
                "bank_reference": "0002671281002",
                "transaction_date": 1760553000,
                "value_date": 1739298600,
                "narration": "Payment for services 3",
                "amount": "10200.0",
                "credit_debit": "credit",
                "description": "audit expense"
            }
        ]
    },
    "title": {
        "records": 1,
        "current_page": 1,
        "total_pages": 1,
        "page_item_count": 50
    }
}

ERROR RESPONSE The request returns JSON structured as shown below for errors related to adding a description in the Consolidated Itemised Statement of Owner Accounts.

{
    "status": false,
    "errors": {
        "base": [
            "Owner Account not present"
        ]
    },
    "errors": [
        "Statement entry not found",
        "Description can't be blank"
    ]
}

This endpoint will add a description to the Itemised Statement of an Owner Account.

UAT HTTP Request

PUT https://nxt.api.q2pay.co.in/api/accounts/owner/itemised_statement_entry/add_description

PRODUCTION HTTP Request

PUT https://nxt.api.q2pay.in/api/accounts/owner/itemised_statement_entry/add_description

Query Parameters

Parameter Default Description Required Sample
id N.A. owner account id Yes "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx"
statement_entry_id N.A. statement entry id Yes "xxxxxxx"
description N.A. add description in statement Yes "audit expense"

Service Details

Service ID Description
Admin Admin
ADescription Add description in statement

Adds description in statement of Owner Account

curl -X PUT "https://<environmenturl>/api/accounts/owner/statement_entry/add_description
  -H "X-Api-Key: <your secure token>"
  -H "Content-Type: application/json"
  -d "{
  "id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
  "statement_entry_id": "xxxxxxxx",
  "description": "audit expense"
}"

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

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

const data = {
  "id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
  "statement_entry_id": "xxxxxxxx",
  "description": "audit expense"
};

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

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

{
  "id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
  "statement_entry_id": "xxxxxxxx",
  "description": "audit expense"
}

SUCCESS RESPONSE The request returns JSON structured as shown below on successfully adding a description in the Consolidated Statement of an Owner Account.

{
    "status": true,
    "total_count": 1,
    "owner_account_details": {
        "owner_bank_account_number": "1234567893",
        "ifsc_code": "ICIC0001953",
        "bank_name": "ICICI Bank",
        "branch": "VAZHUTHACAUD",
        "name": "Q2pay Technologies",
        "account_type": "OwnerAccount",
        "statement": [
            {
                "account_statement_entry_id": 1,
                "transaction_date": "2025-03-04T00:00:00.000Z",
                "value_date": "2025-03-04",
                "narration": "cash paid from HDFC Bank user",
                "amount": "11892.87",
                "credit_debit": "Debit",
                "closing_balance": "10892.87",
                "description": "audit expense"
            }
        ]
    },
    "title": {
        "records": 1,
        "current_page": 1,
        "total_pages": 1,
        "page_item_count": 50
    }
}

ERROR RESPONSE The request returns JSON structured as shown below for errors related to adding a description in the Consolidated Statement of Owner Accounts.

{
    "status": false,
    "errors": {
        "base": [
            "Owner Account not present"
        ]
    },
    "errors": [
        "Statement entry not found",
        "Description can't be blank"
    ]
}

This endpoint will add a description to the Statement of an Owner Account.

UAT HTTP Request

PUT https://nxt.api.q2pay.co.in/api/accounts/owner/statement_entry/add_description

PRODUCTION HTTP Request

PUT https://nxt.api.q2pay.in/api/accounts/owner/statement_entry/add_description

Query Parameters

Parameter Default Description Required Sample
id N.A. owner account id Yes "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx"
statement_entry_id N.A. statement entry id Yes "xxxxx"
description N.A. add description in statement Yes "audit expense"

Service Details

Service ID Description
Admin Admin
ADescription Add description in statement

Beneficiary Account

Beneficiary Account API helps you create, maintain & manage of life cycle of Beneficiary accounts.

Get All Beneficiary Accounts

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

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

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

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

SUCCESS RESPONSE The request returns JSON structured as shown below.

{
    "status":true, 
    "total_count":2,
    "summary": {
        "blocked_accounts_count": 1,
        "archived_accounts_count": 10,
        "pending_accounts_count": 13,
        "rejected_accounts_count": 1,
        "approved_accounts_count": 6,
        "available_labels":["audit expense", "employee expense", "health expense"]
    }, 
    "beneficiary_accounts":[
        {
            "id":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
            "category": "Vendor",
            "entity_id":"ABC12", 
            "name":"Q2pay technology", 
            "contact_no":"9876545676", 
            "email_id":"hgf@gmail.com", 
            "bank_acc_no":"12345678",
            "bank_account_holder_full_name": "SUMAN INDIA",
            "bank_account_holder_legal_name": "Q2PAY TECHNOLOGIES P",
            "ifsc_code":"HDFC0000289", 
            "bank_name":"Abhyudaya Co-operative Bank", 
            "pan_no":"WASED4723H", 
            "gstin_detail":"38AAACQ0519P1CF",
            "approval_status":"approved", 
            "active_status":"Y",
            "labels": ["building expense"],
            "recipient_email": ["q2pay@gmail.co.in"],
            "vendor_payment": "Y",
            "archived":"N", 
            "maintenance":"N",
            "approved_by":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx", 
            "approved_by_name":"Ashish Wadekar", 
            "approved_on":"xxxxxxxx",
            "internal_account":"N",
            "reimbursement_account": "Y", 
            "created_by":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
            "created_by_name":"Ashish Wadekar", 
            "created_on":"xxxxxxxx", 
        },
        {
            "id":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
            "category": "Vendor",
            "entity_id":"ABC12", 
            "name":"Q2pay technology", 
            "contact_no":"9876545676", 
            "email_id":"hgf@gmail.com", 
            "bank_acc_no":"4567893467",
            "bank_account_holder_full_name": "SUMAN INDIA",
            "bank_account_holder_legal_name": "Q2PAY TECHNOLOGIES P",
            "ifsc_code":"HDFC0000212", 
            "bank_name":"Abhyudaya Co-operative Bank", 
            "pan_no":"WASED4723H", 
            "approval_status":"pending", 
            "active_status":"N",
            "vendor_payment":"N",
            "archived":"N", 
            "maintenance":"N",
            "internal_account":"N",
            "reimbursement_account": "N",
            "created_by":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
            "created_by_name":"Ashish Wadekar",
            "created_on":"xxxxxxxx" 
        }
    ], 
    "title":{
        "records":2,
        "current_page":1, 
        "total_pages":1, 
        "page_item_count":1
    }
}

This endpoint will retrieve all Beneficiary Accounts.

UAT HTTP Request

GET https://nxt.api.q2pay.co.in/api/accounts/beneficiary

PRODUCTION HTTP Request

GET https://nxt.api.q2pay.in/api/accounts/beneficiary

Query Parameters

Parameter Default Description Required Sample
approval_status N.A. approval status for beneficiary account optional [ pending, approved, archived ]
category N.A. category for beneficiary account optional Vendor
start_date,end_date N.A. start date and end date for beneficiary account optional xxxxxxxx,xxxxxxxx
bank_account_no N.A. bank account number for beneficiary account optional 4567893467
ifsc N.A. ifsc for beneficiary account optional HDFC0000212
pan N.A. pan for beneficiary account optional WASED4723H
search_string N.A. search string for id/name/contact no/email of beneficiary account optional xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx,Q2pay technology,12356789,abc@gmail.com
entity_id N.A. entity id for beneficiary account optional ABC12
labels N.A. labels for beneficiary account optional ["audit expense"]
recipient_email N.A. recipient email for beneficiary account optional q2pay@gmail.co.in

Service Details

Service ID Description
Admin Admin
MimicEntity View All entities
BVAccount View All Beneficiary Accounts

Get specific Beneficiary Accounts

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

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

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

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

SUCCESS RESPONSE The request returns JSON structured as shown below.

{
    "status":true, 
    "total_count":1, 
    "beneficiary_accounts":[
        {
            "id":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
            "category": "Salary,Vendor",
            "entity_id":"ABC12", 
            "name":"Q2pay technology", 
            "contact_no":"9876545676", 
            "email_id":"hgf@gmail.com", 
            "bank_acc_no":"12345678",
            "bank_account_holder_full_name": "SUMAN INDIA",
            "bank_account_holder_legal_name": "Q2PAY TECHNOLOGIES P",
            "ifsc_code":"HDFC0000278", 
            "bank_name":"Abhyudaya Co-operative Bank", 
            "pan_no":"WASED4723H", 
            "pan_legal_name": "JITENDRA KIRAN KAKADE",
            "approval_status":"approved",
            "recipient_email": ["xpentra@gmail.co.in"],
            "active_status":"Y",
            "vendor_payment":"Y", 
            "archived":"N", 
            "maintenance":"N", 
            "approved_by":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx", 
            "approved_by_name":"Ashish Wadekar", 
            "approved_on":"xxxxxxxx",
            "internal_account":"N",
            "reimbursement_account": "Y",
            "created_by":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
            "created_by_name":"Ashish Wadekar", 
            "created_on":"xxxxxxxx", 
            "logs":[
                {
                    "brand": "Android",
                    "model": "Android SDK built for x86",
                    "action": "Archived",
                    "user_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
                    "platform": "android",
                    "last_name": "Wadekar",
                    "last_used": "2023-11-25T05:34:28.181Z",
                    "timestamp": "2023-11-25T05:34:28.216Z",
                    "first_name": "Ashish",
                    "ip_address": "127.0.0.1",
                    "is_primary": false,
                    "os_version": "6.0",
                    "is_verified": false,
                    "sdk_version": "23",
                    "manufacturer": "unknown",
                    "serial_number": "EMULATOR32X1X14X0",
                    "logged_in_flag": true,
                    "logged_in_time": "2023-11-25T05:14:02.874Z",
                    "user_full_name": "Ashish Wadekar",
                    "app_version_code": "54",
                    "app_version_name": "1.43"
                }
            ]
        }
    ], 
    "title":{
        "records":1,
        "current_page":1, 
        "total_pages":1, 
        "page_item_count":1
    }
}

This endpoint will retrieve a specific Beneficiary Account.

UAT HTTP Request

GET https://nxt.api.q2pay.co.in/api/accounts/beneficiary/:id

PRODUCTION HTTP Request

GET https://nxt.api.q2pay.in/api/accounts/beneficiary/:id

Service Details

Service ID Description
BVAccount View specific Beneficiary Accounts

Create Beneficiary Account

curl -X POST "https://<environmenturl>/api/accounts/beneficiary"
  -H "X-Api-Key: <your secure token>"
  -H "Content-Type: application/json"
  -d "{ 
    "beneficiary_accounts": {
    "bank_account_no": "12345678",
    "contact_no": "7486756685",
    "email": "abc@gmail.com",
    "ifsc": "HDFC1111237",
    "pan": "WASED4723H",
    "reimbursement_account": true,
    "reimbursement_user_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx", 
    "recipient_email": "q2pay@gmail.com"
    }
}"
require 'net/http'
require 'uri'
require 'json'

uri = URI.parse("https://<environmenturl>/api/accounts/beneficiary") header = {'X-Api-Key' => '<your secure token>', 'Content-Type' => 'application/json'} body = { "beneficiary_accounts": { "bank_account_no": "12345678", "contact_no": "7486756685", "email": "abc@gmail.com", "ifsc": "HDFC1111237", "pan": "WASED4723H", "reimbursement_account": true, "reimbursement_user_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx", "recipient_email": "q2pay@gmail.com" } } http = Net::HTTP.new(uri.host, uri.port) http.use_ssl = true request = Net::HTTP::Post.new(uri.request_uri, header) request.body = body.to_json response = http.request(request)

const data = {
  "beneficiary_accounts": {
    "bank_account_no": "12345678",
    "contact_no": "7486756685",
    "email": "abc@gmail.com",
    "ifsc": "HDFC1111237",
    "pan": "WASED4723H",
    "reimbursement_account": true,
    "reimbursement_user_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx", 
    "recipient_email": "q2pay@gmail.com"
    }
};

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

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

{
   "beneficiary_accounts": {
    "bank_account_no": "12345678",
    "contact_no": "7486756685",
    "email": "abc@gmail.com",
    "ifsc": "HDFC1111237",
    "pan": "WASED4723H",
    "reimbursement_account": true,
    "reimbursement_user_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx", 
    "recipient_email": "q2pay@gmail.com"
    }
}

SUCCESS RESPONSE The request returns JSON structured as shown below on successful creation of a Beneficiary Account.

{
    "status": true,
    "total_count": 1,
    "beneficiary_accounts": [
        {
            "id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
            "category": "Salary,Vendor",
            "entity_id": "ABC12",
            "name": "Q2PAY TECHNOLOGIES P",
            "contact_no": "7486756685",
            "email_id": "abc@gmail.com",
            "bank_acc_no": "9234567897",
            "bank_account_holder_full_name": "SUMAN INDIA",
            "bank_account_holder_legal_name": "Q2PAY TECHNOLOGIES P",
            "ifsc_code": "HDFC0000230",
            "bank_name": "HDFC Bank",
            "pan_no": "FTTPK9508Q",
            "pan_legal_name": "JITENDRA KIRAN KAKADE",
            "approval_status": "pending",
            "recipient_email": ["q2pay@gmail.com"],
            "active_status": "N",
            "labels": ["building expense"],
            "vendor_payment": "N",
            "archived": "N",
            "maintenance":"N",
            "internal_account":"N",
            "reimbursement_account": "Y",
            "created_by": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
            "created_by_name": "Akshay Rangnekar",
            "created_on": "xxxxxxxx",
            "logs": [
                {
                    "action": "Created",
                    "user_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
                    "user_full_name": "Akshay Rangnekar",
                    "timestamp": "2023-11-27T04:06:01.340Z",
                    "last_used": "2023-11-27T04:06:01.282Z",
                    "logged_in_flag": true,
                    "logged_in_time": "2023-11-27T04:01:08.120Z",
                    "app_version_name": "1.43",
                    "app_version_code": "54",
                    "platform": "android",
                    "model": "Android SDK built for x86",
                    "manufacturer": "unknown",
                    "brand": "Android",
                    "serial_number": "EMULATOR32X1X14X0",
                    "os_version": "6.0",
                    "sdk_version": "23",
                    "ip_address": "127.0.0.1",
                    "is_primary": false,
                    "is_verified": false,
                    "first_name": "Akshay",
                    "last_name": "Rangnekar"
                }
            ]
        }
    ],
    "title":{
        "records": 1,
        "current_page": 1,
        "total_pages": 1,
        "page_item_count": 1
    }
}

ERROR RESPONSE The request returns JSON structured as shown below for errors related to a Beneficiary Account.

{
    "status": false,
    "errors":{
        "bank_account_number":
        [
            "Bank account number this bank account is already linked with an existing beneficiary"
        ],
        "permanent_account_number":
        [
            "Permanent account number is already linked with an existing beneficiary"
        ],
        "category":
        [
            "Category is not valid/active for the account type",
            "Category not found"
        ], 
        "base":
        [
            "Bank Account Number / IFSC cannot be blank"
        ],
        "base":
        [
            "Invalid format for PAN ID"
        ],
        "base":
        [
            "PAN ID cannot be blank"
        ],
        "contact_no":
        [
            "Contact no is not a number", "Contact no can't be blank", "Contact no must be a 10, 11 or 12 digit number"
        ],
        "email":
        [
            "Email can't be blank", "Email invalid", "Email is too short (minimum is 4 characters)"
        ],
        "bank_account_number":{
            "base":[
                "Full Name / Legal Name is mandatory for Virtual Accounts"
            ]
        }
        "recipient_email": [
            "Recipient email contains invalid email: q2paygmail.co",
            "Recipient email cannot be blank or just spaces if provided"
        ],
        "user": [
            "User must exist.",
            "User doesn't belong to your entity."
        ]
    }
}

This endpoint will create a Beneficiary Account.

UAT HTTP Request

POST https://nxt.api.q2pay.co.in/api/accounts/beneficiary

PRODUCTION HTTP Request

POST https://nxt.api.q2pay.in/api/accounts/beneficiary

Query Parameters

Parameter Default Description Required Sample
bank_account_no N.A. Bank account number for beneficiary account Yes 123456
contact_no N.A. contact no for beneficiary account Yes 9867454325
email N.A. email id for beneficiary account Yes abc@gmail.com
ifsc N.A. ifsc for beneficiary account Yes HDFC1234
pan N.A. pan for beneficiary account Yes CGHFG78J
gstin N.A. gstin for beneficiary account No 12AANCA2275G2ZO
name N.A. name for Virtual Account of beneficiary account Yes Q2PAY TECHNOLOGIES P
category N.A. category for beneficiary account No Vendor
address N.A. address for beneficiary account No Pune
labels N.A labels for beneficiary account No ["building expense"]
recipient_email N.A recipient email for beneficiary account No q2pay@gmail.com
reimbursement_account N.A reimbursement account for user No true
reimbursement_user_id N.A user_id for reimbursement account No xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx

Service Details

Service ID Description
BUAccount Create Beneficiary Account

Update Beneficiary Account

curl -X PUT "https://<environmenturl>/api/accounts/beneficiary/:id"
  -H "X-Api-Key: <your secure token>"
  -H "Content-Type: application/json"
  -d "{ 
    "beneficiary_accounts": {
    "bank_account_no": "12345678",
    "ifsc": "HDFC1111237",
    "name":"Q2pay technology"
                           }
      }"
require 'net/http'
require 'uri'
require 'json'

uri = URI.parse("https://<environmenturl>/api/accounts/beneficiary/:id") header = {'X-Api-Key' => '<your secure token>', 'Content-Type' => 'application/json'} body = { "beneficiary_accounts": { "bank_account_no": "12345678", "ifsc": "HDFC1111237", "name":"Q2pay technology" }

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

const data = {
  "beneficiary_accounts": {
    "bank_account_no": "12345678",
    "ifsc": "HDFC1111237",
    "name":"Q2pay technology"
                           }
};

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

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

{
  "beneficiary_accounts": {
    "bank_account_no": "12345678",
    "ifsc": "HDFC1111237",
    "name":"Q2pay technology"
                           }
}

SUCCESS RESPONSE The request returns JSON structured as shown below on successfully updating a Beneficiary Account.

{
    "status":true, 
    "total_count":1,
    "beneficiary_accounts":[
        {
            "id":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
            "category": "Salary,Vendor",
            "entity_id":"ABC12", 
            "name":"Q2pay technology", 
            "contact_no":"9578655641", 
            "email_id":"Q2@pay.com", 
            "bank_acc_no":"12345678",
            "bank_account_holder_full_name": "SUMAN INDIA",
            "bank_account_holder_legal_name": "Q2PAY TECHNOLOGIES P",
            "ifsc_code":"HDFC0000298", 
            "bank_name":"HDFC Bank", 
            "pan_no":"WASED4723H", 
            "pan_legal_name": "JITENDRA KIRAN KAKADE",
            "approval_status":"pending",
            "active_status":"N", 
            "vendor_payment":"N", 
            "archived":"N", 
            "maintenance":"N", 
            "internal_account":"N",
            "created_by":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx", 
            "created_by_name":"Ashish Wadekar", 
            "created_on":"xxxxxxxx", 
            "logs":[
                {
                    "action":"Updated", 
                    "user_id":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
                    "user_full_name":"Ashish Wadekar", 
                    "timestamp": "2023-11-27T04:06:38.602Z",
                    "last_used": "2023-11-27T04:06:38.533Z",
                    "logged_in_flag": true,
                    "logged_in_time": "2023-11-27T04:01:08.120Z",
                    "app_version_name": "1.43",
                    "app_version_code": "54",
                    "platform": "android",
                    "model": "Android SDK built for x86",
                    "manufacturer": "unknown",
                    "brand": "Android",
                    "serial_number": "EMULATOR32X1X14X0",
                    "os_version": "6.0",
                    "sdk_version": "23",
                    "ip_address": "127.0.0.1",
                    "is_primary": false,
                    "is_verified": false,
                    "first_name":"Ashish", 
                    "last_name":"Wadekar"
                }
            ]
        }
    ],
    "title":{
        "records":1, 
        "current_page":1, 
        "total_pages":1, 
        "page_item_count":1
    }
}

ERROR RESPONSE The request returns JSON structured as shown below for errors related to a Beneficiary Account.

{
    "status": false,
    "errors":{
        "bank_account_number":
        [
            "Bank account number this bank account is already linked with an existing beneficiary"
        ],
        "base":
        [
            "Bank Account Number / IFSC cannot be blank"
        ],
        "base": [
            "Beneficiary_account cannot be edited as account is archived/blocked"
        ],
        "bank_account_number":{
            "base":[
                "Full Name / Legal Name is mandatory for Virtual Accounts"
            ]
        }
    }
}

This endpoint will update a Beneficiary Account.

UAT HTTP Request

PUT https://nxt.api.q2pay.co.in/api/accounts/beneficiary/:id

PRODUCTION HTTP Request

PUT https://nxt.api.q2pay.in/api/accounts/beneficiary/:id

Query Parameters

Parameter Default Description Required Sample
bank_account_no N.A. Bank account number for beneficiary account Yes 123456
ifsc N.A. ifsc for beneficiary account Yes HDFC1234
name N.A. name for Virtual Account of beneficiary account Yes Q2pay technology

Service Details

Service ID Description
BUAccount Update Beneficiary Account

Approve Beneficiary Account

curl -X PUT "https://<environmenturl>/api/accounts/beneficiary/:id/approve"
  -H "X-Api-Key: <your secure token>"
  -H "Content-Type: application/json"

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

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


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

SUCCESS RESPONSE The request returns JSON structured as shown below on successfully approving a Beneficiary Account.

{
    "status":true, 
    "total_count":1, 
    "beneficiary_accounts":[
        {
            "id":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
            "category": "Salary,Vendor",
            "entity_id":"ABC12", 
            "name":"Q2pay technology", 
            "contact_no":"9876545676", 
            "email_id":"hgf@gmail.com", 
            "bank_acc_no":"12345678",
            "bank_account_holder_full_name": "SUMAN INDIA",
            "bank_account_holder_legal_name": "Q2PAY TECHNOLOGIES P",
            "ifsc_code":"HDFC000296", 
            "bank_name":"Abhyudaya Co-operative Bank", 
            "pan_no":"CQSED4723H", 
            "pan_legal_name": "JITENDRA KIRAN KAKADE",
            "approval_status":"approved", 
            "active_status":"Y",
            "vendor_payment":"Y",
            "archived":"N", 
            "maintenance":"N",
            "approved_by":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx", 
            "approved_by_name":"Ashish Wadekar", 
            "approved_on":"xxxxxxxx",
            "internal_account":"N",
            "created_by":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
            "created_by_name":"Ashish Wadekar",
            "created_on":"xxxxxxxx", 
            "logs":[
                {
                    "action": "Approved",
                    "user_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
                    "user_full_name": "Akshay Rangnekar",
                    "timestamp": "2023-11-27T04:06:56.304Z",
                    "last_used": "2023-11-27T04:06:56.254Z",
                    "logged_in_flag": true,
                    "logged_in_time": "2023-11-27T04:01:08.120Z",
                    "app_version_name": "1.43",
                    "app_version_code": "54",
                    "platform": "android",
                    "model": "Android SDK built for x86",
                    "manufacturer": "unknown",
                    "brand": "Android",
                    "serial_number": "EMULATOR32X1X14X0",
                    "os_version": "6.0",
                    "sdk_version": "23",
                    "ip_address": "127.0.0.1",
                    "is_primary": false,
                    "is_verified": false,
                    "first_name":"Ashish",
                    "last_name":"Wadekar"
                }
            ]
        }
    ], 
    "title":{
        "records":1,
        "current_page":1, 
        "total_pages":1, 
        "page_item_count":1
    }
}

ERROR RESPONSE The request returns JSON structured as shown below for errors related to a Beneficiary Account.

{
    "status":false, 
    "errors":
    {
        "beneficiary_account":
        [
            "Beneficiary account can't be approved"
        ],
        [
            "Beneficiary account already approved"
        ],
        [
            "Beneficiary account can not be approved as there are queued transactions associated with this account",
        ],
        [
            "Beneficiary account can not be approved as there are queued distribution transactions associated with this account"
        ]
    }
}

This endpoint will approve a Beneficiary Account.

UAT HTTP Request

PUT https://nxt.api.q2pay.co.in/api/accounts/beneficiary/:id/approve

PRODUCTION HTTP Request

PUT https://nxt.api.q2pay.in/api/accounts/beneficiary/:id/approve

Service Details

Service ID Description
BAAccount Approve Beneficiary Account

Archive Beneficiary Account

curl -X PUT "https://<environmenturl>/api/accounts/beneficiary/:id/archive"
  -H "X-Api-Key: <your secure token>"
  -H "Content-Type: application/json"

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

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

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

SUCCESS RESPONSE The request returns JSON structured as shown below on successfully archiving a Beneficiary Account.

{
    "status":true, 
    "total_count":1, 
    "beneficiary_accounts":[
        {
            "id":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
            "category": "Salary,Vendor",
            "entity_id":"ABC12", 
            "name":"Q2pay technology", 
            "contact_no":"9876545676", 
            "email_id":"hgf@gmail.com", 
            "bank_acc_no":"12345678",
            "bank_account_holder_full_name": "SUMAN INDIA",
            "bank_account_holder_legal_name": "Q2PAY TECHNOLOGIES P",
            "ifsc_code":"HDFC01233237", 
            "bank_name":"Abhyudaya Co-operative Bank", 
            "pan_no":"WASED4723H", 
            "pan_legal_name": "JITENDRA KIRAN KAKADE",
            "approval_status":"archived", 
            "active_status":"N", 
            "vendor_payment": "N",
            "archived":"Y", 
            "maintenance":"N",
            "archived_by":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx", 
            "archived_by_name":"Ashish Wadekar", 
            "archived_on":"xxxxxxxx",
            "internal_account":"N",
            "created_by":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
            "created_by_name":"Ashish Wadekar",
            "created_on":"xxxxxxxx", 
            "logs":[
                {
                    "action": "Archived",
                    "user_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
                    "user_full_name": "Akshay Rangnekar",
                    "timestamp": "2023-11-27T04:07:07.978Z",
                    "last_used": "2023-11-27T04:07:07.935Z",
                    "logged_in_flag": true,
                    "logged_in_time": "2023-11-27T04:01:08.120Z",
                    "app_version_name": "1.43",
                    "app_version_code": "54",
                    "platform": "android",
                    "model": "Android SDK built for x86",
                    "manufacturer": "unknown",
                    "brand": "Android",
                    "serial_number": "EMULATOR32X1X14X0",
                    "os_version": "6.0",
                    "sdk_version": "23",
                    "ip_address": "127.0.0.1",
                    "is_primary": false,
                    "is_verified": false,
                    "first_name":"Ashish",
                    "last_name":"Wadekar"
                }
            ]
        }
    ], 
    "title":{
        "records":1,
        "current_page":1, 
        "total_pages":1, 
        "page_item_count":1
    }
}

ERROR RESPONSE The request returns JSON structured as shown below for errors related to a Beneficiary Account.

{
    "status":false, 
    "errors":
    {
        "beneficiary_account":
        [
            "Beneficiary account can't be archived"
        ],
        [
            "Beneficiary account already archived"
        ],
        [
            "Beneficiary account can not be archived as there are queued transactions associated with this account",
        ],
        [
            "Beneficiary account can not be archived as there are queued distribution transactions associated with this account"
        ]
    }
}

This endpoint will archive a Beneficiary Account.

UAT HTTP Request

PUT https://nxt.api.q2pay.co.in/api/accounts/beneficiary/:id/archive

PRODUCTION HTTP Request

PUT https://nxt.api.q2pay.in/api/accounts/beneficiary/:id/archive

Service Details

Service ID Description
BAAccountArchive Archive Beneficiary Account

Unarchive Beneficiary Account

curl -X PUT "https://<environmenturl>/api/accounts/beneficiary/:id/unarchive"
  -H "X-Api-Key: <your secure token>"
  -H "Content-Type: application/json"

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

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

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

SUCCESS RESPONSE The request returns JSON structured as shown below on successfully unarchiving a Beneficiary Account.

{
    "status":true, 
    "total_count":1, 
    "beneficiary_accounts":[
        {
            "id":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
            "category": "Salary,Vendor",
            "entity_id":"ABC12", 
            "name":"Q2pay technology", 
            "contact_no":"9876545676", 
            "email_id":"hgf@gmail.com", 
            "bank_acc_no":"12345678",
            "bank_account_holder_full_name": "SUMAN INDIA",
            "bank_account_holder_legal_name": "Q2PAY TECHNOLOGIES P",
            "ifsc_code":"HDFC01233237", 
            "bank_name":"Abhyudaya Co-operative Bank", 
            "pan_no":"WASED4723H", 
            "pan_legal_name": "JITENDRA KIRAN KAKADE",
            "approval_status":"pending", 
            "active_status":"N", 
            "vendor_payment": "N",
            "archived":"N", 
            "maintenance":"N", 
            "unarchived_by":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx", 
            "unarchived_by_name":"Ashish Wadekar", 
            "unarchived_on":"xxxxxxxx",
            "internal_account":"N",
            "created_by":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
            "created_by_name":"Ashish Wadekar", 
            "created_on":"xxxxxxxx", 
            "logs":[
                {
                    "action": "Unarchived",
                    "user_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
                    "user_full_name": "Akshay Rangnekar",
                    "timestamp": "2023-11-27T04:07:07.978Z",
                    "last_used": "2023-11-27T04:07:07.935Z",
                    "logged_in_flag": true,
                    "logged_in_time": "2023-11-27T04:01:08.120Z",
                    "app_version_name": "1.43",
                    "app_version_code": "54",
                    "platform": "android",
                    "model": "Android SDK built for x86",
                    "manufacturer": "unknown",
                    "brand": "Android",
                    "serial_number": "EMULATOR32X1X14X0",
                    "os_version": "6.0",
                    "sdk_version": "23",
                    "ip_address": "127.0.0.1",
                    "is_primary": false,
                    "is_verified": false,
                    "first_name":"Ashish",
                    "last_name":"Wadekar"
                }
            ]
        }
    ], 
    "title":{
        "records":1,
        "current_page":1, 
        "total_pages":1, 
        "page_item_count":1
    }
}

ERROR RESPONSE The request returns JSON structured as shown below for errors related to a Beneficiary Account.

{
    "status":false, 
    "errors":
    {
        "beneficiary_account":
        [
            "Beneficiary account can't be unarchived"
        ],
        [
            "Beneficiary account already unarchived"
        ]
    }
}

This endpoint will unarchive a Beneficiary Account.

UAT HTTP Request

PUT https://nxt.api.q2pay.co.in/api/accounts/beneficiary/:id/unarchive

PRODUCTION HTTP Request

PUT https://nxt.api.q2pay.in/api/accounts/beneficiary/:id/unarchive

Service Details

Service ID Description
BAAccountArchive Unarchive Beneficiary Account

Block Beneficiary Account

curl -X PUT "https://<environmenturl>/api/accounts/beneficiary/:id/block"
  -H "X-Api-Key: <your secure token>"
  -H "Content-Type: application/json"

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

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

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

SUCCESS RESPONSE The request returns JSON structured as shown below on successfully blocking a Beneficiary Account.

 {
    "status":true, 
    "total_count":1, 
    "beneficiary_accounts":[
        {
            "id":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
            "category": "Salary,Vendor",
            "entity_id":"ABC12", 
            "name":"Q2pay technology", 
            "contact_no":"9876545676", 
            "email_id":"hgf@gmail.com", 
            "bank_acc_no":"12345678",
            "bank_account_holder_full_name": "SUMAN INDIA",
            "bank_account_holder_legal_name": "Q2PAY TECHNOLOGIES P",
            "ifsc_code":"HDFC55555237", 
            "bank_name":"Abhyudaya Co-operative Bank", 
            "pan_no":"WASED4723H", 
            "pan_legal_name": "JITENDRA KIRAN KAKADE",
            "approval_status":"blocked", 
            "active_status":"N",
            "vendor_payment": "N",
            "archived":"N", 
            "maintenance":"Y", 
            "blocked_by":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx", 
            "blocked_by_name":"Ashish Wadekar", 
            "blocked_on":"xxxxxxxx",
            "internal_account":"N",
            "created_by":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
            "created_by_name":"Ashish Wadekar", 
            "created_on":"xxxxxxxx", 
            "logs":[
                {
                    "action":"Blocked",
                    "user_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
                    "user_full_name": "Akshay Rangnekar",
                    "timestamp": "2023-11-27T04:07:07.978Z",
                    "last_used": "2023-11-27T04:07:07.935Z",
                    "logged_in_flag": true,
                    "logged_in_time": "2023-11-27T04:01:08.120Z",
                    "app_version_name": "1.43",
                    "app_version_code": "54",
                    "platform": "android",
                    "model": "Android SDK built for x86",
                    "manufacturer": "unknown",
                    "brand": "Android",
                    "serial_number": "EMULATOR32X1X14X0",
                    "os_version": "6.0",
                    "sdk_version": "23",
                    "ip_address": "127.0.0.1",
                    "is_primary": false,
                    "is_verified": false,
                    "first_name":"Ashish",
                    "last_name":"Wadekar"
                }
            ]
        }
    ], 
    "title":{
        "records":1,
        "current_page":1, 
        "total_pages":1, 
        "page_item_count":1
    }
}

ERROR RESPONSE The request returns JSON structured as shown below for errors related to a Beneficiary Account.

{
    "status":false, 
    "errors":
    {
        "beneficiary_account":
        [
            "Beneficiary account can't be blocked"
        ],
        [
            "Beneficiary account already blocked"
        ],
        [
            "Beneficiary account can not be  blocked as there are queued transactions associated with this account",
        ],
        [
            "Beneficiary account can not be blocked as there are queued distribution transactions associated with this account"
        ]
    }
}

This endpoint will block a Beneficiary Account.

UAT HTTP Request

PUT https://nxt.api.q2pay.co.in/api/accounts/beneficiary/:id/block

PRODUCTION HTTP Request

PUT https://nxt.api.q2pay.in/api/accounts/beneficiary/:id/block

Service Details

Service ID Description
BAAccountBlock Block Beneficiary Account

Reject Beneficiary Account

curl -X PUT "https://<environmenturl>/api/accounts/beneficiary/:id/reject"
  -H "X-Api-Key: <your secure token>"
  -H "Content-Type: application/json"
  -d "{ 
     "rejection_reason": "rejected account"
      }"
require 'net/http'
require 'uri'
require 'json'

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

const data = {
   "rejection_reason": "rejected account"
};

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

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

{
   "rejection_reason": "rejected account"
}

SUCCESS RESPONSE The request returns JSON structured as shown below on successfully rejecting a Beneficiary Account.

{
  "status": true,
  "total_count": 1,
  "beneficiary_accounts": [
    {
      "id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
      "category": "Salary,Vendor,Cat_test",
      "entity_id": "ABC12",
      "name": "Q2PAY TECHNOLOGIES P",
      "contact_no": "8698111627",
      "email_id": "anuj@gmail.com",
      "bank_acc_no": "1234567890",
      "bank_account_holder_full_name": "SUMAN INDIA",
      "bank_account_holder_legal_name": "Q2PAY TECHNOLOGIES P",
      "ifsc_code": "HDFC000296",
      "bank_name": "HDFC Bank",
      "pan_no": "AAJCQ0511P",
      "pan_legal_name": "QUEST 2 TRAVEL.COM INDIA PRIVATE LIMITED",
      "approval_status": "rejected",
      "active_status": "N",
      "vendor_payment": "N",
      "archived": "N",
      "maintenance": "N",
      "rejection_reason": "rejected account",
      "rejected_by": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
      "rejected_by_name": "Akshay Rangnekar",
      "rejected_on": "xxxxxxxx",
      "internal_account": "N",
      "created_by": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
      "created_by_name": "Akshay Rangnekar",
      "created_on": "xxxxxxxx",
      "logs": [
        {
          "action": "Rejected",
          "user_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
          "user_full_name": "Akshay Rangnekar",
          "timestamp": "2024-07-03T11:33:54.523Z",
          "last_used": "2024-07-03T11:33:54.490Z",
          "logged_in_flag": true,
          "logged_in_time": "2024-07-03T11:30:11.971Z",
          "app_version_name": "1.43",
          "app_version_code": "54",
          "platform": "android",
          "model": "Android SDK built for x86",
          "manufacturer": "unknown",
          "brand": "Android",
          "serial_number": "EMULATOR32X1X14X0",
          "os_version": "6.0",
          "sdk_version": "23",
          "ip_address": "127.0.0.1",
          "is_primary": false,
          "is_verified": false,
          "first_name": "Akshay",
          "last_name": "Rangnekar"
        }
      ]
    }
  ],
  "title": {
    "records": 1,
    "current_page": 1,
    "total_pages": 1,
    "page_item_count": 1
  }
}              

ERROR RESPONSE The request returns JSON structured as shown below for errors related to a Beneficiary Account.

{
    "status":false, 
    "errors":
    {
        "beneficiary_account":
        [
            "Beneficiary account can't be rejected"
        ],
        [
            "Beneficiary account already rejected"
        ],
        [
            "Beneficiary account can not be rejected as there are queued transactions associated with this account",
        ],
        [
            "Beneficiary account can not be rejected as there are queued distribution transactions associated with this account"
        ],
        [
            "Beneficiary account rejection reason is mandatory"
        ],
        "base":
        [
            "rejection reason must be at least 10 characters"
        ]
    }
}

This endpoint will reject a Beneficiary Account.

UAT HTTP Request

PUT https://nxt.api.q2pay.co.in/api/accounts/beneficiary/:id/reject

PRODUCTION HTTP Request

PUT https://nxt.api.q2pay.in/api/accounts/beneficiary/:id/reject

Query Parameters

Parameter Default Description Required Sample
rejection_reason N.A. rejection reason for beneficiary account Yes rejected account

Service Details

Service ID Description
BAAccount Reject Beneficary Account

Get Lookup Beneficiary Account

curl -X GET "https://<environmenturl>/api/accounts/beneficiary/lookup"
  -H "X-Api-Key: <your secure token>"
  -H "Content-Type: application/json"
  -d "{ 
       "bank_account_no": "1234567890",
       "ifsc": "IBKL0002000",
}"
require 'net/http'
require 'uri'
require 'json'

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

const data = {
  "bank_account_no": "1234567890",
  "ifsc": "IBKL0002000",
};

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

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

{
  "bank_account_no": "1234567890",
  "ifsc": "IBKL0002000",
}

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

{
  "pan": "EPTPK9508Q"
}

SUCCESS RESPONSE The request returns JSON structured as shown below.

{
    "status":true, 
    "total_count":2, 
    "beneficiary_accounts":[
        {
            "id":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
            "category": "Vendor",
            "entity_id":"ABC12", 
            "name":"Q2pay technology", 
            "contact_no":"9876545676", 
            "email_id":"hgf@gmail.com", 
            "bank_acc_no":"12345678",
            "bank_account_holder_full_name": "SUMAN INDIA",
            "bank_account_holder_legal_name": "Q2PAY TECHNOLOGIES P",
            "ifsc_code":"HDFC0000289", 
            "bank_name":"Abhyudaya Co-operative Bank", 
            "pan_no":"WASED4723H", 
            "gstin_detail":"38AAACQ0519P1CF",
            "approval_status":"approved", 
            "active_status":"Y",
            "vendor_payment": "Y",
            "archived":"N", 
            "maintenance":"N", 
            "approved_by":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx", 
            "approved_by_name":"Ashish Wadekar", 
            "approved_on":"xxxxxxxx",
            "internal_account":"N",
            "created_by":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
            "created_by_name":"Ashish Wadekar", 
            "created_on":"xxxxxxxx"
        },
        {
            "id":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
            "category": "Vendor",
            "entity_id":"ABC12", 
            "name":"Q2pay technology", 
            "contact_no":"9876545676", 
            "email_id":"hgf@gmail.com", 
            "bank_acc_no":"4567893467",
            "bank_account_holder_full_name": "SUMAN INDIA",
            "bank_account_holder_legal_name": "Q2PAY TECHNOLOGIES P",
            "ifsc_code":"HDFC0000212", 
            "bank_name":"Abhyudaya Co-operative Bank", 
            "pan_no":"WASED4723H", 
            "approval_status":"pending", 
            "active_status":"N",
            "vendor_payment":"N",
            "archived":"N", 
            "maintenance":"N", 
            "internal_account":"N",
            "created_by":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
            "created_by_name":"Ashish Wadekar", 
            "created_on":"xxxxxxxx", 
        } 
    ],
    "title":{
        "records":2,
        "current_page":1, 
        "total_pages":1, 
        "page_item_count":1
    }
}

ERROR RESPONSE The request returns JSON structured as shown below for errors related to Beneficiary Accounts.

{
    "status":false, 
    "errors":{
        "base":[
            "Bank Account Number / IFSC / Permanent Account Number not provided"
        ],
        "base":[
            "Bank Account Number / IFSC / Permanent Account Number cannot be processed together"
        ],
        "base":[
            "Invalid / Insufficient parameters"
        ],
        "base":[
            "Invalid format for Bank Account Number"
        ],
        "base":[
            "Invalid format for IFSC"
        ],
        "base":[
            "No Bank Account Number found for: 8482940354"
        ],
        "base":[
            "No beneficiary data for Bank Account Number: 8482940354"
        ],
        "base":[
            "Invalid format for PAN ID"
        ],
        "base":[
            "No PAN found for : AAACQ0519P"
        ],
        "base":[
            "No beneficiary data for PAN ID: AAACQ0519P"
        ]
    }
}

This endpoint will perform lookup for a specific Beneficiary Account.

UAT HTTP Request

GET https://nxt.api.q2pay.co.in/api/accounts/beneficiary/lookup

PRODUCTION HTTP Request

GET https://nxt.api.q2pay.in/api/accounts/beneficiary/lookup

Query Parameters

Parameter Default Description Required Sample
bank_account_no N.A. Bank account number for beneficiary account Yes 1234567890
ifsc N.A. ifsc for beneficiary account Yes IBKL0002000"

Query Parameters

Parameter Default Description Required Sample
pan N.A. pan for beneficiary account Yes EPTPK9508Q

Service Details

Service ID Description
BVAccount Get Lookup Beneficiary Account

Edit Other Details Beneficiary Account

curl -X PUT "https://<environmenturl>/api/accounts/beneficiary/:id/edit_other_details"
  -H "X-Api-Key: <your secure token>"
  -H "Content-Type: application/json"
  -d "{ 
    "beneficiary_accounts": {
    "contact_no": "7486756685",
    "email": "abc@gmail.com",
    "pan": "MASED4723H",
    "gstin": "12AANCA2275G2ZO",
    "name": "Q2pay technology",
    "category": "Salary",
    "recipient_email": "q2pay@gmail.com"
    "reimbursement_account": true,
    "reimbursement_user_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx"
    }
 }"
require 'net/http'
require 'uri'
require 'json'

uri = URI.parse("https://<environmenturl>/api/accounts/beneficiary/:id/edit_other_details") header = {'X-Api-Key' => '<your secure token>', 'Content-Type' => 'application/json'} body = { "beneficiary_accounts": { "contact_no": "7486756685", "email": "abc@gmail.com", "pan": "MASED4723H", "gstin": "12AANCA2275G2ZO", "name": "Q2pay technology", "category": "Salary", "recipient_email": "q2pay@gmail.com" "reimbursement_account": true, "reimbursement_user_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx" } } http = Net::HTTP.new(uri.host, uri.port) http.use_ssl = true request = Net::HTTP::Put.new(uri.request_uri, header) request.body = body.to_json response = http.request(request)

const data = {
  "beneficiary_accounts": {
    "contact_no": "7486756685",
    "email": "abc@gmail.com",
    "pan": "MASED4723H",
    "gstin": "12AANCA2275G2ZO",
    "name": "Q2pay technology",
    "category": "Salary",
    "recipient_email": "q2pay@gmail.com"
    "reimbursement_account": true,
    "reimbursement_user_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx"
    }
};

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

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

{
  "beneficiary_accounts": {
    "contact_no": "7486756685",
    "email": "abc@gmail.com",
    "pan": "MASED4723H",
    "gstin": "12AANCA2275G2ZO",
    "name": "Q2pay technology",
    "category": "Salary",
    "recipient_email": "q2pay@gmail.com"
    "reimbursement_account": true,
    "reimbursement_user_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx"
    }
}

SUCCESS RESPONSE The request returns JSON structured as shown below on successfully editing other details of a Beneficiary Account.

{
    "status":true, 
    "total_count":1,
    "beneficiary_accounts":[
        {
            "id":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
            "category": "Salary,Vendor",
            "entity_id":"ABC12", 
            "name":"Q2pay technology", 
            "contact_no":"9578655641", 
            "email_id":"Q2@pay.com", 
            "bank_acc_no":"12345678",
            "bank_account_holder_full_name": "SUMAN INDIA",
            "bank_account_holder_legal_name": "Q2PAY TECHNOLOGIES P",
            "ifsc_code":"HDFC0000298", 
            "bank_name":"HDFC Bank", 
            "pan_no":"WASED4723H", 
            "pan_legal_name": "JITENDRA KIRAN KAKADE",
            "approval_status":"pending",
            "recipient_email": ["q2pay@gmail.com"],
            "active_status":"N", 
            "vendor_payment":"N", 
            "archived":"N", 
            "maintenance":"N", 
            "internal_account":"N",
            "reimbursement_account": "Y",
            "created_by":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx", 
            "created_by_name":"Ashish Wadekar", 
            "created_on":"xxxxxxxx", 
            "logs":[
                {
                    "action":"Updated", 
                    "user_id":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
                    "user_full_name":"Ashish Wadekar", 
                    "timestamp": "2023-11-27T04:06:38.602Z",
                    "last_used": "2023-11-27T04:06:38.533Z",
                    "logged_in_flag": true,
                    "logged_in_time": "2023-11-27T04:01:08.120Z",
                    "app_version_name": "1.43",
                    "app_version_code": "54",
                    "platform": "android",
                    "model": "Android SDK built for x86",
                    "manufacturer": "unknown",
                    "brand": "Android",
                    "serial_number": "EMULATOR32X1X14X0",
                    "os_version": "6.0",
                    "sdk_version": "23",
                    "ip_address": "127.0.0.1",
                    "is_primary": false,
                    "is_verified": false,
                    "first_name":"Ashish", 
                    "last_name":"Wadekar"
                }
            ]
        }
    ],
    "title":{
        "records":1, 
        "current_page":1, 
        "total_pages":1, 
        "page_item_count":1
    }
}

ERROR RESPONSE The request returns JSON structured as shown below for errors related to a Beneficiary Account.

{
    "status": false,
    "errors":{
        "permanent_account_number":
        [
            "Permanent account number is already linked with an existing beneficiary"
        ],
        "category":
        [
            "Category is not valid/active for the account type"
        ], 
        "base":
        [
            "Invalid format for PAN ID"
        ],
        "base":
        [
            "PAN ID cannot be blank"
        ],
        "contact_no":
        [
            "Contact no is not a number", "Contact no can't be blank", "Contact no must be a 10, 11 or 12 digit number"
        ],
        "email":
        [
            "Email can't be blank", "Email invalid", "Email is too short (minimum is 4 characters)"
        ],
        "base":
        [
            "Beneficiary_account cannot be edited as account is archived/blocked"
        ],
        "base":
        [
            "GSTIN is not linked with provided PAN."
        ],
        "recipient_email": [
            "Recipient email contains invalid email: xxxxxxxx.xxx"
        ],
        "user": [
            "User must exist.",
            "User doesn't belong to your entity."
        ]
    }
}

This endpoint will edit other details of a Beneficiary Account.

UAT HTTP Request

PUT https://nxt.api.q2pay.co.in/api/accounts/beneficiary/:id/edit_other_details

PRODUCTION HTTP Request

PUT https://nxt.api.q2pay.in/api/accounts/beneficiary/:id/edit_other_details

Query Parameters

Parameter Default Description Required Sample
contact_no N.A. contact no for beneficiary account optional 9867454325
email N.A. email id for beneficiary account optional abc@gmail.com
pan N.A. pan for beneficiary account optional CGHFG78J
gstin N.A. gstin for beneficiary account optional 12AANCA2275G2ZO
name N.A. name for beneficiary account optional Q2PAY TECHNOLOGIES P
category N.A. category for beneficiary account optional Vendor
address N.A. address for beneficiary account optional Pune
recipient_email N.A recipient email for beneficiary account optional q2pay@gmail.com
reimbursement_account N.A reimbursement account for user optional true
reimbursement_user_id N.A user_id for reimbursement account optional xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx

Service Details

Service ID Description
BUAccount Edit Details of Beneficiary Account

Add Labels of Beneficiary Account

curl -X PUT "https://<environmenturl>/api/accounts/beneficiary/add_label"
  -H "X-Api-Key: <your secure token>"
  -H "Content-Type: application/json"
  -d "{
  "record_ids": [
    "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx","xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx"
  ],
  "labels": [
    "audit expense",
    "Infrastructure"
  ]
}"
require 'net/http'
require 'uri'
require 'json'

uri = URI.parse("https://<environmenturl>/api/accounts/beneficiary/add_label") header = {'X-Api-Key' => '<your secure token>', 'Content-Type' => 'application/json'} body = {
"record_ids": [ "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx","xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx" ], "labels": [ "audit expense", "Infrastructure" ] } http = Net::HTTP.new(uri.host, uri.port) http.use_ssl = true request = Net::HTTP::Put.new(uri.request_uri, header) request.body = body.to_json response = http.request(request)

const data = {
  "record_ids": [
     "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx","xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx"
  ],
  "labels": [
    "audit expense",
     "Infrastructure"
  ]
};

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

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

{
  "record_ids": [
     "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx","xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx"
  ],
  "labels": [
    "audit expense",
    "Infrastructure"
  ]
}

SUCCESS RESPONSE The request returns JSON structured as shown below on successfully adding labels to Beneficiary Accounts.

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

ERROR RESPONSE The request returns JSON structured as shown below for errors related to adding labels to Beneficiary Accounts.

{
  "status": false,
  "errors": {
    "base": [
      "Missing required parameters: record_ids and/or labels."
    ],
    "base":[
      "The beneficiary account IDs are not present."
    ]
  }
}

This endpoint will add labels to a Beneficiary Account.

UAT HTTP Request

PUT https://nxt.api.q2pay.co.in/api/accounts/beneficiary/add_label

PRODUCTION HTTP Request

PUT https://nxt.api.q2pay.in/api/accounts/beneficiary/add_label

Query Parameters

Parameter Default Description Required Sample
record_ids N.A. record ids of beneficiary account Yes ["xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx","xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx" ]
labels N.A. labels of beneficiary account Yes ["audit expense","Infrastructure"]

Service Details

Service ID Description
ALabel Add labels for Beneficiary Account

Remove Labels of Beneficiary Account

curl -X PUT "https://<environmenturl>/api/accounts/beneficiary/remove_label"
  -H "X-Api-Key: <your secure token>"
  -H "Content-Type: application/json"
  -d "{
  "record_ids": [
    "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx","xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx"
  ],
  "labels": [
    "audit expense",
    "Infrastructure"
  ]
}"
require 'net/http'
require 'uri'
require 'json'

uri = URI.parse("https://<environmenturl>/api/accounts/beneficiary/remove_label") header = {'X-Api-Key' => '<your secure token>', 'Content-Type' => 'application/json'} body = {
"record_ids": [ "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx","xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx" ], "labels": [ "audit expense", "Infrastructure" ] } http = Net::HTTP.new(uri.host, uri.port) http.use_ssl = true request = Net::HTTP::Put.new(uri.request_uri, header) request.body = body.to_json response = http.request(request)

const data = {
  "record_ids": [
     "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx","xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx"
  ],
  "labels": [
    "audit expense",
     "Infrastructure"
  ]
};

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

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

{
  "record_ids": [
     "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx","xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx"
  ],
  "labels": [
    "audit expense",
    "Infrastructure"
  ]
}

SUCCESS RESPONSE The request returns JSON structured as shown below on successfully removing labels from Beneficiary Accounts.

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

ERROR RESPONSE The request returns JSON structured as shown below for errors related to removing labels from Beneficiary Accounts.

{
  "status": false,
  "errors": {
    "base": [
      "Missing required parameters: record_ids and/or labels."
    ],
    "base":[
      "The beneficiary account IDs are not present."
    ],
    "base":[
      "Labels are not present in some beneficiary accounts."
    ]
  }
}

This endpoint will remove labels from Beneficiary Accounts.

UAT HTTP Request

PUT https://nxt.api.q2pay.co.in/api/accounts/beneficiary/remove_label

PRODUCTION HTTP Request

PUT https://nxt.api.q2pay.in/api/accounts/beneficiary/remove_label

Query Parameters

Parameter Default Description Required Sample
record_ids N.A. record ids of beneficiary account Yes ["xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx","xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx" ]
labels N.A. labels of beneficiary account Yes ["audit expense","Infrastructure"]

Service Details

Service ID Description
RLabel Remove labels for Beneficiary Account

Beneficary Transaction

Beneficiary Transaction API helps you create, maintain & manage of life cycle of Beneficiary transactions.

Get All Beneficiary Transactions

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

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

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

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

SUCCESS RESPONSE The request responds with JSON, structured as shown below.

{
  "status": true,
  "total_count": 2,
  "total_amount": "2000.0",
  "summary": {
     "pending_transaction_count": 84,
     "abandoned_transaction_count": 11,
     "approved_transaction_count": 219,
     "rejected_transaction_count": 43,
     "actionable_transaction_count": 84,
     "created_distribution_transaction_count": 198,
     "awaiting_funds_distribution_transaction_count": 12,
     "distribution_initiated_distribution_transaction_count": 4,
     "distribution_complete_distribution_transaction_count": 1,
     "rejected_distribution_transaction_count": 4,
     "abandoned_distribution_transaction_count": 3,
     "confidential_transaction_count": 2,
     "available_labels": [
          "audit expense",
          "building expenses",
          "test expense"
      ]
  },
  "transactions": [
    {
      "total_amount": "1000.0",
      "txn_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
      "amount": "1000.0",
      "category": "Beneficiary",
      "internal_transaction": false,
      "lifecycle_status": "approved",
      "distribution_lifecycle_status": "created",
      "payment_method":"RTGS",
      "txn_initiator": "Priya jawale",
      "approved": "Y",
      "confidential_transaction": "Y",
      "approved_at": "xxxxxxxx",
      "payment_charge": "0.0",
      "tax_amount": "0.0",
      "entity_id": "ABC12",
      "rejected": false,
      "refactored": false,
      "beneficiary_account_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
      "beneficiary_account_name": "JITENDRA KIRAN KAKDE",
      "beneficiary_account_bank_acc_no": "12345678",
      "beneficiary_account_ifsc_code": "BKID0010670",
      "beneficiary_account_bank_name": "Bank of India",
      "beneficiary_account_approval_status": "approved",
      "owner_account_id":"xxxxxxxx-xxxx-xxxx-xxxxxx",
      "owner_account_bank_acc_no":"9482940300",
      "owner_account_ifsc_code":"ICIC0000112",
      "owner_account_bank_name":"ICICI Bank",
      "owner_account_type":"Current Account",
      "owner_account_balance":"1500.0",
      "owner_account_balance_last_fetched_at":"xxxxxxxx",
      "owner_account_balance_last_fetched_at_in_words":"less than a minute ago",
      "created_via": "Scheduled Transaction",
      "additional_data": {
        "data": [
          {
            "name": "month",
            "position": 1,
            "data_type": "string",
            "mandatory": "Y",
            "value": "Mon"
          },
          {
            "name": "leaves",
            "position": 2,
            "data_type": "numeric",
            "mandatory": "Y",
            "value": 1233
          },
          {
            "name": "PAN",
            "position": 3,
            "data_type": "string",
            "mandatory": "N",
            "value": "Pan no"
          },
          {
            "data": [
              "Pradeep",
              "Sachin",
              "Sewaram"
            ],
            "name": "Accountants",
            "position": 4,
            "data_type": "list",
            "mandatory": "N",
            "value": "Pradeep"
          },
          {
            "name": "month 1",
            "position": 5,
            "data_type": "time",
            "mandatory": "Y",
            "value": "09:34"
          },
          {
            "name": "Day",
            "position": 6,
            "data_type": "day",
            "mandatory": "Y",
            "value": "Monday"
          },
          {
            "name": "Dummy",
            "position": 7,
            "data_type": "toggle",
            "mandatory": "Y",
            "value": true
          },
          {
            "name": "Month",
            "position": 8,
            "data_type": "month",
            "mandatory": "Y",
            "value": "March"
          },
          {
            "name": "Hyperlink",
            "position": 9,
            "data_type": "hyperlink",
            "mandatory": "Y",
            "value": "https://nxt.api.q2pay.co.in/api/transaction_auth_matrix.json",
            },
            {
              "name": "File",
              "position": 10,
              "data_type": "upload",
              "mandatory": "Y",
                "value": {
                  "id": "c68cc4e7d54381cc46384f194c09ce2c.png",
                  "storage": "cache",
                  "metadata": {
                    "filename": "favicon.png",
                    "size": 62260,
                    "mime_type": "image/png"
                  },
                  "file_url": "https://your-bucket.s3.amazonaws.com/store/c68cc4e7d54381cc46384f194c09ce2c.png"
                }
              },
          {
            "name": "Date",
            "position": 11,
            "data_type": "date",
            "mandatory": "Y",
            "value": "23/04/2023"
          },
          {
            "name": "Year",
            "position": 12,
            "data_type": "year",
            "mandatory": "Y",
            "value": "2024"
          },
          {
            "name": "Month_Year",
            "position": 13,
            "data_type": "month_year",
            "mandatory": "Y",
            "value": "12/2024"
          },
          {
            "name": "Multiselect",
            "position": 14,
            "data_type": "multi_select_list",
            "mandatory": "Y",
            "data": [
              "ab",
              "abc",
              "abcd"
            ],
            "value": [
               "ab",
               "abc"
            ]
          },
          {
            "name": "Quantity",
            "position": 15,
            "data_type": "quantity",
            "mandatory": "Y",
            "value": 5
          },
          {
            "name": "DateRange",
            "position": 16,
            "data_type": "date_range",
            "mandatory": "Y",
            "value": {
              "start_date": "21/08/2023",
              "end_date": "21/10/2024"
            }
          },
          {
            "name": "YearRange",
            "position": 17,
            "data_type": "from_year_to_year",
            "mandatory": "Y",
            "value": {
              "from": 2030,
              "to": 2034
            }
          }
        ]
      },
      "created_on": "xxxxxxxx",
      "last_updated_user_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
      "last_updated_status": "Created",
      "last_updated_timestamp": "xxxxxxxx",
      "last_updated_user_name": "Akshay Rangnekar"
    },
    {
      "total_amount": "1000.0",
      "txn_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
      "amount": "1000.0",
      "category": "Beneficiary",
      "lifecycle_status": "pending",
      "payment_method":"RTGS",
      "txn_initiator": "Priya jawale",
      "approved": "N",
      "approved_at": "0",
      "payment_charge": "0.0",
      "tax_amount": "0.0",
      "entity_id": "ABC12",
      "rejected": false,
      "refactored": false,
      "beneficiary_account_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
      "beneficiary_account_name": "Mr AKASH PRAMOD BAGUL",
      "beneficiary_account_bank_acc_no": "12345678",
      "beneficiary_account_ifsc_code": "SBIN0031199",
      "beneficiary_account_bank_name": "State Bank of India",
      "beneficiary_account_approval_status": "archived",
      "owner_account_id":"xxxxxxxx-xxxx-xxxx-xxxxxx",
      "owner_account_bank_acc_no":"9482940300",
      "owner_account_ifsc_code":"ICIC0000112",
      "owner_account_bank_name":"ICICI Bank",
      "owner_account_type":"Current Account",
      "additional_data": {
        "data": [
          {
            "name": "month",
            "position": 1,
            "data_type": "string",
            "mandatory": "Y",
            "value": "Mon"
          },
          {
            "name": "leaves",
            "position": 2,
            "data_type": "numeric",
            "mandatory": "N"
          },
          {
            "name": "PAN",
            "position": 3,
            "data_type": "string",
            "mandatory": "N"
          },
          {
            "name": "Accountants",
            "position": 4,
            "data_type": "list",
            "mandatory": "N",
            "data": [
              "Pradeep",
              "Sachin",
              "Sewaram"
            ]
          }
        ]
      }, 
      "created_on": "xxxxxxxx",
      "last_updated_user_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
      "last_updated_status": "Created",
      "last_updated_timestamp": "xxxxxxxx",
      "last_updated_user_name": "Akshay Rangnekar"
    }
  ],
  "title": {
    "records": 2,
    "current_page": 1,
    "total_pages": 1,
    "page_item_count": 50
  }
}

This endpoint retrieves all Beneficiary Transactions.

UAT HTTP Request

GET https://nxt.api.q2pay.co.in/api/transactions/beneficiary

PRODUCTION HTTP Request

GET https://nxt.api.q2pay.in/api/transactions/beneficiary

Query Parameters

Parameter Default Description Required Sample
amount N.A. amount for beneficiary transaction optional 67000.0
lifecycle_status N.A. lifecycle status for beneficiary transaction optional pending, approved, rejected, abandoned
payment_method N.A. payment method for beneficiary transaction optional RTGS/NEFT/IMPS
beneficiary_account_id N.A. beneficiary account id for beneficiary transaction optional "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxx"
owner_account_id N.A. owner account id for beneficiary transaction optional "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxx"
beneficiary_account_ids N.A. beneficiary account ids for beneficiary transaction optional [xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxx ,xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxx]
owner_account_ids N.A. owner account ids for beneficiary transaction optional [xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxx ,xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxx]
start_date,end_date N.A. start date and end date for beneficiary transaction optional xxxxxxxx,xxxxxxxx
txn_id N.A. transaction id is used to search id of beneficiary transaction optional [xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxx ,xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxx]
entity_id N.A. entity id for beneficiary transaction optional ABC12
category N.A. category for beneficiary transaction optional Vendor
bank_identifier N.A. bank_identifier/settlement_id for distribution transaction of beneficiary transaction optional xxxxxxxxxxxxxxxx
distribution_lifecycle_status N.A. distribution lifecycle status of beneficiary transaction optional created, awaiting_funds, distribution_initiated, distribution_complete, rejected, abandoned, failed
additional_data N.A. additional data for beneficiary transaction optional "Mon"
confidential_transaction N.A. confidential transaction for beneficiary transaction optional "Y","N"
category_name, category_value N.A category name and category value is filter on additional data of name and value of beneficiary transaction optional name, month or value, Mon
category_label N.A. category label for beneficiary transaction optional Vendor
refactor N.A refactor for filter beneficiary transaction optional true, false
labels N.A. labels for beneficiary transaction optional ["audit expense"]

Service Details

Service ID Description
VBeneficiaryTxn View All Beneficiary Transactions
VAccountBalance View Balance of Owner Account
VConfidentialTxn View Confidential Transactions

Get specific Beneficiary Transactions

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

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

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

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

SUCCESS RESPONSE The request returns JSON structured as shown below

{
  "status": true,
  "total_count": 1,
  "total_amount": "512.0",
  "transaction": [
    {
      "total_amount": "512.0",
      "txn_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
      "amount": "512.0",
      "category": "Salary",
      "internal_transaction": false,
      "lifecycle_status": "approved",
      "payment_method":"RTGS",
      "txn_initiator": "Akshay Rangnekar",
      "approved": "Y",
      "confidential_transaction": "Y",
      "approved_at": "xxxxxxxx",
      "payment_charge": "0.0",
      "tax_amount": "0.0",
      "entity_id": "ABC12",
      "rejected": false,
      "refactored": false,
      "beneficiary_account_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
      "beneficiary_account_name": "Q2PAY TECHNOLOGIES P",
      "beneficiary_account_bank_acc_no": "123456789",
      "beneficiary_account_ifsc_code": "HDFC0000233",
      "beneficiary_account_bank_name": "HDFC Bank",
      "beneficiary_account_approval_status": "approved",
      "owner_account_id":"xxxxxxxx-xxxx-xxxx-xxxxxx",
      "owner_account_bank_acc_no":"9482940300",
      "owner_account_ifsc_code":"ICIC0000112",
      "owner_account_bank_name":"ICICI Bank",
      "owner_account_type":"Current Account",
      "owner_account_balance":"1500.0",
      "owner_account_balance_last_fetched_at":"xxxxxxxx",
      "owner_account_balance_last_fetched_at_in_words":"less than a minute ago"
      "additional_data": {
        "data": [
          {
            "name": "month",
            "position": 1,
            "data_type": "string",
            "mandatory": "Y",
            "value": "Mon"
          },
          {
            "name": "leaves",
            "position": 2,
            "data_type": "numeric",
            "mandatory": "Y",
            "value": 1233
          },
          {
            "name": "PAN",
            "position": 3,
            "data_type": "string",
            "mandatory": "N",
            "value": "Pan no"
          },
          {
            "data": [
              "Pradeep",
              "Sachin",
              "Sewaram"
            ],
            "name": "Accountants",
            "position": 4,
            "data_type": "list",
            "mandatory": "N",
            "value": "Pradeep"
          },
          {
            "name": "month 1",
            "position": 5,
            "data_type": "time",
            "mandatory": "Y",
            "value": "09:34"
          },
          {
            "name": "Day",
            "position": 6,
            "data_type": "day",
            "mandatory": "Y",
            "value": "Monday"
          },
          {
            "name": "Dummy",
            "position": 7,
            "data_type": "toggle",
            "mandatory": "Y",
            "value": true
          },
          {
            "name": "Month",
            "position": 8,
            "data_type": "month",
            "mandatory": "Y",
            "value": "March"
          },
          {
            "name": "Hyperlink",
            "position": 9,
            "data_type": "hyperlink",
            "mandatory": "Y",
            "value": "https://nxt.api.q2pay.co.in/api/transaction_auth_matrix.json"
            },
            {
              "name": "File",
              "position": 10,
              "data_type": "upload",
              "mandatory": "Y",
                "value": {
                  "id": "c68cc4e7d54381cc46384f194c09ce2c.png",
                  "storage": "cache",
                  "metadata": {
                    "filename": "favicon.png",
                    "size": 62260,
                    "mime_type": "image/png"
                  },
                  "file_url": "https://your-bucket.s3.amazonaws.com/store/c68cc4e7d54381cc46384f194c09ce2c.png"
                }
              },
          {
            "name": "Date",
            "position": 11,
            "data_type": "date",
            "mandatory": "Y",
            "value": "23/04/2023"
          },
          {
            "name": "Year",
            "position": 12,
            "data_type": "year",
            "mandatory": "Y",
            "value": "2024"
          },
          {
            "name": "Month_Year",
            "position": 13,
            "data_type": "month_year",
            "mandatory": "Y",
            "value": "12/2024"
          },
          {
            "name": "Multiselect",
            "position": 14,
            "data_type": "multi_select_list",
            "mandatory": "Y",
            "data": [
              "ab",
              "abc",
              "abcd"
            ],
            "value": [
               "ab",
               "abc"
            ]
          },
          {
            "name": "Quantity",
            "position": 15,
            "data_type": "quantity",
            "mandatory": "Y",
            "value": 5
          },
          {
            "name": "DateRange",
            "position": 16,
            "data_type": "date_range",
            "mandatory": "Y",
            "value": {
              "start_date": "21/08/2023",
              "end_date": "21/10/2024"
            }
          },
          {
            "name": "YearRange",
            "position": 17,
            "data_type": "from_year_to_year",
            "mandatory": "Y",
            "value": {
              "from": 2030,
              "to": 2034
            }
          }
        ]
      },
      "created_on": "xxxxxxxx",
      "last_updated_user_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
      "last_updated_status": "Approved",
      "last_updated_timestamp": "xxxxxxxx",
      "last_updated_user_name": "Akshay Rangnekar",
      "distribution_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
      "distribution_identifier": "xxxxxxxxxxxxxxxxxxxxxxxx",
      "distribution_settlement_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
      "distribution_bank": "HDFC Bank",
      "distribution_amount": "512.0",
      "distribution_mode_of_payment": "NEFT",
      "distribution_lifecycle_status": "awaiting_funds",
      "distribution_utr": "xxxxxxx",
      "distribution_initiated_at": "xxxxxxx",
      "distribution_credited_at": "xxxxxxx",
      "distribution_credit_remarks": "xxxxxxx",
      "distribution_approved": true,
      "distribution_approved_at": "2024-01-12T10:27:20.033Z",
      "distribution_approved_by": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
      "distribution_approval_strategy": "user",
      "distribution_logs": [
        {
          "action": "Created",
          "user_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
          "timestamp": "2024-01-12T10:09:53.886Z",
          "user_full_name": "Akshay Rangnekar"
        },
        {
          "brand": "Android",
          "model": "Android SDK built for x86",
          "action": "Approved",
          "user_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
          "platform": "android",
          "last_name": "Rangnekar",
          "last_used": "2024-01-12T10:27:19.963Z",
          "timestamp": "2024-01-12T10:27:20.044Z",
          "first_name": "Akshay",
          "ip_address": "127.0.0.1",
          "is_primary": false,
          "os_version": "6.0",
          "request_ip": "127.0.0.1",
          "user_grade": "Director",
          "is_verified": false,
          "sdk_version": "23",
          "manufacturer": "unknown",
          "serial_number": "EMULATOR32X1X14X0",
          "final_approval": true,
          "logged_in_flag": true,
          "logged_in_time": "2024-01-11T10:27:49.369Z",
          "user_full_name": "Akshay Rangnekar",
          "app_version_code": "54",
          "app_version_name": "1.43"
        }
      ],
      "logs": [
        {
          "brand": "Android",
          "model": "Android SDK built for x86",
          "action": "Created",
          "user_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
          "platform": "android",
          "last_name": "Rangnekar",
          "last_used": "2024-01-12T10:09:53.679Z",
          "timestamp": "2024-01-12T10:09:53.714Z",
          "first_name": "Akshay",
          "ip_address": "127.0.0.1",
          "is_primary": false,
          "os_version": "6.0",
          "request_ip": "127.0.0.1",
          "is_verified": false,
          "sdk_version": "23",
          "manufacturer": "unknown",
          "serial_number": "EMULATOR32X1X14X0",
          "logged_in_flag": true,
          "logged_in_time": "2024-01-11T10:27:49.369Z",
          "user_full_name": "Akshay Rangnekar",
          "app_version_code": "54",
          "app_version_name": "1.43"
        },
        {
          "brand": "Android",
          "model": "Android SDK built for x86",
          "action": "Approved",
          "user_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
          "platform": "android",
          "last_name": "Rangnekar",
          "last_used": "2024-01-12T10:09:53.679Z",
          "timestamp": "2024-01-12T10:09:53.734Z",
          "first_name": "Akshay",
          "ip_address": "127.0.0.1",
          "is_primary": false,
          "os_version": "6.0",
          "request_ip": "127.0.0.1",
          "is_verified": false,
          "sdk_version": "23",
          "manufacturer": "unknown",
          "serial_number": "EMULATOR32X1X14X0",
          "final_approval": true,
          "logged_in_flag": true,
          "logged_in_time": "2024-01-11T10:27:49.369Z",
          "user_full_name": "Akshay Rangnekar",
          "app_version_code": "54",
          "app_version_name": "1.43",
          "authorization_rule": "Director~1"
        }
      ]
    }
  ],
  "title": {
    "records": 1,
    "current_page": 1,
    "total_pages": 1,
    "page_item_count": 1
  }
}

This endpoint retrieves a specific Beneficiary Transaction.

UAT HTTP Request

GET https://nxt.api.q2pay.co.in/api/transactions/beneficiary/:id

PRODUCTION HTTP Request

GET https://nxt.api.q2pay.in/api/transactions/beneficiary/:id

Service Details

Service ID Description
VBeneficiaryTxn View specific Beneficiary Transactions

Create Beneficiary Transactions

curl -X POST "https://<environmenturl>/api/transactions/beneficiary"
  -H "X-Api-Key: <your secure token>"
  -H "Content-Type: application/json"
  -d "{ 
    "amount" : "67000.0",
    "owner_account_id":"xxxxxxxx-xxxx-xxxx-xxxxxx",
    "beneficiary_account_id" :"xxxxxxxx-xxxx-xxxx-xxxxxx",
    "payment_method":"RTGS",
    "category": "Beneficiary",
    "labels": ["building expenses"],
    "confidential_transaction": "true",
    "additional_data": {
    "data": [
      {
        "name": "month",
        "position": 1,
        "data_type": "string",
        "mandatory": "Y",
        "value": "Mon"
      },
      {
        "name": "leaves",
        "position": 2,
        "data_type": "numeric",
        "mandatory": "Y",
        "value": 1233
      },
      {
        "name": "PAN",
        "position": 3,
        "data_type": "string",
        "mandatory": "N",
        "value": "Pan no"
      },
      {
        "data": [
          "Pradeep",
          "Sachin",
          "Sewaram"
        ],
        "name": "Accountants",
        "position": 4,
        "data_type": "list",
        "mandatory": "N",
        "value": "Pradeep"
      },
      {
        "name": "month 1",
        "position": 5,
        "data_type": "time",
        "mandatory": "Y",
        "value": "09:34"
      },
      {
        "name": "Day",
        "position": 6,
        "data_type": "day",
        "mandatory": "Y",
        "value": "Monday"
      },
      {
        "name": "Dummy",
        "position": 7,
        "data_type": "toggle",
        "mandatory": "Y",
        "value": true
      },
      {
        "name": "Month",
        "position": 8,
        "data_type": "month",
        "mandatory": "Y",
        "value": "March"
      },
      {
        "name": "Hyperlink",
        "position": 9,
        "data_type": "hyperlink",
        "mandatory": "Y",
        "value": "https://nxt.api.q2pay.co.in/api/transaction_auth_matrix.json"
      },
      {
        "name": "File",
        "position": 10,
        "data_type": "upload",
        "mandatory": "Y",
        "value": {
          "id": "c68cc4e7d54381cc46384f194c09ce2c.png",
          "storage": "cache",
          "metadata": {
            "filename": "favicon.png",
            "size": 62260,
            "mime_type": "image/png"
          }
        }
      },
      {
        "name": "Date",
        "position": 11,
        "data_type": "date",
        "mandatory": "Y",
        "value": "23/04/2023"
      },
      {
        "name": "Year",
        "position": 12,
        "data_type": "year",
        "mandatory": "Y",
        "value": "2024"
      },
      {
        "name": "Month_Year",
        "position": 13,
        "data_type": "month_year",
        "mandatory": "Y",
        "value": "12/2024"
      },
      {
        "name": "Multiselect",
        "position": 14,
        "data_type": "multi_select_list",
        "mandatory": "Y",
        "data": [
          "ab",
          "abc",
          "abcd"
        ],
        "value": [
          "ab",
          "abc"
        ]
      },
      {
        "name": "Quantity",
        "position": 15,
        "data_type": "quantity",
        "mandatory": "Y",
        "value": 5
      },
      {
        "name": "DateRange",
        "position": 16,
        "data_type": "date_range",
        "mandatory": "Y",
        "value": {
          "start_date": "21/08/2023",
          "end_date": "21/10/2024"
        }
      },
      {
        "name": "YearRange",
        "position": 17,
        "data_type": "from_year_to_year",
        "mandatory": "Y",
        "value": {
          "from": 2030,
          "to": 2034
        }
      }
    ]
  }
 }"
require 'net/http'
require 'uri'
require 'json'

uri = URI.parse("https://<environmenturl>/api/transactions/beneficiary") header = {'X-Api-Key' => '<your secure token>', 'Content-Type' => 'application/json'} body = { "amount" : "67000.0", "owner_account_id":"xxxxxxxx-xxxx-xxxx-xxxxxx", "beneficiary_account_id" :"xxxxxxxx-xxxx-xxxx-xxxxxx", "payment_method":"RTGS", "category": "Beneficiary", "labels": ["building expenses"], "confidential_transaction": "true", "additional_data": { "data": [ { "name": "month", "position": 1, "data_type": "string", "mandatory": "Y", "value": "Mon" }, { "name": "leaves", "position": 2, "data_type": "numeric", "mandatory": "Y", "value": 1233 }, { "name": "PAN", "position": 3, "data_type": "string", "mandatory": "N", "value": "Pan no" }, { "data": [ "Pradeep", "Sachin", "Sewaram" ], "name": "Accountants", "position": 4, "data_type": "list", "mandatory": "N", "value": "Pradeep" }, { "name": "month 1", "position": 5, "data_type": "time", "mandatory": "Y", "value": "09:34" }, { "name": "Day", "position": 6, "data_type": "day", "mandatory": "Y", "value": "Monday" }, { "name": "Dummy", "position": 7, "data_type": "toggle", "mandatory": "Y", "value": true }, { "name": "Month", "position": 8, "data_type": "month", "mandatory": "Y", "value": "March" }, { "name": "Hyperlink", "position": 9, "data_type": "hyperlink", "mandatory": "Y", "value": "https://nxt.api.q2pay.co.in/api/transaction_auth_matrix.json" }, { "name": "File", "position": 10, "data_type": "upload", "mandatory": "Y", "value": { "id": "c68cc4e7d54381cc46384f194c09ce2c.png", "storage": "cache", "metadata": { "filename": "favicon.png", "size": 62260, "mime_type": "image/png" } } }, { "name": "Date", "position": 11, "data_type": "date", "mandatory": "Y", "value": "23/04/2023" }, { "name": "Year", "position": 12, "data_type": "year", "mandatory": "Y", "value": "2024" }, { "name": "Month_Year", "position": 13, "data_type": "month_year", "mandatory": "Y", "value": "12/2024" }, { "name": "Multiselect", "position": 14, "data_type": "multi_select_list", "mandatory": "Y", "data": [ "ab", "abc", "abcd" ], "value": [ "ab", "abc" ] }, { "name": "Quantity", "position": 15, "data_type": "quantity", "mandatory": "Y", "value": 5 }, { "name": "DateRange", "position": 16, "data_type": "date_range", "mandatory": "Y", "value": { "start_date": "21/08/2023", "end_date": "21/10/2024" } }, { "name": "YearRange", "position": 17, "data_type": "from_year_to_year", "mandatory": "Y", "value": { "from": 2030, "to": 2034 } } ] } } http = Net::HTTP.new(uri.host, uri.port) http.use_ssl = true request = Net::HTTP::Post.new(uri.request_uri, header) request.body = body.to_json response = http.request(request)

const data = {
    "amount" : "67000.0",
    "owner_account_id":"xxxxxxxx-xxxx-xxxx-xxxxxx",
    "beneficiary_account_id" :"xxxxxxxx-xxxx-xxxx-xxxxxx",
    "payment_method":"RTGS",
    "category": "Beneficiary",
    "labels": ["building expenses"],
    "confidential_transaction": "true",
    "additional_data": {
    "data": [
      {
        "name": "month",
        "position": 1,
        "data_type": "string",
        "mandatory": "Y",
        "value": "Mon"
      },
      {
        "name": "leaves",
        "position": 2,
        "data_type": "numeric",
        "mandatory": "Y",
        "value": 1233
      },
      {
        "name": "PAN",
        "position": 3,
        "data_type": "string",
        "mandatory": "N",
        "value": "Pan no"
      },
      {
        "data": [
          "Pradeep",
          "Sachin",
          "Sewaram"
        ],
        "name": "Accountants",
        "position": 4,
        "data_type": "list",
        "mandatory": "N",
        "value": "Pradeep"
      },
      {
        "name": "month 1",
        "position": 5,
        "data_type": "time",
        "mandatory": "Y",
        "value": "09:34"
      },
      {
        "name": "Day",
        "position": 6,
        "data_type": "day",
        "mandatory": "Y",
        "value": "Monday"
      },
      {
        "name": "Dummy",
        "position": 7,
        "data_type": "toggle",
        "mandatory": "Y",
        "value": true
      },
      {
        "name": "Month",
        "position": 8,
        "data_type": "month",
        "mandatory": "Y",
        "value": "March"
      },
      {
        "name": "Hyperlink",
        "position": 9,
        "data_type": "hyperlink",
        "mandatory": "Y",
        "value": "https://nxt.api.q2pay.co.in/api/transaction_auth_matrix.json"
      },
      {
        "name": "File",
        "position": 10,
        "data_type": "upload",
        "mandatory": "Y",
        "value": {
          "id": "c68cc4e7d54381cc46384f194c09ce2c.png",
          "storage": "cache",
          "metadata": {
            "filename": "favicon.png",
            "size": 62260,
            "mime_type": "image/png"
          }
        }
      },
      {
        "name": "Date",
        "position": 11,
        "data_type": "date",
        "mandatory": "Y",
        "value": "23/04/2023"
      },
      {
        "name": "Year",
        "position": 12,
        "data_type": "year",
        "mandatory": "Y",
        "value": "2024"
      },
      {
        "name": "Month_Year",
        "position": 13,
        "data_type": "month_year",
        "mandatory": "Y",
        "value": "12/2024"
      },
      {
        "name": "Multiselect",
        "position": 14,
        "data_type": "multi_select_list",
        "mandatory": "Y",
        "data": [
          "ab",
          "abc",
          "abcd"
        ],
        "value": [
          "ab",
          "abc"
        ]
      },
      {
        "name": "Quantity",
        "position": 15,
        "data_type": "quantity",
        "mandatory": "Y",
        "value": 5
      },
      {
        "name": "DateRange",
        "position": 16,
        "data_type": "date_range",
        "mandatory": "Y",
        "value": {
          "start_date": "21/08/2023",
          "end_date": "21/10/2024"
        }
      },
      {
        "name": "YearRange",
        "position": 17,
        "data_type": "from_year_to_year",
        "mandatory": "Y",
        "value": {
          "from": 2030,
          "to": 2034
        }
      }
    ]
  }
};

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

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

{
    "amount" : "67000.0",
    "owner_account_id":"xxxxxxxx-xxxx-xxxx-xxxxxx",
    "beneficiary_account_id" :"xxxxxxxx-xxxx-xxxx-xxxxxx",
    "payment_method":"RTGS",
    "category": "Beneficiary",
    "labels": ["building expenses"],
    "confidential_transaction": "true",
    "additional_data": {
    "data": [
      {
        "name": "month",
        "position": 1,
        "data_type": "string",
        "mandatory": "Y",
        "value": "Mon"
      },
      {
        "name": "leaves",
        "position": 2,
        "data_type": "numeric",
        "mandatory": "Y",
        "value": 1233
      },
      {
        "name": "PAN",
        "position": 3,
        "data_type": "string",
        "mandatory": "N",
        "value": "Pan no"
      },
      {
        "data": [
          "Pradeep",
          "Sachin",
          "Sewaram"
        ],
        "name": "Accountants",
        "position": 4,
        "data_type": "list",
        "mandatory": "N",
        "value": "Pradeep"
      },
      {
        "name": "month 1",
        "position": 5,
        "data_type": "time",
        "mandatory": "Y",
        "value": "09:34"
      },
      {
        "name": "Day",
        "position": 6,
        "data_type": "day",
        "mandatory": "Y",
        "value": "Monday"
      },
      {
        "name": "Dummy",
        "position": 7,
        "data_type": "toggle",
        "mandatory": "Y",
        "value": true
      },
      {
        "name": "Month",
        "position": 8,
        "data_type": "month",
        "mandatory": "Y",
        "value": "March"
      },
      {
        "name": "Hyperlink",
        "position": 9,
        "data_type": "hyperlink",
        "mandatory": "Y",
        "value": "https://nxt.api.q2pay.co.in/api/transaction_auth_matrix.json"
      },
      {
        "name": "File",
        "position": 10,
        "data_type": "upload",
        "mandatory": "Y",
        "value": {
          "id": "c68cc4e7d54381cc46384f194c09ce2c.png",
          "storage": "cache",
          "metadata": {
            "filename": "favicon.png",
            "size": 62260,
            "mime_type": "image/png"
          }
        }
      },
      {
        "name": "Date",
        "position": 11,
        "data_type": "date",
        "mandatory": "Y",
        "value": "23/04/2023"
      },
      {
        "name": "Year",
        "position": 12,
        "data_type": "year",
        "mandatory": "Y",
        "value": "2024"
      },
      {
        "name": "Month_Year",
        "position": 13,
        "data_type": "month_year",
        "mandatory": "Y",
        "value": "12/2024"
      },
      {
        "name": "Multiselect",
        "position": 14,
        "data_type": "multi_select_list",
        "mandatory": "Y",
        "data": [
          "ab",
          "abc",
          "abcd"
        ],
        "value": [
          "ab",
          "abc"
        ]
      },
      {
        "name": "Quantity",
        "position": 15,
        "data_type": "quantity",
        "mandatory": "Y",
        "value": 5
      },
      {
        "name": "DateRange",
        "position": 16,
        "data_type": "date_range",
        "mandatory": "Y",
        "value": {
          "start_date": "21/08/2023",
          "end_date": "21/10/2024"
        }
      },
      {
        "name": "YearRange",
        "position": 17,
        "data_type": "from_year_to_year",
        "mandatory": "Y",
        "value": {
          "from": 2030,
          "to": 2034
        }
      }
    ]
  }
}

SUCCESS RESPONSE The request returns JSON structured as shown below on successful creation of Beneficiary Transactions

{
  "status": true,
  "total_count": 1,
  "total_amount": "512.0",
  "transaction": [
    {
      "total_amount": "512.0",
      "txn_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
      "amount": "512.0",
      "category": "Salary",
      "internal_transaction": false,
      "lifecycle_status": "pending",
      "payment_method":"RTGS",
      "txn_initiator": "Akshay Rangnekar",
      "approved": "N",
      "labels": ["building expenses"],
      "confidential_transaction": "Y",
      "approved_at": 0,
      "payment_charge": "0.0",
      "tax_amount": "0.0",
      "entity_id": "ABC12",
      "rejected": false,
      "refactored": false,
      "beneficiary_account_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
      "beneficiary_account_name": "Q2PAY TECHNOLOGIES P",
      "beneficiary_account_bank_acc_no": "12345678",
      "beneficiary_account_ifsc_code": "HDFC0000231",
      "beneficiary_account_bank_name": "HDFC Bank",
      "beneficiary_account_approval_status": "approved",
      "owner_account_id":"xxxxxxxx-xxxx-xxxx-xxxxxx",
      "owner_account_bank_acc_no":"9482940300",
      "owner_account_ifsc_code":"ICIC0000112",
      "owner_account_bank_name":"ICICI Bank",
      "owner_account_type":"Current Account",
      "owner_account_balance":"1500.0",
      "owner_account_balance_last_fetched_at":"xxxxxxxx",
      "owner_account_balance_last_fetched_at_in_words":"less than a minute ago"
      "additional_data": {
        "data": [
          {
            "name": "month",
            "position": 1,
            "data_type": "string",
            "mandatory": "Y",
            "value": "Mon"
          },
          {
            "name": "leaves",
            "position": 2,
            "data_type": "numeric",
            "mandatory": "Y",
            "value": 1233
          },
          {
            "name": "PAN",
            "position": 3,
            "data_type": "string",
            "mandatory": "N",
            "value": "Pan no"
          },
          {
            "data": [
              "Pradeep",
              "Sachin",
              "Sewaram"
            ],
            "name": "Accountants",
            "position": 4,
            "data_type": "list",
            "mandatory": "N",
            "value": "Pradeep"
          },
          {
            "name": "month 1",
            "position": 5,
            "data_type": "time",
            "mandatory": "Y",
            "value": "09:34"
          },
          {
            "name": "Day",
            "position": 6,
            "data_type": "day",
            "mandatory": "Y",
            "value": "Monday"
          },
          {
            "name": "Dummy",
            "position": 7,
            "data_type": "toggle",
            "mandatory": "Y",
            "value": true
          },
          {
            "name": "Month",
            "position": 8,
            "data_type": "month",
            "mandatory": "Y",
            "value": "March"
          },
          {
            "name": "Hyperlink",
            "position": 9,
            "data_type": "hyperlink",
            "mandatory": "Y",
            "value": "https://nxt.api.q2pay.co.in/api/transaction_auth_matrix.json"
            },
            {
              "name": "File",
              "position": 10,
              "data_type": "upload",
              "mandatory": "Y",
                "value": {
                  "id": "c68cc4e7d54381cc46384f194c09ce2c.png",
                  "storage": "cache",
                  "metadata": {
                    "filename": "favicon.png",
                    "size": 62260,
                    "mime_type": "image/png"
                  },
                  "file_url": "https://your-bucket.s3.amazonaws.com/store/c68cc4e7d54381cc46384f194c09ce2c.png"
                }
              },
          {
            "name": "Date",
            "position": 11,
            "data_type": "date",
            "mandatory": "Y",
            "value": "23/04/2023"
          },
          {
            "name": "Year",
            "position": 12,
            "data_type": "year",
            "mandatory": "Y",
            "value": "2024"
          },
          {
            "name": "Month_Year",
            "position": 13,
            "data_type": "month_year",
            "mandatory": "Y",
            "value": "12/2024"
          },
          {
            "name": "Multiselect",
            "position": 14,
            "data_type": "multi_select_list",
            "mandatory": "Y",
            "data": [
              "ab",
              "abc",
              "abcd"
            ],
            "value": [
               "ab",
               "abc"
            ]
          },
          {
            "name": "Quantity",
            "position": 15,
            "data_type": "quantity",
            "mandatory": "Y",
            "value": 5
          },
          {
            "name": "DateRange",
            "position": 16,
            "data_type": "date_range",
            "mandatory": "Y",
            "value": {
              "start_date": "21/08/2023",
              "end_date": "21/10/2024"
            }
          },
          {
            "name": "YearRange",
            "position": 17,
            "data_type": "from_year_to_year",
            "mandatory": "Y",
            "value": {
              "from": 2030,
              "to": 2034
            }
          }
        ]
      },
      "created_on": "xxxxxxxx",
      "last_updated_user_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
      "last_updated_status": "Approved",
      "last_updated_timestamp": "xxxxxxxx",
      "last_updated_user_name": "Akshay Rangnekar",
      "distribution_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
      "distribution_identifier": "xxxxxxxxxxxxxxxxxxxxxxxx",
      "distribution_settlement_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
      "distribution_bank": "HDFC Bank",
      "distribution_amount": "512.0",
      "distribution_mode_of_payment": "NEFT",
      "distribution_lifecycle_status": "created",
      "distribution_approved": false,
      "distribution_approval_strategy": "system",
      "distribution_logs": [
        {
          "action": "Created",
          "user_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
          "timestamp": "2024-01-12T10:09:53.886Z",
          "user_full_name": "Akshay Rangnekar"
        }
      ],
      "logs": [
        {
          "action": "Created",
          "user_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
          "user_full_name": "Akshay Rangnekar",
          "timestamp": "2024-01-12T10:09:53.714Z",
          "request_ip": "127.0.0.1",
          "last_used": "2024-01-12T10:09:53.679Z",
          "logged_in_flag": true,
          "logged_in_time": "2024-01-11T10:27:49.369Z",
          "app_version_name": "1.43",
          "app_version_code": "54",
          "platform": "android",
          "model": "Android SDK built for x86",
          "manufacturer": "unknown",
          "brand": "Android",
          "serial_number": "EMULATOR32X1X14X0",
          "os_version": "6.0",
          "sdk_version": "23",
          "ip_address": "127.0.0.1",
          "is_primary": false,
          "is_verified": false,
          "first_name": "Akshay",
          "last_name": "Rangnekar"
        },
        {
          "action": "Approved",
          "user_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
          "user_full_name": "Akshay Rangnekar",
          "authorization_rule": "Director~1",
          "final_approval": true,
          "timestamp": "2024-01-12T10:09:53.734Z",
          "request_ip": "127.0.0.1",
          "last_used": "2024-01-12T10:09:53.679Z",
          "logged_in_flag": true,
          "logged_in_time": "2024-01-11T10:27:49.369Z",
          "app_version_name": "1.43",
          "app_version_code": "54",
          "platform": "android",
          "model": "Android SDK built for x86",
          "manufacturer": "unknown",
          "brand": "Android",
          "serial_number": "EMULATOR32X1X14X0",
          "os_version": "6.0",
          "sdk_version": "23",
          "ip_address": "127.0.0.1",
          "is_primary": false,
          "is_verified": false,
          "first_name": "Akshay",
          "last_name": "Rangnekar"
        }
      ]
    }
  ],
  "title": {
    "records": 1,
    "current_page": 1,
    "total_pages": 1,
    "page_item_count": 1
  }
}

ERROR RESPONSE The request returns JSON structured as shown below for errors related to a Beneficiary Transaction.

{
    "status":false, 
    "errors":{
        "beneficiary_account":[
            "Beneficiary account is not approved"
        ],
        "beneficiary_account": [
            "Beneficiary account must exist",
            "Beneficiary account is not valid for the transaction"
        ], 
        "base":[
            "Internal category is not valid for the beneficiary transaction"
        ],
        "owner_account": [
            "Owner account must exist"
        ],
        "amount":[
            "Amount can't be blank"
        ],
        "base":[
            "Amount is not valid for RTGS transaction"
        ],
        "base":[
            "Amount is not valid for NEFT transaction"
        ],
        "base":[
            "Amount is not valid for IMPS transaction"
        ],
        "category":[
            "Category can't be blank", 
            "Category  is not valid/active for the transaction type",
            "Category  is not valid for the transaction type",
            "Category not found"
        ],
        "base":[
            "Beneficiary Account is not yet activated for disbursement. Kindly contact support"
        ],
        "base":[
            "Beneficiary Account is archived. Transaction cannot be created. Kindly contact support"
        ],
        "base":[
            "No Auth Matrix Rule found for the transaction"
        ],
        "base": [
            "Connected banking not active for owner account. Transaction cannot be created. Kindly contact support"
        ],
        "base": [
            "Beneficiary Account doesn't belongs to your entity."
        ],
        "base": [
            "Owner Account doesn't belongs to your entity."
        ],
        "base": [
            "Owner Account is pending. Transaction cannot be created. Kindly contact support"
        ],
        "base": [
            "Owner & Beneficiary Bank Account number are same. Transaction cannot be created. Kindly contact support"
        ],
        "payment_method": [
            "Payment method is not included in the list"
        ],
        "additional_data":
        [
            "Additional data Data data when supplied cannot be blank",
            "Additional data has settings declared under data key/s",
            "Additional data cannot be sent blank for the 'Beneficiary' transaction category",
            "Additional data should be sent blank for the 'Mobile Bill' transaction category",
            "Additional data 'data' is malformed",
            "Additional data configuration is missing / unknown for 'name' key",
            "Additional data 'data' must have position as 1, 2, 3, 4, ...",
            "Additional data 'data' must have unique position in array",
            "Additional data 'data' cannot be declared as empty",
            "Additional data 'data' must have unique value for each name field in array",
            "Additional data 'data' : {\"hello\"=>\"abc\"} must have name, data_type, mandatory and position keys in each hash",
            "Additional data 'data' : {\"name\"=>\"month\", \"value\"=>10, \"position\"=>1, \"data_type\"=>\"string\", \"mandatory\"=>\"Y\"} must have matching value as string as declared in transaction category configuration",
            "Additional data 'data' : {\"name\"=>\"month\", \"position\"=>\"1\", \"data_type\"=>\"string\", \"mandatory\"=>\"Y\", \"value\"=>\"Mon\"} must have position as an integer",
            "Additional data 'data' : {\"name\"=>\"month\", \"position\"=>1, \"data_type\"=>\"list\", \"mandatory\"=>\"Y\", \"value\"=>\"Wed\", \"data\"=>[\"Mon\", \"Tue\"]} must have value as an array of strings",
            "Additional data 'data' : {\"name\"=>\"Accountants\", \"position\"=>4, \"data_type\"=>\"list\", \"mandatory\"=>\"N\", \"value\"=>\"Pradeep, Sachin, Sewaram\"} must have data as an array of strings",
            "Additional data 'data' : {\"name\"=>\"Accountants\", \"position\"=>4, \"data_type\"=>\"list\", \"mandatory\"=>\"N\", \"value\"=>\"Pradeep, Sachin, Sewaram\"} must have value from '[\"Pradeep\", \"Sachin\", \"Sewaram\"]' which is declared in the category configuration",
            "Additional data 'data' : {\"name\"=>\"month\", \"position\"=>1, \"data_type\"=>\"problem\", \"mandatory\"=>\"Y\", \"value\"=>\"Mon\"} must have data_type as one of the following: string, numeric, list, date, year, month_year, time, day, toggle, month, hyperlink, upload, multi_select_list, quantity, date_range, from_year_to_year",
            "Additional data 'data' : {\"name\"=>\"Accountants\", \"position\"=>4, \"data_type\"=>\"list\", \"mandatory\"=>\"N\", \"data\"=>[\"Pradeep\", \"Sachin\", \"Sewaram\"]} must have name, data_type, mandatory, value and position keys in each hash",
            "Additional data 'data' : {\"name\"=>\"leaves\", \"position\"=>2, \"data_type\"=>\"numeric\", \"mandatory\"=>\"N\", \"value\"=>12} must have matching value as numeric as declared in transaction category configuration",
            "Additional data 'data' : {\"name\"=>\"month\", \"position\"=>1, \"data_type\"=>\"problem\", \"mandatory\"=>\"Y\", \"value\"=>\"Mon\"} must have data_type 'string' as declared in category configuration",
            "Additional data 'data' : {\"name\"=>\"month\", \"position\"=>1, \"data_type\"=>\"string\", \"mandatory\"=>\"Y\"} must have a value as it is a mandatory field",
            "Additional data 'data' : {\"name\"=>\"month\", \"position\"=>1, \"data_type\"=>\"string\", \"problem\"=>\"Y\", \"value\"=>\"Mon\"} must have name, data_type, mandatory and position keys in each hash",
            "Additional data 'data' : {\"name\"=>\"month\", \"position\"=>1, \"data_type\"=>\"string\", \"mandatory\"=>\"Y\", \"value\"=>1234} must have matching value as string as declared in transaction category configuration",
            "Additional data 'data' : {\"name\"=>\"month\", \"position\"=>1, \"data_type\"=>\"string\", \"problem\"=>\"Y\", \"value\"=>\"Mon\"} must have mandatory as one of the following: Y, N",
            "Additional data 'data' : {\"name\"=>\"month\", \"position\"=>1, \"data_type\"=>\"string\", \"problem\"=>\"Y\", \"value\"=>\"Mon\"} must have mandatory 'Y' as declared in category configuration",
            "Additional data 'data' : {\"name\"=>\"yearly bill\", \"position\"=>3, \"data_type\"=>\"year\", \"mandatory\"=>\"Y\", \"value\"=>\"24\"} must have matching value as year as declared in transaction category configuration",
            "Additional data 'data' : {\"name\"=>\"Mothly bill\", \"position\"=>1, \"data_type\"=>\"month_year\", \"mandatory\"=>\"Y\", \"value\"=>\"Dec 2024\"} must have matching value as year as declared in transaction category configuration",
            "Additional data 'data' : {\"name\"=>\"yearly bill\", \"position\"=>3, \"data_type\"=>\"year\", \"mandatory\"=>\"Y\"} must have a value as it is a mandatory field",
            "Additional data [\"id\", \"storage\", \"metadata\"] cannot be declared as empty",
            "Additional data [\"filename\", \"size\", \"mime_type\"] must be as declared in transaction category configuration",
            "Additional data 'data' : {\"name\"=>\"Multiselect\", \"position\"=>7, \"data_type\"=>\"multi_select_list\", \"mandatory\"=>\"Y\", \"value\"=>\"[\n          test, \n          2\n        ]\"} must have matching value as multi select as declared in transaction category configuration",
            "Additional data 'data' : {\"name\"=>\"Quantity\", \"position\"=>8, \"data_type\"=>\"quantity\", \"mandatory\"=>\"Y\", \"value\"=>5.0} must have matching value as quantity as declared in transaction category configuration",
            "Additional data 'data' : {\"name\"=>\"DateRange\", \"position\"=>9, \"data_type\"=>\"date_range\", \"mandatory\"=>\"Y\", \"value\"=>\"21/09/2024\"} must have matching value as date_range as declared in transaction category configuration",
            "Additional data 'data' : {\"name\"=>\"DateRange\", \"position\"=>9, \"data_type\"=>\"date_range\", \"mandatory\"=>\"Y\", \"value\"=>{}} must have a value as it is a mandatory field",
            "Additional data [\"start_date\", \"end_date\"] must be as declared in transaction category configuration",
            "Additional data {\"start_date\"=>\" \", \"end_date\"=>\"21/09/2024\"} must have matching value as date_range as declared in transaction category configuration",
            "Additional data {\"from\"=>\"2023\", \"to\"=>\"2024\"} must have matching value as from_year_to_year as declared in transaction category configuration",
            "Additional data [\"from\", \"to\"] must be as declared in transaction category configuration"
        ]
} }

This endpoint will create a Beneficiary Transaction.

UAT HTTP Request

POST https://nxt.api.q2pay.co.in/api/transactions/beneficiary

PRODUCTION HTTP Request

POST https://nxt.api.q2pay.in/api/transactions/beneficiary

Query Parameters

Parameter Default Description Required Sample
amount N.A. amount for beneficiary transaction Yes 67000.0
beneficiary_account_id N.A. beneficiary account id for beneficiary transaction Yes xxxxxxxx-xxxx-xxxx-xxxxxx
owner_account_id N.A. owner account id for beneficiary transaction Yes xxxxxxxx-xxxx-xxxx-xxxxxx
category N.A. category for beneficiary transaction Yes Beneficiary
additional_data N.A. Additional data for beneficiary transaction Yes "data": [ {"name": "month", "position": 1,"data_type": "string","mandatory": "Y", "value": "Mon"}]
distribution_remark N.A. distribution remark for beneficiary transaction No dec month
payment_method N.A. payment method for beneficiary transaction optional RTGS
confidential_transaction N.A. confidential transaction for beneficiary transaction optional true, false
labels N.A labels for owner account No ["building expense"]

Service Details

Service ID Description
CBeneficiaryTxn Create Beneficiary Transaction

Approve Beneficiary Transaction

curl -X PUT "https://<environmenturl>/api/transactions/beneficiary/approve"
  -H "X-Api-Key: <your secure token>"
  -H "Content-Type: application/json"
  -d "{ 
    "txn_id":  ["xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx"]
      }"

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

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

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

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

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

{
  "txn_id":  ["xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx"]
}

The below example can be sent as a request to the API for multiple transaction id.

{
  "txn_id":  ["xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx","xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx"]
}

SUCCESS RESPONSE The request returns JSON structured as shown below on successfully approving Beneficiary Transactions

{
  "status": true,
  "total_count": 1,
  "total_amount": "25.0",
  "transactions": [
    {
      "total_amount": "25.0",
      "txn_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
      "amount": "25.0",
      "category": "Mobile Bill",
      "internal_transaction": false,
      "lifecycle_status": "approved",
      "distribution_remark": "Testing",
      "txn_initiator": "Sneha Gaikwad",
      "approved": "Y",
      "confidential_transaction": "Y",
      "approved_at": "xxxxxxxx",
      "payment_charge": "0.0",
      "tax_amount": "0.0",
      "entity_id": "ABC12",
      "rejected": false,
      "refactored": false,
      "beneficiary_account_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
      "beneficiary_account_name": "ANKITA ANIL GAYKAR",
      "beneficiary_account_bank_acc_no": "123456789",
      "beneficiary_account_ifsc_code": "SBIN0012346",
      "beneficiary_account_bank_name": "State Bank of India",
      "beneficiary_account_approval_status": "approved",
      "owner_account_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
      "owner_account_bank_acc_no": "000198765434",
      "owner_account_ifsc_code": "HDFC0000220",
      "owner_account_bank_name": "HDFC Bank",
      "owner_account_type": "Current Account",
      "owner_account_balance": "0.0",
      "owner_account_balance_last_fetched_at": "xxxxxxxx",
      "owner_account_balance_last_fetched_at_in_words": "about 4 hours ago",
      "additional_data": {
        "data": [
          {
            "name": "month",
            "position": 1,
            "data_type": "string",
            "mandatory": "Y",
            "value": "Mon"
          },
          {
            "name": "leaves",
            "position": 2,
            "data_type": "numeric",
            "mandatory": "Y",
            "value": 1233
          },
          {
            "name": "PAN",
            "position": 3,
            "data_type": "string",
            "mandatory": "N",
            "value": "Pan no"
          },
          {
            "data": [
              "Pradeep",
              "Sachin",
              "Sewaram"
            ],
            "name": "Accountants",
            "position": 4,
            "data_type": "list",
            "mandatory": "N",
            "value": "Pradeep"
          },
          {
            "name": "month 1",
            "position": 5,
            "data_type": "time",
            "mandatory": "Y",
            "value": "09:34"
          },
          {
            "name": "Day",
            "position": 6,
            "data_type": "day",
            "mandatory": "Y",
            "value": "Monday"
          },
          {
            "name": "Dummy",
            "position": 7,
            "data_type": "toggle",
            "mandatory": "Y",
            "value": true
          },
          {
            "name": "Month",
            "position": 8,
            "data_type": "month",
            "mandatory": "Y",
            "value": "March"
          },
          {
            "name": "Hyperlink",
            "position": 9,
            "data_type": "hyperlink",
            "mandatory": "Y",
            "value": "https://nxt.api.q2pay.co.in/api/transaction_auth_matrix.json"
            },
            {
              "name": "File",
              "position": 10,
              "data_type": "upload",
              "mandatory": "Y",
                "value": {
                  "id": "c68cc4e7d54381cc46384f194c09ce2c.png",
                  "storage": "cache",
                  "metadata": {
                    "filename": "favicon.png",
                    "size": 62260,
                    "mime_type": "image/png"
                  },
                  "file_url": "https://your-bucket.s3.amazonaws.com/store/c68cc4e7d54381cc46384f194c09ce2c.png"
                }
              },
          {
            "name": "Date",
            "position": 11,
            "data_type": "date",
            "mandatory": "Y",
            "value": "23/04/2023"
          },
          {
            "name": "Year",
            "position": 12,
            "data_type": "year",
            "mandatory": "Y",
            "value": "2024"
          },
          {
            "name": "Month_Year",
            "position": 13,
            "data_type": "month_year",
            "mandatory": "Y",
            "value": "12/2024"
          },
          {
            "name": "Multiselect",
            "position": 14,
            "data_type": "multi_select_list",
            "mandatory": "Y",
            "data": [
              "ab",
              "abc",
              "abcd"
            ],
            "value": [
               "ab",
               "abc"
            ]
          },
          {
            "name": "Quantity",
            "position": 15,
            "data_type": "quantity",
            "mandatory": "Y",
            "value": 5
          },
          {
            "name": "DateRange",
            "position": 16,
            "data_type": "date_range",
            "mandatory": "Y",
            "value": {
              "start_date": "21/08/2023",
              "end_date": "21/10/2024"
            }
          },
          {
            "name": "YearRange",
            "position": 17,
            "data_type": "from_year_to_year",
            "mandatory": "Y",
            "value": {
              "from": 2030,
              "to": 2034
            }
          }
        ]
      },
      "created_on": "xxxxxxxx",
      "last_updated_user_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
      "last_updated_status": "Approved",
      "last_updated_timestamp": "xxxxxxxx",
      "last_updated_user_name": "sidharth shukla",
      "distribution_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
      "distribution_identifier": "xxxxxxxxxxxxxxxxxxxxxxxx",
      "distribution_settlement_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
      "distribution_bank": "State Bank of India",
      "distribution_amount": "25.0",
      "distribution_mode_of_payment": "NEFT",
      "distribution_lifecycle_status": "created",
      "distribution_approved": false,
      "distribution_approval_strategy": "system",
      "distribution_logs": [
        {
          "action": "Created",
          "user_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
          "timestamp": "2024-04-10T09:55:17.671Z",
          "user_full_name": "sidharth shukla",
          "user_platform_details": null
        }
      ],
      "logs": [
        {
          "action": "Created",
          "user_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
          "platform": "web",
          "last_name": "Gaikwad",
          "last_used": "2024-04-10T09:51:29.895Z",
          "timestamp": "2024-04-10T09:51:29.923Z",
          "first_name": "Sneha",
          "ip_address": "103.212.154.226",
          "is_primary": false,
          "os_version": "Windows 10",
          "request_ip": "103.212.154.226",
          "is_verified": false,
          "browser_name": "google chrome",
          "logged_in_flag": true,
          "logged_in_time": "2024-04-10T09:48:56.117Z",
          "user_full_name": "Sneha Gaikwad"
        },
        {
          "action": "Approved",
          "user_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
          "platform": "web",
          "last_name": "shukla",
          "last_used": "2024-04-10T09:55:17.533Z",
          "timestamp": "2024-04-10T09:55:17.604Z",
          "first_name": "sidharth",
          "ip_address": "103.212.154.226",
          "is_primary": false,
          "os_version": "Windows 10",
          "request_ip": "103.212.154.226",
          "is_verified": false,
          "browser_name": "google chrome",
          "final_approval": true,
          "logged_in_flag": true,
          "logged_in_time": "2024-04-10T09:55:06.039Z",
          "user_full_name": "sidharth shukla",
          "authorization_rule": "Approver~1"
        }
      ]
    }
  ],
  "title": {
    "records": 1,
    "current_page": 1,
    "total_pages": 1,
    "page_item_count": 50
  }
}

ERROR RESPONSE The request returns JSON structured as shown below for errors related to Beneficiary Transactions.

{
    "status":false,
    "action":"Not performed",
    "errors":{
        "base":[
            "Invalid / Insufficient parameters"
        ],
        "base":[
            "No transactions found for transaction ids: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx"
        ],
"base":[ "All transactions do not belong to the same entity / Few transactions are already approved or are abandoned/cancelled" ],
"base":[ { "id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx", "reason":[ "User is not authorized to approve transaction." ] } ], "base": [ { "id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx", "errors": "Beneficiary account is not approved" } ], "base":[ { "id":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx", "errors":[ { "reason":"User is not authorized to approve (duplicate approval)" } ] } ]
} }

This endpoint will approve Beneficiary Transactions

UAT HTTP Request

PUT https://nxt.api.q2pay.co.in/api/transactions/beneficiary/approve

PRODUCTION HTTP Request

PUT https://nxt.api.q2pay.in/api/transactions/beneficiary/approve

Query Parameters

Parameter Default Description Required Sample
txn_id N.A. txn id for beneficiary transaction Yes [xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxx ,xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxx]

Service Details

Service ID Description
ABeneficiaryTxn Approve Beneficiary Transaction

Reject Beneficiary Transaction

curl -X PUT "https://<environmenturl>/api/transactions/beneficiary/reject"
  -H "X-Api-Key: <your secure token>"
  -H "Content-Type: application/json"
  -d "{ 
    "txn_id":  ["xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx"],
    "reason" : "Another transaction is already in progress"
      }"

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

uri = URI.parse("https://<environmenturl>/api/transactions/beneficiary/reject") header = {'X-Api-Key' => '<your secure token>', 'Content-Type' => 'application/json'} body = { "txn_id": ["xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx"], "reason" : "Another transaction is already in progress" } http = Net::HTTP.new(uri.host, uri.port) http.use_ssl = true request = Net::HTTP::Put.new(uri.request_uri, header) request.body = body.to_json response = http.request(request)

const data = {
   "txn_id":  ["xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx"],
   "reason" : "Another transaction is already in progress"
};

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

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

{
  "txn_id":  ["xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx"],
  "reason" : "Another transaction is already in progress"
}

The below example can be sent as a request to the API for multiple transaction id.

{
  "txn_id":  ["xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx","xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx"],
  "reason" : "Another transaction is already in progress"
}

SUCCESS RESPONSE The request returns JSON structured like below on successful Beneficiary transaction reject

{
  "status": true,
  "total_count": 1,
  "total_amount": "25.0",
  "transactions": [
    {
      "total_amount": "25.0",
      "txn_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
      "amount": "25.0",
      "category": "Mobile Bill",
      "internal_transaction": false,
      "lifecycle_status": "rejected",
      "distribution_remark": "Testing",
      "txn_initiator": "Sneha Gaikwad",
      "approved": "N",
      "confidential_transaction": "N",
      "approved_at": 0,
      "payment_charge": "0.0",
      "tax_amount": "0.0",
      "entity_id": "ABC12",
      "rejected": true,
      "rejection_reason": "update transaction method",
      "rejected_by": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
      "rejected_at": "2024-04-10T10:18:09.447Z",
      "refactored": false,
      "beneficiary_account_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
      "beneficiary_account_name": "ANKITA ANIL GAYKAR",
      "beneficiary_account_bank_acc_no": "1234567899",
      "beneficiary_account_ifsc_code": "SBIN2333445",
      "beneficiary_account_bank_name": "State Bank of India",
      "beneficiary_account_approval_status": "approved",
      "owner_account_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
      "owner_account_bank_acc_no": "1111999876544",
      "owner_account_ifsc_code": "HDFC0000223",
      "owner_account_bank_name": "HDFC Bank",
      "owner_account_type": "Current Account",
      "owner_account_balance": "0.0",
      "owner_account_balance_last_fetched_at": "xxxxxxxx",
      "owner_account_balance_last_fetched_at_in_words": "about 4 hours ago",
      "additional_data": {
        "data": [
          {
            "name": "month",
            "position": 1,
            "data_type": "string",
            "mandatory": "Y",
            "value": "Mon"
          },
          {
            "name": "leaves",
            "position": 2,
            "data_type": "numeric",
            "mandatory": "Y",
            "value": 1233
          },
          {
            "name": "PAN",
            "position": 3,
            "data_type": "string",
            "mandatory": "N",
            "value": "Pan no"
          },
          {
            "data": [
              "Pradeep",
              "Sachin",
              "Sewaram"
            ],
            "name": "Accountants",
            "position": 4,
            "data_type": "list",
            "mandatory": "N",
            "value": "Pradeep"
          },
          {
            "name": "month 1",
            "position": 5,
            "data_type": "time",
            "mandatory": "Y",
            "value": "09:34"
          },
          {
            "name": "Day",
            "position": 6,
            "data_type": "day",
            "mandatory": "Y",
            "value": "Monday"
          },
          {
            "name": "Dummy",
            "position": 7,
            "data_type": "toggle",
            "mandatory": "Y",
            "value": true
          },
          {
            "name": "Month",
            "position": 8,
            "data_type": "month",
            "mandatory": "Y",
            "value": "March"
          },
          {
            "name": "Hyperlink",
            "position": 9,
            "data_type": "hyperlink",
            "mandatory": "Y",
            "value": "https://nxt.api.q2pay.co.in/api/transaction_auth_matrix.json"
          },
            {
              "name": "File",
              "position": 10,
              "data_type": "upload",
              "mandatory": "Y",
                "value": {
                  "id": "c68cc4e7d54381cc46384f194c09ce2c.png",
                  "storage": "cache",
                  "metadata": {
                    "filename": "favicon.png",
                    "size": 62260,
                    "mime_type": "image/png"
                  },
                  "file_url": "https://your-bucket.s3.amazonaws.com/store/c68cc4e7d54381cc46384f194c09ce2c.png"
                }
              },
          {
            "name": "Date",
            "position": 11,
            "data_type": "date",
            "mandatory": "Y",
            "value": "23/04/2023"
          },
          {
            "name": "Year",
            "position": 12,
            "data_type": "year",
            "mandatory": "Y",
            "value": "2024"
          },
          {
            "name": "Month_Year",
            "position": 13,
            "data_type": "month_year",
            "mandatory": "Y",
            "value": "12/2024"
          },
          {
            "name": "Multiselect",
            "position": 14,
            "data_type": "multi_select_list",
            "mandatory": "Y",
            "data": [
              "ab",
              "abc",
              "abcd"
            ],
            "value": [
               "ab",
               "abc"
            ]
          },
          {
            "name": "Quantity",
            "position": 15,
            "data_type": "quantity",
            "mandatory": "Y",
            "value": 5
          },
          {
            "name": "DateRange",
            "position": 16,
            "data_type": "date_range",
            "mandatory": "Y",
            "value": {
              "start_date": "21/08/2023",
              "end_date": "21/10/2024"
            }
          },
          {
            "name": "YearRange",
            "position": 17,
            "data_type": "from_year_to_year",
            "mandatory": "Y",
            "value": {
              "from": 2030,
              "to": 2034
            }
          }
        ]
      },
      "created_on": "xxxxxxxx",
      "last_updated_user_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
      "last_updated_status": "Rejected",
      "last_updated_timestamp": "xxxxxxxx",
      "last_updated_user_name": "Sneha Gaikwad",
      "logs": [
        {
          "action": "Created",
          "user_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
          "platform": "web",
          "last_name": "Gaikwad",
          "last_used": "2024-04-10T10:17:46.130Z",
          "timestamp": "2024-04-10T10:17:46.159Z",
          "first_name": "Neha",
          "ip_address": "182.79.233.142",
          "is_primary": false,
          "os_version": "Windows 10",
          "request_ip": "182.79.233.142",
          "is_verified": false,
          "browser_name": "google chrome",
          "logged_in_flag": true,
          "logged_in_time": "2024-04-10T10:15:42.396Z",
          "user_full_name": "Sneha Gaikwad"
        },
        {
          "action": "Rejected",
          "user_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
          "platform": "web",
          "last_name": "Gaikwad",
          "last_used": "2024-04-10T10:18:09.398Z",
          "timestamp": "2024-04-10T10:18:09.454Z",
          "first_name": "Sneha",
          "ip_address": "103.212.154.226",
          "is_primary": false,
          "os_version": "Windows 10",
          "request_ip": "103.212.154.226",
          "is_verified": false,
          "browser_name": "google chrome",
          "logged_in_flag": true,
          "logged_in_time": "2024-04-10T10:15:42.396Z",
          "user_full_name": "Sneha Gaikwad",
          "rejection_reason": "update transaction method"
        }
      ]
    }
  ],
  "title": {
    "records": 1,
    "current_page": 1,
    "total_pages": 1,
    "page_item_count": 50
  }
}

ERROR RESPONSE The request returns JSON structured like below for errors related beneficiary transaction

{
    "status":false,
    "action":"Not performed",
    "errors":{
        "base":[
            "Invalid / Insufficient parameters"
        ],
        "base":
        [
            "No transactions found for transaction ids: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx"
        ],
        "base":
        [
            "All transactions do not belong to the same entity"
        ],
        "base":[
            {
                "id":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx", 
                "errors":[
                    "Reason must be at least 10 characters"
                ]
            }
        ],
        "base":[
            {
                "id":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
                "errors":"Transaction cannot be rejected due to current status"
            }
        ]
} }

This endpoint will reject Beneficiary Transactions

UAT HTTP Request

PUT https://nxt.api.q2pay.co.in/api/transactions/beneficiary/reject

PRODUCTION HTTP Request

PUT https://nxt.api.q2pay.in/api/transactions/beneficiary/reject

Query Parameters

Parameter Default Description Required Sample
txn_id N.A. txn id for beneficiary transaction Yes [xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxx ,xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxx]
reason N.A. reason for beneficiary transaction Yes Another transaction is already in progress

Service Details

Service ID Description
ABeneficiaryTxn Reject Beneficiary Transaction

Actionable Beneficiary Transaction

curl -X GET "https://<environmenturl>/api/transactions/beneficiary/actionable"
  -H "X-Api-Key: <your secure token>"
  -H "Content-Type: application/json"
  -d "{ 
       "entity_id" : "ABC12",
       "category": "Beneficiary"
      }"

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

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

const data = {
  "entity_id" : "ABC12",
  "category": "Beneficiary"
};

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

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

{
 "entity_id" : "ABC12",
 "category": "Beneficiary"
}

SUCCESS RESPONSE The request returns JSON structured as shown below for successful actionable Beneficiary Transactions

{
  "status": true,
  "total_count": 1,
  "total_amount": "2000.0",
  "transactions": [
    {
      "total_amount": "1000.0",
      "txn_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
      "amount": "1000.0",
      "category": "Beneficiary",
      "internal_transaction": false,
      "lifecycle_status": "pending",
      "txn_initiator": "Priya jawale",
      "approved": "N",
      "confidential_transaction": "N",
      "approved_at": 0,
      "payment_charge": "0.0",
      "tax_amount": "0.0",
      "entity_id": "ABC12",
      "rejected": false,
      "refactored": false,
      "beneficiary_account_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
      "beneficiary_account_name": "Mr AKASH PRAMOD BAGUL",
      "beneficiary_account_bank_acc_no": "12345678",
      "beneficiary_account_ifsc_code": "SBIN0031200",
      "beneficiary_account_bank_name": "State Bank of India",
      "beneficiary_account_approval_status": "approved",
      "owner_account_id":"xxxxxxxx-xxxx-xxxx-xxxxxx",
      "owner_account_bank_acc_no":"9482940300",
      "owner_account_ifsc_code":"ICIC0000112",
      "owner_account_bank_name":"ICICI Bank",
      "owner_account_type":"Current Account",
      "owner_account_balance":"1500.0",
      "owner_account_balance_last_fetched_at":"xxxxxxxx",
      "owner_account_balance_last_fetched_at_in_words":"less than a minute ago"
      "additional_data": {
        "data": [
          {
            "name": "month",
            "position": 1,
            "data_type": "string",
            "mandatory": "Y",
            "value": "Mon"
          },
          {
            "name": "leaves",
            "position": 2,
            "data_type": "numeric",
            "mandatory": "Y",
            "value": 1233
          },
          {
            "name": "PAN",
            "position": 3,
            "data_type": "string",
            "mandatory": "N",
            "value": "Pan no"
          },
          {
            "data": [
              "Pradeep",
              "Sachin",
              "Sewaram"
            ],
            "name": "Accountants",
            "position": 4,
            "data_type": "list",
            "mandatory": "N",
            "value": "Pradeep"
          },
          {
            "name": "month 1",
            "position": 5,
            "data_type": "time",
            "mandatory": "Y",
            "value": "09:34"
          },
          {
            "name": "Day",
            "position": 6,
            "data_type": "day",
            "mandatory": "Y",
            "value": "Monday"
          },
          {
            "name": "Dummy",
            "position": 7,
            "data_type": "toggle",
            "mandatory": "Y",
            "value": true
          },
          {
            "name": "Month",
            "position": 8,
            "data_type": "month",
            "mandatory": "Y",
            "value": "March"
          },
          {
            "name": "Hyperlink",
            "position": 9,
            "data_type": "hyperlink",
            "mandatory": "Y",
            "value": "https://nxt.api.q2pay.co.in/api/transaction_auth_matrix.json"
            },
            {
              "name": "File",
              "position": 10,
              "data_type": "upload",
              "mandatory": "Y",
                "value": {
                  "id": "c68cc4e7d54381cc46384f194c09ce2c.png",
                  "storage": "cache",
                  "metadata": {
                    "filename": "favicon.png",
                    "size": 62260,
                    "mime_type": "image/png"
                  },
                  "file_url": "https://your-bucket.s3.amazonaws.com/store/c68cc4e7d54381cc46384f194c09ce2c.png"
                }
              },
          {
            "name": "Date",
            "position": 11,
            "data_type": "date",
            "mandatory": "Y",
            "value": "23/04/2023"
          },
          {
            "name": "Year",
            "position": 12,
            "data_type": "year",
            "mandatory": "Y",
            "value": "2024"
          },
          {
            "name": "Month_Year",
            "position": 13,
            "data_type": "month_year",
            "mandatory": "Y",
            "value": "12/2024"
          },
          {
            "name": "Multiselect",
            "position": 14,
            "data_type": "multi_select_list",
            "mandatory": "Y",
            "data": [
              "ab",
              "abc",
              "abcd"
            ],
            "value": [
               "ab",
               "abc"
            ]
          },
          {
            "name": "Quantity",
            "position": 15,
            "data_type": "quantity",
            "mandatory": "Y",
            "value": 5
          },
          {
            "name": "DateRange",
            "position": 16,
            "data_type": "date_range",
            "mandatory": "Y",
            "value": {
              "start_date": "21/08/2023",
              "end_date": "21/10/2024"
            }
          },
          {
            "name": "YearRange",
            "position": 17,
            "data_type": "from_year_to_year",
            "mandatory": "Y",
            "value": {
              "from": 2030,
              "to": 2034
            }
          }
        ]
      },
      "created_on": "xxxxxxxx",
      "last_updated_user_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
      "last_updated_status": "Created",
      "last_updated_timestamp": "xxxxxxxx",
      "last_updated_user_name": "Akshay Rangnekar"
    }
  ],
  "title": {
    "records": 1,
    "current_page": 1,
    "total_pages": 1,
    "page_item_count": 50
  }
}

This endpoint will return a list of actionable.

UAT HTTP Request

GET https://nxt.api.q2pay.co.in/api/transactions/beneficiary/actionable

PRODUCTION HTTP Request

GET https://nxt.api.q2pay.in/api/transactions/beneficiary/actionable

Query Parameters

Parameter Default Description Required Sample
entity_id N.A. entity id for beneficiary transaction Yes (Admin) ABC12
category N.A. category for beneficiary transaction No Beneficiary
labels N.A. labels for beneficiary transaction No ["audit expense"]

Service Details

Service ID Description
VBeneficiaryTxn Actionable Beneficiary Transaction

Add Status Beneficiary Transaction

curl -X PUT "https://<environmenturl>/api/transactions/beneficiary/add_status"
  -H "X-Api-Key: <your secure token>"
  -H "Content-Type: application/json"
  -d "{ 
    "txn_id":  ["xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx"],
    "status": "abandoned"
      }"

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

uri = URI.parse("https://<environmenturl>/api/transactions/beneficiary/add_status") header = {'X-Api-Key' => '<your secure token>', 'Content-Type' => 'application/json'} body = { "txn_id": ["xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx"], "status": "abandoned" } http = Net::HTTP.new(uri.host, uri.port) http.use_ssl = true request = Net::HTTP::Put.new(uri.request_uri, header) request.body = body.to_json response = http.request(request)

const data = {
   "txn_id":  ["xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx"],
   "status": "abandoned"
};

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

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

{
  "txn_id":  ["xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx"],
  "status": "abandoned"
}

The below example can be sent as a request to the API for multiple transaction id.

{
  "txn_id":  ["xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx","xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx"],
  "status": "abandoned"
}

SUCCESS RESPONSE The request returns JSON structured as shown below on successfully adding a status to Beneficiary Transactions.

{
    "status":true,
    "lifecycle_status":"abandoned", 
    "txn_id":[
        "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx"
        ]
}

ERROR RESPONSE The request returns JSON structured as shown below for errors related to Beneficiary Transactions.

{
    "status":false,
    "action":"Not performed", 
    "errors":{
        "base":[
            "Invalid / Insufficient parameters"
        ],
        "base":[
            "Unqualified status: pending"
        ],
        "base":[
            "Unqualified status: "
        ],
        "base":[
            "All transactions do not belong to the same entity"
        ], 
        "base":[
            {
                "id":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
                "reason":[
                    "Transaction cannot be updated as it is already having status : abandoned"
                ]
            }
        ],
        "base":[
            "No transactions found for transaction ids: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx"
        ]
    }
}

This endpoint will add a status to Beneficiary Transactions.

UAT HTTP Request

PUT https://nxt.api.q2pay.co.in/api/transactions/beneficiary/add_status

PRODUCTION HTTP Request

PUT https://nxt.api.q2pay.in/api/transactions/beneficiary/add_status

Query Parameters

Parameter Default Description Required Sample
txn_id N.A. txn id for beneficiary transaction Yes [xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxx ,xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxx]
status N.A. status for beneficiary transaction Yes abandoned

Service Details

Service ID Description
Admin add status Beneficiary Transaction

Refactor Beneficiary Transaction

curl -X PUT "https://<environmenturl>/api/transactions/beneficiary/refactor"
  -H "X-Api-Key: <your secure token>"
  -H "Content-Type: application/json"
  -d "{ 
    "txn_id":  ["xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx"]
      }"

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

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

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

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

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

{
  "txn_id":  ["xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx"]
}

The below example can be sent as a request to the API for multiple transaction id.

{
  "txn_id":  ["xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx","xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx"]
}

SUCCESS RESPONSE The request returns JSON structured like below on successful Beneficiary transaction refactor

{
  "status": true,
  "total_count": 1,
  "total_amount": "25.0",
  "transactions": [
    {
      "total_amount": "25.0",
      "txn_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
      "amount": "25.0",
      "category": "Mobile Bill",
      "internal_transaction": false,
      "lifecycle_status": "rejected",
      "distribution_remark": "Testing",
      "txn_initiator": "Sneha Gaikwad",
      "approved": "N",
      "confidential_transaction": "N",
      "approved_at": 0,
      "payment_charge": "0.0",
      "tax_amount": "0.0",
      "entity_id": "ABC12",
      "rejected": true,
      "rejected_by": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
      "rejected_at": "2024-04-10T10:18:09.447Z",
      "refactored": true,
      "refactored_by": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
      "refactored_at": "2024-04-10T10:18:09.447Z",
      "beneficiary_account_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
      "beneficiary_account_name": "ANKITA ANIL GAYKAR",
      "beneficiary_account_bank_acc_no": "1234567899",
      "beneficiary_account_ifsc_code": "SBIN2333445",
      "beneficiary_account_bank_name": "State Bank of India",
      "beneficiary_account_approval_status": "approved",
      "owner_account_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
      "owner_account_bank_acc_no": "1111999876544",
      "owner_account_ifsc_code": "HDFC0000223",
      "owner_account_bank_name": "HDFC Bank",
      "owner_account_type": "Current Account",
      "owner_account_balance": "0.0",
      "owner_account_balance_last_fetched_at": "xxxxxxxx",
      "owner_account_balance_last_fetched_at_in_words": "about 4 hours ago",
      "additional_data": {
        "data": [
          {
            "name": "month",
            "position": 1,
            "data_type": "string",
            "mandatory": "Y",
            "value": "Mon"
          },
          {
            "name": "leaves",
            "position": 2,
            "data_type": "numeric",
            "mandatory": "Y",
            "value": 1233
          },
          {
            "name": "PAN",
            "position": 3,
            "data_type": "string",
            "mandatory": "N",
            "value": "Pan no"
          },
          {
            "data": [
              "Pradeep",
              "Sachin",
              "Sewaram"
            ],
            "name": "Accountants",
            "position": 4,
            "data_type": "list",
            "mandatory": "N",
            "value": "Pradeep"
          },
          {
            "name": "month 1",
            "position": 5,
            "data_type": "time",
            "mandatory": "Y",
            "value": "09:34"
          },
          {
            "name": "Day",
            "position": 6,
            "data_type": "day",
            "mandatory": "Y",
            "value": "Monday"
          },
          {
            "name": "Dummy",
            "position": 7,
            "data_type": "toggle",
            "mandatory": "Y",
            "value": true
          },
          {
            "name": "Month",
            "position": 8,
            "data_type": "month",
            "mandatory": "Y",
            "value": "March"
          },
          {
            "name": "Hyperlink",
            "position": 9,
            "data_type": "hyperlink",
            "mandatory": "Y",
            "value": "https://nxt.api.q2pay.co.in/api/transaction_auth_matrix.json"
           },
            {
              "name": "File",
              "position": 10,
              "data_type": "upload",
              "mandatory": "Y",
                "value": {
                  "id": "c68cc4e7d54381cc46384f194c09ce2c.png",
                  "storage": "cache",
                  "metadata": {
                    "filename": "favicon.png",
                    "size": 62260,
                    "mime_type": "image/png"
                  },
                  "file_url": "https://your-bucket.s3.amazonaws.com/store/c68cc4e7d54381cc46384f194c09ce2c.png"
                }
              },
          {
            "name": "Date",
            "position": 11,
            "data_type": "date",
            "mandatory": "Y",
            "value": "23/04/2023"
          },
          {
            "name": "Year",
            "position": 12,
            "data_type": "year",
            "mandatory": "Y",
            "value": "2024"
          },
          {
            "name": "Month_Year",
            "position": 13,
            "data_type": "month_year",
            "mandatory": "Y",
            "value": "12/2024"
          },
          {
            "name": "Multiselect",
            "position": 14,
            "data_type": "multi_select_list",
            "mandatory": "Y",
            "data": [
              "ab",
              "abc",
              "abcd"
            ],
            "value": [
               "ab",
               "abc"
            ]
          },
          {
            "name": "Quantity",
            "position": 15,
            "data_type": "quantity",
            "mandatory": "Y",
            "value": 5
          },
          {
            "name": "DateRange",
            "position": 16,
            "data_type": "date_range",
            "mandatory": "Y",
            "value": {
              "start_date": "21/08/2023",
              "end_date": "21/10/2024"
            }
          },
          {
            "name": "YearRange",
            "position": 17,
            "data_type": "from_year_to_year",
            "mandatory": "Y",
            "value": {
              "from": 2030,
              "to": 2034
            }
          }
        ]
      },
      "created_on": "xxxxxxxx",
      "last_updated_user_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
      "last_updated_status": "Refactored",
      "last_updated_timestamp": "xxxxxxxx",
      "last_updated_user_name": "Sneha Gaikwad",
      "logs": [
        {
          "action": "Created",
          "user_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
          "platform": "web",
          "last_name": "Gaikwad",
          "last_used": "2024-04-10T10:17:46.130Z",
          "timestamp": "2024-04-10T10:17:46.159Z",
          "first_name": "Neha",
          "ip_address": "182.79.233.142",
          "is_primary": false,
          "os_version": "Windows 10",
          "request_ip": "182.79.233.142",
          "is_verified": false,
          "browser_name": "google chrome",
          "logged_in_flag": true,
          "logged_in_time": "2024-04-10T10:15:42.396Z",
          "user_full_name": "Sneha Gaikwad"
        },
        {
          "action": "Rejected",
          "user_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
          "platform": "web",
          "last_name": "Gaikwad",
          "last_used": "2024-04-10T10:18:09.398Z",
          "timestamp": "2024-04-10T10:18:09.454Z",
          "first_name": "Sneha",
          "ip_address": "103.212.154.226",
          "is_primary": false,
          "os_version": "Windows 10",
          "request_ip": "103.212.154.226",
          "is_verified": false,
          "browser_name": "google chrome",
          "logged_in_flag": true,
          "logged_in_time": "2024-04-10T10:15:42.396Z",
          "user_full_name": "Sneha Gaikwad",
          "rejection_reason": "update transaction method"
        },
        {
          "action": "Refactored",
          "user_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
          "platform": "web",
          "last_name": "Gaikwad",
          "last_used": "2024-04-10T10:18:09.398Z",
          "timestamp": "2024-04-10T10:18:09.454Z",
          "first_name": "Sneha",
          "ip_address": "103.212.154.226",
          "is_primary": false,
          "os_version": "Windows 10",
          "request_ip": "103.212.154.226",
          "is_verified": false,
          "browser_name": "google chrome",
          "logged_in_flag": true,
          "logged_in_time": "2024-04-10T10:15:42.396Z",
          "user_full_name": "Sneha Gaikwad"
        }
      ]
    }
  ],
  "title": {
    "records": 1,
    "current_page": 1,
    "total_pages": 1,
    "page_item_count": 50
  }
}

ERROR RESPONSE The request returns JSON structured like below for errors related beneficiary transaction

{
    "status":false,
    "action":"Not performed",
    "errors":{
        "base":[
            "Invalid / Insufficient parameters"
        ],
        "base":
        [
            "No transactions found for transaction ids: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx"
        ],
        "base":
        [
            "All transactions do not belong to the same entity"
        ],
        "base":[
            {
                "id":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
                "errors":"Only rejected transactions can be refactored"
            }
        ]
} }

This endpoint will refactor Beneficiary Transactions.

UAT HTTP Request

PUT https://nxt.api.q2pay.co.in/api/transactions/beneficiary/refactor

PRODUCTION HTTP Request

PUT https://nxt.api.q2pay.in/api/transactions/beneficiary/refactor

Query Parameters

Parameter Default Description Required Sample
txn_id N.A. txn id for beneficiary transaction Yes [xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxx ,xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxx]

Service Details

Service ID Description
CBeneficiaryTxn Refactor Beneficiary Transaction

Add Labels of Beneficiary Transactions

curl -X PUT "https://<environmenturl>/api/transactions/beneficiary/add_label"
  -H "X-Api-Key: <your secure token>"
  -H "Content-Type: application/json"
  -d "{
  "record_ids": [
    "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx","xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx"
  ],
  "labels": [
    "audit expense",
    "Infrastructure"
  ]
}"
require 'net/http'
require 'uri'
require 'json'

uri = URI.parse("https://<environmenturl>/api/transactions/beneficiary/add_label") header = {'X-Api-Key' => '<your secure token>', 'Content-Type' => 'application/json'} body = {
"record_ids": [ "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx","xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx" ], "labels": [ "audit expense", "Infrastructure" ] } http = Net::HTTP.new(uri.host, uri.port) http.use_ssl = true request = Net::HTTP::Put.new(uri.request_uri, header) request.body = body.to_json response = http.request(request)

const data = {
  "record_ids": [
     "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx","xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx"
  ],
  "labels": [
    "audit expense",
     "Infrastructure"
  ]
};

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

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

{
  "record_ids": [
     "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx","xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx"
  ],
  "labels": [
    "audit expense",
    "Infrastructure"
  ]
}

SUCCESS RESPONSE The request returns JSON structured as shown below on successfully adding labels to Beneficiary Transactions.

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

ERROR RESPONSE The request returns JSON structured as shown below for errors related to adding labels to Beneficiary Transactions.

{
  "status": false,
  "errors": {
    "base": [
      "Missing required parameters: record_ids and/or labels."
    ],
    "base":[
      "The beneficiary transaction IDs are not present."
    ]
  }
}

This endpoint will add labels to Beneficiary Transactions.

UAT HTTP Request

PUT https://nxt.api.q2pay.co.in/api/transactions/beneficiary/add_label

PRODUCTION HTTP Request

PUT https://nxt.api.q2pay.in/api/transactions/beneficiary/add_label

Query Parameters

Parameter Default Description Required Sample
record_ids N.A. record ids of beneficiary transaction Yes ["xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx","xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx" ]
labels N.A. labels of beneficiary transaction Yes ["audit expense","Infrastructure"]

Service Details

Service ID Description
ALabel Add labels for Beneficiary Transaction

Remove Labels of Beneficiary Transactions

curl -X PUT "https://<environmenturl>/api/transactions/beneficiary/remove_label"
  -H "X-Api-Key: <your secure token>"
  -H "Content-Type: application/json"
  -d "{
  "record_ids": [
    "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx","xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx"
  ],
  "labels": [
    "audit expense",
    "Infrastructure"
  ]
}"
require 'net/http'
require 'uri'
require 'json'

uri = URI.parse("https://<environmenturl>/api/transactions/beneficiary/remove_label") header = {'X-Api-Key' => '<your secure token>', 'Content-Type' => 'application/json'} body = {
"record_ids": [ "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx","xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx" ], "labels": [ "audit expense", "Infrastructure" ] } http = Net::HTTP.new(uri.host, uri.port) http.use_ssl = true request = Net::HTTP::Put.new(uri.request_uri, header) request.body = body.to_json response = http.request(request)

const data = {
  "record_ids": [
     "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx","xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx"
  ],
  "labels": [
    "audit expense",
     "Infrastructure"
  ]
};

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

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

{
  "record_ids": [
     "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx","xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx"
  ],
  "labels": [
    "audit expense",
    "Infrastructure"
  ]
}

SUCCESS RESPONSE The request returns JSON structured as shown below on successfully removing labels from Beneficiary Transactions.

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

ERROR RESPONSE The request returns JSON structured as shown below for errors related to removing labels from Beneficiary Transactions.

{
  "status": false,
  "errors": {
    "base": [
      "Missing required parameters: record_ids and/or labels."
    ],
    "base":[
      "The beneficiary transaction IDs are not present."
    ],
    "base":[
      "Labels are not present in some beneficiary transactions."
    ]
  }
}

This endpoint will remove labels from Beneficiary Transactions.

UAT HTTP Request

PUT https://nxt.api.q2pay.co.in/api/transactions/beneficiary/remove_label

PRODUCTION HTTP Request

PUT https://nxt.api.q2pay.in/api/transactions/beneficiary/remove_label

Query Parameters

Parameter Default Description Required Sample
record_ids N.A. records ids of beneficiary transaction Yes ["xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx","xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx" ]
labels N.A. labels of beneficiary transaction Yes ["audit expense","Infrastructure"]

Service Details

Service ID Description
RLabel Remove labels for Beneficiary Transaction

Holiday List

Holiday List helps user to see all the holidays.

Get all Holiday List

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

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

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

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

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

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

SUCCESS RESPONSE The request returns JSON structured as shown below on successfully retrieving the Holiday List from today onwards.

{
  "status": true,
  "total_count": 3,
  "holidays": [
    {
      "id": 1,
      "date": "XX-XX-XX",
      "occasion": "XXXX"
    },
    {
      "id": 2,
      "date": "XX-XX-XX",
      "occasion": "XXXX"
    },
    {
      "id": 3,
      "date": "XX-XX-XX",
      "occasion": "XXXX"
    }
  ],
  "title": {
    "records": 3,
    "current_page": 1,
    "total_pages": 1,
    "page_item_count": 50
  }
}

This endpoint will retrieve all holidays from today onwards.

UAT HTTP Request

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

PRODUCTION HTTP Request

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

Query Parameters

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

Service Details

Service ID Description
PLogin Get Holiday List

Get specific Holiday List

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

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

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

SUCCESS RESPONSE The request returns JSON structured as shown below on successfully viewing a specific Holiday List.

{
  "status": true,
  "holidays": [
    {
      "id": 52,
      "date": "2023-12-31",
      "occasion": "New Year"
    }
  ]
}

This endpoint will retrieve a specific Holiday List.

UAT HTTP Request

GET https://nxt.api.q2pay.co.in/api/holidays/:holiday_id

PRODUCTION HTTP Request

GET https://nxt.api.q2pay.in/api/holidays/:holiday_id

Service Details

Service ID Description
PLogin Get specific Holiday List

Create Holiday List

curl -X POST "https://<environmenturl>/api/holidays"
  -H "X-Api-Key: <your secure token>"
  -H "Content-Type: application/json"
  -d "{
      "date":"XX-XX-XX",
      "occasion":"XXXX XXX"
    }"
require 'net/http'
require 'uri'
require 'json'

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

const data = {
      "date":"XX-XX-XX",
      "occasion":"XXXX XXX"
};

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

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

{
      "date":"XX-XX-XX",
      "occasion":"XXXX XXX"
}

SUCCESS RESPONSE The request returns JSON structured as shown below on successful creation of a Holiday List.

{
  "status": true,
  "holidays": [
    {
      "id": 54,
      "date": "2023-12-27",
      "occasion": "New Year Holiday "
    }
  ]
}

ERROR RESPONSE The request returns JSON structured as shown below for errors related to Holiday Posting.

{
  "status": false,
  "errors": {
    "date": [
      "Date can't be blank"
    ]
  }
}

This endpoint will create a holiday list.

UAT HTTP Request

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

PRODUCTION HTTP Request

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

Query Parameters

Parameter Default Description Required Sample
date N.A. Date for holiday Yes 2023-12-27
occasion N.A. Occasion for holiday No Holi

Service Details

Service ID Description
Admin Create Holiday List

Update Holiday List

curl -X PUT "https://<environmenturl>/api/holidays/:holiday_id"
  -H "X-Api-Key: <your secure token>"
  -H "Content-Type: application/json"
  -d "{
      "date":"XX-XX-XX",
      "occasion":"XXXX XXX"
    }"
require 'net/http'
require 'uri'
require 'json'

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

const data = {
      "date":"XX-XX-XX",
      "occasion":"XXXX XXX"
};

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

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

{
      "date":"XX-XX-XX",
      "occasion":"XXXX XXX"
}

SUCCESS RESPONSE The request returns JSON structured as shown below on successful update of a Holiday List.

{
  "status": true,
  "holidays": [
    {
      "id": 01,
      "date": "XXXX-XX-XX",
      "occasion": "XXXX"
    }
  ]
}

ERROR RESPONSE The request returns JSON structured as shown below for errors related to updating a Holiday List.

{
  "status": false,
  "errors": {
    "date": [
      "Date can't be blank"
    ]
  }
}

This endpoint will update a holiday list.

UAT HTTP Request

PUT https://nxt.api.q2pay.co.in/api/holidays/:holiday_id

PRODUCTION HTTP Request

PUT https://nxt.api.q2pay.in/api/holidays/:holiday_id

Query Parameters

Parameter Default Description Required Sample
date N.A. Date for holiday Yes 2023-12-27
occasion N.A. Occasion for holiday No Holi

Service Details

Service ID Description
Admin Update Holiday List

Delete Holiday List

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

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

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

SUCCESS RESPONSE The request returns JSON structured as shown below.

{
  "status": true
}

This endpoint will delete a Holiday List.

UAT HTTP Request

DELETE https://nxt.api.q2pay.co.in/api/holidays/:holiday_id

PRODUCTION HTTP Request

DELETE https://nxt.api.q2pay.in/api/holidays/:holiday_id

Service Details

Service ID Description
Admin Delete holiday list

HTTP Error Codes

The Xpentra API uses the following error codes:

Error Code Meaning
400 Bad Request -- Your request is invalid.
401 Unauthorized -- Your token has either expired or you are not authorized to perform the action.
403 Forbidden -- The record requested is hidden for administrators only.
404 Not Found -- The specified record could not be found.
405 Method Not Allowed -- You tried to access a record with an invalid method.
406 Not Acceptable -- You requested a format that isn't json.
410 Gone -- The record requested has been removed from our servers.
418 I'm a teapot.
429 Too Many Requests -- You're requesting too many records! Slow down!
500 Internal Server Error -- We had a problem with our server. Try again later.
503 Service Unavailable -- We're temporarily offline for maintenance. Please try again later.