Payment Status
Look up the current state of any prior transaction. This is the authoritative source of truth — when the redirect / webhook fails or you suspect tampering, query this endpoint.
You can search by order_id, transaction_id, date range, customer phone/email, response code, or any combination.
Your server IP must be whitelisted by Omniware for this endpoint. If you receive Unauthorized, contact your relationship manager.
Endpoint
POST https://pgbiz.omniware.in/v2/paymentstatus
Content-Type: application/x-www-form-urlencoded
Request parameters
api_keystring (36)requiredorder_idstring (30)Your reference number(s). Comma-separated for multiple.
transaction_idstring (30)Omniware's transaction ID.
bank_codestring (4)4-letter bank code to filter by payment mode/channel.
response_codenumber(4)Filter by response code (e.g. 0 for success only).
customer_phonestring (30)customer_emailstring (255)customer_namestring (255)date_fromstring (20)DD-MM-YYYY or YYYY-MM-DD HH:MM:SS.
date_tostring (20)DD-MM-YYYY or YYYY-MM-DD HH:MM:SS.
page_numberintegerper_pageintegerhashstring (255)requiredSample request
- cURL
- PHP
- Node.js
- Python
curl -X POST https://pgbiz.omniware.in/v2/paymentstatus \
-d "api_key=$API_KEY" \
-d "order_id=ORD-1001" \
-d "hash=$HASH"
$params = ["api_key" => $apiKey, "order_id" => "ORD-1001"];
$params["hash"] = generateHashKey($params, $salt);
$res = httpPost("https://pgbiz.omniware.in/v2/paymentstatus", $params);
const params = { api_key: apiKey, order_id: "ORD-1001" };
params.hash = generateHash(params, salt);
const res = await fetch("https://pgbiz.omniware.in/v2/paymentstatus", {
method: "POST",
body: new URLSearchParams(params),
}).then(r => r.json());
params = {"api_key": API_KEY, "order_id": "ORD-1001"}
params["hash"] = generate_hash(params, SALT)
r = requests.post("https://pgbiz.omniware.in/v2/paymentstatus", data=params).json()
Response
{
"data": [
{
"transaction_id": "SFSBIN2783912661",
"bank_code": "SBIN",
"payment_mode": "Netbanking",
"payment_channel": "State Bank of India",
"payment_datetime": "2018-06-13 16:44:03",
"response_code": 1000,
"response_message": "FAILED",
"authorization_staus": null,
"order_id": "ORD-1001",
"amount": "27.36",
"amount_orig": "2.00",
"tdr_amount": 21.49,
"tax_on_tdr_amount": 3.87,
"description": "Web Payment for 433487",
"error_desc": "FAILED",
"customer_phone": "9900990099",
"customer_name": "sharathkumar hegde",
"customer_email": "sharathkumar@example.com",
"currency": "INR",
"cardmasked": null,
"udf1": null, "udf2": null, "udf3": null, "udf4": null, "udf5": null,
"refund_details": { "refund_amount": 0 }
}
],
"page": {
"total": 175,
"per_page": 10,
"current_page": 1,
"last_page": 18,
"from": 1,
"to": 10
},
"hash": "30FAAD865191B4064576F063177F0A4692C3DBBBF35D1A20463EAA449269C4715FD13528EA069B3A8D5C25C62637ED825C297C2337CDC1CFB7FCD0D60DCFEB9D"
}
The hash covers the entire response body. Recompute with SHA512(salt + json_of_response_without_hash).
Pagination
If your filter matches more than 50 transactions you must paginate:
-d "page_number=2" -d "per_page=20"
Without page_number, large result sets return 1086 — More than 50 records, refine your search criteria or use pagination.
Common errors
| Code | Meaning | What to do |
|---|---|---|
1001 | api_key field is incorrect | Check your api_key |
1028 | No Transaction found | Retry with backoff if the txn is recent; otherwise the query matched nothing |
1050 | No data record found | The filter combination matched nothing |
1086 | More than 50 records | Add page_number and per_page |