PandaPay API v1.3
PandaPay API v1.3
We provide a payment API for Merchants where Users pay with their Internet Banking credentials.
API Endpoint
https://api.{domain}.com
We use built-in HTTP features, like HTTP authentication and HTTP verbs, which can be understood by off-the-shelf
HTTP clients, and we support cross-origin resource sharing to allow you to interact securely with our API from a
client-side web application (though you should remember that you should never expose your secret API key in any
public website’s client-side code).
JSON will be returned in all responses from the API, including errors.
Authentication
You authenticate to this API by providing your Contract Name and API key in the request.
Error List
Status
Name Description
Code
Success
NO_ERROR 0
Request
Element Not
ERR_ELEMENT_NOT_FOUND 504
Found
Invalid
ERR_INVALID_CREDENTIALS 401
Credentials
Widget
ERR_WIDGET_TIMEOUT 402
Timeout
Expired
ERR_EXPIRED_TX 403
Transaction
Insufficient
ERR_INSUFFICIENT_FUNDS 404
Funds
Reached Max
ERR_REACHED_MAX_TRIALS 405
Trials
Transaction
ERR_STEP_FAILED 406
Step Failed
Widget closed
ERR_WIDGET_CLOSED 408 during
Transaction
Already
ERR_ALREADY_PROCESSING 409
Processing
Reached max
daily volume
ERR_REACHED_MAX_DAILY_VOL 410
allowed by the
bank
No phone
number
ERR_MISSING_OTP_PHONE 411
registered with
Bank for OTP
Unsupported
ERR_UNSUPPORTED_AUTH 412 Authentication
Method
Incompatible
ERR_INCOMPATIBLE_ACCOUNT 311 Receiver
Account
Insufficient
ERR_INSUFFICIENT_BALANCE 310 Merchant
Balance
Forbidden
ERR_FORBIDDEN 309
Action
Invalid
ERR_INVALID_PARAM 308
Parameter
Unauthorized
ERR_UNAUTHORIZED_DOMAIN 307
Domain
Duplicate
ERR_DUPLICATE_ID 306
Identifier
Insufficient
ERR_INSUFFICIENT_PERMISSIONS 305 API Key
Permissions
Resource Not
ERR_RESOURCE_NOT_FOUND 304
Found
Invalid Secret
ERR_INVALID_SECRETKEY 302
Key
Unauthorized
ERR_UNAUTHORIZED_IP 301
IP Address
Bank Account
ERR_BANK_ACCOUNT_LOCKED 204
Locked
Payment
Gateway
ERR_PG_MAINTENANCE 205
under
Maintenance
Bank under
ERR_BANK_MAINTENANCE 203
Maintenance
Transaction
ERR_FAILED_JOB 102
Job Failed
Server
ERR_SERVER_OVERLOAD 101
Overload
Invalid Min
ERR_MIN_DEPOSIT 701 Deposit
Amount
Invalid Max
ERR_MAX_DEPOSIT 702 Deposit
Amount
Invalid
Request
ERR_AMOUNT_CANT_ZERO 703
Transaction
Amount
Invalid Bank
ERR_BANK_CODE 704
Code
Invalid Min
ERR_MIN_WITHDRAW 705 Withdraw
Amount
Invalid Max
ERR_MAX_WITHDRAW 706 Withdraw
Amount
No Bank
NO_BANK_ACC_SETTLEMENT 707 Account for
Settlement
Initiated 1
Processing 2
Complete 8
Rejected -1
Error -2
Pending -3
Requested 0
Authorized 1
Processing 2
Complete 8
Rejected -1
Error -2
Canceled -9
Transaction
This is the API for initiating a transaction, and checking the status
QRDEPOSIT
Initiate a transaction.
Content-Type : application/json
URI Parameters
DEPOSITSTATUS
Get Transaction processing status
Content-Type: application/json
Body
{
"contract": "YOURGAMING",
"status": 404,
"status_message": "ERR_INSUFFICIENT_FUNDS",
"tran_status": 1,
"tran_message": "Pending",
"tran_id": "inv-3422",
"pg_tran_id": "D0000000001",
"token": "1ae3ebc1-41ab-4a4e-9ef2-0a34ec05a039",
"amount": "45.99",
"total_fees": 1.15,
"currency": "INR",
"remark": "Topup for account #123456",
"decline_reason": "bank account
insufficient balance",
"from_bank_code": KOTAK,
"from_bank_account": 157175154086,
"created_at": "2020-01-26 14:51:55"
}
CALLBACK
Automatic callback to Merchant’s provided endpoint (http_post_url) with transaction status.
Our servers will make an HTTP POST request to the http_post_url provided by the merchant during a transaction
POST
HTTP_POST_URL Callback POST
HTTP_POST_URL
Content-Type : application/json
BODY {"contract":"ABCTEST","token":"111dca20-b140-4051-96fb-2f733123d54","tran_id":"W202
URI Parameters 201234512TLVST","payout_tran_id":"D0000000001","status":0,"status_message":"NO_ERROR","p
ayout_status":"0","payout_message":"Error","decline_reason":"","remark":"nn","amount":"90","total_f
contract string (VARCHAR(50)) (required) Example: YOURGAMING ees":"3.8000","currency":"INR","to_bank_code":"FEDERAL","to_bank_account":"5020000000007
a unique identifier for the contract involved 0","created_at":"9/14/2022 3:59:41 PM","payment_date":"9/14/2022 3:59:41 PM","signature":"fcd
0d587000053baccebe72a3fe6630b99af8672d3b4eed2a7a0000000000000"}
a unique identier for the payment gateway transaction involved Please response with plain text OK
tran_id string (VARCHAR(100)) (required) Example: inv-3422
merchant provided transaction identifier Responses 200
Withdraw
This is the API for initiating a Withdraw, and checking the status
WITHDRAW
Initiate a payout.
The field ‘to_bank_code’ "TEST" purpose for staging use which come with test contract only. The others bank code
for real contract use only.
Content-Type : application/json
WITHDRAWSTATUS
Get a withdraw’s status
Content-Type: application/json
Body
{
"contract": "YOURGAMING",
"status": 0,
"status_message": "NO_ERROR",
"payout_status": 1,
"payout_message": "Pending",
"tran_id": "inv-3422",
"payout_tran_id": "C0000000001",
"token":
"f0375599-b077-47aa-b39a-6267a8bca571",
"amount": "40554.00",
"total_fees": 6084.6,
"remark": "Topup for account #123456",
"decline_reason": ,
"currency": "INR",
"to_bank_code":
"KOTAK",
"to_bank_account": "0011223344556677",
"ifsc_code": "0011223344556677",
"phone_number": "0011223344556677",
"created_at": "2019-09-26 01:25:55",
"payment_date":
"2019-09-26 02:32:02"
}
CALLBACK
Automatic callback to Merchant’s provided endpoint (http_post_url) with withdraw status.
Our servers will make an HTTP POST request to the http_post_url provided by the merchant during a withdraw
request
{
contract=
YOURGAMING&
tran_id=
inv-3422&
payout_tran_id=
C0000000001&
status=
411&
HTTP_POST_URL/{contract,tran_id,payout_tran_id,status,status_message,payout_status,p
status_message=
ERR_MISSING_OTP_PHONE&
payout_status=
3&
payout_message=
Fail&
re
ayout_message,decline_reason,remark,amount,total_fees,currency,to_bank_code,to_bank_
mark=
top up for account #1234&
amount=45.99&
total_fees=
4.22&
currency=
INR&
to_bank_
account,created_at,payment_date,signature}
code=
KOTAK&
to_bank_account=
111222333&
created_at=
2017-01-01 16:41:21&
payment_d
ate=
2017-01-01 16:48:22&
signature=
56c7e1f...}
Report
This API is for getting reports on balance and merchant volumes.
BALANCE
Get the balance of the contract associated with the API Key in use.
Requests example 1
Headers
Responses 200
Content-Type: application/json
Body
{
"contract": "YOURGAMING",
"status": 0,
"status_message": "NO_ERROR",
"currency": "MYR",
"balance": 12842.34
}
Misc
This API is for getting others.
GETBANK
Get the list of Bank Code which available to use.
Requests example 1
Headers
Responses 200
Headers
Content-Type: application/json
Body
{
"contract": "YOURGAMING",
"status": 0,
"status_message": "NO_ERROR",
"BankList":
[{\"Code\":\"FEDERAL\",\"Name\":\"Federal Bank\"},{\"Code\":\"IDFC\",\"Name\":\"Idfc Bank\"},
{\"Code\":\"KOTAK\",\"Name\":\"Kotak Bank\"},{\"Code\":\"BARODA\",\"Name\":\"Bank Of
Baroda\"},{\"Code\":\"KVB\",\"Name\":\"Karur Vysya Bank\"},{\"Code\":\"IDBI\",\"Name\":\"Idbi
Bank\"},{\"Code\":\"SBI\",\"Name\":\"State Bank Of India\"}]}