> ## Documentation Index
> Fetch the complete documentation index at: https://doc.haipay.net/llms.txt
> Use this file to discover all available pages before exploring further.

# Ghana Payment API

> Ghana Payment API covering Collection API, Collection Application, Collection Query, Disbursement API, Disbursement Apply and Disbursement Query.

> [!WARNING]
>
> **Before reading this API document, review the [API Description Guide](https://doc.haipay.net/en/history/V20260801/get-started/api-conventions.md).**

## **Transaction Limits**

| Currency | Collection | Disbursement |
| :- | :- | :- |
| GHS | 10 - 100,000 | 10 - 100,000 |

## **Collection API**

> [!TIP]
>
> Collection authorization may use OTP, STK Prompt, or a redirect flow.

### **Collection Application**

**Brief Description:**

* Create a collection order

**URL: `/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 `+` |
| email | 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 |

#####

request

```json theme={null}
{
  "appId": 1054,
  "orderId": "GHSCOLLECT001",
  "amount": "100.00",
  "payType": "EWALLET",
  "inBankCode": "MTN",
  "phone": "233241234567",
  "callBackUrl": "https://shop.merchant.com/payment/success",
  "notifyUrl": "https://api.merchant.com/webhooks/haipay",
  "sign": "signature"
}
```

response

```json theme={null}
{
  "status": "1",
  "error": "",
  "msg": "success",
  "data": {
    "orderId": "GHSCOLLECT001",
    "orderNo": "6023071013539074",
    "amount": "100.00",
    "exchangeRate": "1",
    "orderAmount": "100.00",
    "payUrl": "https://pay.haipay.asia/cashier/1L9zQS2",
    "description": "Complete the Mobile Money authorization",
    "expiryPeriod": 15,
    "sign": "signature"
  }
}
```

Response data field description

| 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

**URL: `/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 |

#####

request

```json theme={null}
{
  "appId": 1054,
  "orderId": "GHSCOLLECT001",
  "orderNo": "6023071013539074",
  "sign": "signature"
}
```

response

```json theme={null}
{
  "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"
  }
}
```

Response data field description

| 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

**URL: `/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 |
| email | 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 |

#####

request

```json theme={null}
{
  "appId": 1054,
  "orderId": "GHSPAY001",
  "amount": "100.00",
  "accountType": "EWALLET",
  "bankCode": "MTN",
  "accountNo": "233241234567",
  "name": "Kofi Mensah",
  "phone": "233241234567",
  "notifyUrl": "https://api.merchant.com/webhooks/haipay",
  "sign": "signature"
}
```

response

```json theme={null}
{
  "status": "1",
  "error": "",
  "msg": "success",
  "data": {
    "orderId": "GHSPAY001",
    "orderNo": "3023062014149637",
    "payUrl": "",
    "sign": "signature"
  }
}
```

Response data field description

| 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

**URL: `/ghs/pay/query`**

**Parameters:**

The request fields are the same as Collection Query.

#####

request

```json theme={null}
{
  "appId": 1054,
  "orderId": "GHSPAY001",
  "orderNo": "3023062014149637",
  "sign": "signature"
}
```

response

```json theme={null}
{
  "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"
  }
}
```

Response data field description

| 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)**
>
> | 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 |

## Related Topics

* [Common API](https://doc.haipay.net/docs/en/api/version2/CommonApi.md)
* [HaiPay API Description and Common Rules](https://doc.haipay.net/en/history/V20260801/get-started/api-conventions.md)
* [Global Cashier Payment API](https://doc.haipay.net/en/history/V20260801/payments/cashier.md)
* [Ghana — GHS Collection Application (POST /ghs/collect/apply)](https://doc.haipay.net/en/history/V20260801/api-reference/ghs/collect-apply.md)
* [Ghana — GHS Collection Query (POST /ghs/collect/query)](https://doc.haipay.net/en/history/V20260801/api-reference/ghs/collect-query.md)
* [Ghana — GHS Disbursement Application (POST /ghs/pay/apply)](https://doc.haipay.net/en/history/V20260801/api-reference/ghs/pay-apply.md)
* [Ghana — GHS Disbursement Query (POST /ghs/pay/query)](https://doc.haipay.net/en/history/V20260801/api-reference/ghs/pay-query.md)
* [Handle Asynchronous Notifications and Verify Signatures](https://doc.haipay.net/en/history/V20260801/operations/callback.md)
* [Test Order Status Changes and Notifications End to End](https://doc.haipay.net/en/history/V20260801/testing/end-to-end.md)
* [Look Up Collection Payment Types and Codes (payType)](https://doc.haipay.net/en/history/V20260801/resources/cashin-code-list.md)
* [Look Up Disbursement Account Types and Bank Codes](https://doc.haipay.net/en/history/V20260801/resources/cashout-code-list.md)
* [HaiPay local payment methods product page](https://www.haipay.net/products/local-payment)


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.