8. Balance and withdrawals
Check your balance, then withdraw your money to a Mobile Money account or, if a valid IBAN is saved in your profile, by bank transfer.
Check your balance
GET/merchant/walletSession token
Available balance per currency, across all applications. Never add up two currencies. Optional parameter: environment=live|test.
{
"success": true,
"data": {
"balances": {
"XAF": "980000.00"
},
"applications_without_activity": []
},
"meta": {
"request_id": "...",
"timestamp": "..."
}
}| Code | When |
|---|---|
| 401 | Expired token. |
| 503 | Ledger temporarily unavailable (LEDGER_MODULE_UNAVAILABLE): retry. |
Check the number's holder
POST/withdrawals/account-inquirySession token
Before a withdrawal, check who holds the destination number. No amount is committed. operator is orange or mtn.
{
"operator": "orange",
"phone_number": "696246686"
}{
"success": true,
"data": {
"operator": "orange",
"phone_number": "696246686",
"first_name": "PRENOM",
"last_name": "NOM",
"full_name": "PRENOM NOM"
},
"meta": {
"request_id": "...",
"timestamp": "..."
}
}| Code | When |
|---|---|
| 404 | ACCOUNT_NOT_FOUND: number unknown to the operator. |
| 422 | Invalid operator or phone_number. |
| 502 | GIMAC_UNAVAILABLE: check temporarily unavailable, retry. |
Start the withdrawal
POST/withdrawalsSession token
The amount is held on your balance immediately, then sent to the network. For an individual, application_id is optional (your personal application is used).
{
"amount": 15000,
"destination_provider": "orange_money_cm",
"destination_phone_number": "696246686",
"currency": "XAF"
}{
"success": true,
"data": {
"uuid": "...",
"application_id": 1,
"destination_provider": "orange_money",
"destination_phone_number": "696246686",
"amount": 15000,
"currency": "XAF",
"status": "pending",
"failure_reason": null,
"reference": "OM-9f3a1",
"created_at": "2026-11-02T12:30:00Z"
},
"meta": {
"request_id": "...",
"timestamp": "..."
}
}| Code | When |
|---|---|
| 422 | Insufficient balance (INSUFFICIENT_BALANCE), network unavailable, invalid data. |
- Initial status: pending (or success / failed depending on the network's immediate answer). Tracking:
GET /withdrawals/{uuid}; history:GET /withdrawals. - If the withdrawal fails, the held amount is returned to your balance.
Withdraw by bank transfer
POST/withdrawalsSession token
Set destination_type: "bank". The transfer is sent to the IBAN saved in your profile through the GIMAC network; the bank is determined from the IBAN. Do not send a provider or phone number.
{
"amount": 150000,
"destination_type": "bank",
"currency": "XAF"
}{
"success": true,
"data": {
"uuid": "018f1a2b-...",
"application_id": 1,
"destination_provider": "gimac",
"destination_phone_number": null,
"destination_bank": {
"bank_name": "BICEC",
"iban": "CM21 1000 5000 ...... 0117"
},
"amount": 150000,
"currency": "XAF",
"status": "pending",
"failure_reason": null,
"reference": "KP00000000000000001",
"created_at": "2026-11-11T12:30:00Z"
},
"meta": {
"request_id": "...",
"timestamp": "..."
}
}| Code | When |
|---|---|
| 422 | Missing or invalid IBAN, bank not active on the GIMAC network, currency other than XAF, or insufficient balance. |
- Requirements: a valid CEMAC IBAN (27 characters and valid check digits), an active participating bank, and
XAFcurrency. Funds are held when the transfer starts; a confirmed failure is returned, while a network incident may require investigation. - A transfer may remain
pendinglonger than a Mobile Money withdrawal. The full IBAN is masked indestination_bank.iban. Contact support to change your IBAN.