curl --request GET \
--url https://api.example.com/v1/panel/reports/paymentsimport requests
url = "https://api.example.com/v1/panel/reports/payments"
response = requests.get(url)
print(response.text)const options = {method: 'GET'};
fetch('https://api.example.com/v1/panel/reports/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.example.com/v1/panel/reports/payments",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
]);
$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.example.com/v1/panel/reports/payments"
req, _ := http.NewRequest("GET", url, nil)
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.example.com/v1/panel/reports/payments")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.example.com/v1/panel/reports/payments")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
response = http.request(request)
puts response.read_body{
"since": "2023-11-07T05:31:56Z",
"until": "2023-11-07T05:31:56Z",
"timezone": "<string>",
"providers": [
{
"provider": "<string>",
"currency": "<string>",
"intents": 123,
"settled": 123,
"failed": 123,
"abandoned": 123,
"stillOpen": 123,
"settledMinor": 123,
"medianSettleSeconds": 123,
"p95SettleSeconds": 123,
"oldestOpenSeconds": 123,
"settlementRate": 123,
"completionRate": 123
}
],
"byDay": [
{
"day": "2023-12-25",
"provider": "<string>",
"intents": 123,
"settled": 123,
"failed": 123
}
],
"webhooks": [
{
"provider": "<string>",
"received": 123,
"rejected": 123,
"failed": 123,
"processed": 123
}
],
"generatedAt": "2023-11-07T05:31:56Z"
}{
"type": "<string>",
"title": "<string>",
"status": 123,
"detail": "<string>",
"request_id": "<string>"
}{
"type": "<string>",
"title": "<string>",
"status": 123,
"detail": "<string>",
"request_id": "<string>"
}Get v1panelreportspayments
Requires finance.read. Settlement, latency, and webhook intake per payment adapter, so an acquirer that starts refusing is a number that moved rather than a growing stuck-payment queue.
Two rates, because a customer abandoning a checkout and a gateway refusing a card are not the same event and only the second is the provider’s: settlementRate is settled over settled plus failed, and completionRate adds abandoned. Intents still in flight appear in neither denominator — one created five minutes ago has not failed. Both rates are absent rather than zero when nothing reached a decision, because “nobody paid” and “everybody failed” are opposite facts.
curl --request GET \
--url https://api.example.com/v1/panel/reports/paymentsimport requests
url = "https://api.example.com/v1/panel/reports/payments"
response = requests.get(url)
print(response.text)const options = {method: 'GET'};
fetch('https://api.example.com/v1/panel/reports/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.example.com/v1/panel/reports/payments",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
]);
$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.example.com/v1/panel/reports/payments"
req, _ := http.NewRequest("GET", url, nil)
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.example.com/v1/panel/reports/payments")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.example.com/v1/panel/reports/payments")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
response = http.request(request)
puts response.read_body{
"since": "2023-11-07T05:31:56Z",
"until": "2023-11-07T05:31:56Z",
"timezone": "<string>",
"providers": [
{
"provider": "<string>",
"currency": "<string>",
"intents": 123,
"settled": 123,
"failed": 123,
"abandoned": 123,
"stillOpen": 123,
"settledMinor": 123,
"medianSettleSeconds": 123,
"p95SettleSeconds": 123,
"oldestOpenSeconds": 123,
"settlementRate": 123,
"completionRate": 123
}
],
"byDay": [
{
"day": "2023-12-25",
"provider": "<string>",
"intents": 123,
"settled": 123,
"failed": 123
}
],
"webhooks": [
{
"provider": "<string>",
"received": 123,
"rejected": 123,
"failed": 123,
"processed": 123
}
],
"generatedAt": "2023-11-07T05:31:56Z"
}{
"type": "<string>",
"title": "<string>",
"status": 123,
"detail": "<string>",
"request_id": "<string>"
}{
"type": "<string>",
"title": "<string>",
"status": 123,
"detail": "<string>",
"request_id": "<string>"
}Query Parameters
Start of the period, inclusive. Defaults to thirty days before until.
End of the period, exclusive. Defaults to now.
The zone the day boundaries are computed in. "Sales on the third" means the operator's third, and a report bucketed in UTC puts an evening sale several hours east on the wrong day.