Submit Niobi Unified Collections
curl --request POST \
--url https://sandbox.users.niobi.co/api/v3/niobi-unified-collections \
--header 'Content-Type: application/json' \
--data '
{
"client_id": "<string>",
"sender": "<string>",
"timestamp": 123,
"salt": "<string>",
"signature": "<string>",
"params": {
"amount": 123,
"mobile": "<string>",
"country_id": 123,
"currency": "<string>",
"payment_method_type": "<string>",
"callback_url": "<string>",
"third_party_reference_1": "<string>",
"third_party_reference_2": "<string>"
}
}
'import requests
url = "https://sandbox.users.niobi.co/api/v3/niobi-unified-collections"
payload = {
"client_id": "<string>",
"sender": "<string>",
"timestamp": 123,
"salt": "<string>",
"signature": "<string>",
"params": {
"amount": 123,
"mobile": "<string>",
"country_id": 123,
"currency": "<string>",
"payment_method_type": "<string>",
"callback_url": "<string>",
"third_party_reference_1": "<string>",
"third_party_reference_2": "<string>"
}
}
headers = {"Content-Type": "application/json"}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'Content-Type': 'application/json'},
body: JSON.stringify({
client_id: '<string>',
sender: '<string>',
timestamp: 123,
salt: '<string>',
signature: '<string>',
params: {
amount: 123,
mobile: '<string>',
country_id: 123,
currency: '<string>',
payment_method_type: '<string>',
callback_url: '<string>',
third_party_reference_1: '<string>',
third_party_reference_2: '<string>'
}
})
};
fetch('https://sandbox.users.niobi.co/api/v3/niobi-unified-collections', 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.users.niobi.co/api/v3/niobi-unified-collections",
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([
'client_id' => '<string>',
'sender' => '<string>',
'timestamp' => 123,
'salt' => '<string>',
'signature' => '<string>',
'params' => [
'amount' => 123,
'mobile' => '<string>',
'country_id' => 123,
'currency' => '<string>',
'payment_method_type' => '<string>',
'callback_url' => '<string>',
'third_party_reference_1' => '<string>',
'third_party_reference_2' => '<string>'
]
]),
CURLOPT_HTTPHEADER => [
"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.users.niobi.co/api/v3/niobi-unified-collections"
payload := strings.NewReader("{\n \"client_id\": \"<string>\",\n \"sender\": \"<string>\",\n \"timestamp\": 123,\n \"salt\": \"<string>\",\n \"signature\": \"<string>\",\n \"params\": {\n \"amount\": 123,\n \"mobile\": \"<string>\",\n \"country_id\": 123,\n \"currency\": \"<string>\",\n \"payment_method_type\": \"<string>\",\n \"callback_url\": \"<string>\",\n \"third_party_reference_1\": \"<string>\",\n \"third_party_reference_2\": \"<string>\"\n }\n}")
req, _ := http.NewRequest("POST", url, payload)
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.users.niobi.co/api/v3/niobi-unified-collections")
.header("Content-Type", "application/json")
.body("{\n \"client_id\": \"<string>\",\n \"sender\": \"<string>\",\n \"timestamp\": 123,\n \"salt\": \"<string>\",\n \"signature\": \"<string>\",\n \"params\": {\n \"amount\": 123,\n \"mobile\": \"<string>\",\n \"country_id\": 123,\n \"currency\": \"<string>\",\n \"payment_method_type\": \"<string>\",\n \"callback_url\": \"<string>\",\n \"third_party_reference_1\": \"<string>\",\n \"third_party_reference_2\": \"<string>\"\n }\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://sandbox.users.niobi.co/api/v3/niobi-unified-collections")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Content-Type"] = 'application/json'
request.body = "{\n \"client_id\": \"<string>\",\n \"sender\": \"<string>\",\n \"timestamp\": 123,\n \"salt\": \"<string>\",\n \"signature\": \"<string>\",\n \"params\": {\n \"amount\": 123,\n \"mobile\": \"<string>\",\n \"country_id\": 123,\n \"currency\": \"<string>\",\n \"payment_method_type\": \"<string>\",\n \"callback_url\": \"<string>\",\n \"third_party_reference_1\": \"<string>\",\n \"third_party_reference_2\": \"<string>\"\n }\n}"
response = http.request(request)
puts response.read_body{
"success": true,
"message": "Verification token was sent to your mobile number. Kindly verify to proceed with payment.",
"data": {}
}{
"success": false,
"message": "Niobi user not found or Country was not found or Transaction was not created!"
}{
"success": false,
"message": "Entity integration record not found or Client id not matched or Request was not verified."
}{
"success": false,
"message": "User not found!"
}Unified Collections
Submit Niobi Unified Collections
Handles payment processing for Niobi, supporting multiple payment methods.
POST
/
api
/
v3
/
niobi-unified-collections
Submit Niobi Unified Collections
curl --request POST \
--url https://sandbox.users.niobi.co/api/v3/niobi-unified-collections \
--header 'Content-Type: application/json' \
--data '
{
"client_id": "<string>",
"sender": "<string>",
"timestamp": 123,
"salt": "<string>",
"signature": "<string>",
"params": {
"amount": 123,
"mobile": "<string>",
"country_id": 123,
"currency": "<string>",
"payment_method_type": "<string>",
"callback_url": "<string>",
"third_party_reference_1": "<string>",
"third_party_reference_2": "<string>"
}
}
'import requests
url = "https://sandbox.users.niobi.co/api/v3/niobi-unified-collections"
payload = {
"client_id": "<string>",
"sender": "<string>",
"timestamp": 123,
"salt": "<string>",
"signature": "<string>",
"params": {
"amount": 123,
"mobile": "<string>",
"country_id": 123,
"currency": "<string>",
"payment_method_type": "<string>",
"callback_url": "<string>",
"third_party_reference_1": "<string>",
"third_party_reference_2": "<string>"
}
}
headers = {"Content-Type": "application/json"}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'Content-Type': 'application/json'},
body: JSON.stringify({
client_id: '<string>',
sender: '<string>',
timestamp: 123,
salt: '<string>',
signature: '<string>',
params: {
amount: 123,
mobile: '<string>',
country_id: 123,
currency: '<string>',
payment_method_type: '<string>',
callback_url: '<string>',
third_party_reference_1: '<string>',
third_party_reference_2: '<string>'
}
})
};
fetch('https://sandbox.users.niobi.co/api/v3/niobi-unified-collections', 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.users.niobi.co/api/v3/niobi-unified-collections",
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([
'client_id' => '<string>',
'sender' => '<string>',
'timestamp' => 123,
'salt' => '<string>',
'signature' => '<string>',
'params' => [
'amount' => 123,
'mobile' => '<string>',
'country_id' => 123,
'currency' => '<string>',
'payment_method_type' => '<string>',
'callback_url' => '<string>',
'third_party_reference_1' => '<string>',
'third_party_reference_2' => '<string>'
]
]),
CURLOPT_HTTPHEADER => [
"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.users.niobi.co/api/v3/niobi-unified-collections"
payload := strings.NewReader("{\n \"client_id\": \"<string>\",\n \"sender\": \"<string>\",\n \"timestamp\": 123,\n \"salt\": \"<string>\",\n \"signature\": \"<string>\",\n \"params\": {\n \"amount\": 123,\n \"mobile\": \"<string>\",\n \"country_id\": 123,\n \"currency\": \"<string>\",\n \"payment_method_type\": \"<string>\",\n \"callback_url\": \"<string>\",\n \"third_party_reference_1\": \"<string>\",\n \"third_party_reference_2\": \"<string>\"\n }\n}")
req, _ := http.NewRequest("POST", url, payload)
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.users.niobi.co/api/v3/niobi-unified-collections")
.header("Content-Type", "application/json")
.body("{\n \"client_id\": \"<string>\",\n \"sender\": \"<string>\",\n \"timestamp\": 123,\n \"salt\": \"<string>\",\n \"signature\": \"<string>\",\n \"params\": {\n \"amount\": 123,\n \"mobile\": \"<string>\",\n \"country_id\": 123,\n \"currency\": \"<string>\",\n \"payment_method_type\": \"<string>\",\n \"callback_url\": \"<string>\",\n \"third_party_reference_1\": \"<string>\",\n \"third_party_reference_2\": \"<string>\"\n }\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://sandbox.users.niobi.co/api/v3/niobi-unified-collections")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Content-Type"] = 'application/json'
request.body = "{\n \"client_id\": \"<string>\",\n \"sender\": \"<string>\",\n \"timestamp\": 123,\n \"salt\": \"<string>\",\n \"signature\": \"<string>\",\n \"params\": {\n \"amount\": 123,\n \"mobile\": \"<string>\",\n \"country_id\": 123,\n \"currency\": \"<string>\",\n \"payment_method_type\": \"<string>\",\n \"callback_url\": \"<string>\",\n \"third_party_reference_1\": \"<string>\",\n \"third_party_reference_2\": \"<string>\"\n }\n}"
response = http.request(request)
puts response.read_body{
"success": true,
"message": "Verification token was sent to your mobile number. Kindly verify to proceed with payment.",
"data": {}
}{
"success": false,
"message": "Niobi user not found or Country was not found or Transaction was not created!"
}{
"success": false,
"message": "Entity integration record not found or Client id not matched or Request was not verified."
}{
"success": false,
"message": "User not found!"
}Please make sure to generate a new
signature whenever you are creating a collection request.List of Supported Countries
| Country Id | Country | Country Code | Currency | Payment Method type | Required Fields | |
|---|---|---|---|---|---|---|
| 1 | Kenya | 254 | KES | send money | country_id, currency | |
| 2 | Benin | 229 | XOF | mtn, MOOV | country_id, currency | Not Supported |
| 3 | Cote D’Ivoire | 225 | XOF | mtn, Orange | country_id, currency | Not Supported |
| 4 | Cameroon | 237 | XAF | mtn, Orange | country_id, currency | Not Supported |
| 9 | Senegal | 221 | XOF | Orange, Free | country_id, currency | Not Supported |
| 10 | Tanzania | 255 | TZS | Airtel, Halotel, Tigo, Vodacom | country_id, currency | 2 dp - (Airtel) |
| 11 | Uganda | 256 | UGX | mtn, Airtel | country_id, currency | 2 dp - (MTN) |
| 12 | Zambia | 260 | ZMW | Zamtel, mtn | country_id, currency | 2 dp |
| 13 | Sierra Leone | 232 | SLE | Orange | country_id, currency | 2 dp |
For Senegal Orange deposits, the end user receives an SMS with a shortcode after the deposit is initiated. They dial the shortcode, triggering a USSD prompt where they input their PIN to approve the transaction.
Body
application/json
Data needed for niobi unified collection
The Client id is your public key which is generated when you are creating a new API integration from our app.
The Sender is the title of the API Integration which was created through our app. you can just copy this title and use it whenever making a new signature
this is the current timestamp when the request is being made
Salt is used for security purposes. This is a random string and can be unique value for each request or always the same.
this is the signature which was generated after signing the request. you can copy it from the response we provide from the api/niobi-signature endpoint
Show child attributes
Show child attributes
⌘I

