Post https://web.metropayhq.com/api/kuda/request

HEADERS

Authorization* string

Pass your {secret_key} as a bearer token in the request header to authorize this call

BODY PARAMS

Kuda service type. Use one of the supported service types listed below.

Request payload for the selected service type.

Optional request reference. If omitted, we generate one.

RESPONSE STRUCTURE

{ "message": "success | failed", "status": "success | failed", "data": { ...Kuda response... }, "request_ref": "string" }

SUPPORTED SERVICE TYPES

Banking: BANK_LIST, NAME_ENQUIRY, ADMIN_CREATE_VIRTUAL_ACCOUNT, ADMIN_UPDATE_VIRTUAL_ACCOUNT, ADMIN_ENABLE_VIRTUAL_ACCOUNT, ADMIN_DISABLE_VIRTUAL_ACCOUNT, ADMIN_VIRTUAL_ACCOUNTS, RETRIEVE_SINGLE_VIRTUAL_ACCOUNT, RETRIEVE_VIRTUAL_ACCOUNT_BALANCE, ADMIN_VIRTUAL_ACCOUNT_TRANSACTIONS, ADMIN_RETRIEVE_MAIN_ACCOUNT_BALANCE, ADMIN_MAIN_ACCOUNT_TRANSACTIONS, SINGLE_FUND_TRANSFER, VIRTUAL_ACCOUNT_FUND_TRANSFER, FUND_VIRTUAL_ACCOUNT, WITHDRAW_VIRTUAL_ACCOUNT, COLLECTION_ACCOUNT_FUND_TRANSFER, ADMIN_CREATE_DYNAMIC_COLLECTION_ACCOUNT, DYNAMIC_COLLECTION_ACCOUNT_TSQ

Bills: VERIFY_BILL_CUSTOMER, BILL_TSQ, PURCHASE_BILL, GET_BILLER_TYPE, ADMIN_PURCHASE_BILL, GET_PURCHASED_BILLS, ADMIN_GET_PURCHASED_BILLS

Savings: GET_SAVING_PLAN, CREATE_SAVING_PLAN, UPDATE_PLAIN_SAVING, GET_ALL_SAVING_PLAN, GET_OPEN_FLEXIBLE_SAVE, PLAIN_SAVING_TRANSACTION, GET_CLOSED_FLEXIBLE_SAVE, CREATE_OPEN_FLEXIBLE_SAVE, CREATE_CLOSE_FLEXIBLE_SAVE, GET_SPEND_SAVE_TRANSACTIONS, GET_ALL_CUSTOMER_SAVING_PLAN, RETRIEVE_PLAIN_SAVINGS_TRANSACTIONS

Gift Cards: GETGIFTCARD, BUYGIFTCARD, GIFTCARD_TSQ, ADMIN_BUY_GIFTCARD

Cards: BLOCKCARD, GETCARDPIN, REQUESTCARD, UNBLOCKCARD, ACTIVATECARD, CHANGECARDPIN, DEACTIVATECARD, MANAGECARDLIMIT, GETCUSTOMERCARD, MANAGECARDCHANNEL

Bulk: BULK_PAYMENT_TSQ, MAIN_ACCOUNT_BULK_PAYMENT, COLLECTION_ACCOUNT_BULK_PAYMENT, BULK_TRANSFER_TSQ

You can also list all service types via https://web.metropayhq.com/api/kuda/service-types


<?php
$curl = curl_init();
curl_setopt_array($curl, array(
    CURLOPT_URL => "https://web.metropayhq.com/api/kuda/request",
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_ENCODING => "",
    CURLOPT_MAXREDIRS => 10,
    CURLOPT_TIMEOUT => 0,
    CURLOPT_FOLLOWLOCATION => true,
    CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
    CURLOPT_CUSTOMREQUEST => "POST",
    CURLOPT_POSTFIELDS => json_encode([
        "service_type" => "ADMIN_CREATE_VIRTUAL_ACCOUNT",
        "request_ref" => "req_123456",
        "data" => [
            "email" => "customer@example.com",
            "phoneNumber" => "08012345678",
            "lastName" => "Doe",
            "firstName" => "John",
            "businessName" => "Example Store",
            "trackingReference" => "TRK-00001"
        ]
    ]),
    CURLOPT_HTTPHEADER => array(
        "Accept: application/json",
        "Content-Type: application/json",
        "Authorization: Bearer {secret_key}"
    ),
));

$response = curl_exec($curl);
curl_close($curl);
echo $response;
?>

                        

var axios = require('axios');
var data = JSON.stringify({
  "service_type": "SINGLE_FUND_TRANSFER",
  "request_ref": "req_7890",
  "data": {
    "amount": 500000,
    "beneficiaryBankCode": "090267",
    "beneficiaryAccountNumber": "0123456789",
    "beneficiaryName": "John Doe",
    "narration": "Payout"
  }
});

var config = {
  method: 'post',
  url: 'https://web.metropayhq.com/api/kuda/request',
  headers: { 
    'Content-Type': 'application/json', 
    'Authorization': 'Bearer {secret_key}'
  },
  data : data
};

axios(config)
.then(function (response) {
  console.log(JSON.stringify(response.data));
})
.catch(function (error) {
  console.log(error);
});

                        
Example: Pay with Transfer

{
  "service_type": "ADMIN_CREATE_DYNAMIC_COLLECTION_ACCOUNT",
  "data": {
    "Amount": 250000,
    "IsFlexiblePayment": true,
    "RemittingAccounts": [
      {
        "SplitPercentage": 100,
        "AccountName": "Example Store",
        "AccountNumber": "3020000000"
      }
    ]
  }
}