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 "Content-Type: application/json"
  -d "{
        "identifier": "xxxxxx",
        "password": "xxxxxx",
        "device_info": 
        {
          "uuid": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
          "platform": "android",
          "os_version": "1.6",
          "ip_address": "103.67.90.00",
          "app_version_code": 49,
          "app_version_name": 2.48,
          "brand": "Android",
          "manufacturer": "realme",
          "device_model": "realme 11 pro",
          "sdk_version": "60",
          "serial_number": "9876bcde234",
          "fcm_token": "klmnopfghjkl"
        }
      }"
require 'net/http'
require 'uri'
require 'json'

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

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

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

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

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

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

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

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

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

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

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

This endpoint will login user for your entity.

UAT HTTP Request

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

PRODUCTION HTTP Request

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

Query Parameters for Android

Parameter Default Description Required Sample
identifier N.A. Identifier for login Yes xxxxxx
password N.A. Password for Login Yes xxxxxx
device_info N.A. Include device info parameter (Refer Table below) Yes

Device Info for Android

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

Query Parameters for Web

Parameter Default Description Required Sample
identifier N.A. Identifier for login Yes xxxxxx
password N.A. Password for login Yes xxxxxx
device_info N.A. Include device info parameter (Refer Table below) Yes

Device Info for Web

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

Device Info for PWA

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

Service Details

Service ID Description
PLogin To Login User

Refresh

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

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

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

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

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

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

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

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

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

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

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

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

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

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

This endpoint will refresh user token with extended validity.

UAT HTTP Request

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

PRODUCTION HTTP Request

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

Query Parameters

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

Query Parameters for Web

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

Device Info for PWA

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

Service Details

Service ID Description
PLogin To Refresh User

Logout

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

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

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


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

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

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

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

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

This endpoint will logout user for your entity.

UAT HTTP Request

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

PRODUCTION HTTP Request

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

Service Details

Service ID Description
PLogout To Logout User

Owner Account

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

Get All Owner Account

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

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

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

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

SUCCESS RESPONSE The request returns JSON structured like below

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

This endpoint retrieves all Owner Accounts.

UAT HTTP Request

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

PRODUCTION HTTP Request

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

Query Parameters

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

Service Details

Service ID Description
VAccount View All Owner Accounts

Get Specific Owner Account

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

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

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

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

SUCCESS RESPONSE The request returns JSON structured like below

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

This endpoint retrieves Owner Accounts.

UAT HTTP Request

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

PRODUCTION HTTP Request

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

Service Details

Service ID Description
VAccount View specific Owner Accounts

Get Balance Owner Account

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

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

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


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

SUCCESS RESPONSE The request returns JSON structured like below on successful Owner accounts balance

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

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

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

This endpoint fetch current account balance for Owner Account.

UAT HTTP Request

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

PRODUCTION HTTP Request

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

Service Details

Service ID Description
Admin Admin
CBeneficiaryTxn Create Beneficiary Transactions
ABeneficiaryTxn Approve Beneficiary Transactions

Display Statement of Owner Account

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

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

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

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

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

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

SUCCESS RESPONSE The request returns JSON structured like below on successful display statement of owner accounts

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

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

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

This endpoint Display Statement of Owner Account.

UAT HTTP Request

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

PRODUCTION HTTP Request

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

Query Parameters

Parameter Default Description Required Sample
start_date ,end_date N.A. start date and end date of owner account Yes "15 Mar 2023","30 Apr 2023" or "15/3/2023", "15/5/2023"
credit_debit N.A. credit or debit of owner account Yes "credit","debit"
start_amount,end_amount N.A. start amount and end amount of owner account Yes 200,1000

Service Details

Service ID Description
VAccount View Statement of Owner Account

Display Statement Download of Owner Account

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

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

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

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

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

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

SUCCESS RESPONSE The request returns JSON structured like below on successful display statement download of owner accounts

{
   "status": 200 
}

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

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

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

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

This endpoint Display Statement Download of Owner Account.

UAT HTTP Request

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

PRODUCTION HTTP Request

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

Query Parameters

Parameter Default Description Required Sample
start_date ,end_date N.A. start date and end date of owner account Yes "15 Mar 2023","30 Apr 2023" or "15/3/2023", "15/5/2023"
credit_debit N.A. credit or debit of owner account Yes "credit","debit"
start_amount,end_amount N.A. start amount and end amount of owner account Yes 200,1000

File Format

Format Default Description Required Sample URL
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
VAccount View Statement of Owner Account

Beneficiary Account

Beneficiary account helps you create,maintain & manage of Beneficary account.

Get All Beneficiary Accounts

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

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

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

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

SUCCESS RESPONSE The request returns JSON structured like below

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

This endpoint retrieves all Beneficiary Accounts.

UAT HTTP Request

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

PRODUCTION HTTP Request

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

Query Parameters

Parameter Default Description Required Sample
approval_status N.A. approval status for beneficiary account optional pending
category N.A. category for beneficiary account optional Vendor
start_date,end_date N.A. start date and end date for beneficiary account optional xxxxxxxx,xxxxxxxx
bank_account_no N.A. bank account number for beneficiary account optional 4567893467
ifsc N.A. ifsc for beneficiary account optional HDFC0000212
pan N.A. pan for beneficiary account optional WASED4723H
search_string N.A. search string for id/name/contact no/email of beneficiary account optional xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx,Q2pay technology,12356789,abc@gmail.com
entity_id N.A. entity id for beneficiary account optional FBT3907

Service Details

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

Get Specific Beneficiary Accounts

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

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

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

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

SUCCESS RESPONSE The request returns JSON structured like below

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

This endpoint retrieves specific Beneficiary Accounts.

UAT HTTP Request

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

PRODUCTION HTTP Request

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

Service Details

Service ID Description
BVAccount View specific Beneficiary Accounts

Create Beneficiary Account

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

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

