curl --request GET \
--url https://api.next.orenda.finance/v1/batch-payments \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.next.orenda.finance/v1/batch-payments"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.next.orenda.finance/v1/batch-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.next.orenda.finance/v1/batch-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 => [
"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.next.orenda.finance/v1/batch-payments"
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.next.orenda.finance/v1/batch-payments")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.next.orenda.finance/v1/batch-payments")
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{
"success": true,
"data": {
"paymentsBatches": [
{
"id": "batch-123",
"customerId": "customer-123",
"programId": "program-123",
"sandbox": false,
"paymentsCount": 3,
"createdDateTime": "2026-06-16T10:00:00.000Z",
"customerName": "Jane Doe",
"itemsStatus": {
"completed": 1,
"pending": 1,
"processing": 1,
"failed": 0
},
"totalAmount": "1250.50"
}
],
"nextToken": "eyJpZCI6ImJhdGNoLTEyMyJ9"
}
}{
"success": false,
"code": "VALIDATION_ERROR",
"message": "payee.sortCode must be 6 digits"
}{
"success": false,
"code": "UNAUTHORIZED",
"message": "Unauthorized"
}List batches
Lists batch payments accessible to the authenticated caller, most recent first. The response is paginated. Customer callers can be resolved from the authorizer context.
Item summary. itemsStatus and totalAmount are returned only when you send ?includeItemSummary=true. That opt-in is open to every role — the summary is a read of the batch’s own data, not a privilege — and each summarised batch costs one extra query, which is why it is not always on. Name enrichment (customerName, custodianName) is separate and stays back-office only.
Drafts. ?drafts=true lists batches verified but not yet paid, newest first, with the same pagination. Each carries paymentsCount, expiresAt and a status of DRAFT — or EXPIRED once expiresAt has passed, which is derived at read time and never stored, so a lapsed draft stays visible as a record that a batch was prepared and never sent. Drafts have no item rows, so itemsStatus and totalAmount are absent even with includeItemSummary=true; paymentsCount is what a draft has instead.
curl --request GET \
--url https://api.next.orenda.finance/v1/batch-payments \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.next.orenda.finance/v1/batch-payments"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.next.orenda.finance/v1/batch-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.next.orenda.finance/v1/batch-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 => [
"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.next.orenda.finance/v1/batch-payments"
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.next.orenda.finance/v1/batch-payments")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.next.orenda.finance/v1/batch-payments")
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{
"success": true,
"data": {
"paymentsBatches": [
{
"id": "batch-123",
"customerId": "customer-123",
"programId": "program-123",
"sandbox": false,
"paymentsCount": 3,
"createdDateTime": "2026-06-16T10:00:00.000Z",
"customerName": "Jane Doe",
"itemsStatus": {
"completed": 1,
"pending": 1,
"processing": 1,
"failed": 0
},
"totalAmount": "1250.50"
}
],
"nextToken": "eyJpZCI6ImJhdGNoLTEyMyJ9"
}
}{
"success": false,
"code": "VALIDATION_ERROR",
"message": "payee.sortCode must be 6 digits"
}{
"success": false,
"code": "UNAUTHORIZED",
"message": "Unauthorized"
}Authorizations
The caller's id_token from authentication — the ID token, not the access_token. The program and environment come from the token.
Query Parameters
Maximum number of batches to return. Values above 1000 are clamped to 1000. Invalid values include 0, negative numbers, non-integer strings, and mixed strings such as 10abc.
x >= 1Pagination token returned by a previous response.
Lookback window for program-admin searches. Invalid values include 0, negative numbers, non-integer strings, and mixed strings such as 10abc.
x >= 1Set to true to list batches awaiting submission instead of submitted ones. Omit it and the response is unchanged. Drafts are held in separate indexes, so this selects a different query rather than filtering the normal one — a draft never appears in the default listing. Only the exact string true enables it.
true Set to true to include the per-batch item summary — itemsStatus (counts by item status) and totalAmount (the sum of item amounts). Omit it and both fields are absent. Available to every role, including customer callers. Only the exact string true enables it. Has no effect with drafts=true, which has no item rows to summarise.
true