Create Bulk Transaction Batch
curl --request POST \
--url https://waas-staging.embedly.ng/api/v1/payment-scheduler/batch \
--header 'Content-Type: application/json' \
--header 'x-api-key: <api-key>' \
--data '
{
"accountNumber": "<string>",
"batchReference": "<string>",
"executionMode": "<string>",
"scheduleType": "<string>",
"scheduledAt": "<string>",
"recurrencePattern": "<string>",
"recurrenceInterval": 123,
"recurrenceDays": "<string>",
"recurrenceEndAt": "<string>"
}
'import requests
url = "https://waas-staging.embedly.ng/api/v1/payment-scheduler/batch"
payload = {
"accountNumber": "<string>",
"batchReference": "<string>",
"executionMode": "<string>",
"scheduleType": "<string>",
"scheduledAt": "<string>",
"recurrencePattern": "<string>",
"recurrenceInterval": 123,
"recurrenceDays": "<string>",
"recurrenceEndAt": "<string>"
}
headers = {
"x-api-key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'x-api-key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
accountNumber: '<string>',
batchReference: '<string>',
executionMode: '<string>',
scheduleType: '<string>',
scheduledAt: '<string>',
recurrencePattern: '<string>',
recurrenceInterval: 123,
recurrenceDays: '<string>',
recurrenceEndAt: '<string>'
})
};
fetch('https://waas-staging.embedly.ng/api/v1/payment-scheduler/batch', 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://waas-staging.embedly.ng/api/v1/payment-scheduler/batch",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'accountNumber' => '<string>',
'batchReference' => '<string>',
'executionMode' => '<string>',
'scheduleType' => '<string>',
'scheduledAt' => '<string>',
'recurrencePattern' => '<string>',
'recurrenceInterval' => 123,
'recurrenceDays' => '<string>',
'recurrenceEndAt' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"x-api-key: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://waas-staging.embedly.ng/api/v1/payment-scheduler/batch"
payload := strings.NewReader("{\n \"accountNumber\": \"<string>\",\n \"batchReference\": \"<string>\",\n \"executionMode\": \"<string>\",\n \"scheduleType\": \"<string>\",\n \"scheduledAt\": \"<string>\",\n \"recurrencePattern\": \"<string>\",\n \"recurrenceInterval\": 123,\n \"recurrenceDays\": \"<string>\",\n \"recurrenceEndAt\": \"<string>\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("x-api-key", "<api-key>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://waas-staging.embedly.ng/api/v1/payment-scheduler/batch")
.header("x-api-key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"accountNumber\": \"<string>\",\n \"batchReference\": \"<string>\",\n \"executionMode\": \"<string>\",\n \"scheduleType\": \"<string>\",\n \"scheduledAt\": \"<string>\",\n \"recurrencePattern\": \"<string>\",\n \"recurrenceInterval\": 123,\n \"recurrenceDays\": \"<string>\",\n \"recurrenceEndAt\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://waas-staging.embedly.ng/api/v1/payment-scheduler/batch")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["x-api-key"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"accountNumber\": \"<string>\",\n \"batchReference\": \"<string>\",\n \"executionMode\": \"<string>\",\n \"scheduleType\": \"<string>\",\n \"scheduledAt\": \"<string>\",\n \"recurrencePattern\": \"<string>\",\n \"recurrenceInterval\": 123,\n \"recurrenceDays\": \"<string>\",\n \"recurrenceEndAt\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"statusCode": 200,
"message": "Batch created successfully",
"data": {
"batchId": "08ddaf4f-77d9-4336-8e62-358d622f09e9",
"batchReference": "PAYROLL-2026-06",
"approvalStatus": "PENDING",
"processingStatus": "PENDING",
"totalRecipients": 100,
"validRecipients": 100,
"invalidRecipients": 0,
"totalAmount": 50000,
"validationErrors": [],
"createdAt": "2026-06-05T09:00:00Z"
}
}
Payment Scheduler
Create Bulk Transaction Batch
Creates a new bulk transaction batch in the upstream payment scheduler. The method posts multipart form data so the CSV file can be uploaded alongside batch metadata.
POST
/
api
/
v1
/
payment-scheduler
/
batch
Create Bulk Transaction Batch
curl --request POST \
--url https://waas-staging.embedly.ng/api/v1/payment-scheduler/batch \
--header 'Content-Type: application/json' \
--header 'x-api-key: <api-key>' \
--data '
{
"accountNumber": "<string>",
"batchReference": "<string>",
"executionMode": "<string>",
"scheduleType": "<string>",
"scheduledAt": "<string>",
"recurrencePattern": "<string>",
"recurrenceInterval": 123,
"recurrenceDays": "<string>",
"recurrenceEndAt": "<string>"
}
'import requests
url = "https://waas-staging.embedly.ng/api/v1/payment-scheduler/batch"
payload = {
"accountNumber": "<string>",
"batchReference": "<string>",
"executionMode": "<string>",
"scheduleType": "<string>",
"scheduledAt": "<string>",
"recurrencePattern": "<string>",
"recurrenceInterval": 123,
"recurrenceDays": "<string>",
"recurrenceEndAt": "<string>"
}
headers = {
"x-api-key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'x-api-key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
accountNumber: '<string>',
batchReference: '<string>',
executionMode: '<string>',
scheduleType: '<string>',
scheduledAt: '<string>',
recurrencePattern: '<string>',
recurrenceInterval: 123,
recurrenceDays: '<string>',
recurrenceEndAt: '<string>'
})
};
fetch('https://waas-staging.embedly.ng/api/v1/payment-scheduler/batch', 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://waas-staging.embedly.ng/api/v1/payment-scheduler/batch",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'accountNumber' => '<string>',
'batchReference' => '<string>',
'executionMode' => '<string>',
'scheduleType' => '<string>',
'scheduledAt' => '<string>',
'recurrencePattern' => '<string>',
'recurrenceInterval' => 123,
'recurrenceDays' => '<string>',
'recurrenceEndAt' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"x-api-key: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://waas-staging.embedly.ng/api/v1/payment-scheduler/batch"
payload := strings.NewReader("{\n \"accountNumber\": \"<string>\",\n \"batchReference\": \"<string>\",\n \"executionMode\": \"<string>\",\n \"scheduleType\": \"<string>\",\n \"scheduledAt\": \"<string>\",\n \"recurrencePattern\": \"<string>\",\n \"recurrenceInterval\": 123,\n \"recurrenceDays\": \"<string>\",\n \"recurrenceEndAt\": \"<string>\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("x-api-key", "<api-key>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://waas-staging.embedly.ng/api/v1/payment-scheduler/batch")
.header("x-api-key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"accountNumber\": \"<string>\",\n \"batchReference\": \"<string>\",\n \"executionMode\": \"<string>\",\n \"scheduleType\": \"<string>\",\n \"scheduledAt\": \"<string>\",\n \"recurrencePattern\": \"<string>\",\n \"recurrenceInterval\": 123,\n \"recurrenceDays\": \"<string>\",\n \"recurrenceEndAt\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://waas-staging.embedly.ng/api/v1/payment-scheduler/batch")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["x-api-key"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"accountNumber\": \"<string>\",\n \"batchReference\": \"<string>\",\n \"executionMode\": \"<string>\",\n \"scheduleType\": \"<string>\",\n \"scheduledAt\": \"<string>\",\n \"recurrencePattern\": \"<string>\",\n \"recurrenceInterval\": 123,\n \"recurrenceDays\": \"<string>\",\n \"recurrenceEndAt\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"statusCode": 200,
"message": "Batch created successfully",
"data": {
"batchId": "08ddaf4f-77d9-4336-8e62-358d622f09e9",
"batchReference": "PAYROLL-2026-06",
"approvalStatus": "PENDING",
"processingStatus": "PENDING",
"totalRecipients": 100,
"validRecipients": 100,
"invalidRecipients": 0,
"totalAmount": 50000,
"validationErrors": [],
"createdAt": "2026-06-05T09:00:00Z"
}
}
string
required
Debit account for the batch
string
required
Unique batch reference
string
required
IMMEDIATE or SCHEDULEDfile
required
Upload containing recipient rows
string
Required only for scheduled execution
string
Required only for scheduled execution (ISO 8601 DateTime)
string
Required for recurring schedules
number
Recurrence interval value
string
Comma-separated days for weekly patterns
string
End date for recurring schedules (ISO 8601 DateTime)
{
"statusCode": 200,
"message": "Batch created successfully",
"data": {
"batchId": "08ddaf4f-77d9-4336-8e62-358d622f09e9",
"batchReference": "PAYROLL-2026-06",
"approvalStatus": "PENDING",
"processingStatus": "PENDING",
"totalRecipients": 100,
"validRecipients": 100,
"invalidRecipients": 0,
"totalAmount": 50000,
"validationErrors": [],
"createdAt": "2026-06-05T09:00:00Z"
}
}
⌘I