> ## 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

<Warning>
  **Before reading this API document, review the [API Description Guide](/docs/en/guide/api_description_guide).**
</Warning>

## **Transaction Limits**

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

## **Collection API**

<Tip title={"Ghana Collection Payment Flow"}>
  Collection authorization may use OTP, STK Prompt, or a redirect flow depending on the enabled channel.
</Tip>

### **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://merchant.example.com/success",
  "notifyUrl": "https://merchant.example.com/notify",
  "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://payment.example.com/order/6023071013539074",
    "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**<a id="inBankCode" />

| 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": "John Doe",
  "phone": "233241234567",
  "notifyUrl": "https://merchant.example.com/notify",
  "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**<a id="bankCode" />

<Accordion title="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    |
</Accordion>

## Related Topics

* [Common API](/docs/en/api/version2/CommonApi)
* [HaiPay API Description and Common Rules](/docs/en/guide/api_description_guide)
* [Global Cashier Payment API](/docs/en/V20260701/api/version2/GlobalCashier)
