Send to mobile money
POST
/payment-api/send/mobilemoneyDebits your wallet for the amount plus the transfer fee and submits the payout to the recipient's mobile money wallet. Transfers settle asynchronously: the response confirms the transfer was accepted, and the final outcome is delivered to your callback URL.
- Only whitelisted IPs may call this endpoint (403 otherwise).
- If the provider rejects the transfer outright the debit is refunded immediately and you receive 400.
- If the transfer fails after acceptance, the webhook reports status failed and the debit (amount plus fee) is refunded to your wallet.
Parameters
amountdecimalrequiredAmount in GHS, minimum 0.50, up to your account transfer limit.
account_numberstringrequiredRecipient mobile money number.
account_namestringoptionalRecipient name shown on the SMS receipt.
channelstringrequiredRecipient network.
MTNTELECELAIRTELTIGOVDFATLclient_referencestringrequiredYour unique reference, 12 to 36 characters.
callback_urlstringoptionalHTTPS URL that receives the webhook when the transfer reaches success or failed.
mtnmomo_account_typestringoptionalMTN only. Use subscriber for personal wallets; agent is the default.
subscriberagent
| Field | Type | Required | Description |
|---|---|---|---|
amount | decimal | required | Amount in GHS, minimum 0.50, up to your account transfer limit. |
account_number | string | required | Recipient mobile money number. |
account_name | string | optional | Recipient name shown on the SMS receipt. |
channel | string | required | Recipient network.MTNTELECELAIRTELTIGOVDFATL |
client_reference | string | required | Your unique reference, 12 to 36 characters. |
callback_url | string | optional | HTTPS URL that receives the webhook when the transfer reaches success or failed. |
mtnmomo_account_type | string | optional | MTN only. Use subscriber for personal wallets; agent is the default.subscriberagent |
Errors
- 400Insufficient wallet balance
- 400Transaction failed. Refund issued.
- 403Access denied. Your IP address(x.x.x.x) is not whitelisted.
- 422The client reference has already been taken.
Request
curl -X POST "https://api.bulkclix.com/api/v1/payment-api/send/mobilemoney" \ -H "x-api-key: YOUR_API_KEY" \ -H "Accept: application/json" \ -H "Content-Type: application/json" \ -d '{ "amount": 120, "account_number": "0241234567", "account_name": "Ama Mensah", "channel": "MTN", "client_reference": "ORDER-2026-000123", "callback_url": "https://example.com/webhooks/bulkclix" }'
Response · 200
application/json
{ "message": "Sent Successfully", "data": { "client_reference": "ORDER-2026-000123", "transaction_id": "839201746512", "amount": "120.00", "charges": 1.2, "channel": "MTN", "account_number": "233241234567" } }
Webhook · POST to your callback_url
application/json
{ "amount": "120.00", "charges": "1.20", "status": "success", "transaction_id": "ORDER-2026-000123", "ext_transaction_id": "839201746512" }