curl --request GET \
--url https://api.getsafepay.com/raastwire/v1/aggregators/{raast-aggregator-id}/settlements/batches/{settlement-batch-id}/snapshots \
--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}/snapshots"
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}/snapshots', 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}/snapshots",
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}/snapshots"
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}/snapshots")
.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}/snapshots")
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_snapshots": [
{
"id": "44",
"batch_id": "sb_1328a110-2cf5-4e13-993e-55792ec6b76c",
"settlement_transaction_id": "stxn_9d5bd7bd-863a-487f-944c-f15d30d9bbc5",
"merchant_id": "mer_ce6df98c-cdde-48bf-bc32-464cecac2ee3",
"aggregator_id": "agg_b49985f2-e099-412e-8eb2-98756059cc0d",
"iban": "PK36SCBL0000001123456702",
"account_title": "OPTIVOLVE DIGITAL",
"gross_amount": "7900",
"net_amount": "7620",
"fee_amount": "39",
"sales_tax_on_fee_amount": "4",
"sales_tax_withholding_amount": "158",
"income_tax_withholding_amount": "79",
"digital_tax_amount": "0",
"currency": "PKR",
"created_at": "2026-07-23T11:30:06Z"
}
],
"next_cursor": "44",
"count": {
"filtered_count": "1",
"total_count": "5"
}
}
}{
"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 Snapshots
List per-merchant settlement snapshots persisted for a settlement batch, including payout IBAN, account title, and amount breakdowns.
count.filtered_count reflects optional filters; count.total_count is the batch total before those filters.
curl --request GET \
--url https://api.getsafepay.com/raastwire/v1/aggregators/{raast-aggregator-id}/settlements/batches/{settlement-batch-id}/snapshots \
--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}/snapshots"
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}/snapshots', 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}/snapshots",
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}/snapshots"
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}/snapshots")
.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}/snapshots")
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_snapshots": [
{
"id": "44",
"batch_id": "sb_1328a110-2cf5-4e13-993e-55792ec6b76c",
"settlement_transaction_id": "stxn_9d5bd7bd-863a-487f-944c-f15d30d9bbc5",
"merchant_id": "mer_ce6df98c-cdde-48bf-bc32-464cecac2ee3",
"aggregator_id": "agg_b49985f2-e099-412e-8eb2-98756059cc0d",
"iban": "PK36SCBL0000001123456702",
"account_title": "OPTIVOLVE DIGITAL",
"gross_amount": "7900",
"net_amount": "7620",
"fee_amount": "39",
"sales_tax_on_fee_amount": "4",
"sales_tax_withholding_amount": "158",
"income_tax_withholding_amount": "79",
"digital_tax_amount": "0",
"currency": "PKR",
"created_at": "2026-07-23T11:30:06Z"
}
],
"next_cursor": "44",
"count": {
"filtered_count": "1",
"total_count": "5"
}
}
}{
"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"
Filter by settlement transaction token (stxn_…).
"stxn_9d5bd7bd-863a-487f-944c-f15d30d9bbc5"
Filter by Raast merchant token (mer_…).
"mer_ce6df98c-cdde-48bf-bc32-464cecac2ee3"
Was this page helpful?