cURL
curl -X POST "https://api.onekhusa.com/sandbox/v1/collections/inquiry/transactionStatus" \
--header "Authorization: Bearer your-jwt-token" \
--header "Content-Type: application/json" \
--header "Accept-Language: en" \
--header "X-Idempotency-Key: your-idempotency-key" \
-d '{
"merchantAccountNumber": 35253486,
"sourceReferenceNumber": "JF260209114N"
}'import requests
url = "https://api.onekhusa.com/sandbox/v1/collections/inquiry/transactionStatus"
payload = {
"merchantAccountNumber": 35253486,
"sourceReferenceNumber": "JF260209114N"
}
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({merchantAccountNumber: 35253486, sourceReferenceNumber: 'JF260209114N'})
};
fetch('https://api.onekhusa.com/sandbox/v1/collections/inquiry/transactionStatus', 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://api.onekhusa.com/sandbox/v1/collections/inquiry/transactionStatus",
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([
'merchantAccountNumber' => 35253486,
'sourceReferenceNumber' => 'JF260209114N'
]),
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://api.onekhusa.com/sandbox/v1/collections/inquiry/transactionStatus"
payload := strings.NewReader("{\n \"merchantAccountNumber\": 35253486,\n \"sourceReferenceNumber\": \"JF260209114N\"\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://api.onekhusa.com/sandbox/v1/collections/inquiry/transactionStatus")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"merchantAccountNumber\": 35253486,\n \"sourceReferenceNumber\": \"JF260209114N\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.onekhusa.com/sandbox/v1/collections/inquiry/transactionStatus")
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 \"merchantAccountNumber\": 35253486,\n \"sourceReferenceNumber\": \"JF260209114N\"\n}"
response = http.request(request)
puts response.read_body{
"beneficiary": {
"accountNumber": 12345678,
"accountName": "MERCHANT SANDBOX",
"amountReceived": 49500,
"currencyCode": "MWK"
},
"source": {
"accountNumber": "5271306",
"customerName": "ANGEL BAULENI",
"amountSent": 50000,
"currencyCode": "MWK",
"sourceReferenceNumber": "JF260209114N",
"connectorId": 212188,
"connectorName": "National Bank of Malawi"
},
"transaction": {
"transactionReferenceNumber": "261011FQX52T",
"transactionFee": 500,
"transactionDescription": "Fake Merchant Account Topup",
"transactionDate": "2026-02-09T15:12:52.8020476+02:00",
"valueDate": "2026-02-09T15:12:52.8020476+02:00",
"transactionCode": "BAM",
"transactionTypeName": "Account To Merchant",
"transactionStatusCode": "S",
"transactionStatusName": "Success",
"bridgeReferenceNumber": "019c4288-9342-7ebd-a947-6d97d4da77ed",
"responseCode": "S100",
"responseMessage": "Successful transaction"
}
}Transaction Inquiry
Inquire By Source Ref Number
This endpoint retrieves detailed information about a specific collection transaction in the OneKhusa platform using the merchant source reference number.
POST
/
collections
/
inquiry
/
transactionStatus
cURL
curl -X POST "https://api.onekhusa.com/sandbox/v1/collections/inquiry/transactionStatus" \
--header "Authorization: Bearer your-jwt-token" \
--header "Content-Type: application/json" \
--header "Accept-Language: en" \
--header "X-Idempotency-Key: your-idempotency-key" \
-d '{
"merchantAccountNumber": 35253486,
"sourceReferenceNumber": "JF260209114N"
}'import requests
url = "https://api.onekhusa.com/sandbox/v1/collections/inquiry/transactionStatus"
payload = {
"merchantAccountNumber": 35253486,
"sourceReferenceNumber": "JF260209114N"
}
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({merchantAccountNumber: 35253486, sourceReferenceNumber: 'JF260209114N'})
};
fetch('https://api.onekhusa.com/sandbox/v1/collections/inquiry/transactionStatus', 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://api.onekhusa.com/sandbox/v1/collections/inquiry/transactionStatus",
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([
'merchantAccountNumber' => 35253486,
'sourceReferenceNumber' => 'JF260209114N'
]),
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://api.onekhusa.com/sandbox/v1/collections/inquiry/transactionStatus"
payload := strings.NewReader("{\n \"merchantAccountNumber\": 35253486,\n \"sourceReferenceNumber\": \"JF260209114N\"\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://api.onekhusa.com/sandbox/v1/collections/inquiry/transactionStatus")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"merchantAccountNumber\": 35253486,\n \"sourceReferenceNumber\": \"JF260209114N\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.onekhusa.com/sandbox/v1/collections/inquiry/transactionStatus")
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 \"merchantAccountNumber\": 35253486,\n \"sourceReferenceNumber\": \"JF260209114N\"\n}"
response = http.request(request)
puts response.read_body{
"beneficiary": {
"accountNumber": 12345678,
"accountName": "MERCHANT SANDBOX",
"amountReceived": 49500,
"currencyCode": "MWK"
},
"source": {
"accountNumber": "5271306",
"customerName": "ANGEL BAULENI",
"amountSent": 50000,
"currencyCode": "MWK",
"sourceReferenceNumber": "JF260209114N",
"connectorId": 212188,
"connectorName": "National Bank of Malawi"
},
"transaction": {
"transactionReferenceNumber": "261011FQX52T",
"transactionFee": 500,
"transactionDescription": "Fake Merchant Account Topup",
"transactionDate": "2026-02-09T15:12:52.8020476+02:00",
"valueDate": "2026-02-09T15:12:52.8020476+02:00",
"transactionCode": "BAM",
"transactionTypeName": "Account To Merchant",
"transactionStatusCode": "S",
"transactionStatusName": "Success",
"bridgeReferenceNumber": "019c4288-9342-7ebd-a947-6d97d4da77ed",
"responseCode": "S100",
"responseMessage": "Successful transaction"
}
}Avoid excessive transaction polling (inquiry) to avoid exhausting your merchant rate-limiter buffer that leads to subsequent requests rejection. We recommend performing this action when your system has not received the webhook notification after its expiry period.
Authorizations
Bearer authentication header of the form Bearer Token, Where accessToken is the access token used to authenticate the request.
Body
application/json