const data = {
  "beneficiary_accounts": {
    "bank_account_no": "12345678",
    "contact_no": "7486756685",
    "email": "abc@gmail.com",
    "ifsc": "HDFC1111237",
    "pan": "WASED4723H",
                           }
};

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

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

{
   "beneficiary_accounts": {
    "bank_account_no": "12345678",
    "contact_no": "7486756685",
    "email": "abc@gmail.com",
    "ifsc": "HDFC1111237",
    "pan": "WASED4723H",
                           }
}

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

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

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

{
    "status": false,
    "errors":{
        "bank_account_number":
        [
            "Bank account number this bank account is already linked with an existing beneficiary"
        ],
        "permanent_account_number":
        [
            "Permanent account number is already linked with an existing beneficiary"
        ],
        "category":
        [
            "Category is not valid/active for the account type"
        ], 
        "base":
        [
            "Bank Account Number / IFSC cannot be blank"
        ],
        "base":
        [
            "Invalid format for PAN ID"
        ],
        "base":
        [
            "PAN ID cannot be blank"
        ],
        "contact_no":
        [
            "Contact no is not a number", "Contact no can't be blank", "Contact no must be a 10, 11 or 12 digit number"
        ],
        "email":
        [
            "Email can't be blank", "Email invalid", "Email is too short (minimum is 4 characters)"
        ],
        "bank_account_number":{
            "base":[
                "Full Name / Legal Name is mandatory for Virtual Accounts"
            ]
        }
    }
}

This endpoint creates a Beneficiary Account.

UAT HTTP Request

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

PRODUCTION HTTP Request

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

Query Parameters

Parameter Default Description Required Sample
bank_account_no N.A. Bank account number for beneficiary account Yes 123456
contact_no N.A. contact no for beneficiary account Yes 9867454325
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

Service Details

Service ID Description
BUAccount Create Beneficiary Account

Update Beneficiary Account

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

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

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

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

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

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

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

SUCCESS RESPONSE The request returns JSON structured like below on successful Beneficiary accounts update

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

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

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

This endpoint updates a Beneficiary Account.

UAT HTTP Request

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

PRODUCTION HTTP Request

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

Query Parameters

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

Service Details

Service ID Description
BUAccount Update Beneficiary Account

Approve Beneficiary Account

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

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

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


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

SUCCESS RESPONSE The request returns JSON structured like below on successful Beneficiary accounts approve

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

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

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

This endpoint approve a Beneficiary Account.

UAT HTTP Request

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

PRODUCTION HTTP Request

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

Service Details

Service ID Description
BAAccount Approve Beneficiary Account

Archive Beneficiary Account

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

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

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

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

SUCCESS RESPONSE The request returns JSON structured like below on successful Beneficiary accounts archive

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

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

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

This endpoint archive a Beneficiary Account.

UAT HTTP Request

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

PRODUCTION HTTP Request

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

Service Details

Service ID Description
BAAccountArchive Archive Beneficiary Account

Unarchive Beneficiary Account

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

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

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

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

SUCCESS RESPONSE The request returns JSON structured like below on successful Beneficiary accounts unarchive

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

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

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

This endpoint unarchive a Beneficiary Account.

UAT HTTP Request

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

PRODUCTION HTTP Request

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

Service Details

Service ID Description
BAAccountArchive Unarchive Beneficiary Account

Block Beneficiary Account

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

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

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

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

SUCCESS RESPONSE The request returns JSON structured like below on successful Beneficiary accounts block

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

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

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

This endpoint blocked a Beneficiary Account.

UAT HTTP Request

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

PRODUCTION HTTP Request

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

Service Details

Service ID Description
BAAccountBlock Block Beneficiary Account

Reject Beneficiary Account

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

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

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

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

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

{
   "rejection_reason": "rejected account"
}

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

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

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

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

This endpoint reject a Beneficiary Account.

UAT HTTP Request

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

PRODUCTION HTTP Request

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

Query Parameters

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

Service Details

Service ID Description
BAAccount Reject Beneficary Account

Get Lookup Beneficiary Account

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

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

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

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

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

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

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

{
  "pan": "EPTPK9508Q"
}

SUCCESS RESPONSE The request returns JSON structured like below

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

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

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

This endpoint get lookup of Beneficiary Account.

UAT HTTP Request

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

PRODUCTION HTTP Request

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

Query Parameters

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

Query Parameters

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

Service Details

Service ID Description
BVAccount Get Lookup Beneficiary Account

Edit Other Details Beneficiary Account

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

