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.

Response 200
{
  "success": true,
  "data": {
    "balances": {
      "XAF": "980000.00"
    },
    "applications_without_activity": []
  },
  "meta": {
    "request_id": "...",
    "timestamp": "..."
  }
}
CodeWhen
401Expired token.
503Ledger 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.

Request body
{
  "operator": "orange",
  "phone_number": "696246686"
}
Response 200
{
  "success": true,
  "data": {
    "operator": "orange",
    "phone_number": "696246686",
    "first_name": "PRENOM",
    "last_name": "NOM",
    "full_name": "PRENOM NOM"
  },
  "meta": {
    "request_id": "...",
    "timestamp": "..."
  }
}
CodeWhen
404ACCOUNT_NOT_FOUND: number unknown to the operator.
422Invalid operator or phone_number.
502GIMAC_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).

Request body
{
  "amount": 15000,
  "destination_provider": "orange_money_cm",
  "destination_phone_number": "696246686",
  "currency": "XAF"
}
Response 201
{
  "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": "..."
  }
}
CodeWhen
422Insufficient 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.

Request body
{
  "amount": 150000,
  "destination_type": "bank",
  "currency": "XAF"
}
Response 201
{
  "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": "..."
  }
}
CodeWhen
422Missing 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 XAF currency. Funds are held when the transfer starts; a confirmed failure is returned, while a network incident may require investigation.
  • A transfer may remain pending longer than a Mobile Money withdrawal. The full IBAN is masked in destination_bank.iban. Contact support to change your IBAN.