List Merchant Batch Payouts ( STABLE )
curl --request GET \
--url https://api.grailpay.com/3p/api/v2/batch-payouts/merchant/{merchant_user_uuid} \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.grailpay.com/3p/api/v2/batch-payouts/merchant/{merchant_user_uuid}"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.grailpay.com/3p/api/v2/batch-payouts/merchant/{merchant_user_uuid}', 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.grailpay.com/3p/api/v2/batch-payouts/merchant/{merchant_user_uuid}",
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.grailpay.com/3p/api/v2/batch-payouts/merchant/{merchant_user_uuid}"
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.grailpay.com/3p/api/v2/batch-payouts/merchant/{merchant_user_uuid}")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.grailpay.com/3p/api/v2/batch-payouts/merchant/{merchant_user_uuid}")
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{
"status": true,
"message": "",
"data": {
"batch_payouts": [
{
"uuid": "9bd53fe1-ac74-4e81-b6f2-be88b7c86a68",
"amount": 4400,
"trace_id": "ach_11kt6v9715jp67t",
"payout_status": "PAYOUT_COMPLETE",
"ach_return_code": null,
"failure_reason": null,
"created_at": "2025-02-17 11:15:15",
"updated_at": "2025-02-18 17:15:15"
}
],
"pagination": {
"current_page": 1,
"total_pages": 2,
"total_items": 12,
"per_page": 10
}
},
"errors": null,
"error_code": null
}{
"status": false,
"message": "Invalid Parameters Received: startDate, endDate",
"data": null,
"errors": null,
"error_code": null
}{
"status": false,
"message": "Invalid Token",
"data": null,
"errors": null,
"error_code": null
}{
"status": false,
"message": "Merchant not found.",
"data": null,
"errors": null,
"error_code": null
}{
"status": false,
"message": "The given data was invalid.",
"data": null,
"errors": {
"start_date": [
"The start date does not match the format Y-m-d.",
"The start date must be a date before or equal to end date."
],
"end_date": [
"The end date does not match the format Y-m-d.",
"The end date must be a date after or equal to start date."
],
"sort_order": [
"The selected sort order is invalid."
],
"per_page": [
"The per page must be an integer.",
"The per page must be at least 1.",
"The per page may not be greater than 100."
],
"page": [
"The page must be an integer.",
"The page must be at least 1."
]
},
"error_code": null
}Payouts
List Merchant Batch Payouts ( STABLE )
This API retrieves all merchant batch payouts associated with the merchant user UUID. The response provides comprehensive details about each payout, including the total amount and detailed information for each individual payout.
GET
/
3p
/
api
/
v2
/
batch-payouts
/
merchant
/
{merchant_user_uuid}
List Merchant Batch Payouts ( STABLE )
curl --request GET \
--url https://api.grailpay.com/3p/api/v2/batch-payouts/merchant/{merchant_user_uuid} \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.grailpay.com/3p/api/v2/batch-payouts/merchant/{merchant_user_uuid}"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.grailpay.com/3p/api/v2/batch-payouts/merchant/{merchant_user_uuid}', 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.grailpay.com/3p/api/v2/batch-payouts/merchant/{merchant_user_uuid}",
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.grailpay.com/3p/api/v2/batch-payouts/merchant/{merchant_user_uuid}"
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.grailpay.com/3p/api/v2/batch-payouts/merchant/{merchant_user_uuid}")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.grailpay.com/3p/api/v2/batch-payouts/merchant/{merchant_user_uuid}")
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{
"status": true,
"message": "",
"data": {
"batch_payouts": [
{
"uuid": "9bd53fe1-ac74-4e81-b6f2-be88b7c86a68",
"amount": 4400,
"trace_id": "ach_11kt6v9715jp67t",
"payout_status": "PAYOUT_COMPLETE",
"ach_return_code": null,
"failure_reason": null,
"created_at": "2025-02-17 11:15:15",
"updated_at": "2025-02-18 17:15:15"
}
],
"pagination": {
"current_page": 1,
"total_pages": 2,
"total_items": 12,
"per_page": 10
}
},
"errors": null,
"error_code": null
}{
"status": false,
"message": "Invalid Parameters Received: startDate, endDate",
"data": null,
"errors": null,
"error_code": null
}{
"status": false,
"message": "Invalid Token",
"data": null,
"errors": null,
"error_code": null
}{
"status": false,
"message": "Merchant not found.",
"data": null,
"errors": null,
"error_code": null
}{
"status": false,
"message": "The given data was invalid.",
"data": null,
"errors": {
"start_date": [
"The start date does not match the format Y-m-d.",
"The start date must be a date before or equal to end date."
],
"end_date": [
"The end date does not match the format Y-m-d.",
"The end date must be a date after or equal to start date."
],
"sort_order": [
"The selected sort order is invalid."
],
"per_page": [
"The per page must be an integer.",
"The per page must be at least 1.",
"The per page may not be greater than 100."
],
"page": [
"The page must be an integer.",
"The page must be at least 1."
]
},
"error_code": null
}Authorizations
Token-based authentication using Authorization: Bearer <YOUR_API_KEY> provided by the GrailPay Support Team.
Path Parameters
UUID of the merchant
Query Parameters
Filter by start date (YYYY-MM-DD)
Filter by end date (YYYY-MM-DD)
Sort order ('oldest' or 'newest')
Available options:
oldest, newest Page number for pagination
Example:
1
Number of records per page
Example:
10
⌘I