uri = URI.parse("https://<environmenturl>/api/accounts/beneficiary/:id/edit_other_details") header = {'X-Api-Key' => '<your secure token>', 'Content-Type' => 'application/json'} body = { "beneficiary_accounts": { "contact_no": "7486756685", "email": "abc@gmail.com", "pan": "MASED4723H", "gstin": "12AANCA2275G2ZO", "name": "Q2pay technology", "category": "Salary" }

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

const data = {
  "beneficiary_accounts": {
    "contact_no": "7486756685",
    "email": "abc@gmail.com",
    "pan": "MASED4723H",
    "gstin": "12AANCA2275G2ZO",
    "name": "Q2pay technology",
    "category": "Salary"
                           }
};

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

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

{
  "beneficiary_accounts": {
    "contact_no": "7486756685",
    "email": "abc@gmail.com",
    "pan": "MASED4723H",
    "gstin": "12AANCA2275G2ZO",
    "name": "Q2pay technology",
    "category": "Salary"
                           }
}

SUCCESS RESPONSE The request returns JSON structured like below on successful Beneficiary accounts edit other details

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

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

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

This endpoint edit other details a Beneficiary Account.

UAT HTTP Request

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

PRODUCTION HTTP Request

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

Query Parameters

Parameter Default Description Required Sample
contact_no N.A. contact no for beneficiary account optional 9867454325
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

Service Details

Service ID Description
BUAccount Edit Details of Beneficiary Account

Beneficary Transaction

Beneficiary transaction helps you create, maintain & manage lifecycle of beneficiary transactions for your organization

Get All Beneficiary Transactions

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

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

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

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

SUCCESS RESPONSE The request returns JSON structured like below

{
    "status": true,
    "total_count": 2,
    "total_amount": "2000.0",
    "summary": {
        "cancelled_transaction_count":3,
        "approved_transaction_count": 21,
        "rejected_transaction_count": 3,
        "denied_transaction_count": 1,
        "archived_transaction_count":5,
        "abandoned_transaction_count": 4,
        "pending_transaction_count": 18,
        "blocked_transaction_count":4,
        "actionable_transaction_count":1,
        "created_distribution_transaction_count":3,
        "awaiting_funds_distribution_transaction_count":2,
        "rejected_distribution_transaction_count":1
    },
    "transactions": [
        {
            "total_amount": "1000.0",
            "txn_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
            "amount": "1000.0",
            "category": "Beneficiary",
            "lifecycle_status": "approved",
            "distribution_lifecycle_status": "created",
            "payment_method":"RTGS",
            "txn_initiator": "Priya jawale",
            "approved": "Y",
            "approved_at": "xxxxxxxx",
            "payment_charge": "0.0",
            "tax_amount": "0.0",
            "entity_id": "QRT457",
            "rejected": false,
            "rejected_at": 0,
            "beneficiary_account_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
            "beneficiary_account_name": "JITENDRA KIRAN KAKDE",
            "beneficiary_account_bank_acc_no": "12345678",
            "beneficiary_account_ifsc_code": "BKID0010670",
            "beneficiary_account_bank_name": "Bank of India",
            "beneficiary_account_approval_status": "approved",
            "owner_account_id":"xxxxxxxx-xxxx-xxxx-xxxxxx",
            "owner_account_bank_acc_no":"9482940300",
            "owner_account_ifsc_code":"ICIC0000112",
            "owner_account_bank_name":"ICICI Bank",
            "owner_account_type":"Current Account",
            "owner_account_balance":"1500.0",
            "owner_account_balance_last_fetched_at":"xxxxxxxx",
            "owner_account_balance_last_fetched_at_in_words":"less than a minute ago"
            "additional_data": {
                "data": [
                    {
                        "name": "month",
                        "position": 1,
                        "data_type": "string",
                        "mandatory": "Y",
                        "value": "Mon"
                    },
                    {
                        "name": "leaves",
                        "position": 2,
                        "data_type": "numeric",
                        "mandatory": "N"
                    },
                    {
                        "name": "PAN",
                        "position": 3,
                        "data_type": "string",
                        "mandatory": "N"
                    },
                    {
                        "name": "Accountants",
                        "position": 4,
                        "data_type": "list",
                        "mandatory": "N",
                        "data": [
                            "Pradeep",
                            "Sachin",
                            "Sewaram"
                        ]
                    }
                ]
            }, 
            "created_on": "xxxxxxxx",
            "last_updated_user_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
            "last_updated_status": "Created",
            "last_updated_timestamp": "xxxxxxxx",
            "last_updated_user_name": "Akshay Rangnekar"
        },
        {
            "total_amount": "1000.0",
            "txn_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
            "amount": "1000.0",
            "category": "Beneficiary",
            "lifecycle_status": "pending",
            "payment_method":"RTGS",
            "txn_initiator": "Priya jawale",
            "approved": "N",
            "approved_at": "0",
            "payment_charge": "0.0",
            "tax_amount": "0.0",
            "entity_id": "QRT457",
            "rejected": false,
            "rejected_at": 0,
            "beneficiary_account_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
            "beneficiary_account_name": "Mr AKASH PRAMOD BAGUL",
            "beneficiary_account_bank_acc_no": "12345678",
            "beneficiary_account_ifsc_code": "SBIN0031199",
            "beneficiary_account_bank_name": "State Bank of India",
            "beneficiary_account_approval_status": "archived",
            "owner_account_id":"xxxxxxxx-xxxx-xxxx-xxxxxx",
            "owner_account_bank_acc_no":"9482940300",
            "owner_account_ifsc_code":"ICIC0000112",
            "owner_account_bank_name":"ICICI Bank",
            "owner_account_type":"Current Account",
            "additional_data": {
                "data": [
                    {
                        "name": "month",
                        "position": 1,
                        "data_type": "string",
                        "mandatory": "Y",
                        "value": "Mon"
                    },
                    {
                        "name": "leaves",
                        "position": 2,
                        "data_type": "numeric",
                        "mandatory": "N"
                    },
                    {
                        "name": "PAN",
                        "position": 3,
                        "data_type": "string",
                        "mandatory": "N"
                    },
                    {
                        "name": "Accountants",
                        "position": 4,
                        "data_type": "list",
                        "mandatory": "N",
                        "data": [
                            "Pradeep",
                            "Sachin",
                            "Sewaram"
                        ]
                    }
                ]
            }, 
            "created_on": "xxxxxxxx",
            "last_updated_user_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
            "last_updated_status": "Created",
            "last_updated_timestamp": "xxxxxxxx",
            "last_updated_user_name": "Akshay Rangnekar"
        }
    ],
    "title": {
        "records": 2,
        "current_page": 1,
        "total_pages": 1,
        "page_item_count": 50
    }
}

This endpoint retrieves all Beneficiary Transactions.

UAT HTTP Request

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

PRODUCTION HTTP Request

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

Query Parameters

Parameter Default Description Required Sample
amount N.A. amount for beneficiary transaction optional 67000.0
lifecycle_status N.A. lifecycle status for beneficiary transaction optional pending, approved, denied, blocked, archived, rejected, abandoned, cancelled
payment_method N.A. payment method for beneficiary transaction optional RTGS/NEFT/IMPS
beneficiary_account_id N.A. beneficiary account id for beneficiary transaction optional xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxx
owner_account_id N.A. owner account id for beneficiary transaction optional xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxx
start_date,end_date N.A. start date and end date for beneficiary transaction optional xxxxxxxx,xxxxxxxx
txn_id N.A. transaction id is used to search id of beneficiary transaction optional [xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxx ,xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxx]
entity_id N.A. entity id for beneficiary transaction optional QRT457
category N.A. category for beneficiary transaction optional Vendor
bank_identifier N.A. bank_identifier/settlement_id for distribution transaction of beneficiary transaction optional xxxxxxxxxxxxxxxx
distribution_lifecycle_status N.A. distribution lifecycle status of beneficiary transaction optional created, approved, awaiting_funds, distribution_initiated, distribution_complete, distribution_pending, reversal, denied, rejected, abandoned, failed
additional_data N.A. additional data for beneficiary transaction optional "Mon"

Service Details

Service ID Description
VBeneficiaryTxn View All Beneficiary Transactions

Get Specific Beneficiary Transactions

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

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

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

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

SUCCESS RESPONSE The request returns JSON structured like below

{
    "status": true,
    "total_count": 1,
    "total_amount": "512.0",
    "transaction": [
        {
            "total_amount": "512.0",
            "txn_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
            "amount": "512.0",
            "category": "Salary",
            "lifecycle_status": "approved",
            "payment_method":"RTGS",
            "txn_initiator": "Akshay Rangnekar",
            "approved": "Y",
            "approved_at": "xxxxxxxx",
            "payment_charge": "0.0",
            "tax_amount": "0.0",
            "entity_id": "Q581",
            "rejected": false,
            "rejected_at": 0,
            "beneficiary_account_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
            "beneficiary_account_name": "Q2PAY TECHNOLOGIES P",
            "beneficiary_account_bank_acc_no": "123456789",
            "beneficiary_account_ifsc_code": "HDFC0000233",
            "beneficiary_account_bank_name": "HDFC Bank",
            "beneficiary_account_approval_status": "approved",
            "owner_account_id":"xxxxxxxx-xxxx-xxxx-xxxxxx",
            "owner_account_bank_acc_no":"9482940300",
            "owner_account_ifsc_code":"ICIC0000112",
            "owner_account_bank_name":"ICICI Bank",
            "owner_account_type":"Current Account",
            "owner_account_balance":"1500.0",
            "owner_account_balance_last_fetched_at":"xxxxxxxx",
            "owner_account_balance_last_fetched_at_in_words":"less than a minute ago"
            "additional_data": {
                "data": [
                    {
                        "name": "month",
                        "position": 1,
                        "data_type": "string",
                        "mandatory": "Y",
                        "value": "Mon"
                    },
                    {
                        "name": "leaves",
                        "position": 2,
                        "data_type": "numeric",
                        "mandatory": "N"
                    },
                    {
                        "name": "PAN",
                        "position": 3,
                        "data_type": "string",
                        "mandatory": "N"
                    },
                    {
                        "name": "Accountants",
                        "position": 4,
                        "data_type": "list",
                        "mandatory": "N",
                        "data": [
                            "Pradeep",
                            "Sachin",
                            "Sewaram"
                        ]
                    }
                ]
            }, 
            "created_on": "xxxxxxxx",
            "last_updated_user_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
            "last_updated_status": "Approved",
            "last_updated_timestamp": "xxxxxxxx",
            "last_updated_user_name": "Akshay Rangnekar",
            "distribution_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
            "distribution_identifier": "xxxxxxxxxxxxxxxxxxxxxxxx",
            "distribution_settlement_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
            "distribution_bank": "HDFC Bank",
            "distribution_amount": "512.0",
            "distribution_mode_of_payment": "NEFT",
            "distribution_lifecycle_status": "awaiting_funds",
            "distribution_utr": "xxxxxxx",
            "distribution_initiated_at": "xxxxxxx",
            "distribution_credited_at": "xxxxxxx",
            "distribution_credit_remarks": "xxxxxxx",
            "distribution_approved": true,
            "distribution_approved_at": "2024-01-12T10:27:20.033Z",
            "distribution_approved_by": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
            "distribution_approval_strategy": "user",
            "distribution_logs": [
                {
                    "action": "Created",
                    "user_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
                    "timestamp": "2024-01-12T10:09:53.886Z",
                    "user_full_name": "Akshay Rangnekar"
                },
                {
                    "brand": "Android",
                    "model": "Android SDK built for x86",
                    "action": "Approved",
                    "user_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
                    "platform": "android",
                    "last_name": "Rangnekar",
                    "last_used": "2024-01-12T10:27:19.963Z",
                    "timestamp": "2024-01-12T10:27:20.044Z",
                    "first_name": "Akshay",
                    "ip_address": "127.0.0.1",
                    "is_primary": false,
                    "os_version": "6.0",
                    "request_ip": "127.0.0.1",
                    "user_grade": "Director",
                    "is_verified": false,
                    "sdk_version": "23",
                    "manufacturer": "unknown",
                    "serial_number": "EMULATOR32X1X14X0",
                    "final_approval": true,
                    "logged_in_flag": true,
                    "logged_in_time": "2024-01-11T10:27:49.369Z",
                    "user_full_name": "Akshay Rangnekar",
                    "app_version_code": "54",
                    "app_version_name": "1.43"
                }
            ],
            "logs": [
                {
                    "brand": "Android",
                    "model": "Android SDK built for x86",
                    "action": "Created",
                    "user_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
                    "platform": "android",
                    "last_name": "Rangnekar",
                    "last_used": "2024-01-12T10:09:53.679Z",
                    "timestamp": "2024-01-12T10:09:53.714Z",
                    "first_name": "Akshay",
                    "ip_address": "127.0.0.1",
                    "is_primary": false,
                    "os_version": "6.0",
                    "request_ip": "127.0.0.1",
                    "is_verified": false,
                    "sdk_version": "23",
                    "manufacturer": "unknown",
                    "serial_number": "EMULATOR32X1X14X0",
                    "logged_in_flag": true,
                    "logged_in_time": "2024-01-11T10:27:49.369Z",
                    "user_full_name": "Akshay Rangnekar",
                    "app_version_code": "54",
                    "app_version_name": "1.43"
                },
                {
                    "brand": "Android",
                    "model": "Android SDK built for x86",
                    "action": "Approved",
                    "user_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
                    "platform": "android",
                    "last_name": "Rangnekar",
                    "last_used": "2024-01-12T10:09:53.679Z",
                    "timestamp": "2024-01-12T10:09:53.734Z",
                    "first_name": "Akshay",
                    "ip_address": "127.0.0.1",
                    "is_primary": false,
                    "os_version": "6.0",
                    "request_ip": "127.0.0.1",
                    "is_verified": false,
                    "sdk_version": "23",
                    "manufacturer": "unknown",
                    "serial_number": "EMULATOR32X1X14X0",
                    "final_approval": true,
                    "logged_in_flag": true,
                    "logged_in_time": "2024-01-11T10:27:49.369Z",
                    "user_full_name": "Akshay Rangnekar",
                    "app_version_code": "54",
                    "app_version_name": "1.43",
                    "authorization_rule": "Director~1"
                }
            ]
        }
    ],
    "title": {
        "records": 1,
        "current_page": 1,
        "total_pages": 1,
        "page_item_count": 1
    }
}

This endpoint retrieves specific Beneficiary Transactions.

UAT HTTP Request

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

PRODUCTION HTTP Request

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

Service Details

Service ID Description
VBeneficiaryTxn View specific Beneficiary Transactions

Create Beneficiary Transactions

curl -X POST "https://<environmenturl>/api/transactions/beneficiary"
  -H "X-Api-Key: <your secure token>"
  -H "Content-Type: application/json"
  -d "{ 
    "amount" : "67000.0",
    "owner_account_id":"xxxxxxxx-xxxx-xxxx-xxxxxx",
    "beneficiary_account_id" :"xxxxxxxx-xxxx-xxxx-xxxxxx",
    "payment_method":"RTGS",
    "category": "Beneficiary",
    "additional_data": {
     "data": [
      {
        "name": "month",
        "position": 1,
        "data_type": "string",
        "mandatory": "Y",
        "value": "Mon"
      },
      {
        "name": "leaves",
        "position": 2,
        "data_type": "numeric",
        "mandatory": "N"
      },
      {
        "name": "PAN",
        "position": 3,
        "data_type": "string",
        "mandatory": "N"
      },
      {
        "name": "Accountants",
        "position": 4,
        "data_type": "list",
        "mandatory": "N",
        "data": [
          "Pradeep",
          "Sachin",
          "Sewaram"
          ]
      }
    ]
  }
 }"
