GLOBAL PAYMENT (CROSS-BORDER)
Initiate Global Transfer
Send money cross-border to a beneficiary's bank account or mobile money wallet.
POST /v1/crossborder/global-transfer
All payments will be charged to your USD wallet
Prerequisites
- Customer must have
overall_kyc_status: approved - Fetch
channel_idfromGET /v1/crossborder/channels - Fetch
network_idfromGET /v1/crossborder/networks - Fetch a live rate from
GET /v1/crossborder/ratesimmediately before initiating
Request
Body Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
customer_uuid |
string | ✅ | ID of the KYC-approved customer |
amount |
number | ✅ | Amount in source currency |
destination_currency |
string | ✅ | Currency the beneficiary receives |
reference |
string | ✅ | Unique merchant-generated reference |
reason |
string | ✅ | Purpose of the transfer. Transfer reasons can only be one of the following: bills, groceries, gift, travel, health, entertainment, housing, school-fees, other |
beneficiary.account_name |
string | ✅ | Beneficiary's full name |
beneficiary.account_number |
string | ✅ | Bank account or mobile money number |
beneficiary.network_id |
string | ✅ | From GET /v1/crossborder/networks |
beneficiary.channel_id |
string | ✅ | From GET /v1/crossborder/channels |
beneficiary.account_type |
string | ✅ | bank or momo |
beneficiary.country_code |
string | ✅ | ISO 3166-1 alpha-2 country code |
beneficiary.dial_code |
string | MoMo only | International dialling prefix (e.g. +254) |
Code Samples — Bank Transfer
const axios = require("axios");
const response = await axios.post(
"https://sandbox.hitchpay.ng/v1/crossborder/global-transfer",
{
customer_uuid: "dda04ec3-3774-4750-ae7b-0c070e8d084b",
amount: 100,
source_currency: "USD",
destination_currency: "KES",
reference: "REF_BANK_001",
reason: "School fees",
beneficiary: {
account_name: "Jane Doe",
account_number: "0123456789",
network_id: "30f11b2e-0905-4c09-ba5f-d05aa4e4a11c",
channel_id: "de274d59-46b3-49a8-8836-3c0cc5b73a4f",
account_type: "bank",
country_code: "KE"
}
},
{
headers: {
Authorization: `Bearer ${process.env.ACCESS_TOKEN}`,
"Content-Type": "application/json"
}
}
);
console.log(response.data);<?php
$ch = curl_init();
curl_setopt_array($ch, [
CURLOPT_URL => "https://sandbox.hitchpay.ng/v1/crossborder/global-transfer",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_POST => true,
CURLOPT_POSTFIELDS => json_encode([
"customer_uuid" => "dda04ec3-3774-4750-ae7b-0c070e8d084b",
"amount" => 100,
"source_currency" => "USD",
"destination_currency" => "KES",
"reference" => "REF_BANK_001",
"reason" => "School fees",
"beneficiary" => [
"account_name" => "Jane Doe",
"account_number" => "0123456789",
"network_id" => "30f11b2e-0905-4c09-ba5f-d05aa4e4a11c",
"channel_id" => "de274d59-46b3-49a8-8836-3c0cc5b73a4f",
"account_type" => "bank",
"country_code" => "KE"
]
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer YOUR_ACCESS_TOKEN",
"Content-Type: application/json"
]
]);
$response = curl_exec($ch);
curl_close($ch);
echo $response;import requests
url = "https://sandbox.hitchpay.ng/v1/crossborder/global-transfer"
headers = {
"Authorization": "Bearer YOUR_ACCESS_TOKEN",
"Content-Type": "application/json"
}
data = {
"customer_uuid": "dda04ec3-3774-4750-ae7b-0c070e8d084b",
"amount": 100,
"source_currency": "USD",
"destination_currency": "KES",
"reference": "REF_BANK_001",
"reason": "School fees",
"beneficiary": {
"account_name": "Jane Doe",
"account_number": "0123456789",
"network_id": "30f11b2e-0905-4c09-ba5f-d05aa4e4a11c",
"channel_id": "de274d59-46b3-49a8-8836-3c0cc5b73a4f",
"account_type": "bank",
"country_code": "KE"
}
}
response = requests.post(url, json=data, headers=headers)
print(response.json())Code Samples — Mobile Money
const axios = require("axios");
const response = await axios.post(
"https://sandbox.hitchpay.ng/v1/crossborder/global-transfer",
{
customer_uuid: "dda04ec3-3774-4750-ae7b-0c070e8d084b",
amount: 5,
source_currency: "NGN",
destination_currency: "KES",
reference: "REF_MOMO_001",
reason: "Payment for services",
beneficiary: {
account_name: "John Smith",
account_number: "254722123456",
dial_code: "+254",
network_id: "7ea6df5c-6bba-46b2-a7e6-f511959e7edb",
channel_id: "cebda160-9966-4485-8d36-6205d516b050",
account_type: "momo",
country_code: "KE"
}
},
{
headers: {
Authorization: `Bearer ${process.env.ACCESS_TOKEN}`,
"Content-Type": "application/json"
}
}
);
console.log(response.data);<?php
$ch = curl_init();
curl_setopt_array($ch, [
CURLOPT_URL => "https://sandbox.hitchpay.ng/v1/crossborder/global-transfer",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_POST => true,
CURLOPT_POSTFIELDS => json_encode([
"customer_uuid" => "dda04ec3-3774-4750-ae7b-0c070e8d084b",
"amount" => 5,
"source_currency" => "NGN",
"destination_currency" => "KES",
"reference" => "REF_MOMO_001",
"reason" => "Payment for services",
"beneficiary" => [
"account_name" => "John Smith",
"account_number" => "254722123456",
"dial_code" => "+254",
"network_id" => "7ea6df5c-6bba-46b2-a7e6-f511959e7edb",
"channel_id" => "cebda160-9966-4485-8d36-6205d516b050",
"account_type" => "momo",
"country_code" => "KE"
]
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer YOUR_ACCESS_TOKEN",
"Content-Type: application/json"
]
]);
$response = curl_exec($ch);
curl_close($ch);
echo $response;import requests
url = "https://sandbox.hitchpay.ng/v1/crossborder/global-transfer"
headers = {
"Authorization": "Bearer YOUR_ACCESS_TOKEN",
"Content-Type": "application/json"
}
data = {
"customer_uuid": "dda04ec3-3774-4750-ae7b-0c070e8d084b",
"amount": 5,
"source_currency": "NGN",
"destination_currency": "KES",
"reference": "REF_MOMO_001",
"reason": "Payment for services",
"beneficiary": {
"account_name": "John Smith",
"account_number": "254722123456",
"dial_code": "+254",
"network_id": "7ea6df5c-6bba-46b2-a7e6-f511959e7edb",
"channel_id": "cebda160-9966-4485-8d36-6205d516b050",
"account_type": "momo",
"country_code": "KE"
}
}
response = requests.post(url, json=data, headers=headers)
print(response.json())Response
200 — Transfer Initiated
{
"status": "success",
"message": "Cross-border transfer initiated successfully.",
"data": {
"reference": "HTCB13BE4DAC468B",
"external_reference": "REF_BANK_001",
"status": "processing",
"provider_status": "created",
"provider_reference": "81939272-9c53-5671-8dd3-0a445ef19c48",
"amount_sent": 100,
"source_currency": "USD",
"estimated_amount_received": 12873.28,
"destination_currency": "KES"
}
}Questions? Email [email protected]. Also on GitBook.