Before reading this API document, review the API Description Guide.
Transaction Limits
| Currency | Collection | Disbursement |
|---|---|---|
| GHS | 10 - 100,000 | 10 - 100,000 |
Collection API
Collection authorization may use OTP, STK Prompt, or a redirect flow depending on the enabled channel.
Collection Application
Brief Description:- Create a collection order
/ghs/collect/apply
Parameters:
| Parameter Name | Required | Type | Description |
|---|---|---|---|
| appId | Yes | Integer | Business ID; must match the URL currency |
| orderId | Yes | String | Unique merchant order ID, up to 48 characters |
| amount | Yes | String | GHS amount, up to 2 decimal places |
| payType | Yes | String | EWALLET |
| inBankCode | No | String | AIRTEL, MTN, or VODAFONE, subject to backend enablement |
| name | No | String | Payer name |
| phone | Yes | String | 12 digits starting with 233, without + |
| No | String | Valid payer email | |
| callBackUrl | Yes | String | Success redirect URL |
| callBackFailUrl | Yes | String | Failure redirect URL |
| notifyUrl | No | String | Asynchronous notification URL |
| subject | No | String | Transaction title, product name, or payment reason |
| body | No | String | Detailed remark |
| partnerUserId | No | String | Unique user ID, up to 64 allowed characters |
| sign | Yes | String | Signature |
{
"appId": 1054,
"orderId": "GHSCOLLECT001",
"amount": "100.00",
"payType": "EWALLET",
"inBankCode": "MTN",
"phone": "233241234567",
"callBackUrl": "https://merchant.example.com/success",
"notifyUrl": "https://merchant.example.com/notify",
"sign": "signature"
}
{
"status": "1",
"error": "",
"msg": "success",
"data": {
"orderId": "GHSCOLLECT001",
"orderNo": "6023071013539074",
"amount": "100.00",
"exchangeRate": "1",
"orderAmount": "100.00",
"payUrl": "https://payment.example.com/order/6023071013539074",
"description": "Complete the Mobile Money authorization",
"expiryPeriod": 15,
"sign": "signature"
}
}
| Parameter Name | Type | Description |
|---|---|---|
| orderId | String | Merchant order ID |
| orderNo | String | Platform order ID |
| amount | String | Transaction amount |
| exchangeRate | String | Exchange rate |
| orderAmount | String | Order amount |
| payUrl | String | Payment URL |
| description | String | Transaction description |
| expiryPeriod | Integer | Remaining payment validity in minutes |
| sign | String | Signature |
Collection Query
Brief Description:- Query a collection order
/ghs/collect/query
Parameters:
| Parameter Name | Required | Type | Description |
|---|---|---|---|
| appId | Yes | Integer | Business ID |
| orderId | Yes | String | Merchant order ID |
| orderNo | No | String | Platform order ID |
| sign | Yes | String | Signature |
{
"appId": 1054,
"orderId": "GHSCOLLECT001",
"orderNo": "6023071013539074",
"sign": "signature"
}
{
"status": "1",
"error": "",
"msg": "success",
"data": {
"orderId": "GHSCOLLECT001",
"orderNo": "6023071013539074",
"amount": "100.00",
"actualAmount": "100.00",
"fee": "1.00",
"status": 2,
"payTime": "2026-08-01 12:30:00",
"errorMsg": "",
"inBankCode": "MTN",
"currency": "GHS",
"originalCurrency": "GHS",
"floatExchangeRate": "1",
"originalAmount": "100.00",
"certificateId": "",
"sign": "signature"
}
}
| Parameter Name | Type | Description |
|---|---|---|
| orderId | String | Merchant order ID |
| orderNo | String | Platform order ID |
| amount | String | Transaction amount |
| actualAmount | String | Actual received amount |
| fee | String | Fee |
| status | Integer | Order status |
| payTime | String | Success time in local time, format: yyyy-MM-dd HH:mm:ss |
| errorMsg | String | Error message |
| inBankCode | String | Collection bank code |
| currency | String | Currency |
| originalCurrency | String | Original currency |
| floatExchangeRate | String | Floating exchange rate |
| originalAmount | String | Original amount |
| certificateId | String | Payment certificate ID |
| sign | String | Signature |
Payment Methods
| Currency | Payment Type (payType) | Payment Code (inBankCode) | Limit | Status | Description |
|---|---|---|---|---|---|
| GHS | EWALLET | AIRTEL | 10 - 100,000 | Available | AIRTEL |
| GHS | EWALLET | MTN | 10 - 100,000 | Available | MTN |
| GHS | EWALLET | VODAFONE | 10 - 100,000 | Available | VODAFONE |
Disbursement API
Disbursement Apply
Brief Description:- Create a disbursement order
/ghs/pay/apply
Parameters:
| Parameter Name | Required | Type | Description |
|---|---|---|---|
| appId | Yes | Integer | Business ID; must match the URL currency |
| orderId | Yes | String | Unique merchant order ID, up to 48 characters |
| amount | Yes | String | GHS amount, up to 2 decimal places |
| accountType | Yes | String | EWALLET |
| bankCode | Yes | String | AIRTEL, MTN, or VODAFONE, subject to backend enablement |
| accountNo | Yes | String | Mobile Money account: 12 digits starting with 233, without + |
| name | Yes | String | Recipient name |
| phone | Yes | String | Recipient phone number |
| No | String | Valid recipient email | |
| notifyUrl | No | String | Asynchronous notification URL |
| subject | No | String | Transaction title, product name, or payment reason |
| body | No | String | Detailed remark |
| partnerUserId | No | String | Unique user ID, up to 64 allowed characters |
| sign | Yes | String | Signature |
{
"appId": 1054,
"orderId": "GHSPAY001",
"amount": "100.00",
"accountType": "EWALLET",
"bankCode": "MTN",
"accountNo": "233241234567",
"name": "John Doe",
"phone": "233241234567",
"notifyUrl": "https://merchant.example.com/notify",
"sign": "signature"
}
{
"status": "1",
"error": "",
"msg": "success",
"data": {
"orderId": "GHSPAY001",
"orderNo": "3023062014149637",
"payUrl": "",
"sign": "signature"
}
}
| Parameter Name | Type | Description |
|---|---|---|
| orderId | String | Merchant order ID |
| orderNo | String | Platform order ID |
| payUrl | String | Payment URL, when applicable |
| sign | String | Signature |
Disbursement Query
Brief Description:- Query a disbursement order
/ghs/pay/query
Parameters:
The request fields are the same as Collection Query.
request
{
"appId": 1054,
"orderId": "GHSPAY001",
"orderNo": "3023062014149637",
"sign": "signature"
}
{
"status": "1",
"error": "",
"msg": "success",
"data": {
"orderId": "GHSPAY001",
"orderNo": "3023062014149637",
"amount": "100.00",
"fee": "1.00",
"status": 2,
"payTime": "2026-08-01 12:30:00",
"errorMsg": "",
"certificateId": "",
"sign": "signature"
}
}
| Parameter Name | Type | Description |
|---|---|---|
| orderId | String | Merchant order ID |
| orderNo | String | Platform order ID |
| amount | String | Transaction amount |
| fee | String | Fee |
| status | Integer | Order status |
| payTime | String | Success time in local time, format: yyyy-MM-dd HH:mm:ss |
| errorMsg | String | Error message |
| certificateId | String | Payment certificate ID |
| sign | String | Signature |
Payment Methods
Mobile Payment (EWALLET)
Mobile Payment (EWALLET)
| Currency | Payment Type (accountType) | Payment Code (bankCode) | Limit | Status | Description |
|---|---|---|---|---|---|
| GHS | EWALLET | AIRTEL | 10 - 100,000 | Available | AIRTEL |
| GHS | EWALLET | MTN | 10 - 100,000 | Available | MTN |
| GHS | EWALLET | VODAFONE | 10 - 100,000 | Available | VODAFONE |