require 'net/http'
require 'uri'
require 'json'

uri = URI.parse("https://<environmenturl>/api/transactions/beneficiary") header = {'X-Api-Key' => '<your secure token>', 'Content-Type' => 'application/json'} body = { "amount" : "67000.0", "owner_account_id":"xxxxxxxx-xxxx-xxxx-xxxxxx", "beneficiary_account_id" :"xxxxxxxx-xxxx-xxxx-xxxxxx", "payment_method":"RTGS", "category": "Beneficiary", "additional_data": { "data": [ { "name": "month", "position": 1, "data_type": "string", "mandatory": "Y", "value": "Mon" }, { "name": "leaves", "position": 2, "data_type": "numeric", "mandatory": "N" }, { "name": "PAN", "position": 3, "data_type": "string", "mandatory": "N" }, { "name": "Accountants", "position": 4, "data_type": "list", "mandatory": "N", "data": [ "Pradeep", "Sachin", "Sewaram" ] } ] } } http = Net::HTTP.new(uri.host, uri.port) http.use_ssl = true request = Net::HTTP::Post.new(uri.request_uri, header) request.body = body.to_json response = http.request(request)

const data = {
    "amount" : "67000.0",
    "owner_account_id":"xxxxxxxx-xxxx-xxxx-xxxxxx",
    "beneficiary_account_id" :"xxxxxxxx-xxxx-xxxx-xxxxxx",
    "payment_method":"RTGS",
    "category": "Beneficiary",
    "additional_data": {
     "data": [
      {
        "name": "month",
        "position": 1,
        "data_type": "string",
        "mandatory": "Y",
        "value": "Mon"
      },
      {
        "name": "leaves",
        "position": 2,
        "data_type": "numeric",
        "mandatory": "N"
      },
      {
        "name": "PAN",
        "position": 3,
        "data_type": "string",
        "mandatory": "N"
      },
      {
        "name": "Accountants",
        "position": 4,
        "data_type": "list",
        "mandatory": "N",
        "data": [
          "Pradeep",
          "Sachin",
          "Sewaram"
          ]
      }
    ]
  }
};

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

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

