Base URL
https://pay.imaxinnovationhub.com/api
Authentication
Include your API key in the request headers.
| Header | max-key |
| Content-Type | application/json |
1. Mobile Money Collections
POST
/collections/init
Initiates a payment request (Push) from a customer's phone to your account.
Parameters
| Field | Type | Req | Description |
|---|---|---|---|
number |
String | * | Customer MSISDN (e.g. 078XXXXXXX) |
amount |
Number | * | Amount in UGX (Min 500) |
client_ref |
String | * | Your unique reference |
naration |
String | - | Payment reason/description |
Response Example
{
"external_ref": "uuid-string",
"status": "success"
}
Sample Implementation
$client = new \GuzzleHttp\Client();
$response = $client->post('https://pay.imaxinnovationhub.com/api/collections/init', [
'headers' => [
'max-key' => 'YOUR_API_KEY',
'Accept' => 'application/json',
],
'json' => [
'number' => '0770000000',
'amount' => 1000,
'client_ref' => 'INV-001'
]
]);
echo $response->getBody();
import requests
url = "https://pay.imaxinnovationhub.com/api/collections/init"
headers = {"max-key": "YOUR_API_KEY", "Accept": "application/json"}
data = {"number": "0770000000", "amount": 1000, "client_ref": "INV-001"}
response = requests.post(url, json=data, headers=headers)
print(response.json())
fetch('https://pay.imaxinnovationhub.com/api/collections/init', {
method: 'POST',
headers: {
'max-key': 'YOUR_API_KEY',
'Content-Type': 'application/json'
},
body: JSON.stringify({ number: '0770000000', amount: 1000, client_ref: 'INV-001' })
})
.then(res => res.json()).then(console.log);
const axios = require('axios');
axios.post('https://pay.imaxinnovationhub.com/api/collections/init', {
number: '0770000000',
amount: 1000,
client_ref: 'INV-001'
}, {
headers: { 'max-key': 'YOUR_API_KEY' }
})
.then(res => console.log(res.data))
.catch(err => console.error(err));
package main
import ("bytes"; "encoding/json"; "net/http"; "io/ioutil")
func main() {
data, _ := json.Marshal(map[string]interface{}{
"number": "0770000000", "amount": 1000, "client_ref": "INV-001",
})
req, _ := http.NewRequest("POST", "https://pay.imaxinnovationhub.com/api/collections/init", bytes.NewBuffer(data))
req.Header.Set("max-key", "YOUR_API_KEY")
req.Header.Set("Content-Type", "application/json")
client := &http.Client{}
resp, _ := client.Do(req)
defer resp.Body.Close()
body, _ := ioutil.ReadAll(resp.Body)
println(string(body))
}
using var client = new HttpClient();
client.DefaultRequestHeaders.Add("max-key", "YOUR_API_KEY");
var data = new { number = "0770000000", amount = 1000, client_ref = "INV-001" };
var response = await client.PostAsJsonAsync("https://pay.imaxinnovationhub.com/api/collections/init", data);
var result = await response.Content.ReadAsStringAsync();
Console.WriteLine(result);
2. Mobile Money Disbursements
POST
/disbursements/transfer
Transfer funds from your account to a recipient's phone number.
Parameters
| Field | Type | Req | Description |
|---|---|---|---|
number |
String | * | Recipient MSISDN |
amount |
Number | * | Amount in UGX (Min 500) |
client_ref |
String | * | Unique transaction reference |
Response Example
{
"status": "success"
}
Sample Implementation
$client = new \GuzzleHttp\Client();
$response = $client->post('https://pay.imaxinnovationhub.com/api/disbursements/transfer', [
'headers' => [
'max-key' => 'YOUR_API_KEY',
'Accept' => 'application/json',
],
'json' => [
'number' => '0770000000',
'amount' => 2000,
'client_ref' => 'REF-123'
]
]);
echo $response->getBody();
import requests
url = "https://pay.imaxinnovationhub.com/api/disbursements/transfer"
headers = {"max-key": "YOUR_API_KEY", "Accept": "application/json"}
data = {"number": "0770000000", "amount": 2000, "client_ref": "REF-123"}
response = requests.post(url, json=data, headers=headers)
print(response.json())
fetch('https://pay.imaxinnovationhub.com/api/disbursements/transfer', {
method: 'POST',
headers: {
'max-key': 'YOUR_API_KEY',
'Content-Type': 'application/json'
},
body: JSON.stringify({ number: '0770000000', amount: 2000, client_ref: 'REF-123' })
})
.then(res => res.json()).then(console.log);
const axios = require('axios');
axios.post('https://pay.imaxinnovationhub.com/api/disbursements/transfer', {
number: '0770000000',
amount: 2000,
client_ref: 'REF-123'
}, {
headers: { 'max-key': 'YOUR_API_KEY' }
})
.then(res => console.log(res.data))
.catch(err => console.error(err));
package main
import ("bytes"; "encoding/json"; "net/http"; "io/ioutil")
func main() {
data, _ := json.Marshal(map[string]interface{}{
"number": "0770000000", "amount": 2000, "client_ref": "REF-123",
})
req, _ := http.NewRequest("POST", "https://pay.imaxinnovationhub.com/api/disbursements/transfer", bytes.NewBuffer(data))
req.Header.Set("max-key", "YOUR_API_KEY")
req.Header.Set("Content-Type", "application/json")
client := &http.Client{}
resp, _ := client.Do(req)
defer resp.Body.Close()
body, _ := ioutil.ReadAll(resp.Body)
println(string(body))
}
using var client = new HttpClient();
client.DefaultRequestHeaders.Add("max-key", "YOUR_API_KEY");
var data = new { number = "0770000000", amount = 2000, client_ref = "REF-123" };
var response = await client.PostAsJsonAsync("https://pay.imaxinnovationhub.com/api/disbursements/transfer", data);
var result = await response.Content.ReadAsStringAsync();
Console.WriteLine(result);