Ghana
Mobile money and bank account payouts in GHS
Before you start
Authorization
How to sign your requests with the API token.
Payouts overview
Common request format, response fields and statuses.
This payout destination is not enabled for all merchants. Check availability with your manager, and make sure your merchant balance is sufficient before creating a payout.
Overview
| Currency | Country code | Destination | paymentType |
|---|---|---|---|
GHS | GH | Mobile money: MTN, Airtel, Vodafone | SIM |
GHS | GH | Bank transfer | BANK_ACCOUNT |
Every operator or bank method is a separate payout service. Get the services enabled for you with GET /v1/payouts/services and pass the serviceId of the one you need; without it your default service is used.
The recipient must be a client of the operator of the selected service: a payout through an MTN service cannot reach an Orange wallet.
The required set depends on the service enabled for you. If a field it needs is missing, the phone does not match the country or the payment type does not match the service, the payout is rejected with 400 before it is created and nothing is debited. Send userEmail whenever you have it.
account fields
| Field | Type | Required | Description |
|---|---|---|---|
name | string | ✅ Yes | Recipient name |
requisites | string | ✅ Yes | Recipient requisites: card number, phone number, PIX key, etc., depending on paymentType |
userId | string | ✅ Yes | User ID in your system |
| Field | Type | Required | Description |
|---|---|---|---|
requisites | string | ✅ Yes | Recipient wallet phone in the international format, digits only, without +: 233241234567 |
userEmail | string | ⚠️ Depends on the service | Recipient email |
userIp | string | ❌ No | Recipient IP address |
Request example
curl -X POST "https://api.1capital.capital/v1/payouts" \
-H "Content-Type: application/json" \
-H "X-Api-Token: YOUR_API_TOKEN" \
-d '{
"amount": 500,
"currency": "GHS",
"paymentType": "SIM",
"serviceId": 123,
"externalId": "payout-123",
"account": {
"name": "John Doe",
"requisites": "233241234567",
"userId": "user_12345",
"userEmail": "john.doe@example.com"
},
"note": "Payout for order #1234"
}'Get the bank code
Bank transfer services need the recipient bank. Request the bank list for the service and pass the chosen id as account.bankName:
curl -X GET "https://api.1capital.capital/v1/payouts/banks?serviceId=123" \
-H "X-Api-Token: YOUR_API_TOKEN"{
"data": [
{ "id": "000013", "name": "Example Bank" },
{ "id": "000014", "name": "Another Bank" }
]
}account fields
| Field | Type | Required | Description |
|---|---|---|---|
name | string | ✅ Yes | Recipient name |
requisites | string | ✅ Yes | Recipient requisites: card number, phone number, PIX key, etc., depending on paymentType |
userId | string | ✅ Yes | User ID in your system |
| Field | Type | Required | Description |
|---|---|---|---|
requisites | string | ✅ Yes | Recipient bank account number |
bankName | string | ✅ Yes | Recipient bank: the id from GET /v1/payouts/banks?serviceId=… |
userEmail | string | ✅ Yes | Recipient email |
userIp | string | ❌ No | Recipient IP address |
Request example
curl -X POST "https://api.1capital.capital/v1/payouts" \
-H "Content-Type: application/json" \
-H "X-Api-Token: YOUR_API_TOKEN" \
-d '{
"amount": 500,
"currency": "GHS",
"paymentType": "BANK_ACCOUNT",
"serviceId": 123,
"externalId": "payout-123",
"account": {
"name": "John Doe",
"requisites": "2030050920719",
"userId": "user_12345",
"bankName": "000013",
"userEmail": "john.doe@example.com"
},
"note": "Payout for order #1234"
}'Send GHS amounts as whole numbers: some services do not accept fractional amounts.
Response
The response is a standard payout object with the CREATED status. Store the id to track the payout.
Payout object fields
The final status usually arrives within a few minutes.