{
    "amount" : "67000.0",
    "owner_account_id":"xxxxxxxx-xxxx-xxxx-xxxxxx",
    "beneficiary_account_id" :"xxxxxxxx-xxxx-xxxx-xxxxxx",
    "payment_method":"RTGS",
    "category": "Beneficiary",
    "additional_data": {
     "data": [
      {
        "name": "month",
        "position": 1,
        "data_type": "string",
        "mandatory": "Y",
        "value": "Mon"
      },
      {
        "name": "leaves",
        "position": 2,
        "data_type": "numeric",
        "mandatory": "N"
      },
      {
        "name": "PAN",
        "position": 3,
        "data_type": "string",
        "mandatory": "N"
      },
      {
        "name": "Accountants",
        "position": 4,
        "data_type": "list",
        "mandatory": "N",
        "data": [
          "Pradeep",
          "Sachin",
          "Sewaram"
          ]
      }
    ]
    }
}

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

{
    "status": true,
    "total_count": 1,
    "total_amount": "512.0",
    "transaction": [
        {
            "total_amount": "512.0",
            "txn_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
            "amount": "512.0",
            "category": "Salary",
            "lifecycle_status": "pending",
            "payment_method":"RTGS",
            "txn_initiator": "Akshay Rangnekar",
            "approved": "N",
            "approved_at": 0,
            "payment_charge": "0.0",
            "tax_amount": "0.0",
            "entity_id": "Q581",
            "rejected": false,
            "rejected_at": 0,
            "beneficiary_account_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
            "beneficiary_account_name": "Q2PAY TECHNOLOGIES P",
            "beneficiary_account_bank_acc_no": "12345678",
            "beneficiary_account_ifsc_code": "HDFC0000231",
            "beneficiary_account_bank_name": "HDFC Bank",
            "beneficiary_account_approval_status": "approved",
            "owner_account_id":"xxxxxxxx-xxxx-xxxx-xxxxxx",
            "owner_account_bank_acc_no":"9482940300",
            "owner_account_ifsc_code":"ICIC0000112",
            "owner_account_bank_name":"ICICI Bank",
            "owner_account_type":"Current Account",
            "owner_account_balance":"1500.0",
            "owner_account_balance_last_fetched_at":"xxxxxxxx",
            "owner_account_balance_last_fetched_at_in_words":"less than a minute ago"
            "additional_data": {
                "data": [
                    {
                        "name": "month",
                        "position": 1,
                        "data_type": "string",
                        "mandatory": "Y",
                        "value": "Mon"
                    },
                    {
                        "name": "leaves",
                        "position": 2,
                        "data_type": "numeric",
                        "mandatory": "N"
                    },
                    {
                        "name": "PAN",
                        "position": 3,
                        "data_type": "string",
                        "mandatory": "N"
                    },
                    {
                        "name": "Accountants",
                        "position": 4,
                        "data_type": "list",
                        "mandatory": "N",
                        "data": [
                            "Pradeep",
                            "Sachin",
                            "Sewaram"
                        ]
                    }
                ]
            },
            "created_on": "xxxxxxxx",
            "last_updated_user_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
            "last_updated_status": "Approved",
            "last_updated_timestamp": "xxxxxxxx",
            "last_updated_user_name": "Akshay Rangnekar",
            "distribution_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
            "distribution_identifier": "xxxxxxxxxxxxxxxxxxxxxxxx",
            "distribution_settlement_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
            "distribution_bank": "HDFC Bank",
            "distribution_amount": "512.0",
            "distribution_mode_of_payment": "NEFT",
            "distribution_lifecycle_status": "created",
            "distribution_approved": false,
            "distribution_approval_strategy": "system",
            "distribution_logs": [
                {
                    "action": "Created",
                    "user_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
                    "timestamp": "2024-01-12T10:09:53.886Z",
                    "user_full_name": "Akshay Rangnekar"
                }
            ],
            "logs": [
                {
                    "action": "Created",
                    "user_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
                    "user_full_name": "Akshay Rangnekar",
                    "timestamp": "2024-01-12T10:09:53.714Z",
                    "request_ip": "127.0.0.1",
                    "last_used": "2024-01-12T10:09:53.679Z",
                    "logged_in_flag": true,
                    "logged_in_time": "2024-01-11T10:27:49.369Z",
                    "app_version_name": "1.43",
                    "app_version_code": "54",
                    "platform": "android",
                    "model": "Android SDK built for x86",
                    "manufacturer": "unknown",
                    "brand": "Android",
                    "serial_number": "EMULATOR32X1X14X0",
                    "os_version": "6.0",
                    "sdk_version": "23",
                    "ip_address": "127.0.0.1",
                    "is_primary": false,
                    "is_verified": false,
                    "first_name": "Akshay",
                    "last_name": "Rangnekar"
                },
                {
                    "action": "Approved",
                    "user_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
                    "user_full_name": "Akshay Rangnekar",
                    "authorization_rule": "Director~1",
                    "final_approval": true,
                    "timestamp": "2024-01-12T10:09:53.734Z",
                    "request_ip": "127.0.0.1",
                    "last_used": "2024-01-12T10:09:53.679Z",
                    "logged_in_flag": true,
                    "logged_in_time": "2024-01-11T10:27:49.369Z",
                    "app_version_name": "1.43",
                    "app_version_code": "54",
                    "platform": "android",
                    "model": "Android SDK built for x86",
                    "manufacturer": "unknown",
                    "brand": "Android",
                    "serial_number": "EMULATOR32X1X14X0",
                    "os_version": "6.0",
                    "sdk_version": "23",
                    "ip_address": "127.0.0.1",
                    "is_primary": false,
                    "is_verified": false,
                    "first_name": "Akshay",
                    "last_name": "Rangnekar"
                }
            ]
        }
    ],
    "title": {
        "records": 1,
        "current_page": 1,
        "total_pages": 1,
        "page_item_count": 1
    }
}

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

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

