curl --request GET \
--url https://api.sandbox.pawapay.io/v2/settlements \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.sandbox.pawapay.io/v2/settlements"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.sandbox.pawapay.io/v2/settlements', 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.sandbox.pawapay.io/v2/settlements",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$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.sandbox.pawapay.io/v2/settlements"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
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.sandbox.pawapay.io/v2/settlements")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.sandbox.pawapay.io/v2/settlements")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"startDate": "2026-06-01",
"endDate": "2026-07-31",
"settlements": [
{
"settlementId": "6ba7b810-9dad-11d1-80b4-00c04fd430c8",
"status": "COMPLETED",
"date": "2026-07-06",
"destinations": [
{
"type": "BANK",
"accountCurrency": "EUR",
"bankAccount": {
"bankName": "Standard Chartered",
"accountName": "Remitex Ltd",
"accountNumber": "****8900",
"country": "GBR"
},
"totalAmount": "20000",
"bankFeeAmount": "25",
"settledAmount": "19975",
"wallets": [
{
"country": "ZMB",
"currency": "ZMW",
"provider": "",
"status": "COMPLETED",
"amount": "546400",
"fxRate": "27.32",
"settledAmount": "20000"
}
]
}
]
},
{
"settlementId": "a3f1c2d4-5e6f-4a7b-8c9d-0e1f2a3b4c5d",
"status": "SKIPPED",
"date": "2026-06-29",
"destinations": [
{
"type": "BANK",
"accountCurrency": "ZMW",
"bankAccount": {
"bankName": "Zanaco",
"accountName": "Remitex Ltd",
"accountNumber": "****7788",
"country": "ZMB"
},
"totalAmount": "0",
"bankFeeAmount": "0",
"settledAmount": "0",
"wallets": [
{
"country": "ZMB",
"currency": "ZMW",
"provider": "",
"status": "SKIPPED",
"skippedReason": "Balance below the configured minimum settlement amount"
}
]
}
]
}
]
}Settlements
Settlements created in a period of whole UTC calendar days from startDate to endDate, both inclusive: where the money went, the bank fee, the FX rate and the amounts settled from each wallet. These are the settlements shown on the Dashboard under Settlements → Previous settlements.
Settlements are ordered newest first. Account numbers and crypto wallet addresses are masked.
curl --request GET \
--url https://api.sandbox.pawapay.io/v2/settlements \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.sandbox.pawapay.io/v2/settlements"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.sandbox.pawapay.io/v2/settlements', 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.sandbox.pawapay.io/v2/settlements",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$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.sandbox.pawapay.io/v2/settlements"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
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.sandbox.pawapay.io/v2/settlements")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.sandbox.pawapay.io/v2/settlements")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"startDate": "2026-06-01",
"endDate": "2026-07-31",
"settlements": [
{
"settlementId": "6ba7b810-9dad-11d1-80b4-00c04fd430c8",
"status": "COMPLETED",
"date": "2026-07-06",
"destinations": [
{
"type": "BANK",
"accountCurrency": "EUR",
"bankAccount": {
"bankName": "Standard Chartered",
"accountName": "Remitex Ltd",
"accountNumber": "****8900",
"country": "GBR"
},
"totalAmount": "20000",
"bankFeeAmount": "25",
"settledAmount": "19975",
"wallets": [
{
"country": "ZMB",
"currency": "ZMW",
"provider": "",
"status": "COMPLETED",
"amount": "546400",
"fxRate": "27.32",
"settledAmount": "20000"
}
]
}
]
},
{
"settlementId": "a3f1c2d4-5e6f-4a7b-8c9d-0e1f2a3b4c5d",
"status": "SKIPPED",
"date": "2026-06-29",
"destinations": [
{
"type": "BANK",
"accountCurrency": "ZMW",
"bankAccount": {
"bankName": "Zanaco",
"accountName": "Remitex Ltd",
"accountNumber": "****7788",
"country": "ZMB"
},
"totalAmount": "0",
"bankFeeAmount": "0",
"settledAmount": "0",
"wallets": [
{
"country": "ZMB",
"currency": "ZMW",
"provider": "",
"status": "SKIPPED",
"skippedReason": "Balance below the configured minimum settlement amount"
}
]
}
]
}
]
}- The period is whole UTC calendar days from
startDatetoendDate, both inclusive, and at most 365 days. - Settlements are selected by the date they were created and returned newest first. Scheduled and on-request settlements are both included.
- Settlements that have not started yet are not returned. A settlement shows as
IN_PROGRESSfrom the moment its wallets are being withdrawn. - Settlement data starts on 2024-12-02. Earlier periods return an empty list.
- Identify each wallet by
country,currencyandprovider, as in Wallet Balances.
How the amounts fit together
- For each wallet,
amountis what was withdrawn, in the wallet currency.settledAmountis that amount in the destination’saccountCurrency:amountdivided byfxRate, rounded half up to 4 decimals. A wallet in the same currency as the account has nofxRate, and itssettledAmountequalsamount. fxRateis the number of wallet-currency units per one unit ofaccountCurrency, with up to 8 decimals, so small rates such as USD to CDF keep their precision.- For each destination,
totalAmountis the sum of its wallets’settledAmount, andsettledAmountistotalAmountminusbankFeeAmount. For aCOMPLETEDsettlement, that is the amount you received on your bank account or crypto wallet. - Only
COMPLETEDsettlements have been paid out. AnIN_PROGRESSsettlement has not been sent yet, and aCANCELLEDsettlement keeps its amounts for reference although nothing was sent: the withdrawn amounts went back to your wallets. - Bank charges are deducted from EUR, USD, GBP and stablecoin settlements and show in
bankFeeAmount. Local-currency settlements are settled in full; any bank charges for them are deducted from your wallet separately and show in your Wallet Breakdowns, not here. - A skipped wallet carries only its
skippedReason, a free-text explanation. Don’t parse it. - Amounts, rates and fees are returned as currently recorded, the same values as on the Dashboard. A correction made later, for example to a bank fee or an FX rate, changes them in later responses.
Account details
- Account numbers and crypto wallet addresses are masked:
****followed by the last 4 characters. Bank and account names are returned in full so you can tell your accounts apart. - Account details are read when you make the request. If you edit a bank account, past settlements to it show the new details, as on the Dashboard.
Cancelled settlements
When a settlement is cancelled, the withdrawn amounts go back to your wallets and the settlement shows asCANCELLED, with its wallets REVERTED. In your Wallet Breakdowns the withdrawal and its return both fall in withdrawals, so a cancelled settlement nets to zero there.
Sandbox
No settlements run in sandbox. Instead, the sandbox returns five example settlements for any period: a completed cross-currency settlement, a completed local settlement, a skipped one, one in progress and a cancelled one. They use your real sandbox wallet identities, are spread evenly over the period, and keep the samesettlementId when you repeat a request. They are illustrative only: they don’t show on the sandbox Dashboard and don’t reconcile with your sandbox wallet breakdowns.Authorizations
See Authentication.
Query Parameters
First UTC calendar day of the period, inclusive.
Format is YYYY-MM-DD. Date-times are rejected.
"2026-06-01"
Last UTC calendar day of the period, inclusive. Must be on or after startDate and not in the future. The period from startDate to endDate, both days included, is at most 365 days: for example, 2026-01-01 to 2026-12-31.
Format is YYYY-MM-DD. Date-times are rejected.
"2026-07-31"
Response
Request has been succesfully processed.
The startDate of the request.
"2026-06-01"
The endDate of the request.
"2026-07-31"
Settlements created in the period, newest first. Empty when there are none.
Scheduled and on-request settlements are both included. Settlements that have not started yet are not returned.
Show child attributes
Show child attributes
Was this page helpful?