curl --request POST \
--url https://sandbox-api.kotanipay.io/api/v3/deposit/mobile-money \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"customer_key": "customer-key-123",
"amount": 10,
"wallet_id": "5f9b2c7b9c9d6b0017b4e6b1",
"callback_url": "https://example.com",
"customer_redirect_url": "https://example.com/success",
"customer_id_number": "9001010000084",
"reference_id": "5f9b2c7b9c9d6b0017b4e6b1",
"currency": "USD"
}
'import requests
url = "https://sandbox-api.kotanipay.io/api/v3/deposit/mobile-money"
payload = {
"customer_key": "customer-key-123",
"amount": 10,
"wallet_id": "5f9b2c7b9c9d6b0017b4e6b1",
"callback_url": "https://example.com",
"customer_redirect_url": "https://example.com/success",
"customer_id_number": "9001010000084",
"reference_id": "5f9b2c7b9c9d6b0017b4e6b1",
"currency": "USD"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
customer_key: 'customer-key-123',
amount: 10,
wallet_id: '5f9b2c7b9c9d6b0017b4e6b1',
callback_url: 'https://example.com',
customer_redirect_url: 'https://example.com/success',
customer_id_number: '9001010000084',
reference_id: '5f9b2c7b9c9d6b0017b4e6b1',
currency: 'USD'
})
};
fetch('https://sandbox-api.kotanipay.io/api/v3/deposit/mobile-money', 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://sandbox-api.kotanipay.io/api/v3/deposit/mobile-money",
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([
'customer_key' => 'customer-key-123',
'amount' => 10,
'wallet_id' => '5f9b2c7b9c9d6b0017b4e6b1',
'callback_url' => 'https://example.com',
'customer_redirect_url' => 'https://example.com/success',
'customer_id_number' => '9001010000084',
'reference_id' => '5f9b2c7b9c9d6b0017b4e6b1',
'currency' => 'USD'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$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://sandbox-api.kotanipay.io/api/v3/deposit/mobile-money"
payload := strings.NewReader("{\n \"customer_key\": \"customer-key-123\",\n \"amount\": 10,\n \"wallet_id\": \"5f9b2c7b9c9d6b0017b4e6b1\",\n \"callback_url\": \"https://example.com\",\n \"customer_redirect_url\": \"https://example.com/success\",\n \"customer_id_number\": \"9001010000084\",\n \"reference_id\": \"5f9b2c7b9c9d6b0017b4e6b1\",\n \"currency\": \"USD\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
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://sandbox-api.kotanipay.io/api/v3/deposit/mobile-money")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"customer_key\": \"customer-key-123\",\n \"amount\": 10,\n \"wallet_id\": \"5f9b2c7b9c9d6b0017b4e6b1\",\n \"callback_url\": \"https://example.com\",\n \"customer_redirect_url\": \"https://example.com/success\",\n \"customer_id_number\": \"9001010000084\",\n \"reference_id\": \"5f9b2c7b9c9d6b0017b4e6b1\",\n \"currency\": \"USD\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://sandbox-api.kotanipay.io/api/v3/deposit/mobile-money")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"customer_key\": \"customer-key-123\",\n \"amount\": 10,\n \"wallet_id\": \"5f9b2c7b9c9d6b0017b4e6b1\",\n \"callback_url\": \"https://example.com\",\n \"customer_redirect_url\": \"https://example.com/success\",\n \"customer_id_number\": \"9001010000084\",\n \"reference_id\": \"5f9b2c7b9c9d6b0017b4e6b1\",\n \"currency\": \"USD\"\n}"
response = http.request(request)
puts response.read_body{
"success": true,
"message": "Deposit has been successfully created.",
"data": {
"id": "<string>",
"message": "<string>",
"reference_id": "<string>",
"reference_number": 123,
"customer_key": "<string>",
"redirect_url": "<string>"
}
}{
"success": false,
"message": "Bad Request",
"data": {}
}{
"success": false,
"message": "Unauthorized",
"data": {}
}{
"success": true,
"message": "Deposit status retrieved.",
"data": {}
}Deposit via Mobile Money
An integrator’s customers can initiate a deposit from their respective mobile money wallets. An STK push will be sent to the customer and the respective amount will be deducted from their mobile money wallets and deposited into the integrator’s fiat wallet
curl --request POST \
--url https://sandbox-api.kotanipay.io/api/v3/deposit/mobile-money \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"customer_key": "customer-key-123",
"amount": 10,
"wallet_id": "5f9b2c7b9c9d6b0017b4e6b1",
"callback_url": "https://example.com",
"customer_redirect_url": "https://example.com/success",
"customer_id_number": "9001010000084",
"reference_id": "5f9b2c7b9c9d6b0017b4e6b1",
"currency": "USD"
}
'import requests
url = "https://sandbox-api.kotanipay.io/api/v3/deposit/mobile-money"
payload = {
"customer_key": "customer-key-123",
"amount": 10,
"wallet_id": "5f9b2c7b9c9d6b0017b4e6b1",
"callback_url": "https://example.com",
"customer_redirect_url": "https://example.com/success",
"customer_id_number": "9001010000084",
"reference_id": "5f9b2c7b9c9d6b0017b4e6b1",
"currency": "USD"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
customer_key: 'customer-key-123',
amount: 10,
wallet_id: '5f9b2c7b9c9d6b0017b4e6b1',
callback_url: 'https://example.com',
customer_redirect_url: 'https://example.com/success',
customer_id_number: '9001010000084',
reference_id: '5f9b2c7b9c9d6b0017b4e6b1',
currency: 'USD'
})
};
fetch('https://sandbox-api.kotanipay.io/api/v3/deposit/mobile-money', 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://sandbox-api.kotanipay.io/api/v3/deposit/mobile-money",
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([
'customer_key' => 'customer-key-123',
'amount' => 10,
'wallet_id' => '5f9b2c7b9c9d6b0017b4e6b1',
'callback_url' => 'https://example.com',
'customer_redirect_url' => 'https://example.com/success',
'customer_id_number' => '9001010000084',
'reference_id' => '5f9b2c7b9c9d6b0017b4e6b1',
'currency' => 'USD'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$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://sandbox-api.kotanipay.io/api/v3/deposit/mobile-money"
payload := strings.NewReader("{\n \"customer_key\": \"customer-key-123\",\n \"amount\": 10,\n \"wallet_id\": \"5f9b2c7b9c9d6b0017b4e6b1\",\n \"callback_url\": \"https://example.com\",\n \"customer_redirect_url\": \"https://example.com/success\",\n \"customer_id_number\": \"9001010000084\",\n \"reference_id\": \"5f9b2c7b9c9d6b0017b4e6b1\",\n \"currency\": \"USD\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
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://sandbox-api.kotanipay.io/api/v3/deposit/mobile-money")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"customer_key\": \"customer-key-123\",\n \"amount\": 10,\n \"wallet_id\": \"5f9b2c7b9c9d6b0017b4e6b1\",\n \"callback_url\": \"https://example.com\",\n \"customer_redirect_url\": \"https://example.com/success\",\n \"customer_id_number\": \"9001010000084\",\n \"reference_id\": \"5f9b2c7b9c9d6b0017b4e6b1\",\n \"currency\": \"USD\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://sandbox-api.kotanipay.io/api/v3/deposit/mobile-money")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"customer_key\": \"customer-key-123\",\n \"amount\": 10,\n \"wallet_id\": \"5f9b2c7b9c9d6b0017b4e6b1\",\n \"callback_url\": \"https://example.com\",\n \"customer_redirect_url\": \"https://example.com/success\",\n \"customer_id_number\": \"9001010000084\",\n \"reference_id\": \"5f9b2c7b9c9d6b0017b4e6b1\",\n \"currency\": \"USD\"\n}"
response = http.request(request)
puts response.read_body{
"success": true,
"message": "Deposit has been successfully created.",
"data": {
"id": "<string>",
"message": "<string>",
"reference_id": "<string>",
"reference_number": 123,
"customer_key": "<string>",
"redirect_url": "<string>"
}
}{
"success": false,
"message": "Bad Request",
"data": {}
}{
"success": false,
"message": "Unauthorized",
"data": {}
}{
"success": true,
"message": "Deposit status retrieved.",
"data": {}
}Authorizations
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Body
Customer key
"customer-key-123"
amount to deposit
10
deposit id
"5f9b2c7b9c9d6b0017b4e6b1"
callback url
"https://example.com"
customer redirect url
"https://example.com/success"
Customer national ID number (required for Capitec Pay in South Africa - 13 digit SA ID)
"9001010000084"
reference id
"5f9b2c7b9c9d6b0017b4e6b1"
Override transaction currency (e.g. USD for USD mobile money in Congo/Zambia). When provided and matches the wallet currency, phone-country currency validation is skipped.
"USD"