This endpoint creates a Beneficiary Transaction.

UAT HTTP Request

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

PRODUCTION HTTP Request

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

Query Parameters

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

Service Details

Service ID Description
CBeneficiaryTxn Create Beneficiary Transaction

Approve Beneficiary Transaction

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

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

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

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

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

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

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

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

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

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

{
  "status": true,
  "total_count": 1,
  "total_amount": "25.0",
  "transactions": [
    {
      "total_amount": "25.0",
      "txn_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
      "amount": "25.0",
      "category": "Mobile Bill",
      "lifecycle_status": "approved",
      "distribution_remark": "Testing",
      "txn_initiator": "Sneha Gaikwad",
      "approved": "Y",
      "approved_at": "xxxxxxxx",
      "payment_charge": "0.0",
      "tax_amount": "0.0",
      "entity_id": "EQ567",
      "rejected": false,
      "rejected_at": 0,
      "beneficiary_account_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
      "beneficiary_account_name": "ANKITA ANIL GAYKAR",
      "beneficiary_account_bank_acc_no": "123456789",
      "beneficiary_account_ifsc_code": "SBIN0012346",
      "beneficiary_account_bank_name": "State Bank of India",
      "beneficiary_account_approval_status": "approved",
      "owner_account_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
      "owner_account_bank_acc_no": "000198765434",
      "owner_account_ifsc_code": "HDFC0000220",
      "owner_account_bank_name": "HDFC Bank",
      "owner_account_type": "Current Account",
      "owner_account_balance": "0.0",
      "owner_account_balance_last_fetched_at": "xxxxxxxx",
      "owner_account_balance_last_fetched_at_in_words": "about 4 hours ago",
      "additional_data": {
        "data": [
          {
            "name": "month",
            "position": 1,
            "data_type": "string",
            "mandatory": "Y",
            "value": "Mon"
          },
          {
            "name": "leaves",
            "position": 2,
            "data_type": "numeric",
            "mandatory": "N"
          },
          {
            "name": "PAN",
            "position": 3,
            "data_type": "string",
            "mandatory": "N"
          },
          {
            "name": "Accountants",
            "position": 4,
            "data_type": "list",
            "mandatory": "N",
            "data": [
              "Pradeep",
              "Sachin",
              "Sewaram"
            ]
          }
        ]
      },
      "created_on": "xxxxxxxx",
      "last_updated_user_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
      "last_updated_status": "Approved",
      "last_updated_timestamp": "xxxxxxxx",
      "last_updated_user_name": "sidharth shukla",
      "distribution_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
      "distribution_identifier": "xxxxxxxxxxxxxxxxxxxxxxxx",
      "distribution_settlement_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
      "distribution_bank": "State Bank of India",
      "distribution_amount": "25.0",
      "distribution_mode_of_payment": "NEFT",
      "distribution_lifecycle_status": "created",
      "distribution_approved": false,
      "distribution_approval_strategy": "system",
      "distribution_logs": [
        {
          "action": "Created",
          "user_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
          "timestamp": "2024-04-10T09:55:17.671Z",
          "user_full_name": "sidharth shukla",
          "user_platform_details": null
        }
      ],
      "logs": [
        {
          "action": "Created",
          "user_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
          "platform": "web",
          "last_name": "Gaikwad",
          "last_used": "2024-04-10T09:51:29.895Z",
          "timestamp": "2024-04-10T09:51:29.923Z",
          "first_name": "Sneha",
          "ip_address": "103.212.154.226",
          "is_primary": false,
          "os_version": "Windows 10",
          "request_ip": "103.212.154.226",
          "is_verified": false,
          "browser_name": "google chrome",
          "logged_in_flag": true,
          "logged_in_time": "2024-04-10T09:48:56.117Z",
          "user_full_name": "Sneha Gaikwad"
        },
        {
          "action": "Approved",
          "user_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
          "platform": "web",
          "last_name": "shukla",
          "last_used": "2024-04-10T09:55:17.533Z",
          "timestamp": "2024-04-10T09:55:17.604Z",
          "first_name": "sidharth",
          "ip_address": "103.212.154.226",
          "is_primary": false,
          "os_version": "Windows 10",
          "request_ip": "103.212.154.226",
          "is_verified": false,
          "browser_name": "google chrome",
          "final_approval": true,
          "logged_in_flag": true,
          "logged_in_time": "2024-04-10T09:55:06.039Z",
          "user_full_name": "sidharth shukla",
          "authorization_rule": "Approver~1"
        }
      ]
    }
  ],
  "title": {
    "records": 1,
    "current_page": 1,
    "total_pages": 1,
    "page_item_count": 50
  }
}

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

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

