API Documentation for Payout V2
This documentation provides guidance for developers to integrate the Payout V2 endpoint using JSON requests via PHP cURL or NodeJs. Each section includes the endpoint, request parameters, and sample responses.
POST https://mybundlepay.com/api/v2/initiatePayout
HEADERS
Authorization* string
Pass your {secret_key} as a Bearer token in the request header to authorize this call
Accept: application/json
REQUEST PARAMETERS *
JSON payload fields for initiating a payout:
1. amount (integer) – Withdrawal amount in the smallest currency unit (e.g., 1000 = NGN 10.00).
2. destinationBankCode (string) – Bank code identifying the recipient's bank.
3. destinationAccountNumber (string) – Recipient’s bank account number.
4. destinationAccountName (string) – Recipient’s account name.
5. nameEnquiryReference This is the sessionId returned in the name enquiry endpoint response.
6. narration (string, optional) – Custom transaction narration (e.g., “Payment for services”).
Notes for Developers
1. Store API keys securely (e.g., in environment variables).
2. Implement proper error handling for failed requests.
3. Amounts are in the smallest currency unit; ensure correct conversion.
4. Use test keys for development and live keys only in production.
5. Respect API rate limits; implement retries if necessary.
<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => 'https://mybundlepay.com/api/v2/initiatePayout',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => 'POST',
CURLOPT_POSTFIELDS => json_encode([
"amount" => 1000,
"destinationBankCode" => "000004",
"destinationAccountNumber" => "123456789",
"destinationAccountName" => "Test",
"nameEnquiryReference" => "xxxxxxxxxxxxxxxxxxxxxxxxxx",
"narration" => "payout"
]),
CURLOPT_HTTPHEADER => [
'Content-Type: application/json',
'Authorization: Bearer {secret_key}'
],
]);
$response = curl_exec($curl);
curl_close($curl);
echo $response;
const axios = require('axios');
const data = {
amount: 1000,
destinationBankCode: "000004",
destinationAccountNumber: "123456789",
destinationAccountName: "Test",
nameEnquiryReference: "xxxxxxxxxxxxxxxxxxxxxx",
narration: "payout"
};
axios.post('https://mybundlepay.com/api/v2/initiatePayout', data, {
headers: {
'Authorization': 'Bearer {secret_key}',
'Content-Type': 'application/json'
}
})
.then(response => console.log(response.data))
.catch(error => console.error(error));
Successful Response
{
"message": "Payout initiated successfully",
"status": "success",
"data": {
"reference": "txn_xxxxxxxx",
"amount": 1000,
"queued": true
}
}
Error Response
{
"status": "failed",
"message": "Insufficient balance."
}