INEXOPAY API Documentation
Complete integration guide for balance checking, NSDL bank services, PAN applications, and Aadhaar verification.
Introduction
Welcome to the INEXOPAY API documentation. Our APIs provide seamless integration for banking services, PAN applications, and Aadhaar verification.
Quick Start
- Get your api_key and username from the dashboard
- Use the API Tester below each endpoint to test live requests
- All APIs use Body Authentication (api_key, username in request body)
Authentication
All API requests require authentication. You can pass api_key and username either in the request body OR in the request headers (as x-api-key and x-api-username).
Body Authentication
Pass your API credentials in the request body for all API endpoints.
| Parameter | Type | Required | Description |
|---|---|---|---|
| api_key | string | Yes | Your API key from dashboard |
| username | string | Yes | Your registered username |
Header Authentication
Pass your API credentials in the request headers for all API endpoints.
| Header | Type | Required | Description |
|---|---|---|---|
| x-api-key | string | Yes | Your API key from dashboard |
| x-api-username | string | Yes | Your registered username |
Error Codes
Common error codes returned by the API.
| Code | Status | Description |
|---|---|---|
| 200 | Success | Request processed successfully |
| 400 | Bad Request | Missing or invalid request parameters |
| 401 | Unauthorized | Invalid API key or username |
| 402 | Payment Required | Insufficient balance |
| 403 | Forbidden | IP not whitelisted, account not approved, or subscription expired |
| 405 | Method Not Allowed | Wrong HTTP method (e.g., GET instead of POST) |
| 500 | Server Error | Internal server error |
Account & Status APIs
API Status Check
Check API Status & Balance
| Parameter | Type | Required | Description |
|---|---|---|---|
| api_key / x-api-key | string | Yes | Your API key |
| username / x-api-username | string | Yes | Registered username |
{
"status_code": 200,
"status": "SUCCESS",
"message": "API Status Retrieved",
"data": {
"owner_name": "Your Name",
"api_balance": 1250.50,
"api_status": "ACTIVE",
"plan_name": "Premium Plan",
"bind_ip": "103.XX.XX.XX",
"your_ip": "103.XX.XX.XX",
"ip_status": "MATCHED"
}
}
Balance Check
Check Your Account Balance
| Parameter | Type | Required | Description |
|---|---|---|---|
| api_key / x-api-key | string | Yes | Your API key |
| username / x-api-username | string | Yes | Registered username |
{
"status": "SUCCESS",
"error_code": 200,
"message": "Balance fetched successfully",
"balance": 1250.50,
"username": "jojo"
}
NSDL Bank APIs
Agent Onboarding
Onboard New NSDL Bank Agent
| Parameter | Type | Required | Description |
|---|---|---|---|
| api_key / x-api-key | string | Yes | Your API key |
| username / x-api-username | string | Yes | Your username |
| shop_name | string | Yes | Agent's shop name |
| name | string | Yes | Agent's full name |
| string | Yes | Agent's email address | |
| mobile | string | Yes | Agent's mobile number |
| date_of_birth | string | Yes | Date of birth (YYYY-MM-DD) |
| address | string | Yes | Full address |
| state_name | string | Yes | State name |
| city_name | string | Yes | City name |
| pincode | string | Yes | Area pincode |
| pancard | string | Yes | Agent's PAN number |
| bcagentid | string | Optional | Custom Agent ID. If omitted, will be auto-generated (e.g. INX00001). |
{
"status": true,
"message": "Agent verified successfully..!! Now you can create your agent account.",
"data": {
"txn_id": "NSDLP7",
"agent_id": "NSDLP7"
}
}
// Failure Response
{
"status": false,
"message": "Agent not verified :: THE GIVEN MOBILENUMBER IS ALREADY REGISTER"
}
Account Opening
Open New NSDL Bank Account
| Parameter | Type | Required | Description |
|---|---|---|---|
| api_key / x-api-key | string | Yes | Your API key |
| username / x-api-username | string | Yes | Your username |
| orderid | string | Yes | Your unique order ID |
| account_type | string | Yes | 1 = Saving, 2 = Current |
| bcagentid | string | Yes | Your BC Agent ID (from onboarding) |
| agent_pancard | string | Yes | Agent's registered PAN card (stored as transaction reference) |
| first_name | string | Yes | Customer first name |
| middle_name | string | Optional | Customer middle name |
| last_name | string | Yes | Customer last name |
| string | Yes | Customer email | |
| phone | string | Yes | Customer mobile number |
| pancard | string | Yes | Customer PAN number |
| pincode | string | Yes | Customer area pincode |
| return_url | string | Yes | URL to redirect after completion |
{
"status": true,
"message": "Success..!!",
"data": "https://nsdljiffy.co.in/jarvisjiffyBroker/accountOpen?signcs=...",
"user": {
"txn_id": "NSDLUCBDRJCBV",
"customer_id": 838822
}
}
Account Status Check
Check Account Status by PAN
| Parameter | Type | Required | Description |
|---|---|---|---|
| api_key / x-api-key | string | Yes | Your API key |
| username / x-api-username | string | Yes | Your username |
| pancard | string | Yes | PAN number to check status |
{
"status": true,
"message": "Success",
"data": {
"id": 34,
"account_type": 2,
"txn_id": "NSDLUCBDRJCBV",
"first_name": "Binod",
"middle_name": null,
"last_name": "Kumar",
"email": "binodk@gmail.com",
"phone": "7091919185",
"pancard": "NTFPS6013M",
"pincode": "852105",
"is_completed": 1,
"message": null,
"status": 1,
"date": "2026-05-04T10:00:00.000000Z",
"is_refunded": 0,
"created_at": "2026-05-04T10:00:00.000000Z",
"updated_at": "2026-05-04T10:00:00.000000Z"
}
}
// Error response
{
"status": false,
"message": "Record Not Found",
"data": {
"response": "Record Not Found",
"respcode": "99"
}
}
Account Details
Get Account Details by Txn ID
| Parameter | Type | Required | Description |
|---|---|---|---|
| api_key / x-api-key | string | Yes | Your API key |
| username / x-api-username | string | Yes | Your username |
| txn_id | string | Optional | Transaction ID from account-open response |
| orderid | string | Optional | Your unique order ID (will resolve to txn_id if provided) |
{
"status": true,
"message": "Success",
"data": {
"id": 34,
"account_type": 2,
"txn_id": "NSDLUCBDRJCBV",
"first_name": "Binod",
"middle_name": null,
"last_name": "Kumar",
"email": "binodk@gmail.com",
"phone": "7091919185",
"pancard": "NTFPS6013M",
"pincode": "852105",
"is_completed": 1,
"message": null,
"status": 1,
"date": "2026-05-04T10:00:00.000000Z",
"is_refunded": 0,
"created_at": "2026-05-04T10:00:00.000000Z",
"updated_at": "2026-05-04T10:00:00.000000Z"
}
}
Incomplete Account Opening URL Retrieval
Retrieve Incomplete Transaction URL
| Parameter | Type | Required | Description |
|---|---|---|---|
| api_key / x-api-key | string | Yes | Your API key |
| username / x-api-username | string | Yes | Your username |
| orderid | string | Yes | Your unique order ID |
{
"status": true,
"message": "Redirect URL retrieved successfully.",
"order_id": "testbank",
"txn_id": "NSDLUCBDRJCBV",
"account_url": "https://nsdljiffy.co.in/jarvisjiffyBroker/accountOpen?signcs=...",
"status_in_db": "pending"
}
// Failure Response (when status is not pending or not found)
{
"status": false,
"message": "Transaction status is failed. URL can only be retrieved for pending transactions."
}
Wallet Load APIs
Generate UPI QR
Generate UPI QR for Wallet Load
| Parameter | Type | Required | Description |
|---|---|---|---|
| api_key / x-api-key | string | Yes | Your API key |
| username / x-api-username | string | Yes | Your username |
| amount | number | Yes | Amount to load (minimum as per settings) |
{
"status_code": 200,
"status": "SUCCESS",
"message": "QR generated successfully! Please scan and pay, then use check_status API to verify payment.",
"data": {
"order_id": "WAL1234567890123",
"amount": 100,
"qr_url": "https://api.qrserver.com/v1/create-qr-code/...",
"upi_id": "paytmqr5hcr1f@ptys",
"account_holder_name": "INEXOPAY",
"tx_string": "upi://pay?pa=paytmqr5hcr1f@ptys&pn=INEXOPAY&cu=INR&tn=WAL1234567890123&am=100&tr=WAL1234567890123",
"status": "pending"
}
}
Check Payment Status
Check Wallet Load Payment Status
| Parameter | Type | Required | Description |
|---|---|---|---|
| api_key / x-api-key | string | Yes | Your API key |
| username / x-api-username | string | Yes | Your username |
| order_id | string | Yes | Order ID from load_request response |
{
"status_code": 200,
"status": "SUCCESS",
"data": {
"order_id": "WAL1234567890123",
"amount": 100,
"status": "success",
"date_time": "2025-01-15 10:30:00",
"bank": "UPI QR - INEXOPAY (paytmqr5hcr1f@ptys)",
"mode": "API_UPI_QR",
"remark": "Online Wallet Load via API - Success - UTR: BANK123456",
"new_balance": 1100
}
}
NSDL PAN APIs
Request PAN
Submit PAN Application
| Parameter | Type | Required | Description |
|---|---|---|---|
| api_key / x-api-key | string | Yes | Your API key |
| username / x-api-username | string | Yes | Your username |
| number | string | Yes | Applicant mobile number |
| orderid | string | Yes | Your unique order ID |
| pan_mode | string | Yes | KYC mode: EKYC or ESIGN |
| pan_type | string | Yes | new_pan or correction |
{
"status_code": 200,
"status": "SUCCESS",
"message": "PAN Application Initiated Successfully",
"data": {
"txid": "50089349",
"url": "https://connect.inspay.in/nsdl/pan?process_id=2504&txid=50089349&mode=K",
"number": "9876543210",
"orderid": "ORD12345"
}
}
// Error Response:
{
"status_code": 400,
"status": "FAILED",
"message": "Error description"
}
PAN Status Check
Check PAN Application Status
| Parameter | Type | Required | Description |
|---|---|---|---|
| api_key / x-api-key | string | Yes | Your API key |
| username / x-api-username | string | Yes | Your username |
| orderid | string | Yes | Order ID from PAN request |
{
"status_code": 200,
"status": "SUCCESS",
"message": "Status fetched from portal",
"order_id": "ORD12345",
"reference": "OPB5020WJ7TM",
"number": "9876543210",
"amount": 107.00,
"date_time": "2025-01-15 10:30:00",
"data": {
"status": "Success",
"orderid": "ORD12345",
"txid": "484340",
"amount": 107,
"opid": "OPB5020WJ7TM",
"number": "9876543210",
"created_at": "2026-05-04 18:23:40",
"updated_at": "2026-05-04 18:23:40"
}
}
Incomplete Applications
Resume Incomplete PAN Application
| Parameter | Type | Required | Description |
|---|---|---|---|
| api_key / x-api-key | string | Yes | Your API key |
| username / x-api-username | string | Yes | Your username |
| orderid | string | Yes | Order ID of incomplete application |
{
"status_code": 200,
"status": "SUCCESS",
"message": "Incomplete PAN Application Resumed",
"data": {
"txid": "50089422",
"url": "https://connect.inspay.in/nsdl/pan_inc?process_id=2504&txid=50089422",
"orderid": "ORD12345"
}
}
// Error Response:
{
"status_code": 400,
"status": "FAILED",
"message": "URL Expired, please try again with a new request"
}
Aadhaar Verification APIs
Send Aadhaar OTP
Send OTP to Aadhaar-Linked Mobile
| Parameter | Type | Required | Description |
|---|---|---|---|
| api_key / x-api-key | string | Yes | Your API key |
| username / x-api-username | string | Yes | Your username |
| orderid | string | Yes | Your unique order ID |
| aadhaar_number | string | Yes | 12-digit Aadhaar number |
{
"status_code": 200,
"status": "success",
"message": "Successfully generated One Time Password (OTP).",
"data": {
"request_id": "ADHRVFR19052420260531_1e2d274",
"aadhaar": "441003356445",
"status": "pending"
},
"meta": {
"request_id": "7c15b0c5-6f72-4487-a61a-9cfc8be80d78",
"time": "2025-01-15T10:30:00+00:00"
}
}
Verify Aadhaar OTP
Verify OTP & Get Aadhaar Details
| Parameter | Type | Required | Description |
|---|---|---|---|
| api_key / x-api-key | string | Yes | Your API key |
| username / x-api-username | string | Yes | Your username |
| orderid | string | Yes | Your unique order ID |
| request_id | string | Yes | Request ID from send-otp response |
| otp | string | Yes | 6-digit OTP received on mobile |
| aadhaar_number | string | Yes | Same Aadhaar number used in send-otp |
{
"status_code": 200,
"status": "success",
"message": "Aadhaar verification successful",
"data": {
"request_id": "ADHRVFR19052420260531_1e2d274",
"status": "verified",
"aadhaar_details": {
"full_name": "Shivam",
"dob": "01-01-2001",
"gender": "Male",
"address": "Nagla Sarai, Dabar, Agra, Uttar Pradesh, 283110"
}
},
"meta": {
"request_id": "86573ba4-c189-42c9-a61a-9cfc8be80d78",
"time": "2025-01-15T10:30:00+00:00"
}
}
Webhook & Callback
Receive real‑time status updates for all your transactions via webhook or per‑transaction callback.
How it works
- Set a global webhook URL in your profile (applied to all transactions)
- Or specify a per‑transaction return_url in the API request (priority over global)
- When a transaction status changes (success/failure/refund), we’ll send a POST request to your URL
- Failed webhooks are automatically retried up to 10 times with exponential backoff
Callback Payload
Webhook POST Payload
Content-Type: application/x-www-form-urlencodedX-Callback-Source: INEXOPAY-API
orderid=ORD12345 &order_id=ORD12345 &status=success &remark=Transaction+Successful &datetime=2026-06-03+15:30:00 &callback_type=global_webhook
| Field | Type | Description |
|---|---|---|
| orderid | string | Your unique order ID |
| order_id | string | Same as orderid (for compatibility) |
| status | string | Transaction status: success/failed/refund/pending |
| remark | string | Human-readable status message |
| datetime | string | Timestamp of the status update (Y-m-d H:i:s) |
| callback_type | string | global_webhook or per_transaction |
API Tester
Test any API endpoint live. Enter your credentials and parameters, then hit "Send Request".