This endpoint approve a Beneficiary Transaction.

UAT HTTP Request

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

PRODUCTION HTTP Request

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

Query Parameters

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

Service Details

Service ID Description
ABeneficiaryTxn Approve Beneficiary Transaction

Reject Beneficiary Transaction

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

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

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

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

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

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

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

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

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

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

{
  "status": true,
  "total_count": 1,
  "total_amount": "25.0",
  "transactions": [
    {
      "total_amount": "25.0",
      "txn_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
      "amount": "25.0",
      "category": "Mobile Bill",
      "lifecycle_status": "rejected",
      "distribution_remark": "Testing",
      "txn_initiator": "Sneha Gaikwad",
      "approved": "N",
      "approved_at": 0,
      "payment_charge": "0.0",
      "tax_amount": "0.0",
      "entity_id": "ERT567",
      "rejected": true,
      "rejection_reason": "update transaction method",
      "rejected_by": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
      "rejected_at": "2024-04-10T10:18:09.447Z",
      "beneficiary_account_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
      "beneficiary_account_name": "ANKITA ANIL GAYKAR",
      "beneficiary_account_bank_acc_no": "1234567899",
      "beneficiary_account_ifsc_code": "SBIN2333445",
      "beneficiary_account_bank_name": "State Bank of India",
      "beneficiary_account_approval_status": "approved",
      "owner_account_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
      "owner_account_bank_acc_no": "1111999876544",
      "owner_account_ifsc_code": "HDFC0000223",
      "owner_account_bank_name": "HDFC Bank",
      "owner_account_type": "Current Account",
      "owner_account_balance": "0.0",
      "owner_account_balance_last_fetched_at": "xxxxxxxx",
      "owner_account_balance_last_fetched_at_in_words": "about 4 hours ago",
      "additional_data": {
        "data": [
          {
            "name": "month",
            "position": 1,
            "data_type": "string",
            "mandatory": "Y",
            "value": "Mon"
          },
          {
            "name": "leaves",
            "position": 2,
            "data_type": "numeric",
            "mandatory": "N"
          },
          {
            "name": "PAN",
            "position": 3,
            "data_type": "string",
            "mandatory": "N"
          },
          {
            "name": "Accountants",
            "position": 4,
            "data_type": "list",
            "mandatory": "N",
            "data": [
              "Pradeep",
              "Sachin",
              "Sewaram"
            ]
          }
        ]
      },
      "created_on": "xxxxxxxx",
      "last_updated_user_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
      "last_updated_status": "Rejected",
      "last_updated_timestamp": "xxxxxxxx",
      "last_updated_user_name": "Sneha Gaikwad",
      "logs": [
        {
          "action": "Created",
          "user_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
          "platform": "web",
          "last_name": "Gaikwad",
          "last_used": "2024-04-10T10:17:46.130Z",
          "timestamp": "2024-04-10T10:17:46.159Z",
          "first_name": "Neha",
          "ip_address": "182.79.233.142",
          "is_primary": false,
          "os_version": "Windows 10",
          "request_ip": "182.79.233.142",
          "is_verified": false,
          "browser_name": "google chrome",
          "logged_in_flag": true,
          "logged_in_time": "2024-04-10T10:15:42.396Z",
          "user_full_name": "Sneha Gaikwad"
        },
        {
          "action": "Rejected",
          "user_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
          "platform": "web",
          "last_name": "Gaikwad",
          "last_used": "2024-04-10T10:18:09.398Z",
          "timestamp": "2024-04-10T10:18:09.454Z",
          "first_name": "Sneha",
          "ip_address": "103.212.154.226",
          "is_primary": false,
          "os_version": "Windows 10",
          "request_ip": "103.212.154.226",
          "is_verified": false,
          "browser_name": "google chrome",
          "logged_in_flag": true,
          "logged_in_time": "2024-04-10T10:15:42.396Z",
          "user_full_name": "Sneha Gaikwad",
          "rejection_reason": "update transaction method"
        }
      ]
    }
  ],
  "title": {
    "records": 1,
    "current_page": 1,
    "total_pages": 1,
    "page_item_count": 50
  }
}

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

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

