curl --request GET \
--url https://api.getsafepay.com/raastwire/v1/aggregators/{raast-aggregator-id}/settlements/batches/{settlement-batch-id}/transactions \
--header 'X-SFPY-AGGREGATOR-SECRET-KEY: <api-key>'import requests
url = "https://api.getsafepay.com/raastwire/v1/aggregators/{raast-aggregator-id}/settlements/batches/{settlement-batch-id}/transactions"
headers = {"X-SFPY-AGGREGATOR-SECRET-KEY": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'X-SFPY-AGGREGATOR-SECRET-KEY': '<api-key>'}};
fetch('https://api.getsafepay.com/raastwire/v1/aggregators/{raast-aggregator-id}/settlements/batches/{settlement-batch-id}/transactions', 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.getsafepay.com/raastwire/v1/aggregators/{raast-aggregator-id}/settlements/batches/{settlement-batch-id}/transactions",
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-SFPY-AGGREGATOR-SECRET-KEY: <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.getsafepay.com/raastwire/v1/aggregators/{raast-aggregator-id}/settlements/batches/{settlement-batch-id}/transactions"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("X-SFPY-AGGREGATOR-SECRET-KEY", "<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.getsafepay.com/raastwire/v1/aggregators/{raast-aggregator-id}/settlements/batches/{settlement-batch-id}/transactions")
.header("X-SFPY-AGGREGATOR-SECRET-KEY", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.getsafepay.com/raastwire/v1/aggregators/{raast-aggregator-id}/settlements/batches/{settlement-batch-id}/transactions")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["X-SFPY-AGGREGATOR-SECRET-KEY"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"api_version": "v1",
"data": {
"settlement_transactions": [],
"transactions": [
{
"id": "160",
"token": "txn_8ffa984c-f0cb-4835-8eee-89c9ca673dad",
"payment_id": "pm_e950c9fc-9532-4f4b-aa4c-d39b8f2619c6",
"refund_id": null,
"transaction_type": "TT_PAYMENT",
"payment_type": "DYNAMIC_QR",
"status": "TXN_SETTLEMENT_CONFIRMED",
"aggregator_id": "agg_8fd114c0-1364-4953-8773-62551397ffe1",
"aggregator_name": "Safepay Aggregator",
"aggregator_merchant_id": "am_7c9594a6-962d-49c7-94e9-64d9cf285969",
"aggregator_merchant_name": "Safepay Merchant",
"raast_merchant_id": "mer_e1a38d10-0064-4d7b-a700-f4ba483efb05",
"raast_merchant_name": "Safepay Merchant",
"raast_merchant_ntn": "4669740",
"raast_merchant_province": "Sindh",
"gross_amount": "100",
"currency": "PKR",
"fee_amount": "0",
"net_amount": "97",
"sales_tax_on_fee_amount": "0",
"sales_tax_withholding_amount": "2",
"income_tax_withholding_amount": "1",
"digital_tax_amount": "0",
"latest_batch_id": "sb_1328a110-2cf5-4e13-993e-55792ec6b76c",
"partner_id": "partner_37e414c3-c0cc-4541-9bea-ab5a22964bd8",
"created_at": "2026-04-13T06:33:35Z",
"updated_at": "2026-04-13T11:30:04Z"
}
],
"next_cursor": "158",
"count": {
"filtered_count": "3",
"total_count": "3"
}
}
}{
"code": "error.bad_request",
"message": "Invalid request parameters"
}{
"api_version": "v1",
"error": {
"code": "error.unauthorized_access",
"message": "partner access key is required in request header"
}
}{
"code": "error.not_found",
"message": "Requested resource not found"
}List Settlement Batch Transactions
List transactions linked to a settlement batch.
By default returns underlying payment/refund transactions in transactions.
Set only_settlement_txns=true to return settlement payouts in settlement_transactions instead.
curl --request GET \
--url https://api.getsafepay.com/raastwire/v1/aggregators/{raast-aggregator-id}/settlements/batches/{settlement-batch-id}/transactions \
--header 'X-SFPY-AGGREGATOR-SECRET-KEY: <api-key>'import requests
url = "https://api.getsafepay.com/raastwire/v1/aggregators/{raast-aggregator-id}/settlements/batches/{settlement-batch-id}/transactions"
headers = {"X-SFPY-AGGREGATOR-SECRET-KEY": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'X-SFPY-AGGREGATOR-SECRET-KEY': '<api-key>'}};
fetch('https://api.getsafepay.com/raastwire/v1/aggregators/{raast-aggregator-id}/settlements/batches/{settlement-batch-id}/transactions', 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.getsafepay.com/raastwire/v1/aggregators/{raast-aggregator-id}/settlements/batches/{settlement-batch-id}/transactions",
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-SFPY-AGGREGATOR-SECRET-KEY: <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.getsafepay.com/raastwire/v1/aggregators/{raast-aggregator-id}/settlements/batches/{settlement-batch-id}/transactions"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("X-SFPY-AGGREGATOR-SECRET-KEY", "<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.getsafepay.com/raastwire/v1/aggregators/{raast-aggregator-id}/settlements/batches/{settlement-batch-id}/transactions")
.header("X-SFPY-AGGREGATOR-SECRET-KEY", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.getsafepay.com/raastwire/v1/aggregators/{raast-aggregator-id}/settlements/batches/{settlement-batch-id}/transactions")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["X-SFPY-AGGREGATOR-SECRET-KEY"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"api_version": "v1",
"data": {
"settlement_transactions": [],
"transactions": [
{
"id": "160",
"token": "txn_8ffa984c-f0cb-4835-8eee-89c9ca673dad",
"payment_id": "pm_e950c9fc-9532-4f4b-aa4c-d39b8f2619c6",
"refund_id": null,
"transaction_type": "TT_PAYMENT",
"payment_type": "DYNAMIC_QR",
"status": "TXN_SETTLEMENT_CONFIRMED",
"aggregator_id": "agg_8fd114c0-1364-4953-8773-62551397ffe1",
"aggregator_name": "Safepay Aggregator",
"aggregator_merchant_id": "am_7c9594a6-962d-49c7-94e9-64d9cf285969",
"aggregator_merchant_name": "Safepay Merchant",
"raast_merchant_id": "mer_e1a38d10-0064-4d7b-a700-f4ba483efb05",
"raast_merchant_name": "Safepay Merchant",
"raast_merchant_ntn": "4669740",
"raast_merchant_province": "Sindh",
"gross_amount": "100",
"currency": "PKR",
"fee_amount": "0",
"net_amount": "97",
"sales_tax_on_fee_amount": "0",
"sales_tax_withholding_amount": "2",
"income_tax_withholding_amount": "1",
"digital_tax_amount": "0",
"latest_batch_id": "sb_1328a110-2cf5-4e13-993e-55792ec6b76c",
"partner_id": "partner_37e414c3-c0cc-4541-9bea-ab5a22964bd8",
"created_at": "2026-04-13T06:33:35Z",
"updated_at": "2026-04-13T11:30:04Z"
}
],
"next_cursor": "158",
"count": {
"filtered_count": "3",
"total_count": "3"
}
}
}{
"code": "error.bad_request",
"message": "Invalid request parameters"
}{
"api_version": "v1",
"error": {
"code": "error.unauthorized_access",
"message": "partner access key is required in request header"
}
}{
"code": "error.not_found",
"message": "Requested resource not found"
}Authorizations
Path Parameters
The unique identifier for the aggregator
"agg_2288490a-2176-4de5-b373-0ffb6f8e2e6e"
Settlement batch token. Must start with sb_ and be exactly 39 characters.
"sb_1328a110-2cf5-4e13-993e-55792ec6b76c"
Query Parameters
Cursor for pagination. Pass the previous response next_cursor, or omit/0 for the first page.
0
Page size. Default 30. Maximum 100. 0 is treated as the default.
30
Sort direction on the underlying numeric id. Must be uppercase ASC or DESC. Invalid or empty values default to DESC.
ASC, DESC "DESC"
When true, return settlement payouts in settlement_transactions instead of general transactions in transactions.
false
Was this page helpful?