curl --request GET \
--url https://api-pacb-uat.eximpe.com/pg/payments/ \
--header 'X-API-Version: <api-key>' \
--header 'X-Client-ID: <api-key>' \
--header 'X-Client-Secret: <api-key>'import requests
url = "https://api-pacb-uat.eximpe.com/pg/payments/"
headers = {
"X-Client-ID": "<api-key>",
"X-Client-Secret": "<api-key>",
"X-API-Version": "<api-key>"
}
response = requests.get(url, headers=headers)
print(response.text)const options = {
method: 'GET',
headers: {
'X-Client-ID': '<api-key>',
'X-Client-Secret': '<api-key>',
'X-API-Version': '<api-key>'
}
};
fetch('https://api-pacb-uat.eximpe.com/pg/payments/', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api-pacb-uat.eximpe.com/pg/payments/",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"X-API-Version: <api-key>",
"X-Client-ID: <api-key>",
"X-Client-Secret: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api-pacb-uat.eximpe.com/pg/payments/"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("X-Client-ID", "<api-key>")
req.Header.Add("X-Client-Secret", "<api-key>")
req.Header.Add("X-API-Version", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api-pacb-uat.eximpe.com/pg/payments/")
.header("X-Client-ID", "<api-key>")
.header("X-Client-Secret", "<api-key>")
.header("X-API-Version", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api-pacb-uat.eximpe.com/pg/payments/")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["X-Client-ID"] = '<api-key>'
request["X-Client-Secret"] = '<api-key>'
request["X-API-Version"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"success": true,
"message": "Domestic payment requests retrieved successfully",
"data": {
"count": 2,
"page": 1,
"page_size": 250,
"next": null,
"previous": null,
"results": [
{
"payment_id": "PR4350279153",
"merchant": {
"id": "4417290356",
"name": "Acme Exports"
},
"reference_id": "ORD-2026-000123",
"buyer": {
"name": "Rahul Sharma",
"email": "[email protected]",
"phone": "+919876543210"
},
"order_id": "OD8196969047",
"invoice_number": "INV2026000123",
"amount": {
"amount": "1500",
"total_amount": "1500",
"currency": "INR"
},
"created_at": "2026-10-15T06:44:13.414209Z",
"comment": null,
"mop_type": "upi",
"status": "captured"
},
{
"payment_id": "PR1352481140",
"merchant": {
"id": "4417290356",
"name": "Acme Exports"
},
"reference_id": "ORD-2026-000118",
"buyer": {
"name": "Priya Nair",
"email": "[email protected]",
"phone": "+919812345678"
},
"order_id": "OD3094308378",
"invoice_number": "INV2026000118",
"amount": {
"amount": "2499.5",
"total_amount": "2499.5",
"currency": "INR"
},
"created_at": "2026-10-14T08:22:59.613699Z",
"comment": "Payment abandoned by user",
"mop_type": "credit_card",
"status": "failed"
}
]
}
}List Payments
Page through your payments, newest first, filtered by status, method, date or reference.
curl --request GET \
--url https://api-pacb-uat.eximpe.com/pg/payments/ \
--header 'X-API-Version: <api-key>' \
--header 'X-Client-ID: <api-key>' \
--header 'X-Client-Secret: <api-key>'import requests
url = "https://api-pacb-uat.eximpe.com/pg/payments/"
headers = {
"X-Client-ID": "<api-key>",
"X-Client-Secret": "<api-key>",
"X-API-Version": "<api-key>"
}
response = requests.get(url, headers=headers)
print(response.text)const options = {
method: 'GET',
headers: {
'X-Client-ID': '<api-key>',
'X-Client-Secret': '<api-key>',
'X-API-Version': '<api-key>'
}
};
fetch('https://api-pacb-uat.eximpe.com/pg/payments/', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api-pacb-uat.eximpe.com/pg/payments/",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"X-API-Version: <api-key>",
"X-Client-ID: <api-key>",
"X-Client-Secret: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api-pacb-uat.eximpe.com/pg/payments/"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("X-Client-ID", "<api-key>")
req.Header.Add("X-Client-Secret", "<api-key>")
req.Header.Add("X-API-Version", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api-pacb-uat.eximpe.com/pg/payments/")
.header("X-Client-ID", "<api-key>")
.header("X-Client-Secret", "<api-key>")
.header("X-API-Version", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api-pacb-uat.eximpe.com/pg/payments/")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["X-Client-ID"] = '<api-key>'
request["X-Client-Secret"] = '<api-key>'
request["X-API-Version"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"success": true,
"message": "Domestic payment requests retrieved successfully",
"data": {
"count": 2,
"page": 1,
"page_size": 250,
"next": null,
"previous": null,
"results": [
{
"payment_id": "PR4350279153",
"merchant": {
"id": "4417290356",
"name": "Acme Exports"
},
"reference_id": "ORD-2026-000123",
"buyer": {
"name": "Rahul Sharma",
"email": "[email protected]",
"phone": "+919876543210"
},
"order_id": "OD8196969047",
"invoice_number": "INV2026000123",
"amount": {
"amount": "1500",
"total_amount": "1500",
"currency": "INR"
},
"created_at": "2026-10-15T06:44:13.414209Z",
"comment": null,
"mop_type": "upi",
"status": "captured"
},
{
"payment_id": "PR1352481140",
"merchant": {
"id": "4417290356",
"name": "Acme Exports"
},
"reference_id": "ORD-2026-000118",
"buyer": {
"name": "Priya Nair",
"email": "[email protected]",
"phone": "+919812345678"
},
"order_id": "OD3094308378",
"invoice_number": "INV2026000118",
"amount": {
"amount": "2499.5",
"total_amount": "2499.5",
"currency": "INR"
},
"created_at": "2026-10-14T08:22:59.613699Z",
"comment": "Payment abandoned by user",
"mop_type": "credit_card",
"status": "failed"
}
]
}
}Overview
Returns your payments a page at a time, newest first. Each entry carries the payment’sstatus, its buyer, its amount and the order behind it. To get the full record of one payment — settlement, refunds and method-of-payment details — call Get Payment with its payment_id.
merchant on each entry says whose it is. To narrow the list to one sub-merchant, send that sub-merchant’s ID in X-Merchant-ID, or pass it as the merchant filter.Query Parameters
All parameters are optional, and you can combine filters.| Name | Type | Default | Description |
|---|---|---|---|
page | integer | 1 | Page number. |
page_size | integer | 250 | Payments per page. Values above 1000 are capped at 1000. |
ordering | string | -created_at | created_at, last_updated_at or payment_completed_at. Prefix with - for descending. |
search | string | Case-insensitive partial match across payment ID, order ID, reference ID, invoice number, buyer name, buyer email and bank reference. | |
payment_id | string | Exact payment ID. | |
order_id | string | Exact order ID. | |
reference_id | string | Exact reference ID. Case-sensitive. | |
invoice_number | string | Exact invoice number. Case-sensitive. | |
buyer_name | string | Exact buyer name. Case-sensitive: John Doe matches but john does not. Use search for a partial match. | |
merchant | string | Merchant ID. | |
currency | string | ISO 4217 code, e.g. INR. | |
mop_type | string | upi, credit_card, debit_card, net_banking, qr. | |
collection_mode | string | hosted_payment, payment_link, s2s. | |
status | string | pending, captured, failed. | |
from_created_at / to_created_at | date | Created within this range, YYYY-MM-DD in UTC. Both ends are included. | |
from_payment_completed_at / to_payment_completed_at | date | Completed within this range, YYYY-MM-DD in UTC. Both ends are included. |
mop_type, collection_mode and status are case-insensitive and take several values separated by commas, e.g. status=captured,failed.
Pagination
data wraps the page:
| Field | Description |
|---|---|
count | Total payments across all pages |
page | This page’s number |
page_size | Payments per page |
next | Full URL of the next page, or null on the last one |
previous | Full URL of the previous page, or null on the first one |
results | The payments on this page |
next until it is null. A page past the last one is not returned empty. It is refused with a 500 whose error.details.error is "Invalid page.".
Payment status
status | Meaning |
|---|---|
pending | Started, with no final outcome yet. |
captured | Paid. |
failed | Declined, abandoned, or expired before it completed. comment says why when there is a reason. |
failed here, but the status filter matches the status as recorded. So status=pending can return entries that read failed, and status=failed will not find them. Get Payment shows the recorded status, so the same payment reads pending there.Response Fields
payment_idis the payment’s ID (PRfollowed by 10 digits). Get Payment takes it.amount.amountandamount.total_amountare decimal strings without trailing zeros, e.g."1500"or"2499.5". Parse them as decimals, never as floats.total_amountadds GST where GST applies; otherwise it equalsamount.mop_typeis the method the buyer paid with, in lowercase (upi,credit_card). It isnullwhen no method was chosen.commentsays why a payment failed, or what state it is in, when there is something to say; otherwise it isnull.order_idis the order behind the payment (ODfollowed by 10 digits). One order can have several payments, one per attempt.created_atis UTC with microseconds, e.g.2026-10-15T06:44:13.414209Z.
X-API-Version you send. v1, v2 and v3 integrations share this endpoint and its response.Authorizations
Client Application ID - Your unique application identifier used to authenticate API requests. You can find your Client ID in the Developer Settings section of the merchant dashboard.
Client Secret Key - Your secret key used alongside the Client ID for secure authentication. Keep this confidential and never expose it in client-side code. Available in the Developer Settings section of the merchant dashboard.
API Version - Specifies which version of the API to use (e.g., '1.X.X', '2.X.X', or '3.X.X'). This header allows you to control which API version your integration uses. Default version information is available in the Developer Settings.
Query Parameters
Page number, starting at 1. Stop when next is null: a page past the last one is refused with a 500.
x >= 1Payments per page. Values above 1000 are capped at 1000.
1 <= x <= 1000Sort order. Prefix with - for descending. An unrecognised value is ignored.
-created_at, created_at, -last_updated_at, last_updated_at, -payment_completed_at, payment_completed_at Case-insensitive substring match across payment ID, order ID, reference ID, invoice number, buyer name, buyer email and bank reference.
Exact payment ID.
Exact order ID.
Exact reference ID (case-sensitive).
Exact invoice number (case-sensitive).
Exact buyer name (case-sensitive). Use search for a partial match.
Merchant ID. PSPs can use it to narrow the list to one sub-merchant.
ISO 4217 currency code, e.g. INR.
Method of payment. Case-insensitive; comma-separate several values.
"upi,credit_card"
hosted_payment, payment_link or s2s. Case-insensitive; comma-separate several values.
pending, captured or failed. Case-insensitive; comma-separate several values. Matches the status as recorded — see the note on expired payments.
"captured"
Created on or after this date (YYYY-MM-DD, UTC).
Created on or before this date (YYYY-MM-DD, UTC). The whole day is included.
Completed on or after this date (YYYY-MM-DD, UTC).
Completed on or before this date (YYYY-MM-DD, UTC). The whole day is included.