Skip to content

Initiate Smart Transfer

Quote a ViZO Smart account payout.

MethodPOST
URL/api/m1/initiate-transfer
AuthBearer ZMPRO-… (live) or ZMDEV-… (test)

Body parameters

FieldRequiredExampleDescription
which_balanceYesNGNString which currency to debited
accountYesZTF-10000String receive account or account number
account_nameYesMr SmithString receive account name
amountYes10000Amount to charge or transfer.
transfer_modeYessmartString transfer method (smart, bank or crypto)
currencyYesNGNISO currency code (e.g. NGN, USD).
narrationfoodThis is the narration for the transfer e.g. payments for food
callback_urlhttps://dev.zupago.app:8086/test-dev/cccccThis will replace Webhooks url
referenceYesmak-1001Transaction or VA settlement reference.

Headers

HeaderValue
AuthorizationBearer ZMPRO-your-live-api-key
Content-Typeapplication/json

Request

bash
curl -X POST 'https://api.vizo.app/api/m1/initiate-transfer' \
  -H 'Authorization: Bearer ZMPRO-your-live-api-key' \
  -H 'Content-Type: application/json' \
  -d '{
  "which_balance": "NGN",
  "account": "ZTF-10000",
  "account_name": "Mr Smith",
  "amount": 10000,
  "transfer_mode": "smart",
  "currency": "NGN",
  "narration": "food",
  "callback_url": "https://dev.zupago.app:8086/test-dev/ccccc",
  "reference": "mak-1001"
}'
ts
const response = await fetch('https://api.vizo.app/api/m1/initiate-transfer', {
  method: 'POST',
  headers: {
    Authorization: 'Bearer ZMPRO-your-live-api-key',
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
  "which_balance": "NGN",
  "account": "ZTF-10000",
  "account_name": "Mr Smith",
  "amount": 10000,
  "transfer_mode": "smart",
  "currency": "NGN",
  "narration": "food",
  "callback_url": "https://dev.zupago.app:8086/test-dev/ccccc",
  "reference": "mak-1001"
}),
});

const data = await response.json();
console.log(data);
py
import requests

url = "https://api.vizo.app/api/m1/initiate-transfer"
headers = {
    "Authorization": "Bearer ZMPRO-your-live-api-key",
    "Content-Type": "application/json",
}
payload = {
  "which_balance": "NGN",
  "account": "ZTF-10000",
  "account_name": "Mr Smith",
  "amount": 10000,
  "transfer_mode": "smart",
  "currency": "NGN",
  "narration": "food",
  "callback_url": "https://dev.zupago.app:8086/test-dev/ccccc",
  "reference": "mak-1001"
}

response = requests.request("POST", url, headers=headers, json=payload)
print(response.status_code)
print(response.json())
php
<?php

$ch = curl_init('https://api.vizo.app/api/m1/initiate-transfer');
curl_setopt_array($ch, [
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_CUSTOMREQUEST => 'POST',
    CURLOPT_HTTPHEADER => [
        'Authorization: Bearer ZMPRO-your-live-api-key',
        'Content-Type: application/json',
    ],
    CURLOPT_POSTFIELDS => json_encode([
        'which_balance' => 'NGN',
        'account' => 'ZTF-10000',
        'account_name' => 'Mr Smith',
        'amount' => 10000,
        'transfer_mode' => 'smart',
        'currency' => 'NGN',
        'narration' => 'food',
        'callback_url' => 'https://dev.zupago.app:8086/test-dev/ccccc',
        'reference' => 'mak-1001'
    ], JSON_UNESCAPED_SLASHES),
]);

$response = curl_exec($ch);
$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);

echo $status, PHP_EOL, $response, PHP_EOL;

Responses

Initiate Smart Transfer — 200 OK

json
{
  "status": "SUCCESS",
  "data": {
    "which_balance": "GHS",
    "amount": 10,
    "account_name": "Test",
    "exchange_rate": 94.22347,
    "exchange_amount": 942.23,
    "account": "ZTF-10515",
    "currency": "NGN",
    "zp_ref": "ZWB-klQZgNvO11vg",
    "fee": 0.25
  },
  "message": "Success"
}

ViZO Merchant API documentation