Get a batch
curl --request GET \
--url https://api.next.orenda.finance/v1/batch-payments/{batchId} \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.next.orenda.finance/v1/batch-payments/{batchId}"
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/{batchId}', 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/{batchId}",
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/{batchId}"
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/{batchId}")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.next.orenda.finance/v1/batch-payments/{batchId}")
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": {
"batchId": "b2c3d4e5-0000-1111-2222-333344445555",
"status": "PROCESSING",
"paymentsCount": 2,
"createdAt": "2026-06-18T10:32:00Z",
"items": [
{
"batchItemId": "item-001",
"payee": {
"name": "Ada Lovelace",
"account": {
"type": "uk",
"sortCode": "040506",
"accountNumber": "87654321"
}
},
"amount": "150.00",
"reference": "Invoice 1024",
"status": "SUCCESS"
},
{
"batchItemId": "item-002",
"payee": {
"name": "Grace Hopper",
"account": {
"type": "iban",
"iban": "FR7630006000011234567890189",
"bic": "AGRIFRPP"
}
},
"amount": "200.00",
"reference": "Invoice 1025",
"status": "QUEUED"
}
]
}
}{
"success": false,
"code": "UNAUTHORIZED",
"message": "Unauthorized"
}{
"success": false,
"code": "RESOURCE_NOT_FOUND",
"message": "Batch not found"
}Batch payments
Track a batch
Watch each payment in the batch complete.
GET
/
v1
/
batch-payments
/
{batchId}
Get a batch
curl --request GET \
--url https://api.next.orenda.finance/v1/batch-payments/{batchId} \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.next.orenda.finance/v1/batch-payments/{batchId}"
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/{batchId}', 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/{batchId}",
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/{batchId}"
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/{batchId}")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.next.orenda.finance/v1/batch-payments/{batchId}")
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": {
"batchId": "b2c3d4e5-0000-1111-2222-333344445555",
"status": "PROCESSING",
"paymentsCount": 2,
"createdAt": "2026-06-18T10:32:00Z",
"items": [
{
"batchItemId": "item-001",
"payee": {
"name": "Ada Lovelace",
"account": {
"type": "uk",
"sortCode": "040506",
"accountNumber": "87654321"
}
},
"amount": "150.00",
"reference": "Invoice 1024",
"status": "SUCCESS"
},
{
"batchItemId": "item-002",
"payee": {
"name": "Grace Hopper",
"account": {
"type": "iban",
"iban": "FR7630006000011234567890189",
"bic": "AGRIFRPP"
}
},
"amount": "200.00",
"reference": "Invoice 1025",
"status": "QUEUED"
}
]
}
}{
"success": false,
"code": "UNAUTHORIZED",
"message": "Unauthorized"
}{
"success": false,
"code": "RESOURCE_NOT_FOUND",
"message": "Batch not found"
}Step 5. Fetch the batch by its
Add
batchId to see the overall status and each item’s status
(QUEUED → SUCCESS or FAILED). To list all of a customer’s batches, use
GET /v1/batch-payments.
Counts and totals without opening each batch
GET /v1/batch-payments?includeItemSummary=true
includeItemSummary=true to the listing and each batch carries itemsStatus — its
completed, pending, processing and failed counts — and totalAmount, the sum of its
item amounts. That is enough to show progress for a page of batches without fetching every one
of them.
Leave the parameter off and both fields are absent; only the exact string true turns it on.
It is opt-in because the counts are computed by reading each batch’s items, so ask for it on
the page sizes you actually display rather than on a large limit you only want ids from.
Drafts have no item rows, so
itemsStatus and totalAmount stay absent on
?drafts=true even with this parameter. paymentsCount is what a draft has instead.Authorizations
The caller's id_token from authentication — the ID token, not the access_token. The program and environment come from the token.
Path Parameters
The batch id from submit.
⌘I