This endpoint reject a Beneficiary Transaction.

UAT HTTP Request

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

PRODUCTION HTTP Request

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

Query Parameters

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

Service Details

Service ID Description
ABeneficiaryTxn Reject Beneficiary Transaction

Actionable Beneficiary Transaction

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

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

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

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

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

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

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

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

{
    "status": true,
    "total_count": 1,
    "total_amount": "2000.0",
    "transactions": [
        {
            "total_amount": "1000.0",
            "txn_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
            "amount": "1000.0",
            "category": "Beneficiary",
            "lifecycle_status": "pending",
            "txn_initiator": "Priya jawale",
            "approved": "N",
            "approved_at": 0,
            "payment_charge": "0.0",
            "tax_amount": "0.0",
            "entity_id": "QRT457",
            "rejected": false,
            "rejected_at": 0,
            "beneficiary_account_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
            "beneficiary_account_name": "Mr AKASH PRAMOD BAGUL",
            "beneficiary_account_bank_acc_no": "12345678",
            "beneficiary_account_ifsc_code": "SBIN0031200",
            "beneficiary_account_bank_name": "State Bank of India",
            "beneficiary_account_approval_status": "approved",
            "owner_account_id":"xxxxxxxx-xxxx-xxxx-xxxxxx",
            "owner_account_bank_acc_no":"9482940300",
            "owner_account_ifsc_code":"ICIC0000112",
            "owner_account_bank_name":"ICICI Bank",
            "owner_account_type":"Current Account",
            "owner_account_balance":"1500.0",
            "owner_account_balance_last_fetched_at":"xxxxxxxx",
            "owner_account_balance_last_fetched_at_in_words":"less than a minute ago"
            "additional_data": {
                "data": [
                    {
                        "name": "month",
                        "position": 1,
                        "data_type": "string",
                        "mandatory": "Y",
                        "value": "Mon"
                    },
                    {
                        "name": "leaves",
                        "position": 2,
                        "data_type": "numeric",
                        "mandatory": "N"
                    },
                    {
                        "name": "PAN",
                        "position": 3,
                        "data_type": "string",
                        "mandatory": "N"
                    },
                    {
                        "name": "Accountants",
                        "position": 4,
                        "data_type": "list",
                        "mandatory": "N",
                        "data": [
                            "Pradeep",
                            "Sachin",
                            "Sewaram"
                        ]
                    }
                ]
            }, 
            "created_on": "xxxxxxxx",
            "last_updated_user_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx",
            "last_updated_status": "Created",
            "last_updated_timestamp": "xxxxxxxx",
            "last_updated_user_name": "Akshay Rangnekar"
        }
    ],
    "title": {
        "records": 1,
        "current_page": 1,
        "total_pages": 1,
        "page_item_count": 50
    }
}

This endpoint actionable a Beneficiary Transaction.

UAT HTTP Request

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

PRODUCTION HTTP Request

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

Query Parameters

Parameter Default Description Required Sample
entity_id N.A. entity id for beneficiary transaction Yes (Admin) QRT457
category N.A. category for beneficiary transaction No Beneficiary

Service Details

Service ID Description
VBeneficiaryTxn Actionable Beneficiary Transaction

Holiday List

Holiday List helps user to see all the holidays

Get All Holiday List

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

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

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

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

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

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

SUCCESS RESPONSE The request returns JSON structured like below on successful get holiday list from today to the future

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

This endpoint will show all holidays from today to the future.

UAT HTTP Request

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

PRODUCTION HTTP Request

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

Query Parameters

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

Service Details

Service ID Description
PLogin Get Holiday List

HTTP Error Codes

The Xpentra API uses the following error codes:

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